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 }