OLD | NEW |
1 package autotest.afe; | 1 package autotest.afe.create; |
2 | 2 |
| 3 import autotest.afe.AfeUtils; |
| 4 import autotest.afe.CheckBoxPanel; |
| 5 import autotest.afe.ControlTypeSelect; |
| 6 import autotest.afe.HostSelector; |
| 7 import autotest.afe.IButton; |
| 8 import autotest.afe.ICheckBox; |
| 9 import autotest.afe.ITextArea; |
| 10 import autotest.afe.ITextBox; |
| 11 import autotest.afe.TestSelector; |
3 import autotest.afe.TestSelector.TestSelectorListener; | 12 import autotest.afe.TestSelector.TestSelectorListener; |
4 import autotest.afe.UserPreferencesView.UserPreferencesListener; | |
5 import autotest.common.JSONArrayList; | 13 import autotest.common.JSONArrayList; |
6 import autotest.common.JsonRpcCallback; | 14 import autotest.common.JsonRpcCallback; |
7 import autotest.common.JsonRpcProxy; | 15 import autotest.common.JsonRpcProxy; |
8 import autotest.common.SimpleCallback; | 16 import autotest.common.SimpleCallback; |
9 import autotest.common.StaticDataRepository; | 17 import autotest.common.StaticDataRepository; |
10 import autotest.common.Utils; | 18 import autotest.common.Utils; |
11 import autotest.common.ui.NotifyManager; | 19 import autotest.common.ui.NotifyManager; |
12 import autotest.common.ui.RadioChooser; | 20 import autotest.common.ui.RadioChooser; |
13 import autotest.common.ui.TabView; | 21 import autotest.common.ui.SimplifiedList; |
14 | 22 |
15 import com.google.gwt.event.dom.client.BlurEvent; | 23 import com.google.gwt.event.dom.client.BlurEvent; |
16 import com.google.gwt.event.dom.client.BlurHandler; | 24 import com.google.gwt.event.dom.client.BlurHandler; |
17 import com.google.gwt.event.dom.client.ChangeEvent; | 25 import com.google.gwt.event.dom.client.ChangeEvent; |
18 import com.google.gwt.event.dom.client.ChangeHandler; | 26 import com.google.gwt.event.dom.client.ChangeHandler; |
19 import com.google.gwt.event.dom.client.ClickEvent; | 27 import com.google.gwt.event.dom.client.ClickEvent; |
20 import com.google.gwt.event.dom.client.ClickHandler; | 28 import com.google.gwt.event.dom.client.ClickHandler; |
| 29 import com.google.gwt.event.dom.client.HasClickHandlers; |
21 import com.google.gwt.event.dom.client.KeyCodes; | 30 import com.google.gwt.event.dom.client.KeyCodes; |
22 import com.google.gwt.event.dom.client.KeyPressEvent; | 31 import com.google.gwt.event.dom.client.KeyPressEvent; |
23 import com.google.gwt.event.dom.client.KeyPressHandler; | 32 import com.google.gwt.event.dom.client.KeyPressHandler; |
24 import com.google.gwt.event.logical.shared.CloseEvent; | 33 import com.google.gwt.event.logical.shared.CloseEvent; |
25 import com.google.gwt.event.logical.shared.CloseHandler; | 34 import com.google.gwt.event.logical.shared.CloseHandler; |
| 35 import com.google.gwt.event.logical.shared.HasCloseHandlers; |
| 36 import com.google.gwt.event.logical.shared.HasOpenHandlers; |
26 import com.google.gwt.event.logical.shared.OpenEvent; | 37 import com.google.gwt.event.logical.shared.OpenEvent; |
27 import com.google.gwt.event.logical.shared.OpenHandler; | 38 import com.google.gwt.event.logical.shared.OpenHandler; |
28 import com.google.gwt.json.client.JSONArray; | 39 import com.google.gwt.json.client.JSONArray; |
29 import com.google.gwt.json.client.JSONBoolean; | 40 import com.google.gwt.json.client.JSONBoolean; |
30 import com.google.gwt.json.client.JSONNull; | 41 import com.google.gwt.json.client.JSONNull; |
31 import com.google.gwt.json.client.JSONNumber; | 42 import com.google.gwt.json.client.JSONNumber; |
32 import com.google.gwt.json.client.JSONObject; | 43 import com.google.gwt.json.client.JSONObject; |
33 import com.google.gwt.json.client.JSONString; | 44 import com.google.gwt.json.client.JSONString; |
34 import com.google.gwt.json.client.JSONValue; | 45 import com.google.gwt.json.client.JSONValue; |
35 import com.google.gwt.user.client.DOM; | 46 import com.google.gwt.user.client.DOM; |
36 import com.google.gwt.user.client.Window; | 47 import com.google.gwt.user.client.Window; |
37 import com.google.gwt.user.client.ui.Anchor; | |
38 import com.google.gwt.user.client.ui.Button; | |
39 import com.google.gwt.user.client.ui.CheckBox; | |
40 import com.google.gwt.user.client.ui.Composite; | |
41 import com.google.gwt.user.client.ui.DisclosurePanel; | 48 import com.google.gwt.user.client.ui.DisclosurePanel; |
42 import com.google.gwt.user.client.ui.FlexTable; | 49 import com.google.gwt.user.client.ui.HasText; |
43 import com.google.gwt.user.client.ui.HorizontalPanel; | 50 import com.google.gwt.user.client.ui.HasValue; |
44 import com.google.gwt.user.client.ui.Label; | |
45 import com.google.gwt.user.client.ui.ListBox; | |
46 import com.google.gwt.user.client.ui.Panel; | |
47 import com.google.gwt.user.client.ui.RadioButton; | |
48 import com.google.gwt.user.client.ui.TextArea; | |
49 import com.google.gwt.user.client.ui.TextBox; | |
50 import com.google.gwt.user.client.ui.VerticalPanel; | |
51 | 51 |
52 import java.util.ArrayList; | 52 import java.util.ArrayList; |
53 import java.util.HashMap; | 53 import java.util.HashMap; |
54 import java.util.List; | 54 import java.util.List; |
55 import java.util.Map; | 55 import java.util.Map; |
56 | 56 |
57 public class CreateJobView extends TabView | 57 public class CreateJobViewPresenter implements TestSelectorListener { |
58 implements TestSelectorListener, UserPreferencesListe
ner { | 58 public static interface Display { |
59 public static final int TEST_COLUMNS = 5; | 59 public CheckBoxPanel.Display getCheckBoxPanelDisplay(); |
| 60 public ControlTypeSelect.Display getControlTypeSelectDisplay(); |
| 61 public TestSelector.Display getTestSelectorDisplay(); |
| 62 public IButton getEditControlButton(); |
| 63 public HasText getJobName(); |
| 64 public SimplifiedList getPriorityList(); |
| 65 public HasText getTimeout(); |
| 66 public HasText getMaxRuntime(); |
| 67 public HasText getEmailList(); |
| 68 public ICheckBox getSkipVerify(); |
| 69 public RadioChooser.Display getRebootBefore(); |
| 70 public RadioChooser.Display getRebootAfter(); |
| 71 public HasValue<Boolean> getParseFailedRepair(); |
| 72 public ICheckBox getHostless(); |
| 73 public HostSelector.Display getHostSelectorDisplay(); |
| 74 public SimplifiedList getDroneSet(); |
| 75 public ITextBox getSynchCountInput(); |
| 76 public ITextArea getControlFile(); |
| 77 public void setControlFilePanelOpen(boolean isOpen); |
| 78 public ICheckBox getRunNonProfiledIteration(); |
| 79 public ITextBox getKernel(); |
| 80 public ITextBox getKernelCmdline(); |
| 81 public HasText getViewLink(); |
| 82 public HasCloseHandlers<DisclosurePanel> getControlFilePanelClose(); |
| 83 public HasOpenHandlers<DisclosurePanel> getControlFilePanelOpen(); |
| 84 public IButton getSubmitJobButton(); |
| 85 public HasClickHandlers getCreateTemplateJobButton(); |
| 86 public HasClickHandlers getResetButton(); |
| 87 } |
60 | 88 |
61 protected static final String EDIT_CONTROL_STRING = "Edit control file"; | 89 private static final String EDIT_CONTROL_STRING = "Edit control file"; |
62 protected static final String UNEDIT_CONTROL_STRING= "Revert changes"; | 90 private static final String UNEDIT_CONTROL_STRING= "Revert changes"; |
63 protected static final String VIEW_CONTROL_STRING = "View control file"; | 91 private static final String VIEW_CONTROL_STRING = "View control file"; |
64 protected static final String HIDE_CONTROL_STRING = "Hide control file"; | 92 private static final String HIDE_CONTROL_STRING = "Hide control file"; |
65 | 93 |
66 public interface JobCreateListener { | 94 public interface JobCreateListener { |
67 public void onJobCreated(int jobId); | 95 public void onJobCreated(int jobId); |
68 } | 96 } |
69 | 97 |
70 protected JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy(); | 98 private JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy(); |
71 protected JobCreateListener listener; | 99 private JobCreateListener listener; |
72 | 100 |
73 private static class CheckBoxPanel<T extends CheckBox> extends Composite { | 101 private StaticDataRepository staticData = StaticDataRepository.getRepository
(); |
74 protected int numColumns; | |
75 protected FlexTable table = new FlexTable(); | |
76 protected List<T> testBoxes = new ArrayList<T>(); | |
77 | 102 |
78 public CheckBoxPanel(int columns) { | 103 private CheckBoxPanel profilersPanel = new CheckBoxPanel(); |
79 numColumns = columns; | 104 private ControlTypeSelect controlTypeSelect = new ControlTypeSelect(); |
80 initWidget(table); | 105 protected TestSelector testSelector = new TestSelector(); |
81 } | 106 private RadioChooser rebootBefore = new RadioChooser(); |
| 107 private RadioChooser rebootAfter = new RadioChooser(); |
| 108 private HostSelector hostSelector; |
82 | 109 |
83 public void add(T checkBox) { | 110 private boolean controlEdited = false; |
84 int row = testBoxes.size() / numColumns; | 111 private boolean controlReadyForSubmit = false; |
85 int col = testBoxes.size() % numColumns; | 112 private JSONArray dependencies = new JSONArray(); |
86 table.setWidget(row, col, checkBox); | |
87 testBoxes.add(checkBox); | |
88 } | |
89 | 113 |
90 public List<T> getChecked() { | 114 private Display display; |
91 List<T> result = new ArrayList<T>(); | |
92 for(T checkBox : testBoxes) { | |
93 if (checkBox.getValue()) | |
94 result.add(checkBox); | |
95 } | |
96 return result; | |
97 } | |
98 | 115 |
99 public void setEnabled(boolean enabled) { | 116 public void bindDisplay(Display display) { |
100 for(T thisBox : testBoxes) { | 117 this.display = display; |
101 thisBox.setEnabled(enabled); | |
102 } | |
103 } | |
104 | |
105 public void reset() { | |
106 for (T thisBox : testBoxes) { | |
107 thisBox.setValue(false); | |
108 } | |
109 } | |
110 } | 118 } |
111 | 119 |
112 private static class ControlTypeSelect extends Composite { | 120 public CreateJobViewPresenter(JobCreateListener listener) { |
113 public static final String RADIO_GROUP = "controlTypeGroup"; | |
114 protected RadioButton client, server; | |
115 protected Panel panel = new HorizontalPanel(); | |
116 | |
117 public ControlTypeSelect() { | |
118 client = new RadioButton(RADIO_GROUP, TestSelector.CLIENT_TYPE); | |
119 server = new RadioButton(RADIO_GROUP, TestSelector.SERVER_TYPE); | |
120 panel.add(client); | |
121 panel.add(server); | |
122 client.setValue(true); // client is default | |
123 initWidget(panel); | |
124 | |
125 client.addClickHandler(new ClickHandler() { | |
126 public void onClick(ClickEvent event) { | |
127 onChanged(); | |
128 } | |
129 }); | |
130 server.addClickHandler(new ClickHandler() { | |
131 public void onClick(ClickEvent event) { | |
132 onChanged(); | |
133 } | |
134 }); | |
135 } | |
136 | |
137 public String getControlType() { | |
138 if (client.getValue()) | |
139 return client.getText(); | |
140 return server.getText(); | |
141 } | |
142 | |
143 public void setControlType(String type) { | |
144 if (client.getText().equals(type)) | |
145 client.setValue(true); | |
146 else if (server.getText().equals(type)) | |
147 server.setValue(true); | |
148 else | |
149 throw new IllegalArgumentException("Invalid control type"); | |
150 onChanged(); | |
151 } | |
152 | |
153 public void setEnabled(boolean enabled) { | |
154 client.setEnabled(enabled); | |
155 server.setEnabled(enabled); | |
156 } | |
157 | |
158 protected void onChanged() { | |
159 } | |
160 } | |
161 | |
162 protected StaticDataRepository staticData = StaticDataRepository.getReposito
ry(); | |
163 | |
164 protected TextBox jobName = new TextBox(); | |
165 protected ListBox priorityList = new ListBox(); | |
166 protected TextBox kernel = new TextBox(); | |
167 protected TextBox kernel_cmdline = new TextBox(); | |
168 protected TextBox timeout = new TextBox(); | |
169 private TextBox maxRuntime = new TextBox(); | |
170 protected TextBox emailList = new TextBox(); | |
171 protected CheckBox skipVerify = new CheckBox(); | |
172 private RadioChooser rebootBefore = new RadioChooser(); | |
173 private RadioChooser rebootAfter = new RadioChooser(); | |
174 private CheckBox parseFailedRepair = new CheckBox(); | |
175 private CheckBox hostless = new CheckBox(); | |
176 protected TestSelector testSelector; | |
177 protected CheckBoxPanel<CheckBox> profilersPanel = | |
178 new CheckBoxPanel<CheckBox>(TEST_COLUMNS); | |
179 private CheckBox runNonProfiledIteration = | |
180 new CheckBox("Run each test without profilers first"); | |
181 private ListBox droneSet = new ListBox(); | |
182 protected TextArea controlFile = new TextArea(); | |
183 protected DisclosurePanel controlFilePanel = new DisclosurePanel(); | |
184 protected ControlTypeSelect controlTypeSelect; | |
185 protected TextBox synchCountInput = new TextBox(); | |
186 protected Button editControlButton = new Button(EDIT_CONTROL_STRING); | |
187 protected HostSelector hostSelector; | |
188 protected Button submitJobButton = new Button("Submit Job"); | |
189 protected Button createTemplateJobButton = new Button("Create Template Job")
; | |
190 private Button resetButton = new Button("Reset"); | |
191 | |
192 protected boolean controlEdited = false; | |
193 protected boolean controlReadyForSubmit = false; | |
194 private JSONArray dependencies = new JSONArray(); | |
195 | |
196 public CreateJobView(JobCreateListener listener) { | |
197 this.listener = listener; | 121 this.listener = listener; |
198 } | 122 } |
199 | 123 |
200 @Override | |
201 public String getElementId() { | |
202 return "create_job"; | |
203 } | |
204 | |
205 public void cloneJob(JSONValue cloneInfo) { | 124 public void cloneJob(JSONValue cloneInfo) { |
206 // reset() fires the TestSelectorListener, which will generate a new con
trol file. We do | 125 // reset() fires the TestSelectorListener, which will generate a new con
trol file. We do |
207 // no want this, so we'll stop listening to it for a bit. | 126 // no want this, so we'll stop listening to it for a bit. |
208 testSelector.setListener(null); | 127 testSelector.setListener(null); |
209 reset(); | 128 reset(); |
210 testSelector.setListener(this); | 129 testSelector.setListener(this); |
211 | 130 |
212 disableInputs(); | 131 disableInputs(); |
213 openControlFileEditor(); | 132 openControlFileEditor(); |
214 JSONObject cloneObject = cloneInfo.isObject(); | 133 JSONObject cloneObject = cloneInfo.isObject(); |
215 JSONObject jobObject = cloneObject.get("job").isObject(); | 134 JSONObject jobObject = cloneObject.get("job").isObject(); |
216 | 135 |
217 jobName.setText(jobObject.get("name").isString().stringValue()); | 136 display.getJobName().setText(jobObject.get("name").isString().stringValu
e()); |
218 | 137 |
219 String priority = jobObject.get("priority").isString().stringValue(); | 138 String priority = jobObject.get("priority").isString().stringValue(); |
220 for (int i = 0; i < priorityList.getItemCount(); i++) { | 139 display.getPriorityList().selectByName(priority); |
221 if (priorityList.getItemText(i).equals(priority)) { | |
222 priorityList.setSelectedIndex(i); | |
223 break; | |
224 } | |
225 } | |
226 | 140 |
227 timeout.setText(Utils.jsonToString(jobObject.get("timeout"))); | 141 display.getTimeout().setText(Utils.jsonToString(jobObject.get("timeout")
)); |
228 maxRuntime.setText(Utils.jsonToString(jobObject.get("max_runtime_hrs")))
; | 142 display.getMaxRuntime().setText(Utils.jsonToString(jobObject.get("max_ru
ntime_hrs"))); |
229 emailList.setText( | 143 display.getEmailList().setText( |
230 jobObject.get("email_list").isString().stringValue()); | 144 jobObject.get("email_list").isString().stringValue()); |
231 | 145 |
232 skipVerify.setValue(!jobObject.get("run_verify").isBoolean().booleanValu
e()); | 146 display.getSkipVerify().setValue(!jobObject.get("run_verify").isBoolean(
).booleanValue()); |
233 rebootBefore.setSelectedChoice(Utils.jsonToString(jobObject.get("reboot_
before"))); | 147 rebootBefore.setSelectedChoice(Utils.jsonToString(jobObject.get("reboot_
before"))); |
234 rebootAfter.setSelectedChoice(Utils.jsonToString(jobObject.get("reboot_a
fter"))); | 148 rebootAfter.setSelectedChoice(Utils.jsonToString(jobObject.get("reboot_a
fter"))); |
235 parseFailedRepair.setValue( | 149 display.getParseFailedRepair().setValue( |
236 jobObject.get("parse_failed_repair").isBoolean().booleanValue())
; | 150 jobObject.get("parse_failed_repair").isBoolean().booleanValue())
; |
237 hostless.setValue(cloneObject.get("hostless").isBoolean().booleanValue()
); | 151 display.getHostless().setValue(cloneObject.get("hostless").isBoolean().b
ooleanValue()); |
238 if (hostless.getValue()) { | 152 if (display.getHostless().getValue()) { |
239 hostSelector.setEnabled(false); | 153 hostSelector.setEnabled(false); |
240 } | 154 } |
241 if (cloneObject.get("drone_set").isNull() == null) { | 155 if (cloneObject.get("drone_set").isNull() == null) { |
242 AfeUtils.setSelectedItem(droneSet, Utils.jsonToString(cloneObject.ge
t("drone_set"))); | 156 display.getDroneSet().selectByName(Utils.jsonToString(cloneObject.ge
t("drone_set"))); |
243 } | 157 } |
244 | 158 |
245 controlTypeSelect.setControlType( | 159 controlTypeSelect.setControlType( |
246 jobObject.get("control_type").isString().stringValue()); | 160 jobObject.get("control_type").isString().stringValue()); |
247 synchCountInput.setText(Utils.jsonToString(jobObject.get("synch_count"))
); | 161 display.getSynchCountInput().setText(Utils.jsonToString(jobObject.get("s
ynch_count"))); |
248 setSelectedDependencies(jobObject.get("dependencies").isArray()); | 162 setSelectedDependencies(jobObject.get("dependencies").isArray()); |
249 controlFile.setText( | 163 display.getControlFile().setText( |
250 jobObject.get("control_file").isString().stringValue()); | 164 jobObject.get("control_file").isString().stringValue()); |
251 controlReadyForSubmit = true; | 165 controlReadyForSubmit = true; |
252 | 166 |
253 JSONArray hostInfo = cloneObject.get("hosts").isArray(); | 167 JSONArray hostInfo = cloneObject.get("hosts").isArray(); |
254 List<String> hostnames = new ArrayList<String>(); | 168 List<String> hostnames = new ArrayList<String>(); |
255 for (JSONObject host : new JSONArrayList<JSONObject>(hostInfo)) { | 169 for (JSONObject host : new JSONArrayList<JSONObject>(hostInfo)) { |
256 hostnames.add(Utils.jsonToString(host.get("hostname"))); | 170 hostnames.add(Utils.jsonToString(host.get("hostname"))); |
257 } | 171 } |
258 hostSelector.setSelectedHostnames(hostnames, true); | 172 hostSelector.setSelectedHostnames(hostnames, true); |
259 | 173 |
260 JSONObject metaHostCounts = cloneObject.get("meta_host_counts").isObject
(); | 174 JSONObject metaHostCounts = cloneObject.get("meta_host_counts").isObject
(); |
261 | 175 |
262 for (String label : metaHostCounts.keySet()) { | 176 for (String label : metaHostCounts.keySet()) { |
263 String number = Integer.toString( | 177 String number = Integer.toString( |
264 (int) metaHostCounts.get(label).isNumber().doubleValue()); | 178 (int) metaHostCounts.get(label).isNumber().doubleValue()); |
265 hostSelector.addMetaHosts(label, number); | 179 hostSelector.addMetaHosts(label, number); |
266 } | 180 } |
267 | 181 |
268 hostSelector.refresh(); | 182 hostSelector.refresh(); |
269 } | 183 } |
270 | 184 |
271 protected void openControlFileEditor() { | 185 private void openControlFileEditor() { |
272 controlFile.setReadOnly(false); | 186 display.getControlFile().setReadOnly(false); |
273 editControlButton.setText(UNEDIT_CONTROL_STRING); | 187 display.getEditControlButton().setText(UNEDIT_CONTROL_STRING); |
274 controlFilePanel.setOpen(true); | 188 display.setControlFilePanelOpen(true); |
275 controlTypeSelect.setEnabled(true); | 189 controlTypeSelect.setEnabled(true); |
276 synchCountInput.setEnabled(true); | 190 display.getSynchCountInput().setEnabled(true); |
277 editControlButton.setEnabled(true); | 191 display.getEditControlButton().setEnabled(true); |
278 } | 192 } |
279 | 193 |
280 protected void populatePriorities(JSONArray priorities) { | 194 private void populatePriorities(JSONArray priorities) { |
281 for(int i = 0; i < priorities.size(); i++) { | 195 for(int i = 0; i < priorities.size(); i++) { |
282 JSONArray priorityData = priorities.get(i).isArray(); | 196 JSONArray priorityData = priorities.get(i).isArray(); |
283 String priority = priorityData.get(1).isString().stringValue(); | 197 String priority = priorityData.get(1).isString().stringValue(); |
284 priorityList.addItem(priority); | 198 display.getPriorityList().addItem(priority, priority); |
285 } | 199 } |
286 | 200 |
287 resetPriorityToDefault(); | 201 resetPriorityToDefault(); |
288 } | 202 } |
289 | 203 |
290 protected void resetPriorityToDefault() { | 204 private void resetPriorityToDefault() { |
291 JSONValue defaultValue = staticData.getData("default_priority"); | 205 JSONValue defaultValue = staticData.getData("default_priority"); |
292 String defaultPriority = defaultValue.isString().stringValue(); | 206 String defaultPriority = defaultValue.isString().stringValue(); |
293 for(int i = 0; i < priorityList.getItemCount(); i++) { | 207 display.getPriorityList().selectByName(defaultPriority); |
294 if (priorityList.getItemText(i).equals(defaultPriority)) | |
295 priorityList.setSelectedIndex(i); | |
296 } | |
297 } | 208 } |
298 | 209 |
299 protected void populateProfilers() { | 210 private void populateProfilers() { |
300 JSONArray tests = staticData.getData("profilers").isArray(); | 211 JSONArray tests = staticData.getData("profilers").isArray(); |
301 | 212 |
302 for(JSONObject profiler : new JSONArrayList<JSONObject>(tests)) { | 213 for(JSONObject profiler : new JSONArrayList<JSONObject>(tests)) { |
303 String name = profiler.get("name").isString().stringValue(); | 214 String name = profiler.get("name").isString().stringValue(); |
304 CheckBox checkbox = new CheckBox(name); | 215 ICheckBox checkbox = profilersPanel.generateCheckBox(); |
| 216 checkbox.setText(name); |
305 checkbox.addClickHandler(new ClickHandler() { | 217 checkbox.addClickHandler(new ClickHandler() { |
306 public void onClick(ClickEvent event) { | 218 public void onClick(ClickEvent event) { |
307 updateNonProfiledRunControl(); | 219 updateNonProfiledRunControl(); |
308 generateControlFile(false); | 220 generateControlFile(false); |
309 setInputsEnabled(); | 221 setInputsEnabled(); |
310 } | 222 } |
311 }); | 223 }); |
312 profilersPanel.add(checkbox); | 224 profilersPanel.add(checkbox); |
313 } | 225 } |
314 | 226 |
315 runNonProfiledIteration.addClickHandler(new ClickHandler() { | 227 display.getRunNonProfiledIteration().addClickHandler(new ClickHandler()
{ |
316 @Override | 228 @Override |
317 public void onClick(ClickEvent event) { | 229 public void onClick(ClickEvent event) { |
318 generateControlFile(false); | 230 generateControlFile(false); |
319 } | 231 } |
320 }); | 232 }); |
321 // default to checked -- run a non-profiled iteration by default | 233 // default to checked -- run a non-profiled iteration by default |
322 runNonProfiledIteration.setValue(true); | 234 display.getRunNonProfiledIteration().setValue(true); |
323 } | 235 } |
324 | 236 |
325 private void updateNonProfiledRunControl() { | 237 private void updateNonProfiledRunControl() { |
326 boolean anyProfilersChecked = !profilersPanel.getChecked().isEmpty(); | 238 boolean anyProfilersChecked = !profilersPanel.getChecked().isEmpty(); |
327 runNonProfiledIteration.setVisible(anyProfilersChecked); | 239 display.getRunNonProfiledIteration().setVisible(anyProfilersChecked); |
328 } | 240 } |
329 | 241 |
330 private void populateRebootChoices() { | 242 private void populateRebootChoices() { |
331 AfeUtils.populateRadioChooser(rebootBefore, "reboot_before"); | 243 AfeUtils.populateRadioChooser(rebootBefore, "reboot_before"); |
332 AfeUtils.populateRadioChooser(rebootAfter, "reboot_after"); | 244 AfeUtils.populateRadioChooser(rebootAfter, "reboot_after"); |
333 } | 245 } |
334 | 246 |
335 | 247 |
336 private JSONArray getKernelParams(String kernel_list, String cmdline) { | 248 private JSONArray getKernelParams(String kernel_list, String cmdline) { |
337 JSONArray result = new JSONArray(); | 249 JSONArray result = new JSONArray(); |
(...skipping 13 matching lines...) Expand all Loading... |
351 return result; | 263 return result; |
352 } | 264 } |
353 /** | 265 /** |
354 * Get parameters to submit to the generate_control_file RPC. | 266 * Get parameters to submit to the generate_control_file RPC. |
355 * @param readyForSubmit are we getting a control file that's ready to submi
t for a job, or just | 267 * @param readyForSubmit are we getting a control file that's ready to submi
t for a job, or just |
356 * an intermediate control file to be viewed by the user? | 268 * an intermediate control file to be viewed by the user? |
357 */ | 269 */ |
358 protected JSONObject getControlFileParams(boolean readyForSubmit) { | 270 protected JSONObject getControlFileParams(boolean readyForSubmit) { |
359 JSONObject params = new JSONObject(); | 271 JSONObject params = new JSONObject(); |
360 | 272 |
361 String kernelString = kernel.getText(); | 273 String kernelString = display.getKernel().getText(); |
362 if (!kernelString.equals("")) { | 274 if (!kernelString.equals("")) { |
363 params.put("kernel", getKernelParams(kernelString, kernel_cmdline.ge
tText())); | 275 params.put( |
| 276 "kernel", getKernelParams(kernelString, display.getKernelCmd
line().getText())); |
364 } | 277 } |
365 | 278 |
366 JSONArray tests = new JSONArray(); | 279 JSONArray tests = new JSONArray(); |
367 for (JSONObject test : testSelector.getSelectedTests()) { | 280 for (JSONObject test : testSelector.getSelectedTests()) { |
368 tests.set(tests.size(), test.get("id")); | 281 tests.set(tests.size(), test.get("id")); |
369 } | 282 } |
370 | 283 |
371 JSONArray profilers = new JSONArray(); | 284 JSONArray profilers = new JSONArray(); |
372 for (CheckBox profiler : profilersPanel.getChecked()) { | 285 for (ICheckBox profiler : profilersPanel.getChecked()) { |
373 profilers.set(profilers.size(), new JSONString(profiler.getText())); | 286 profilers.set(profilers.size(), new JSONString(profiler.getText())); |
374 } | 287 } |
375 | 288 |
376 params.put("tests", tests); | 289 params.put("tests", tests); |
377 params.put("profilers", profilers); | 290 params.put("profilers", profilers); |
378 | 291 |
379 if (runNonProfiledIteration.isVisible()) { | 292 if (display.getRunNonProfiledIteration().isVisible()) { |
380 boolean profileOnly = !runNonProfiledIteration.getValue(); | 293 boolean profileOnly = !display.getRunNonProfiledIteration().getValue
(); |
381 params.put("profile_only", JSONBoolean.getInstance(profileOnly)); | 294 params.put("profile_only", JSONBoolean.getInstance(profileOnly)); |
382 } | 295 } |
383 | 296 |
384 return params; | 297 return params; |
385 } | 298 } |
386 | 299 |
387 protected void generateControlFile(final boolean readyForSubmit, | 300 private void generateControlFile(final boolean readyForSubmit, |
388 final SimpleCallback finishedCallback, | 301 final SimpleCallback finishedCallback, |
389 final SimpleCallback errorCallback) { | 302 final SimpleCallback errorCallback) { |
390 JSONObject params = getControlFileParams(readyForSubmit); | 303 JSONObject params = getControlFileParams(readyForSubmit); |
391 rpcProxy.rpcCall("generate_control_file", params, new JsonRpcCallback()
{ | 304 rpcProxy.rpcCall("generate_control_file", params, new JsonRpcCallback()
{ |
392 @Override | 305 @Override |
393 public void onSuccess(JSONValue result) { | 306 public void onSuccess(JSONValue result) { |
394 JSONObject controlInfo = result.isObject(); | 307 JSONObject controlInfo = result.isObject(); |
395 String controlFileText = controlInfo.get("control_file").isStrin
g().stringValue(); | 308 String controlFileText = controlInfo.get("control_file").isStrin
g().stringValue(); |
396 boolean isServer = controlInfo.get("is_server").isBoolean().bool
eanValue(); | 309 boolean isServer = controlInfo.get("is_server").isBoolean().bool
eanValue(); |
397 String synchCount = Utils.jsonToString(controlInfo.get("synch_co
unt")); | 310 String synchCount = Utils.jsonToString(controlInfo.get("synch_co
unt")); |
398 setSelectedDependencies(controlInfo.get("dependencies").isArray(
)); | 311 setSelectedDependencies(controlInfo.get("dependencies").isArray(
)); |
399 controlFile.setText(controlFileText); | 312 display.getControlFile().setText(controlFileText); |
400 controlTypeSelect.setControlType(isServer ? TestSelector.SERVER_
TYPE : | 313 controlTypeSelect.setControlType(isServer ? TestSelector.SERVER_
TYPE : |
401 TestSelector.CLIENT_
TYPE); | 314 TestSelector.CLIENT_
TYPE); |
402 synchCountInput.setText(synchCount); | 315 display.getSynchCountInput().setText(synchCount); |
403 controlReadyForSubmit = readyForSubmit; | 316 controlReadyForSubmit = readyForSubmit; |
404 if (finishedCallback != null) | 317 if (finishedCallback != null) { |
405 finishedCallback.doCallback(this); | 318 finishedCallback.doCallback(this); |
| 319 } |
406 } | 320 } |
407 | 321 |
408 @Override | 322 @Override |
409 public void onError(JSONObject errorObject) { | 323 public void onError(JSONObject errorObject) { |
410 super.onError(errorObject); | 324 super.onError(errorObject); |
411 if (errorCallback != null) | 325 if (errorCallback != null) { |
412 errorCallback.doCallback(this); | 326 errorCallback.doCallback(this); |
| 327 } |
413 } | 328 } |
414 }); | 329 }); |
415 } | 330 } |
416 | 331 |
417 protected void generateControlFile(boolean readyForSubmit) { | 332 protected void generateControlFile(boolean readyForSubmit) { |
418 generateControlFile(readyForSubmit, null, null); | 333 generateControlFile(readyForSubmit, null, null); |
419 } | 334 } |
420 | 335 |
421 public void handleSkipVerify() { | 336 public void handleSkipVerify() { |
422 boolean shouldSkipVerify = false; | 337 boolean shouldSkipVerify = false; |
423 for (JSONObject test : testSelector.getSelectedTests()) { | 338 for (JSONObject test : testSelector.getSelectedTests()) { |
424 boolean runVerify = test.get("run_verify").isBoolean().booleanValue(
); | 339 boolean runVerify = test.get("run_verify").isBoolean().booleanValue(
); |
425 if (!runVerify) { | 340 if (!runVerify) { |
426 shouldSkipVerify = true; | 341 shouldSkipVerify = true; |
427 break; | 342 break; |
428 } | 343 } |
429 } | 344 } |
430 | 345 |
431 if (shouldSkipVerify) { | 346 if (shouldSkipVerify) { |
432 skipVerify.setValue(true); | 347 display.getSkipVerify().setValue(true); |
433 skipVerify.setEnabled(false); | 348 display.getSkipVerify().setEnabled(false); |
434 } else { | 349 } else { |
435 skipVerify.setEnabled(true); | 350 display.getSkipVerify().setEnabled(true); |
436 } | 351 } |
437 } | 352 } |
438 | 353 |
439 protected void setInputsEnabled() { | 354 protected void setInputsEnabled() { |
440 testSelector.setEnabled(true); | 355 testSelector.setEnabled(true); |
441 profilersPanel.setEnabled(true); | 356 profilersPanel.setEnabled(true); |
442 handleSkipVerify(); | 357 handleSkipVerify(); |
443 kernel.setEnabled(true); | 358 display.getKernel().setEnabled(true); |
444 kernel_cmdline.setEnabled(true); | 359 display.getKernelCmdline().setEnabled(true); |
445 } | |
446 | |
447 protected boolean isClientTypeSelected() { | |
448 return testSelector.getSelectedTestType().equals(TestSelector.CLIENT_TYP
E); | |
449 } | 360 } |
450 | 361 |
451 protected void disableInputs() { | 362 protected void disableInputs() { |
452 testSelector.setEnabled(false); | 363 testSelector.setEnabled(false); |
453 profilersPanel.setEnabled(false); | 364 profilersPanel.setEnabled(false); |
454 kernel.setEnabled(false); | 365 display.getKernel().setEnabled(false); |
455 kernel_cmdline.setEnabled(false); | 366 display.getKernelCmdline().setEnabled(false); |
456 } | 367 } |
457 | 368 |
458 @Override | |
459 public void initialize() { | 369 public void initialize() { |
460 super.initialize(); | 370 profilersPanel.bindDisplay(display.getCheckBoxPanelDisplay()); |
| 371 controlTypeSelect.bindDisplay(display.getControlTypeSelectDisplay()); |
| 372 testSelector.bindDisplay(display.getTestSelectorDisplay()); |
| 373 rebootBefore.bindDisplay(display.getRebootBefore()); |
| 374 rebootAfter.bindDisplay(display.getRebootAfter()); |
| 375 |
| 376 display.getEditControlButton().setText(EDIT_CONTROL_STRING); |
| 377 display.getViewLink().setText(VIEW_CONTROL_STRING); |
| 378 |
| 379 hostSelector = new HostSelector(); |
| 380 hostSelector.initialize(); |
| 381 hostSelector.bindDisplay(display.getHostSelectorDisplay()); |
461 | 382 |
462 populatePriorities(staticData.getData("priorities").isArray()); | 383 populatePriorities(staticData.getData("priorities").isArray()); |
463 | 384 |
464 BlurHandler kernelBlurHandler = new BlurHandler() { | 385 BlurHandler kernelBlurHandler = new BlurHandler() { |
465 public void onBlur(BlurEvent event) { | 386 public void onBlur(BlurEvent event) { |
466 generateControlFile(false); | 387 generateControlFile(false); |
467 } | 388 } |
468 }; | 389 }; |
469 | 390 |
470 kernel.addBlurHandler(kernelBlurHandler); | 391 display.getKernel().addBlurHandler(kernelBlurHandler); |
471 kernel_cmdline.addBlurHandler(kernelBlurHandler); | 392 display.getKernelCmdline().addBlurHandler(kernelBlurHandler); |
472 | 393 |
473 KeyPressHandler kernelKeyPressHandler = new KeyPressHandler() { | 394 KeyPressHandler kernelKeyPressHandler = new KeyPressHandler() { |
474 public void onKeyPress(KeyPressEvent event) { | 395 public void onKeyPress(KeyPressEvent event) { |
475 if (event.getCharCode() == (char) KeyCodes.KEY_ENTER) | 396 if (event.getCharCode() == (char) KeyCodes.KEY_ENTER) { |
476 generateControlFile(false); | 397 generateControlFile(false); |
| 398 } |
477 } | 399 } |
478 }; | 400 }; |
479 | 401 |
480 kernel.addKeyPressHandler(kernelKeyPressHandler); | 402 display.getKernel().addKeyPressHandler(kernelKeyPressHandler); |
481 kernel_cmdline.addKeyPressHandler(kernelKeyPressHandler); | 403 display.getKernelCmdline().addKeyPressHandler(kernelKeyPressHandler); |
482 | 404 |
483 populateProfilers(); | 405 populateProfilers(); |
484 Panel profilerControls = new VerticalPanel(); | |
485 profilerControls.add(profilersPanel); | |
486 profilerControls.add(runNonProfiledIteration); | |
487 updateNonProfiledRunControl(); | 406 updateNonProfiledRunControl(); |
488 | 407 |
489 testSelector = new TestSelector(); | |
490 | |
491 populateRebootChoices(); | 408 populateRebootChoices(); |
492 onPreferencesChanged(); | 409 onPreferencesChanged(); |
493 | 410 |
494 controlFile.setSize("50em", "30em"); | |
495 controlTypeSelect = new ControlTypeSelect(); | |
496 HorizontalPanel controlOptionsPanel = new HorizontalPanel(); | |
497 controlOptionsPanel.setVerticalAlignment(HorizontalPanel.ALIGN_BOTTOM); | |
498 controlOptionsPanel.add(controlTypeSelect); | |
499 Label useLabel = new Label("Use"); | |
500 useLabel.getElement().getStyle().setProperty("marginLeft", "1em"); | |
501 synchCountInput.setSize("3em", ""); // set width only | |
502 synchCountInput.getElement().getStyle().setProperty("margin", "0 0.5em 0
0.5em"); | |
503 controlOptionsPanel.add(useLabel); | |
504 controlOptionsPanel.add(synchCountInput); | |
505 controlOptionsPanel.add(new Label("host(s) per execution")); | |
506 Panel controlEditPanel = new VerticalPanel(); | |
507 controlEditPanel.add(controlOptionsPanel); | |
508 controlEditPanel.add(controlFile); | |
509 | |
510 Panel controlHeaderPanel = new HorizontalPanel(); | |
511 final Anchor viewLink = new Anchor(VIEW_CONTROL_STRING); | |
512 controlHeaderPanel.add(viewLink); | |
513 controlHeaderPanel.add(editControlButton); | |
514 | |
515 if (parameterizedJobsEnabled()) { | 411 if (parameterizedJobsEnabled()) { |
516 editControlButton.setEnabled(false); | 412 display.getEditControlButton().setEnabled(false); |
517 } | 413 } |
518 | 414 |
519 controlFilePanel.setHeader(controlHeaderPanel); | 415 display.getEditControlButton().addClickHandler(new ClickHandler() { |
520 controlFilePanel.add(controlEditPanel); | |
521 | |
522 editControlButton.addClickHandler(new ClickHandler() { | |
523 public void onClick(ClickEvent event) { | 416 public void onClick(ClickEvent event) { |
524 DOM.eventCancelBubble(DOM.eventGetCurrentEvent(), true); | 417 DOM.eventCancelBubble(DOM.eventGetCurrentEvent(), true); |
525 | 418 |
526 if (editControlButton.getText().equals(EDIT_CONTROL_STRING)) { | 419 if (display.getEditControlButton().getText().equals(EDIT_CONTROL
_STRING)) { |
527 disableInputs(); | 420 disableInputs(); |
528 editControlButton.setEnabled(false); | 421 display.getEditControlButton().setEnabled(false); |
529 SimpleCallback onGotControlFile = new SimpleCallback() { | 422 SimpleCallback onGotControlFile = new SimpleCallback() { |
530 public void doCallback(Object source) { | 423 public void doCallback(Object source) { |
531 openControlFileEditor(); | 424 openControlFileEditor(); |
532 } | 425 } |
533 }; | 426 }; |
534 SimpleCallback onControlFileError = new SimpleCallback() { | 427 SimpleCallback onControlFileError = new SimpleCallback() { |
535 public void doCallback(Object source) { | 428 public void doCallback(Object source) { |
536 setInputsEnabled(); | 429 setInputsEnabled(); |
537 editControlButton.setEnabled(true); | 430 display.getEditControlButton().setEnabled(true); |
538 } | 431 } |
539 }; | 432 }; |
540 generateControlFile(true, onGotControlFile, onControlFileErr
or); | 433 generateControlFile(true, onGotControlFile, onControlFileErr
or); |
541 } | 434 } |
542 else { | 435 else { |
543 if (controlEdited && | 436 if (controlEdited && |
544 !Window.confirm("Are you sure you want to revert your" + | 437 !Window.confirm("Are you sure you want to revert your" + |
545 " changes?")) | 438 " changes?")) { |
546 return; | 439 return; |
| 440 } |
547 generateControlFile(false); | 441 generateControlFile(false); |
548 controlFile.setReadOnly(true); | 442 display.getControlFile().setReadOnly(true); |
549 setInputsEnabled(); | 443 setInputsEnabled(); |
550 editControlButton.setText(EDIT_CONTROL_STRING); | 444 display.getEditControlButton().setText(EDIT_CONTROL_STRING); |
551 controlTypeSelect.setEnabled(false); | 445 controlTypeSelect.setEnabled(false); |
552 synchCountInput.setEnabled(false); | 446 display.getSynchCountInput().setEnabled(false); |
553 controlEdited = false; | 447 controlEdited = false; |
554 } | 448 } |
555 } | 449 } |
556 }); | 450 }); |
557 | 451 |
558 controlFile.addChangeHandler(new ChangeHandler() { | 452 display.getControlFile().addChangeHandler(new ChangeHandler() { |
559 public void onChange(ChangeEvent event) { | 453 public void onChange(ChangeEvent event) { |
560 controlEdited = true; | 454 controlEdited = true; |
561 } | 455 } |
562 }); | 456 }); |
563 | 457 |
564 controlFilePanel.addCloseHandler(new CloseHandler<DisclosurePanel>() { | 458 display.getControlFilePanelClose().addCloseHandler(new CloseHandler<Disc
losurePanel>() { |
565 public void onClose(CloseEvent<DisclosurePanel> event) { | 459 public void onClose(CloseEvent<DisclosurePanel> event) { |
566 viewLink.setText(VIEW_CONTROL_STRING); | 460 display.getViewLink().setText(VIEW_CONTROL_STRING); |
567 } | 461 } |
568 }); | 462 }); |
569 | 463 |
570 controlFilePanel.addOpenHandler(new OpenHandler<DisclosurePanel>() { | 464 display.getControlFilePanelOpen().addOpenHandler(new OpenHandler<Disclos
urePanel>() { |
571 public void onOpen(OpenEvent<DisclosurePanel> event) { | 465 public void onOpen(OpenEvent<DisclosurePanel> event) { |
572 viewLink.setText(HIDE_CONTROL_STRING); | 466 display.getViewLink().setText(HIDE_CONTROL_STRING); |
573 } | 467 } |
574 }); | 468 }); |
575 | 469 |
576 hostSelector = new HostSelector(); | 470 display.getSubmitJobButton().addClickHandler(new ClickHandler() { |
577 HostSelectorDisplay hostSelectorDisplay = new HostSelectorDisplay(); | |
578 hostSelector.initialize(); | |
579 hostSelector.bindDisplay(hostSelectorDisplay); | |
580 | |
581 submitJobButton.addClickHandler(new ClickHandler() { | |
582 public void onClick(ClickEvent event) { | 471 public void onClick(ClickEvent event) { |
583 submitJob(false); | 472 submitJob(false); |
584 } | 473 } |
585 }); | 474 }); |
586 | 475 |
587 createTemplateJobButton.addClickHandler(new ClickHandler() { | 476 display.getCreateTemplateJobButton().addClickHandler(new ClickHandler()
{ |
588 public void onClick(ClickEvent event) { | 477 public void onClick(ClickEvent event) { |
589 submitJob(true); | 478 submitJob(true); |
590 } | 479 } |
591 }); | 480 }); |
592 | 481 |
593 resetButton.addClickHandler(new ClickHandler() { | 482 display.getResetButton().addClickHandler(new ClickHandler() { |
594 public void onClick(ClickEvent event) { | 483 public void onClick(ClickEvent event) { |
595 reset(); | 484 reset(); |
596 } | 485 } |
597 }); | 486 }); |
598 | 487 |
599 hostless.addClickHandler(new ClickHandler() { | 488 display.getHostless().addClickHandler(new ClickHandler() { |
600 @Override | 489 @Override |
601 public void onClick(ClickEvent event) { | 490 public void onClick(ClickEvent event) { |
602 hostSelector.setEnabled(!hostless.getValue()); | 491 hostSelector.setEnabled(!display.getHostless().getValue()); |
603 } | 492 } |
604 }); | 493 }); |
605 | 494 |
606 reset(); | 495 reset(); |
607 | 496 |
608 addWidget(jobName, "create_job_name"); | |
609 addWidget(kernel, "create_kernel"); | |
610 addWidget(kernel_cmdline, "create_kernel_cmdline"); | |
611 addWidget(timeout, "create_timeout"); | |
612 addWidget(maxRuntime, "create_max_runtime"); | |
613 addWidget(emailList, "create_email_list"); | |
614 addWidget(priorityList, "create_priority"); | |
615 addWidget(skipVerify, "create_skip_verify"); | |
616 addWidget(rebootBefore, "create_reboot_before"); | |
617 addWidget(rebootAfter, "create_reboot_after"); | |
618 addWidget(parseFailedRepair, "create_parse_failed_repair"); | |
619 addWidget(hostless, "create_hostless"); | |
620 addWidget(testSelector, "create_tests"); | |
621 addWidget(profilerControls, "create_profilers"); | |
622 addWidget(controlFilePanel, "create_edit_control"); | |
623 addWidget(hostSelectorDisplay, "create_host_selector"); | |
624 addWidget(submitJobButton, "create_submit"); | |
625 addWidget(createTemplateJobButton, "create_template_job"); | |
626 addWidget(resetButton, "create_reset"); | |
627 | |
628 if (staticData.getData("drone_sets_enabled").isBoolean().booleanValue())
{ | 497 if (staticData.getData("drone_sets_enabled").isBoolean().booleanValue())
{ |
629 AfeUtils.popualateListBox(droneSet, "drone_sets"); | 498 AfeUtils.populateListBox(display.getDroneSet(), "drone_sets"); |
630 addWidget(droneSet, "create_drone_set"); | |
631 } else { | 499 } else { |
632 AfeUtils.removeElement("create_drone_set_wrapper"); | 500 AfeUtils.removeElement("create_drone_set_wrapper"); |
633 } | 501 } |
634 | 502 |
635 testSelector.setListener(this); | 503 testSelector.setListener(this); |
636 } | 504 } |
637 | 505 |
638 public void reset() { | 506 public void reset() { |
639 StaticDataRepository repository = StaticDataRepository.getRepository(); | 507 StaticDataRepository repository = StaticDataRepository.getRepository(); |
640 | 508 |
641 jobName.setText(""); | 509 display.getJobName().setText(""); |
642 resetPriorityToDefault(); | 510 resetPriorityToDefault(); |
643 rebootBefore.reset(); | 511 rebootBefore.reset(); |
644 rebootAfter.reset(); | 512 rebootAfter.reset(); |
645 parseFailedRepair.setValue( | 513 display.getParseFailedRepair().setValue( |
646 repository.getData("parse_failed_repair_default").isBoolean().bo
oleanValue()); | 514 repository.getData("parse_failed_repair_default").isBoolean().bo
oleanValue()); |
647 hostless.setValue(false); | 515 display.getHostless().setValue(false); |
648 kernel.setText(""); | 516 display.getKernel().setText(""); |
649 kernel_cmdline.setText(""); | 517 display.getKernelCmdline().setText(""); |
650 timeout.setText(Utils.jsonToString(repository.getData("job_timeout_defau
lt"))); | 518 display.getTimeout().setText(Utils.jsonToString(repository.getData("job_
timeout_default"))); |
651 maxRuntime.setText(Utils.jsonToString(repository.getData("job_max_runtim
e_hrs_default"))); | 519 display.getMaxRuntime().setText( |
652 emailList.setText(""); | 520 Utils.jsonToString(repository.getData("job_max_runtime_hrs_defau
lt"))); |
| 521 display.getEmailList().setText(""); |
653 testSelector.reset(); | 522 testSelector.reset(); |
654 skipVerify.setValue(false); | 523 display.getSkipVerify().setValue(false); |
655 profilersPanel.reset(); | 524 profilersPanel.reset(); |
656 setInputsEnabled(); | 525 setInputsEnabled(); |
657 controlTypeSelect.setControlType(TestSelector.CLIENT_TYPE); | 526 controlTypeSelect.setControlType(TestSelector.CLIENT_TYPE); |
658 controlTypeSelect.setEnabled(false); | 527 controlTypeSelect.setEnabled(false); |
659 synchCountInput.setEnabled(false); | 528 display.getSynchCountInput().setEnabled(false); |
660 synchCountInput.setText("1"); | 529 display.getSynchCountInput().setText("1"); |
661 controlFile.setText(""); | 530 display.getControlFile().setText(""); |
662 controlFile.setReadOnly(true); | 531 display.getControlFile().setReadOnly(true); |
663 controlEdited = false; | 532 controlEdited = false; |
664 controlFilePanel.setOpen(false); | 533 display.setControlFilePanelOpen(false); |
665 editControlButton.setText(EDIT_CONTROL_STRING); | 534 display.getEditControlButton().setText(EDIT_CONTROL_STRING); |
666 hostSelector.reset(); | 535 hostSelector.reset(); |
667 dependencies = new JSONArray(); | 536 dependencies = new JSONArray(); |
668 } | 537 } |
669 | 538 |
670 protected void submitJob(final boolean isTemplate) { | 539 private void submitJob(final boolean isTemplate) { |
671 final int timeoutValue, maxRuntimeValue; | 540 final int timeoutValue, maxRuntimeValue; |
672 final JSONValue synchCount; | 541 final JSONValue synchCount; |
673 try { | 542 try { |
674 timeoutValue = parsePositiveIntegerInput(timeout.getText(), "timeout
"); | 543 timeoutValue = parsePositiveIntegerInput(display.getTimeout().getTex
t(), "timeout"); |
675 maxRuntimeValue = parsePositiveIntegerInput(maxRuntime.getText(), "m
ax runtime"); | 544 maxRuntimeValue = parsePositiveIntegerInput( |
| 545 display.getMaxRuntime().getText(), "max runtime"); |
676 | 546 |
677 if (hostless.getValue()) { | 547 if (display.getHostless().getValue()) { |
678 synchCount = JSONNull.getInstance(); | 548 synchCount = JSONNull.getInstance(); |
679 } else { | 549 } else { |
680 synchCount = new JSONNumber(parsePositiveIntegerInput( | 550 synchCount = new JSONNumber(parsePositiveIntegerInput( |
681 synchCountInput.getText(), "number of machines used per exec
ution")); | 551 display.getSynchCountInput().getText(), |
| 552 "number of machines used per execution")); |
682 } | 553 } |
683 } catch (IllegalArgumentException exc) { | 554 } catch (IllegalArgumentException exc) { |
684 return; | 555 return; |
685 } | 556 } |
686 | 557 |
687 // disallow accidentally clicking submit twice | 558 // disallow accidentally clicking submit twice |
688 submitJobButton.setEnabled(false); | 559 display.getSubmitJobButton().setEnabled(false); |
689 | 560 |
690 final SimpleCallback doSubmit = new SimpleCallback() { | 561 final SimpleCallback doSubmit = new SimpleCallback() { |
691 public void doCallback(Object source) { | 562 public void doCallback(Object source) { |
692 JSONObject args = new JSONObject(); | 563 JSONObject args = new JSONObject(); |
693 args.put("name", new JSONString(jobName.getText())); | 564 args.put("name", new JSONString(display.getJobName().getText()))
; |
694 String priority = priorityList.getItemText(priorityList.getSelec
tedIndex()); | 565 String priority = display.getPriorityList().getSelectedName(); |
695 args.put("priority", new JSONString(priority)); | 566 args.put("priority", new JSONString(priority)); |
696 args.put("control_file", new JSONString(controlFile.getText())); | 567 args.put("control_file", new JSONString(display.getControlFile()
.getText())); |
697 args.put("control_type", | 568 args.put("control_type", |
698 new JSONString(controlTypeSelect.getControlType())); | 569 new JSONString(controlTypeSelect.getControlType())); |
699 args.put("synch_count", synchCount); | 570 args.put("synch_count", synchCount); |
700 args.put("timeout", new JSONNumber(timeoutValue)); | 571 args.put("timeout", new JSONNumber(timeoutValue)); |
701 args.put("max_runtime_hrs", new JSONNumber(maxRuntimeValue)); | 572 args.put("max_runtime_hrs", new JSONNumber(maxRuntimeValue)); |
702 args.put("email_list", new JSONString(emailList.getText())); | 573 args.put("email_list", new JSONString(display.getEmailList().get
Text())); |
703 args.put("run_verify", JSONBoolean.getInstance(!skipVerify.getVa
lue())); | 574 args.put("run_verify", JSONBoolean.getInstance( |
| 575 !display.getSkipVerify().getValue())); |
704 args.put("is_template", JSONBoolean.getInstance(isTemplate)); | 576 args.put("is_template", JSONBoolean.getInstance(isTemplate)); |
705 args.put("dependencies", getSelectedDependencies()); | 577 args.put("dependencies", getSelectedDependencies()); |
706 args.put("reboot_before", new JSONString(rebootBefore.getSelecte
dChoice())); | 578 args.put("reboot_before", new JSONString(rebootBefore.getSelecte
dChoice())); |
707 args.put("reboot_after", new JSONString(rebootAfter.getSelectedC
hoice())); | 579 args.put("reboot_after", new JSONString(rebootAfter.getSelectedC
hoice())); |
708 args.put("parse_failed_repair", | 580 args.put("parse_failed_repair", |
709 JSONBoolean.getInstance(parseFailedRepair.getValue())); | 581 JSONBoolean.getInstance(display.getParseFailedRepair().
getValue())); |
710 args.put("hostless", JSONBoolean.getInstance(hostless.getValue()
)); | 582 args.put("hostless", JSONBoolean.getInstance(display.getHostless
().getValue())); |
711 | 583 |
712 if (staticData.getData("drone_sets_enabled").isBoolean().boolean
Value()) { | 584 if (staticData.getData("drone_sets_enabled").isBoolean().boolean
Value()) { |
713 args.put("drone_set", | 585 args.put("drone_set", new JSONString(display.getDroneSet().g
etSelectedName())); |
714 new JSONString(droneSet.getItemText(droneSet.getSele
ctedIndex()))); | |
715 } | 586 } |
716 | 587 |
717 HostSelector.HostSelection hosts = hostSelector.getSelectedHosts
(); | 588 HostSelector.HostSelection hosts = hostSelector.getSelectedHosts
(); |
718 args.put("hosts", Utils.stringsToJSON(hosts.hosts)); | 589 args.put("hosts", Utils.stringsToJSON(hosts.hosts)); |
719 args.put("meta_hosts", Utils.stringsToJSON(hosts.metaHosts)); | 590 args.put("meta_hosts", Utils.stringsToJSON(hosts.metaHosts)); |
720 args.put("one_time_hosts", | 591 args.put("one_time_hosts", |
721 Utils.stringsToJSON(hosts.oneTimeHosts)); | 592 Utils.stringsToJSON(hosts.oneTimeHosts)); |
722 | 593 |
723 rpcProxy.rpcCall("create_job", args, new JsonRpcCallback() { | 594 rpcProxy.rpcCall("create_job", args, new JsonRpcCallback() { |
724 @Override | 595 @Override |
725 public void onSuccess(JSONValue result) { | 596 public void onSuccess(JSONValue result) { |
726 int id = (int) result.isNumber().doubleValue(); | 597 int id = (int) result.isNumber().doubleValue(); |
727 NotifyManager.getInstance().showMessage( | 598 NotifyManager.getInstance().showMessage( |
728 "Job " + Integer.toString(id) + " created"); | 599 "Job " + Integer.toString(id) + " created"); |
729 reset(); | 600 reset(); |
730 if (listener != null) | 601 if (listener != null) { |
731 listener.onJobCreated(id); | 602 listener.onJobCreated(id); |
732 submitJobButton.setEnabled(true); | 603 } |
| 604 display.getSubmitJobButton().setEnabled(true); |
733 } | 605 } |
734 | 606 |
735 @Override | 607 @Override |
736 public void onError(JSONObject errorObject) { | 608 public void onError(JSONObject errorObject) { |
737 super.onError(errorObject); | 609 super.onError(errorObject); |
738 submitJobButton.setEnabled(true); | 610 display.getSubmitJobButton().setEnabled(true); |
739 } | 611 } |
740 }); | 612 }); |
741 } | 613 } |
742 }; | 614 }; |
743 | 615 |
744 // ensure control file is ready for submission | 616 // ensure control file is ready for submission |
745 if (!controlReadyForSubmit) | 617 if (!controlReadyForSubmit) { |
746 generateControlFile(true, doSubmit, new SimpleCallback() { | 618 generateControlFile(true, doSubmit, new SimpleCallback() { |
747 public void doCallback(Object source) { | 619 public void doCallback(Object source) { |
748 submitJobButton.setEnabled(true); | 620 display.getSubmitJobButton().setEnabled(true); |
749 } | 621 } |
750 }); | 622 }); |
751 else | 623 } else { |
752 doSubmit.doCallback(this); | 624 doSubmit.doCallback(this); |
| 625 } |
753 } | 626 } |
754 | 627 |
755 private JSONArray getSelectedDependencies() { | 628 private JSONArray getSelectedDependencies() { |
756 return dependencies; | 629 return dependencies; |
757 } | 630 } |
758 | 631 |
759 private void setSelectedDependencies(JSONArray dependencies) { | 632 private void setSelectedDependencies(JSONArray dependencies) { |
760 this.dependencies = dependencies; | 633 this.dependencies = dependencies; |
761 } | 634 } |
762 | 635 |
763 private int parsePositiveIntegerInput(String input, String fieldName) { | 636 private int parsePositiveIntegerInput(String input, String fieldName) { |
764 final int parsedInt; | 637 final int parsedInt; |
765 try { | 638 try { |
766 if (input.equals("") || | 639 if (input.equals("") || |
767 (parsedInt = Integer.parseInt(input)) <= 0) { | 640 (parsedInt = Integer.parseInt(input)) <= 0) { |
768 String error = "Please enter a positive " + fieldName; | 641 String error = "Please enter a positive " + fieldName; |
769 NotifyManager.getInstance().showError(error); | 642 NotifyManager.getInstance().showError(error); |
770 throw new IllegalArgumentException(); | 643 throw new IllegalArgumentException(); |
771 } | 644 } |
772 } catch (NumberFormatException e) { | 645 } catch (NumberFormatException e) { |
773 String error = "Invalid " + fieldName + ": \"" + input + "\""; | 646 String error = "Invalid " + fieldName + ": \"" + input + "\""; |
774 NotifyManager.getInstance().showError(error); | 647 NotifyManager.getInstance().showError(error); |
775 throw new IllegalArgumentException(); | 648 throw new IllegalArgumentException(); |
776 } | 649 } |
777 return parsedInt; | 650 return parsedInt; |
778 } | 651 } |
779 | 652 |
780 @Override | |
781 public void refresh() { | 653 public void refresh() { |
782 super.refresh(); | |
783 hostSelector.refresh(); | 654 hostSelector.refresh(); |
784 } | 655 } |
785 | 656 |
786 public void onTestSelectionChanged() { | 657 public void onTestSelectionChanged() { |
787 generateControlFile(false); | 658 generateControlFile(false); |
788 setInputsEnabled(); | 659 setInputsEnabled(); |
789 } | 660 } |
790 | 661 |
791 private void setRebootSelectorDefault(RadioChooser chooser, String name) { | 662 private void setRebootSelectorDefault(RadioChooser chooser, String name) { |
792 JSONObject user = staticData.getData("current_user").isObject(); | 663 JSONObject user = staticData.getData("current_user").isObject(); |
793 String defaultOption = Utils.jsonToString(user.get(name)); | 664 String defaultOption = Utils.jsonToString(user.get(name)); |
794 chooser.setDefaultChoice(defaultOption); | 665 chooser.setDefaultChoice(defaultOption); |
795 } | 666 } |
796 | 667 |
797 private void selectPreferredDroneSet() { | 668 private void selectPreferredDroneSet() { |
798 JSONObject user = staticData.getData("current_user").isObject(); | 669 JSONObject user = staticData.getData("current_user").isObject(); |
799 String preference = Utils.jsonToString(user.get("drone_set")); | 670 JSONValue droneSet = user.get("drone_set"); |
800 AfeUtils.setSelectedItem(droneSet, preference); | 671 if (droneSet.isNull() == null) { |
| 672 String preference = Utils.jsonToString(user.get("drone_set")); |
| 673 display.getDroneSet().selectByName(preference); |
| 674 } |
801 } | 675 } |
802 | 676 |
803 public void onPreferencesChanged() { | 677 public void onPreferencesChanged() { |
804 setRebootSelectorDefault(rebootBefore, "reboot_before"); | 678 setRebootSelectorDefault(rebootBefore, "reboot_before"); |
805 setRebootSelectorDefault(rebootAfter, "reboot_after"); | 679 setRebootSelectorDefault(rebootAfter, "reboot_after"); |
806 selectPreferredDroneSet(); | 680 selectPreferredDroneSet(); |
807 testSelector.reset(); | 681 testSelector.reset(); |
808 } | 682 } |
809 | 683 |
810 private boolean parameterizedJobsEnabled() { | 684 private boolean parameterizedJobsEnabled() { |
811 return staticData.getData("parameterized_jobs").isBoolean().booleanValue
(); | 685 return staticData.getData("parameterized_jobs").isBoolean().booleanValue
(); |
812 } | 686 } |
813 } | 687 } |
OLD | NEW |