001 package org.hackystat.projectbrowser.page.trajectory.dtwpanel; 002 003 import java.util.logging.Logger; 004 005 import org.apache.wicket.Application; 006 import org.apache.wicket.PageParameters; 007 import org.apache.wicket.ajax.AjaxRequestTarget; 008 import org.apache.wicket.markup.html.basic.MultiLineLabel; 009 import org.apache.wicket.model.PropertyModel; 010 import org.hackystat.projectbrowser.ProjectBrowserApplication; 011 import org.hackystat.projectbrowser.ProjectBrowserSession; 012 import org.hackystat.projectbrowser.page.ProjectBrowserBasePage; 013 import org.hackystat.projectbrowser.page.loadingprocesspanel.LoadingProcessPanel; 014 import org.hackystat.projectbrowser.page.trajectory.TrajectorySession; 015 import org.hackystat.projectbrowser.page.trajectory.dtwpanel.datapanel.TrajectoryDTWDataPanel; 016 import org.hackystat.projectbrowser.page.trajectory.dtwpanel.inputpanel.TrajectoryDTWInputPanel; 017 018 /** 019 * Provides a page with Trajectory analyzes. 020 * 021 * @author Pavel Senin, Philip Johnson, Shaoxuan Zhang 022 * 023 * 024 */ 025 public class TrajectoryDTWPage extends ProjectBrowserBasePage { 026 027 /** Support serialization. */ 028 private static final long serialVersionUID = 1L; 029 /** Trajectory session to hold up the state. */ 030 private TrajectorySession session = ProjectBrowserSession.get().getTrajectorySession(); 031 /** the TelemetryInputPanel in this page. */ 032 // private TrajectoryDTWInputPanel inputPanel; 033 /** the TelemetryDataPanel in this page. */ 034 // private TrajectoryDTWDataPanel dataPanel; 035 /** the LoadingProcessPanel in this page. */ 036 private LoadingProcessPanel loadingProcessPanel; 037 038 // Some string constants used while logging 039 // 040 private static final String MARK = "[DEBUG] "; 041 042 /** 043 * Constructs the telemetry page without URL parameters. 044 */ 045 public TrajectoryDTWPage() { 046 getLogger().info(MARK + "Trajectory page constructor invoked, hash: " + this.hashCode()); 047 048 TrajectoryDTWInputPanel inputPanel = new TrajectoryDTWInputPanel("inputPanel", this); 049 inputPanel.setOutputMarkupId(true); 050 add(inputPanel); 051 052 TrajectoryDTWDataPanel dataPanel = new TrajectoryDTWDataPanel("dataPanel", this); 053 dataPanel.setOutputMarkupId(true); 054 add(dataPanel); 055 056 loadingProcessPanel = new LoadingProcessPanel("loadingProcessPanel", session.getDataModel()) { 057 /** Support serialization. */ 058 private static final long serialVersionUID = 1L; 059 060 @Override 061 protected void onFinished(AjaxRequestTarget target) { 062 setResponsePage(TrajectoryDTWPage.class); 063 } 064 }; 065 loadingProcessPanel.setOutputMarkupId(true); 066 add(loadingProcessPanel); 067 068 this.get("FooterFeedback").setModel(new PropertyModel(session, "feedback")); 069 this.get("FooterFeedback").setOutputMarkupId(true); 070 071 add(new MultiLineLabel("feedback", new PropertyModel(session, "feedback"))); 072 } 073 074 /** 075 * Constructs the telemetry page. 076 * 077 * @param parameters the parameters from URL request. 078 */ 079 public TrajectoryDTWPage(PageParameters parameters) { 080 this(); 081 082 boolean isLoadSucceed = session.loadPageParameters(parameters); 083 084 if (isLoadSucceed) { 085 session.updateDataModel(); 086 loadingProcessPanel.start(); 087 } 088 } 089 090 /** 091 * The action to be performed when the user has set the Project and Date fields. 092 */ 093 @Override 094 public void onProjectDateSubmit() { 095 loadingProcessPanel.start(); 096 // setResponsePage(TelemetryPage.class, session.getPageParameters()); 097 } 098 099 /** 100 * @return the logger that associated to this web application. 101 */ 102 private Logger getLogger() { 103 return ((ProjectBrowserApplication) Application.get()).getLogger(); 104 } 105 106 }