001    package org.hackystat.projectbrowser.page.trajectory.dtwpanel.inputpanel;
002    
003    import java.util.logging.Level;
004    import java.util.logging.Logger;
005    
006    import org.apache.wicket.Application;
007    import org.apache.wicket.markup.html.form.Button;
008    import org.apache.wicket.markup.html.form.DropDownChoice;
009    import org.apache.wicket.markup.html.form.Form;
010    import org.apache.wicket.markup.html.form.TextField;
011    import org.apache.wicket.model.PropertyModel;
012    import org.hackystat.projectbrowser.ProjectBrowserApplication;
013    import org.hackystat.projectbrowser.ProjectBrowserSession;
014    import org.hackystat.projectbrowser.page.trajectory.TrajectorySession;
015    
016    /**
017     * The input form for the DTW alignment parameters.
018     * 
019     * @author Pavel Senin.
020     * 
021     */
022    public class DTWInputForm extends Form {
023    
024      /** Support serialization. */
025      public static final long serialVersionUID = 1L;
026      /** The page containing this form. */
027      // private TrajectoryDTWInputPanel page = null;
028      /** TelemetrySession that holds page state for telemetry. */
029      private TrajectorySession session = ProjectBrowserSession.get().getTrajectorySession();
030    
031      /**
032       * Constructor.
033       * 
034       * @param id The panel ID.
035       * @param pane The parent pane.
036       */
037      public DTWInputForm(String id, TrajectoryDTWInputPanel pane) {
038    
039        super(id);
040        // this.page = pane;
041    
042        // Create the drop-down menu for step patterns.
043        DropDownChoice stepMenu = new DropDownChoice("dtwStep", new PropertyModel(session, "DTWStep"),
044            new PropertyModel(session, "availableDTWSteps")) {
045          private static final long serialVersionUID = 1L;
046    
047          @Override
048          protected boolean wantOnSelectionChangedNotifications() {
049            return true;
050          }
051    
052          // @Override
053          // protected void onSelectionChanged(java.lang.Object newSelection) {
054          // session.getParameters().clear();
055          // }
056    
057          @Override
058          public boolean isEnabled() {
059            return getIsEnable();
060          }
061        };
062        stepMenu.setRequired(true);
063        add(stepMenu);
064        session.setDTWStep(session.getAvailableDTWSteps().get(0));
065    
066        // Create the drop-down menu for windowing.
067        DropDownChoice windowMenu = new DropDownChoice("windowType", new PropertyModel(session,
068            "windowType"), new PropertyModel(session, "availableWindowTypes")) {
069          private static final long serialVersionUID = 1L;
070    
071          @Override
072          protected boolean wantOnSelectionChangedNotifications() {
073            return true;
074          }
075    
076          // @Override
077          // protected void onSelectionChanged(java.lang.Object newSelection) {
078          // session.getParameters().clear();
079          // }
080    
081          @Override
082          public boolean isEnabled() {
083            return getIsEnable();
084          }
085        };
086        session.setWindowType(session.getAvailableWindowTypes().get(0));
087        windowMenu.setRequired(true);
088        add(windowMenu);
089    
090        // Create the drop-down menu for windowing.
091        DropDownChoice openEndMenu = new DropDownChoice("openEndType", new PropertyModel(session,
092            "openEndType"), new PropertyModel(session, "availableOpenEndTypes")) {
093          private static final long serialVersionUID = 1L;
094    
095          @Override
096          protected boolean wantOnSelectionChangedNotifications() {
097            return true;
098          }
099    
100          // @Override
101          // protected void onSelectionChanged(java.lang.Object newSelection) {
102          // session.getParameters().clear();
103          // }
104    
105          @Override
106          public boolean isEnabled() {
107            return getIsEnable();
108          }
109        };
110        openEndMenu.setRequired(true);
111        add(openEndMenu);
112        session.setOpenEndType(session.getAvailableOpenEndTypes().get(0));
113    
114        // indent for the dates
115        TextField windowSizeTextField = new TextField("windowSizeTextField", new PropertyModel(session,
116            "windowSize"), java.lang.Integer.class) {
117          /** Support serialization. */
118          public static final long serialVersionUID = 1L;
119    
120          @Override
121          public boolean isEnabled() {
122            return getIsEnable();
123          }
124        };
125        windowSizeTextField.setRequired(false);
126        add(windowSizeTextField);
127    
128        Button submitButton = new Button("doDtw") {
129          /** Support serialization. */
130          public static final long serialVersionUID = 1L;
131    
132          @Override
133          public void onSubmit() {
134            getLogger().log(Level.FINER, "[DEBUG] doDTW is HIT");
135            if ((session.getDataModel().updateSelectedChart())
136                && (session.getDataModel().updateNormalizedTSChart())
137                && (session.getDataModel().updateDTWChart())) {
138              assert true;
139            }
140            else {
141              session.setFeedback("Failed to run DTW analysis!");
142            }
143          }
144    
145        };
146        submitButton.setDefaultFormProcessing(false);
147        add(submitButton);
148    
149      }
150    
151      /**
152       * @return true if the form is enabled.
153       */
154      protected final boolean getIsEnable() {
155        return !ProjectBrowserSession.get().getTelemetrySession().getDataModel().isInProcess();
156      }
157    
158      /**
159       * @return the logger that associated to this web application.
160       */
161      private Logger getLogger() {
162        return ((ProjectBrowserApplication) Application.get()).getLogger();
163      }
164    
165    }