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    }