001 package org.hackystat.projectbrowser.page.telemetry; 002 003 import org.apache.wicket.PageParameters; 004 import org.apache.wicket.ajax.AjaxRequestTarget; 005 import org.apache.wicket.markup.html.basic.MultiLineLabel; 006 import org.apache.wicket.markup.html.panel.FeedbackPanel; 007 import org.apache.wicket.model.PropertyModel; 008 import org.hackystat.projectbrowser.ProjectBrowserSession; 009 import org.hackystat.projectbrowser.page.ProjectBrowserBasePage; 010 import org.hackystat.projectbrowser.page.loadingprocesspanel.LoadingProcessPanel; 011 import org.hackystat.projectbrowser.page.telemetry.datapanel.TelemetryDataPanel; 012 import org.hackystat.projectbrowser.page.telemetry.inputpanel.TelemetryInputPanel; 013 014 /** 015 * Provides a page with Telemetry analyses. 016 * @author Philip Johnson 017 * @author Shaoxuan Zhang 018 */ 019 public class TelemetryPage extends ProjectBrowserBasePage { 020 021 /** Support serialization. */ 022 private static final long serialVersionUID = 1L; 023 /** Telemetry session to hold up the state. */ 024 private TelemetrySession session = ProjectBrowserSession.get().getTelemetrySession(); 025 /** the LoadingProcessPanel in this page. */ 026 private LoadingProcessPanel loadingProcessPanel; 027 /** 028 * Constructs the telemetry page without URL parameters. 029 */ 030 public TelemetryPage() { 031 //session.clearParamErrorMessage(); 032 add(new FeedbackPanel("feedback")); 033 034 TelemetryInputPanel inputPanel = new TelemetryInputPanel("inputPanel", this); 035 inputPanel.setOutputMarkupId(true); 036 add(inputPanel); 037 038 TelemetryDataPanel dataPanel = new TelemetryDataPanel("dataPanel", session); 039 dataPanel.setOutputMarkupId(true); 040 add(dataPanel); 041 042 loadingProcessPanel = new LoadingProcessPanel("loadingProcessPanel", session.getDataModel()) { 043 /** Support serialization. */ 044 private static final long serialVersionUID = 1L; 045 @Override 046 protected void onFinished(AjaxRequestTarget target) { 047 setResponsePage(TelemetryPage.class); 048 } 049 }; 050 loadingProcessPanel.setOutputMarkupId(true); 051 add(loadingProcessPanel); 052 053 this.get("FooterFeedback").setModel(new PropertyModel(session, "feedback")); 054 this.get("FooterFeedback").setOutputMarkupId(true); 055 056 add(new MultiLineLabel("paramErrorMessage", new PropertyModel(session, "paramErrorMessage"))); 057 } 058 059 /** 060 * Constructs the telemetry page. 061 * @param parameters the parameters from URL request. 062 */ 063 public TelemetryPage(PageParameters parameters) { 064 this(); 065 boolean isLoadSucceed = session.loadPageParameters(parameters); 066 067 if (isLoadSucceed) { 068 session.updateDataModel(); 069 loadingProcessPanel.start(); 070 } 071 } 072 073 /** 074 * The action to be performed when the user has set the Project and Date fields. 075 */ 076 @Override 077 public void onProjectDateSubmit() { 078 loadingProcessPanel.start(); 079 setResponsePage(TelemetryPage.class); 080 } 081 }