Index: frontend/client/src/autotest/afe/CreateJobView.java |
diff --git a/frontend/client/src/autotest/afe/create/CreateJobViewPresenter.java b/frontend/client/src/autotest/afe/CreateJobView.java |
similarity index 54% |
rename from frontend/client/src/autotest/afe/create/CreateJobViewPresenter.java |
rename to frontend/client/src/autotest/afe/CreateJobView.java |
index ff25998d6c68160009f0d7befb9b08586d0f5636..8b9e1fe80d31a935772385983a753bb97f94a33f 100644 |
--- a/frontend/client/src/autotest/afe/create/CreateJobViewPresenter.java |
+++ b/frontend/client/src/autotest/afe/CreateJobView.java |
@@ -1,15 +1,7 @@ |
-package autotest.afe.create; |
- |
-import autotest.afe.AfeUtils; |
-import autotest.afe.CheckBoxPanel; |
-import autotest.afe.ControlTypeSelect; |
-import autotest.afe.HostSelector; |
-import autotest.afe.IButton; |
-import autotest.afe.ICheckBox; |
-import autotest.afe.ITextArea; |
-import autotest.afe.ITextBox; |
-import autotest.afe.TestSelector; |
+package autotest.afe; |
+ |
import autotest.afe.TestSelector.TestSelectorListener; |
+import autotest.afe.UserPreferencesView.UserPreferencesListener; |
import autotest.common.JSONArrayList; |
import autotest.common.JsonRpcCallback; |
import autotest.common.JsonRpcProxy; |
@@ -18,7 +10,7 @@ import autotest.common.StaticDataRepository; |
import autotest.common.Utils; |
import autotest.common.ui.NotifyManager; |
import autotest.common.ui.RadioChooser; |
-import autotest.common.ui.SimplifiedList; |
+import autotest.common.ui.TabView; |
import com.google.gwt.event.dom.client.BlurEvent; |
import com.google.gwt.event.dom.client.BlurHandler; |
@@ -26,14 +18,11 @@ import com.google.gwt.event.dom.client.ChangeEvent; |
import com.google.gwt.event.dom.client.ChangeHandler; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
-import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.event.dom.client.KeyCodes; |
import com.google.gwt.event.dom.client.KeyPressEvent; |
import com.google.gwt.event.dom.client.KeyPressHandler; |
import com.google.gwt.event.logical.shared.CloseEvent; |
import com.google.gwt.event.logical.shared.CloseHandler; |
-import com.google.gwt.event.logical.shared.HasCloseHandlers; |
-import com.google.gwt.event.logical.shared.HasOpenHandlers; |
import com.google.gwt.event.logical.shared.OpenEvent; |
import com.google.gwt.event.logical.shared.OpenHandler; |
import com.google.gwt.json.client.JSONArray; |
@@ -45,82 +34,174 @@ import com.google.gwt.json.client.JSONString; |
import com.google.gwt.json.client.JSONValue; |
import com.google.gwt.user.client.DOM; |
import com.google.gwt.user.client.Window; |
+import com.google.gwt.user.client.ui.Anchor; |
+import com.google.gwt.user.client.ui.Button; |
+import com.google.gwt.user.client.ui.CheckBox; |
+import com.google.gwt.user.client.ui.Composite; |
import com.google.gwt.user.client.ui.DisclosurePanel; |
-import com.google.gwt.user.client.ui.HasText; |
-import com.google.gwt.user.client.ui.HasValue; |
+import com.google.gwt.user.client.ui.FlexTable; |
+import com.google.gwt.user.client.ui.HorizontalPanel; |
+import com.google.gwt.user.client.ui.Label; |
+import com.google.gwt.user.client.ui.ListBox; |
+import com.google.gwt.user.client.ui.Panel; |
+import com.google.gwt.user.client.ui.RadioButton; |
+import com.google.gwt.user.client.ui.TextArea; |
+import com.google.gwt.user.client.ui.TextBox; |
+import com.google.gwt.user.client.ui.VerticalPanel; |
import java.util.ArrayList; |
import java.util.HashMap; |
import java.util.List; |
import java.util.Map; |
-public class CreateJobViewPresenter implements TestSelectorListener { |
- public static interface Display { |
- public CheckBoxPanel.Display getCheckBoxPanelDisplay(); |
- public ControlTypeSelect.Display getControlTypeSelectDisplay(); |
- public TestSelector.Display getTestSelectorDisplay(); |
- public IButton getEditControlButton(); |
- public HasText getJobName(); |
- public SimplifiedList getPriorityList(); |
- public HasText getTimeout(); |
- public HasText getMaxRuntime(); |
- public HasText getEmailList(); |
- public ICheckBox getSkipVerify(); |
- public RadioChooser.Display getRebootBefore(); |
- public RadioChooser.Display getRebootAfter(); |
- public HasValue<Boolean> getParseFailedRepair(); |
- public ICheckBox getHostless(); |
- public HostSelector.Display getHostSelectorDisplay(); |
- public SimplifiedList getDroneSet(); |
- public ITextBox getSynchCountInput(); |
- public ITextArea getControlFile(); |
- public void setControlFilePanelOpen(boolean isOpen); |
- public ICheckBox getRunNonProfiledIteration(); |
- public ITextBox getKernel(); |
- public ITextBox getKernelCmdline(); |
- public HasText getViewLink(); |
- public HasCloseHandlers<DisclosurePanel> getControlFilePanelClose(); |
- public HasOpenHandlers<DisclosurePanel> getControlFilePanelOpen(); |
- public IButton getSubmitJobButton(); |
- public HasClickHandlers getCreateTemplateJobButton(); |
- public HasClickHandlers getResetButton(); |
- } |
- |
- private static final String EDIT_CONTROL_STRING = "Edit control file"; |
- private static final String UNEDIT_CONTROL_STRING= "Revert changes"; |
- private static final String VIEW_CONTROL_STRING = "View control file"; |
- private static final String HIDE_CONTROL_STRING = "Hide control file"; |
+public class CreateJobView extends TabView |
+ implements TestSelectorListener, UserPreferencesListener { |
+ public static final int TEST_COLUMNS = 5; |
+ |
+ protected static final String EDIT_CONTROL_STRING = "Edit control file"; |
+ protected static final String UNEDIT_CONTROL_STRING= "Revert changes"; |
+ protected static final String VIEW_CONTROL_STRING = "View control file"; |
+ protected static final String HIDE_CONTROL_STRING = "Hide control file"; |
public interface JobCreateListener { |
public void onJobCreated(int jobId); |
} |
- private JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy(); |
- private JobCreateListener listener; |
+ protected JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy(); |
+ protected JobCreateListener listener; |
- private StaticDataRepository staticData = StaticDataRepository.getRepository(); |
+ private static class CheckBoxPanel<T extends CheckBox> extends Composite { |
+ protected int numColumns; |
+ protected FlexTable table = new FlexTable(); |
+ protected List<T> testBoxes = new ArrayList<T>(); |
- private CheckBoxPanel profilersPanel = new CheckBoxPanel(); |
- private ControlTypeSelect controlTypeSelect = new ControlTypeSelect(); |
- protected TestSelector testSelector = new TestSelector(); |
- private RadioChooser rebootBefore = new RadioChooser(); |
- private RadioChooser rebootAfter = new RadioChooser(); |
- private HostSelector hostSelector; |
+ public CheckBoxPanel(int columns) { |
+ numColumns = columns; |
+ initWidget(table); |
+ } |
- private boolean controlEdited = false; |
- private boolean controlReadyForSubmit = false; |
- private JSONArray dependencies = new JSONArray(); |
+ public void add(T checkBox) { |
+ int row = testBoxes.size() / numColumns; |
+ int col = testBoxes.size() % numColumns; |
+ table.setWidget(row, col, checkBox); |
+ testBoxes.add(checkBox); |
+ } |
+ |
+ public List<T> getChecked() { |
+ List<T> result = new ArrayList<T>(); |
+ for(T checkBox : testBoxes) { |
+ if (checkBox.getValue()) |
+ result.add(checkBox); |
+ } |
+ return result; |
+ } |
+ |
+ public void setEnabled(boolean enabled) { |
+ for(T thisBox : testBoxes) { |
+ thisBox.setEnabled(enabled); |
+ } |
+ } |
+ |
+ public void reset() { |
+ for (T thisBox : testBoxes) { |
+ thisBox.setValue(false); |
+ } |
+ } |
+ } |
- private Display display; |
+ private static class ControlTypeSelect extends Composite { |
+ public static final String RADIO_GROUP = "controlTypeGroup"; |
+ protected RadioButton client, server; |
+ protected Panel panel = new HorizontalPanel(); |
- public void bindDisplay(Display display) { |
- this.display = display; |
+ public ControlTypeSelect() { |
+ client = new RadioButton(RADIO_GROUP, TestSelector.CLIENT_TYPE); |
+ server = new RadioButton(RADIO_GROUP, TestSelector.SERVER_TYPE); |
+ panel.add(client); |
+ panel.add(server); |
+ client.setValue(true); // client is default |
+ initWidget(panel); |
+ |
+ client.addClickHandler(new ClickHandler() { |
+ public void onClick(ClickEvent event) { |
+ onChanged(); |
+ } |
+ }); |
+ server.addClickHandler(new ClickHandler() { |
+ public void onClick(ClickEvent event) { |
+ onChanged(); |
+ } |
+ }); |
+ } |
+ |
+ public String getControlType() { |
+ if (client.getValue()) |
+ return client.getText(); |
+ return server.getText(); |
+ } |
+ |
+ public void setControlType(String type) { |
+ if (client.getText().equals(type)) |
+ client.setValue(true); |
+ else if (server.getText().equals(type)) |
+ server.setValue(true); |
+ else |
+ throw new IllegalArgumentException("Invalid control type"); |
+ onChanged(); |
+ } |
+ |
+ public void setEnabled(boolean enabled) { |
+ client.setEnabled(enabled); |
+ server.setEnabled(enabled); |
+ } |
+ |
+ protected void onChanged() { |
+ } |
} |
- public CreateJobViewPresenter(JobCreateListener listener) { |
+ protected StaticDataRepository staticData = StaticDataRepository.getRepository(); |
+ |
+ protected TextBox jobName = new TextBox(); |
+ protected ListBox priorityList = new ListBox(); |
+ protected TextBox kernel = new TextBox(); |
+ protected TextBox kernel_cmdline = new TextBox(); |
+ protected TextBox timeout = new TextBox(); |
+ private TextBox maxRuntime = new TextBox(); |
+ protected TextBox emailList = new TextBox(); |
+ protected CheckBox skipVerify = new CheckBox(); |
+ private RadioChooser rebootBefore = new RadioChooser(); |
+ private RadioChooser rebootAfter = new RadioChooser(); |
+ private CheckBox parseFailedRepair = new CheckBox(); |
+ private CheckBox hostless = new CheckBox(); |
+ protected TestSelector testSelector; |
+ protected CheckBoxPanel<CheckBox> profilersPanel = |
+ new CheckBoxPanel<CheckBox>(TEST_COLUMNS); |
+ private CheckBox runNonProfiledIteration = |
+ new CheckBox("Run each test without profilers first"); |
+ private ListBox droneSet = new ListBox(); |
+ protected TextArea controlFile = new TextArea(); |
+ protected DisclosurePanel controlFilePanel = new DisclosurePanel(); |
+ protected ControlTypeSelect controlTypeSelect; |
+ protected TextBox synchCountInput = new TextBox(); |
+ protected Button editControlButton = new Button(EDIT_CONTROL_STRING); |
+ protected HostSelector hostSelector; |
+ protected Button submitJobButton = new Button("Submit Job"); |
+ protected Button createTemplateJobButton = new Button("Create Template Job"); |
+ private Button resetButton = new Button("Reset"); |
+ |
+ protected boolean controlEdited = false; |
+ protected boolean controlReadyForSubmit = false; |
+ private JSONArray dependencies = new JSONArray(); |
+ |
+ public CreateJobView(JobCreateListener listener) { |
this.listener = listener; |
} |
+ @Override |
+ public String getElementId() { |
+ return "create_job"; |
+ } |
+ |
public void cloneJob(JSONValue cloneInfo) { |
// reset() fires the TestSelectorListener, which will generate a new control file. We do |
// no want this, so we'll stop listening to it for a bit. |
@@ -133,34 +214,39 @@ public class CreateJobViewPresenter implements TestSelectorListener { |
JSONObject cloneObject = cloneInfo.isObject(); |
JSONObject jobObject = cloneObject.get("job").isObject(); |
- display.getJobName().setText(jobObject.get("name").isString().stringValue()); |
+ jobName.setText(jobObject.get("name").isString().stringValue()); |
String priority = jobObject.get("priority").isString().stringValue(); |
- display.getPriorityList().selectByName(priority); |
+ for (int i = 0; i < priorityList.getItemCount(); i++) { |
+ if (priorityList.getItemText(i).equals(priority)) { |
+ priorityList.setSelectedIndex(i); |
+ break; |
+ } |
+ } |
- display.getTimeout().setText(Utils.jsonToString(jobObject.get("timeout"))); |
- display.getMaxRuntime().setText(Utils.jsonToString(jobObject.get("max_runtime_hrs"))); |
- display.getEmailList().setText( |
+ timeout.setText(Utils.jsonToString(jobObject.get("timeout"))); |
+ maxRuntime.setText(Utils.jsonToString(jobObject.get("max_runtime_hrs"))); |
+ emailList.setText( |
jobObject.get("email_list").isString().stringValue()); |
- display.getSkipVerify().setValue(!jobObject.get("run_verify").isBoolean().booleanValue()); |
+ skipVerify.setValue(!jobObject.get("run_verify").isBoolean().booleanValue()); |
rebootBefore.setSelectedChoice(Utils.jsonToString(jobObject.get("reboot_before"))); |
rebootAfter.setSelectedChoice(Utils.jsonToString(jobObject.get("reboot_after"))); |
- display.getParseFailedRepair().setValue( |
+ parseFailedRepair.setValue( |
jobObject.get("parse_failed_repair").isBoolean().booleanValue()); |
- display.getHostless().setValue(cloneObject.get("hostless").isBoolean().booleanValue()); |
- if (display.getHostless().getValue()) { |
+ hostless.setValue(cloneObject.get("hostless").isBoolean().booleanValue()); |
+ if (hostless.getValue()) { |
hostSelector.setEnabled(false); |
} |
if (cloneObject.get("drone_set").isNull() == null) { |
- display.getDroneSet().selectByName(Utils.jsonToString(cloneObject.get("drone_set"))); |
+ AfeUtils.setSelectedItem(droneSet, Utils.jsonToString(cloneObject.get("drone_set"))); |
} |
controlTypeSelect.setControlType( |
jobObject.get("control_type").isString().stringValue()); |
- display.getSynchCountInput().setText(Utils.jsonToString(jobObject.get("synch_count"))); |
+ synchCountInput.setText(Utils.jsonToString(jobObject.get("synch_count"))); |
setSelectedDependencies(jobObject.get("dependencies").isArray()); |
- display.getControlFile().setText( |
+ controlFile.setText( |
jobObject.get("control_file").isString().stringValue()); |
controlReadyForSubmit = true; |
@@ -182,38 +268,40 @@ public class CreateJobViewPresenter implements TestSelectorListener { |
hostSelector.refresh(); |
} |
- private void openControlFileEditor() { |
- display.getControlFile().setReadOnly(false); |
- display.getEditControlButton().setText(UNEDIT_CONTROL_STRING); |
- display.setControlFilePanelOpen(true); |
+ protected void openControlFileEditor() { |
+ controlFile.setReadOnly(false); |
+ editControlButton.setText(UNEDIT_CONTROL_STRING); |
+ controlFilePanel.setOpen(true); |
controlTypeSelect.setEnabled(true); |
- display.getSynchCountInput().setEnabled(true); |
- display.getEditControlButton().setEnabled(true); |
+ synchCountInput.setEnabled(true); |
+ editControlButton.setEnabled(true); |
} |
- private void populatePriorities(JSONArray priorities) { |
+ protected void populatePriorities(JSONArray priorities) { |
for(int i = 0; i < priorities.size(); i++) { |
JSONArray priorityData = priorities.get(i).isArray(); |
String priority = priorityData.get(1).isString().stringValue(); |
- display.getPriorityList().addItem(priority, priority); |
+ priorityList.addItem(priority); |
} |
resetPriorityToDefault(); |
} |
- private void resetPriorityToDefault() { |
+ protected void resetPriorityToDefault() { |
JSONValue defaultValue = staticData.getData("default_priority"); |
String defaultPriority = defaultValue.isString().stringValue(); |
- display.getPriorityList().selectByName(defaultPriority); |
+ for(int i = 0; i < priorityList.getItemCount(); i++) { |
+ if (priorityList.getItemText(i).equals(defaultPriority)) |
+ priorityList.setSelectedIndex(i); |
+ } |
} |
- private void populateProfilers() { |
+ protected void populateProfilers() { |
JSONArray tests = staticData.getData("profilers").isArray(); |
for(JSONObject profiler : new JSONArrayList<JSONObject>(tests)) { |
String name = profiler.get("name").isString().stringValue(); |
- ICheckBox checkbox = profilersPanel.generateCheckBox(); |
- checkbox.setText(name); |
+ CheckBox checkbox = new CheckBox(name); |
checkbox.addClickHandler(new ClickHandler() { |
public void onClick(ClickEvent event) { |
updateNonProfiledRunControl(); |
@@ -224,19 +312,19 @@ public class CreateJobViewPresenter implements TestSelectorListener { |
profilersPanel.add(checkbox); |
} |
- display.getRunNonProfiledIteration().addClickHandler(new ClickHandler() { |
+ runNonProfiledIteration.addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
generateControlFile(false); |
} |
}); |
// default to checked -- run a non-profiled iteration by default |
- display.getRunNonProfiledIteration().setValue(true); |
+ runNonProfiledIteration.setValue(true); |
} |
private void updateNonProfiledRunControl() { |
boolean anyProfilersChecked = !profilersPanel.getChecked().isEmpty(); |
- display.getRunNonProfiledIteration().setVisible(anyProfilersChecked); |
+ runNonProfiledIteration.setVisible(anyProfilersChecked); |
} |
private void populateRebootChoices() { |
@@ -270,10 +358,9 @@ public class CreateJobViewPresenter implements TestSelectorListener { |
protected JSONObject getControlFileParams(boolean readyForSubmit) { |
JSONObject params = new JSONObject(); |
- String kernelString = display.getKernel().getText(); |
+ String kernelString = kernel.getText(); |
if (!kernelString.equals("")) { |
- params.put( |
- "kernel", getKernelParams(kernelString, display.getKernelCmdline().getText())); |
+ params.put("kernel", getKernelParams(kernelString, kernel_cmdline.getText())); |
} |
JSONArray tests = new JSONArray(); |
@@ -282,22 +369,22 @@ public class CreateJobViewPresenter implements TestSelectorListener { |
} |
JSONArray profilers = new JSONArray(); |
- for (ICheckBox profiler : profilersPanel.getChecked()) { |
+ for (CheckBox profiler : profilersPanel.getChecked()) { |
profilers.set(profilers.size(), new JSONString(profiler.getText())); |
} |
params.put("tests", tests); |
params.put("profilers", profilers); |
- if (display.getRunNonProfiledIteration().isVisible()) { |
- boolean profileOnly = !display.getRunNonProfiledIteration().getValue(); |
+ if (runNonProfiledIteration.isVisible()) { |
+ boolean profileOnly = !runNonProfiledIteration.getValue(); |
params.put("profile_only", JSONBoolean.getInstance(profileOnly)); |
} |
return params; |
} |
- private void generateControlFile(final boolean readyForSubmit, |
+ protected void generateControlFile(final boolean readyForSubmit, |
final SimpleCallback finishedCallback, |
final SimpleCallback errorCallback) { |
JSONObject params = getControlFileParams(readyForSubmit); |
@@ -309,22 +396,20 @@ public class CreateJobViewPresenter implements TestSelectorListener { |
boolean isServer = controlInfo.get("is_server").isBoolean().booleanValue(); |
String synchCount = Utils.jsonToString(controlInfo.get("synch_count")); |
setSelectedDependencies(controlInfo.get("dependencies").isArray()); |
- display.getControlFile().setText(controlFileText); |
+ controlFile.setText(controlFileText); |
controlTypeSelect.setControlType(isServer ? TestSelector.SERVER_TYPE : |
TestSelector.CLIENT_TYPE); |
- display.getSynchCountInput().setText(synchCount); |
+ synchCountInput.setText(synchCount); |
controlReadyForSubmit = readyForSubmit; |
- if (finishedCallback != null) { |
+ if (finishedCallback != null) |
finishedCallback.doCallback(this); |
- } |
} |
@Override |
public void onError(JSONObject errorObject) { |
super.onError(errorObject); |
- if (errorCallback != null) { |
+ if (errorCallback != null) |
errorCallback.doCallback(this); |
- } |
} |
}); |
} |
@@ -344,10 +429,10 @@ public class CreateJobViewPresenter implements TestSelectorListener { |
} |
if (shouldSkipVerify) { |
- display.getSkipVerify().setValue(true); |
- display.getSkipVerify().setEnabled(false); |
+ skipVerify.setValue(true); |
+ skipVerify.setEnabled(false); |
} else { |
- display.getSkipVerify().setEnabled(true); |
+ skipVerify.setEnabled(true); |
} |
} |
@@ -355,30 +440,24 @@ public class CreateJobViewPresenter implements TestSelectorListener { |
testSelector.setEnabled(true); |
profilersPanel.setEnabled(true); |
handleSkipVerify(); |
- display.getKernel().setEnabled(true); |
- display.getKernelCmdline().setEnabled(true); |
+ kernel.setEnabled(true); |
+ kernel_cmdline.setEnabled(true); |
+ } |
+ |
+ protected boolean isClientTypeSelected() { |
+ return testSelector.getSelectedTestType().equals(TestSelector.CLIENT_TYPE); |
} |
protected void disableInputs() { |
testSelector.setEnabled(false); |
profilersPanel.setEnabled(false); |
- display.getKernel().setEnabled(false); |
- display.getKernelCmdline().setEnabled(false); |
+ kernel.setEnabled(false); |
+ kernel_cmdline.setEnabled(false); |
} |
+ @Override |
public void initialize() { |
- profilersPanel.bindDisplay(display.getCheckBoxPanelDisplay()); |
- controlTypeSelect.bindDisplay(display.getControlTypeSelectDisplay()); |
- testSelector.bindDisplay(display.getTestSelectorDisplay()); |
- rebootBefore.bindDisplay(display.getRebootBefore()); |
- rebootAfter.bindDisplay(display.getRebootAfter()); |
- |
- display.getEditControlButton().setText(EDIT_CONTROL_STRING); |
- display.getViewLink().setText(VIEW_CONTROL_STRING); |
- |
- hostSelector = new HostSelector(); |
- hostSelector.initialize(); |
- hostSelector.bindDisplay(display.getHostSelectorDisplay()); |
+ super.initialize(); |
populatePriorities(staticData.getData("priorities").isArray()); |
@@ -388,37 +467,65 @@ public class CreateJobViewPresenter implements TestSelectorListener { |
} |
}; |
- display.getKernel().addBlurHandler(kernelBlurHandler); |
- display.getKernelCmdline().addBlurHandler(kernelBlurHandler); |
+ kernel.addBlurHandler(kernelBlurHandler); |
+ kernel_cmdline.addBlurHandler(kernelBlurHandler); |
KeyPressHandler kernelKeyPressHandler = new KeyPressHandler() { |
public void onKeyPress(KeyPressEvent event) { |
- if (event.getCharCode() == (char) KeyCodes.KEY_ENTER) { |
+ if (event.getCharCode() == (char) KeyCodes.KEY_ENTER) |
generateControlFile(false); |
- } |
} |
}; |
- display.getKernel().addKeyPressHandler(kernelKeyPressHandler); |
- display.getKernelCmdline().addKeyPressHandler(kernelKeyPressHandler); |
+ kernel.addKeyPressHandler(kernelKeyPressHandler); |
+ kernel_cmdline.addKeyPressHandler(kernelKeyPressHandler); |
populateProfilers(); |
+ Panel profilerControls = new VerticalPanel(); |
+ profilerControls.add(profilersPanel); |
+ profilerControls.add(runNonProfiledIteration); |
updateNonProfiledRunControl(); |
+ testSelector = new TestSelector(); |
+ |
populateRebootChoices(); |
onPreferencesChanged(); |
+ controlFile.setSize("50em", "30em"); |
+ controlTypeSelect = new ControlTypeSelect(); |
+ HorizontalPanel controlOptionsPanel = new HorizontalPanel(); |
+ controlOptionsPanel.setVerticalAlignment(HorizontalPanel.ALIGN_BOTTOM); |
+ controlOptionsPanel.add(controlTypeSelect); |
+ Label useLabel = new Label("Use"); |
+ useLabel.getElement().getStyle().setProperty("marginLeft", "1em"); |
+ synchCountInput.setSize("3em", ""); // set width only |
+ synchCountInput.getElement().getStyle().setProperty("margin", "0 0.5em 0 0.5em"); |
+ controlOptionsPanel.add(useLabel); |
+ controlOptionsPanel.add(synchCountInput); |
+ controlOptionsPanel.add(new Label("host(s) per execution")); |
+ Panel controlEditPanel = new VerticalPanel(); |
+ controlEditPanel.add(controlOptionsPanel); |
+ controlEditPanel.add(controlFile); |
+ |
+ Panel controlHeaderPanel = new HorizontalPanel(); |
+ final Anchor viewLink = new Anchor(VIEW_CONTROL_STRING); |
+ controlHeaderPanel.add(viewLink); |
+ controlHeaderPanel.add(editControlButton); |
+ |
if (parameterizedJobsEnabled()) { |
- display.getEditControlButton().setEnabled(false); |
+ editControlButton.setEnabled(false); |
} |
- display.getEditControlButton().addClickHandler(new ClickHandler() { |
+ controlFilePanel.setHeader(controlHeaderPanel); |
+ controlFilePanel.add(controlEditPanel); |
+ |
+ editControlButton.addClickHandler(new ClickHandler() { |
public void onClick(ClickEvent event) { |
DOM.eventCancelBubble(DOM.eventGetCurrentEvent(), true); |
- if (display.getEditControlButton().getText().equals(EDIT_CONTROL_STRING)) { |
+ if (editControlButton.getText().equals(EDIT_CONTROL_STRING)) { |
disableInputs(); |
- display.getEditControlButton().setEnabled(false); |
+ editControlButton.setEnabled(false); |
SimpleCallback onGotControlFile = new SimpleCallback() { |
public void doCallback(Object source) { |
openControlFileEditor(); |
@@ -427,7 +534,7 @@ public class CreateJobViewPresenter implements TestSelectorListener { |
SimpleCallback onControlFileError = new SimpleCallback() { |
public void doCallback(Object source) { |
setInputsEnabled(); |
- display.getEditControlButton().setEnabled(true); |
+ editControlButton.setEnabled(true); |
} |
}; |
generateControlFile(true, onGotControlFile, onControlFileError); |
@@ -435,67 +542,92 @@ public class CreateJobViewPresenter implements TestSelectorListener { |
else { |
if (controlEdited && |
!Window.confirm("Are you sure you want to revert your" + |
- " changes?")) { |
+ " changes?")) |
return; |
- } |
generateControlFile(false); |
- display.getControlFile().setReadOnly(true); |
+ controlFile.setReadOnly(true); |
setInputsEnabled(); |
- display.getEditControlButton().setText(EDIT_CONTROL_STRING); |
+ editControlButton.setText(EDIT_CONTROL_STRING); |
controlTypeSelect.setEnabled(false); |
- display.getSynchCountInput().setEnabled(false); |
+ synchCountInput.setEnabled(false); |
controlEdited = false; |
} |
} |
}); |
- display.getControlFile().addChangeHandler(new ChangeHandler() { |
+ controlFile.addChangeHandler(new ChangeHandler() { |
public void onChange(ChangeEvent event) { |
controlEdited = true; |
} |
}); |
- display.getControlFilePanelClose().addCloseHandler(new CloseHandler<DisclosurePanel>() { |
+ controlFilePanel.addCloseHandler(new CloseHandler<DisclosurePanel>() { |
public void onClose(CloseEvent<DisclosurePanel> event) { |
- display.getViewLink().setText(VIEW_CONTROL_STRING); |
+ viewLink.setText(VIEW_CONTROL_STRING); |
} |
}); |
- display.getControlFilePanelOpen().addOpenHandler(new OpenHandler<DisclosurePanel>() { |
+ controlFilePanel.addOpenHandler(new OpenHandler<DisclosurePanel>() { |
public void onOpen(OpenEvent<DisclosurePanel> event) { |
- display.getViewLink().setText(HIDE_CONTROL_STRING); |
+ viewLink.setText(HIDE_CONTROL_STRING); |
} |
}); |
- display.getSubmitJobButton().addClickHandler(new ClickHandler() { |
+ hostSelector = new HostSelector(); |
+ HostSelectorDisplay hostSelectorDisplay = new HostSelectorDisplay(); |
+ hostSelector.initialize(); |
+ hostSelector.bindDisplay(hostSelectorDisplay); |
+ |
+ submitJobButton.addClickHandler(new ClickHandler() { |
public void onClick(ClickEvent event) { |
submitJob(false); |
} |
}); |
- display.getCreateTemplateJobButton().addClickHandler(new ClickHandler() { |
+ createTemplateJobButton.addClickHandler(new ClickHandler() { |
public void onClick(ClickEvent event) { |
submitJob(true); |
} |
}); |
- display.getResetButton().addClickHandler(new ClickHandler() { |
+ resetButton.addClickHandler(new ClickHandler() { |
public void onClick(ClickEvent event) { |
reset(); |
} |
}); |
- display.getHostless().addClickHandler(new ClickHandler() { |
+ hostless.addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
- hostSelector.setEnabled(!display.getHostless().getValue()); |
+ hostSelector.setEnabled(!hostless.getValue()); |
} |
}); |
reset(); |
+ addWidget(jobName, "create_job_name"); |
+ addWidget(kernel, "create_kernel"); |
+ addWidget(kernel_cmdline, "create_kernel_cmdline"); |
+ addWidget(timeout, "create_timeout"); |
+ addWidget(maxRuntime, "create_max_runtime"); |
+ addWidget(emailList, "create_email_list"); |
+ addWidget(priorityList, "create_priority"); |
+ addWidget(skipVerify, "create_skip_verify"); |
+ addWidget(rebootBefore, "create_reboot_before"); |
+ addWidget(rebootAfter, "create_reboot_after"); |
+ addWidget(parseFailedRepair, "create_parse_failed_repair"); |
+ addWidget(hostless, "create_hostless"); |
+ addWidget(testSelector, "create_tests"); |
+ addWidget(profilerControls, "create_profilers"); |
+ addWidget(controlFilePanel, "create_edit_control"); |
+ addWidget(hostSelectorDisplay, "create_host_selector"); |
+ addWidget(submitJobButton, "create_submit"); |
+ addWidget(createTemplateJobButton, "create_template_job"); |
+ addWidget(resetButton, "create_reset"); |
+ |
if (staticData.getData("drone_sets_enabled").isBoolean().booleanValue()) { |
- AfeUtils.populateListBox(display.getDroneSet(), "drone_sets"); |
+ AfeUtils.popualateListBox(droneSet, "drone_sets"); |
+ addWidget(droneSet, "create_drone_set"); |
} else { |
AfeUtils.removeElement("create_drone_set_wrapper"); |
} |
@@ -506,83 +638,80 @@ public class CreateJobViewPresenter implements TestSelectorListener { |
public void reset() { |
StaticDataRepository repository = StaticDataRepository.getRepository(); |
- display.getJobName().setText(""); |
+ jobName.setText(""); |
resetPriorityToDefault(); |
rebootBefore.reset(); |
rebootAfter.reset(); |
- display.getParseFailedRepair().setValue( |
+ parseFailedRepair.setValue( |
repository.getData("parse_failed_repair_default").isBoolean().booleanValue()); |
- display.getHostless().setValue(false); |
- display.getKernel().setText(""); |
- display.getKernelCmdline().setText(""); |
- display.getTimeout().setText(Utils.jsonToString(repository.getData("job_timeout_default"))); |
- display.getMaxRuntime().setText( |
- Utils.jsonToString(repository.getData("job_max_runtime_hrs_default"))); |
- display.getEmailList().setText(""); |
+ hostless.setValue(false); |
+ kernel.setText(""); |
+ kernel_cmdline.setText(""); |
+ timeout.setText(Utils.jsonToString(repository.getData("job_timeout_default"))); |
+ maxRuntime.setText(Utils.jsonToString(repository.getData("job_max_runtime_hrs_default"))); |
+ emailList.setText(""); |
testSelector.reset(); |
- display.getSkipVerify().setValue(false); |
+ skipVerify.setValue(false); |
profilersPanel.reset(); |
setInputsEnabled(); |
controlTypeSelect.setControlType(TestSelector.CLIENT_TYPE); |
controlTypeSelect.setEnabled(false); |
- display.getSynchCountInput().setEnabled(false); |
- display.getSynchCountInput().setText("1"); |
- display.getControlFile().setText(""); |
- display.getControlFile().setReadOnly(true); |
+ synchCountInput.setEnabled(false); |
+ synchCountInput.setText("1"); |
+ controlFile.setText(""); |
+ controlFile.setReadOnly(true); |
controlEdited = false; |
- display.setControlFilePanelOpen(false); |
- display.getEditControlButton().setText(EDIT_CONTROL_STRING); |
+ controlFilePanel.setOpen(false); |
+ editControlButton.setText(EDIT_CONTROL_STRING); |
hostSelector.reset(); |
dependencies = new JSONArray(); |
} |
- private void submitJob(final boolean isTemplate) { |
+ protected void submitJob(final boolean isTemplate) { |
final int timeoutValue, maxRuntimeValue; |
final JSONValue synchCount; |
try { |
- timeoutValue = parsePositiveIntegerInput(display.getTimeout().getText(), "timeout"); |
- maxRuntimeValue = parsePositiveIntegerInput( |
- display.getMaxRuntime().getText(), "max runtime"); |
+ timeoutValue = parsePositiveIntegerInput(timeout.getText(), "timeout"); |
+ maxRuntimeValue = parsePositiveIntegerInput(maxRuntime.getText(), "max runtime"); |
- if (display.getHostless().getValue()) { |
+ if (hostless.getValue()) { |
synchCount = JSONNull.getInstance(); |
} else { |
synchCount = new JSONNumber(parsePositiveIntegerInput( |
- display.getSynchCountInput().getText(), |
- "number of machines used per execution")); |
+ synchCountInput.getText(), "number of machines used per execution")); |
} |
} catch (IllegalArgumentException exc) { |
return; |
} |
// disallow accidentally clicking submit twice |
- display.getSubmitJobButton().setEnabled(false); |
+ submitJobButton.setEnabled(false); |
final SimpleCallback doSubmit = new SimpleCallback() { |
public void doCallback(Object source) { |
JSONObject args = new JSONObject(); |
- args.put("name", new JSONString(display.getJobName().getText())); |
- String priority = display.getPriorityList().getSelectedName(); |
+ args.put("name", new JSONString(jobName.getText())); |
+ String priority = priorityList.getItemText(priorityList.getSelectedIndex()); |
args.put("priority", new JSONString(priority)); |
- args.put("control_file", new JSONString(display.getControlFile().getText())); |
+ args.put("control_file", new JSONString(controlFile.getText())); |
args.put("control_type", |
new JSONString(controlTypeSelect.getControlType())); |
args.put("synch_count", synchCount); |
args.put("timeout", new JSONNumber(timeoutValue)); |
args.put("max_runtime_hrs", new JSONNumber(maxRuntimeValue)); |
- args.put("email_list", new JSONString(display.getEmailList().getText())); |
- args.put("run_verify", JSONBoolean.getInstance( |
- !display.getSkipVerify().getValue())); |
+ args.put("email_list", new JSONString(emailList.getText())); |
+ args.put("run_verify", JSONBoolean.getInstance(!skipVerify.getValue())); |
args.put("is_template", JSONBoolean.getInstance(isTemplate)); |
args.put("dependencies", getSelectedDependencies()); |
args.put("reboot_before", new JSONString(rebootBefore.getSelectedChoice())); |
args.put("reboot_after", new JSONString(rebootAfter.getSelectedChoice())); |
args.put("parse_failed_repair", |
- JSONBoolean.getInstance(display.getParseFailedRepair().getValue())); |
- args.put("hostless", JSONBoolean.getInstance(display.getHostless().getValue())); |
+ JSONBoolean.getInstance(parseFailedRepair.getValue())); |
+ args.put("hostless", JSONBoolean.getInstance(hostless.getValue())); |
if (staticData.getData("drone_sets_enabled").isBoolean().booleanValue()) { |
- args.put("drone_set", new JSONString(display.getDroneSet().getSelectedName())); |
+ args.put("drone_set", |
+ new JSONString(droneSet.getItemText(droneSet.getSelectedIndex()))); |
} |
HostSelector.HostSelection hosts = hostSelector.getSelectedHosts(); |
@@ -598,31 +727,29 @@ public class CreateJobViewPresenter implements TestSelectorListener { |
NotifyManager.getInstance().showMessage( |
"Job " + Integer.toString(id) + " created"); |
reset(); |
- if (listener != null) { |
+ if (listener != null) |
listener.onJobCreated(id); |
- } |
- display.getSubmitJobButton().setEnabled(true); |
+ submitJobButton.setEnabled(true); |
} |
@Override |
public void onError(JSONObject errorObject) { |
super.onError(errorObject); |
- display.getSubmitJobButton().setEnabled(true); |
+ submitJobButton.setEnabled(true); |
} |
}); |
} |
}; |
// ensure control file is ready for submission |
- if (!controlReadyForSubmit) { |
+ if (!controlReadyForSubmit) |
generateControlFile(true, doSubmit, new SimpleCallback() { |
public void doCallback(Object source) { |
- display.getSubmitJobButton().setEnabled(true); |
+ submitJobButton.setEnabled(true); |
} |
}); |
- } else { |
+ else |
doSubmit.doCallback(this); |
- } |
} |
private JSONArray getSelectedDependencies() { |
@@ -650,7 +777,9 @@ public class CreateJobViewPresenter implements TestSelectorListener { |
return parsedInt; |
} |
+ @Override |
public void refresh() { |
+ super.refresh(); |
hostSelector.refresh(); |
} |
@@ -667,11 +796,8 @@ public class CreateJobViewPresenter implements TestSelectorListener { |
private void selectPreferredDroneSet() { |
JSONObject user = staticData.getData("current_user").isObject(); |
- JSONValue droneSet = user.get("drone_set"); |
- if (droneSet.isNull() == null) { |
- String preference = Utils.jsonToString(user.get("drone_set")); |
- display.getDroneSet().selectByName(preference); |
- } |
+ String preference = Utils.jsonToString(user.get("drone_set")); |
+ AfeUtils.setSelectedItem(droneSet, preference); |
} |
public void onPreferencesChanged() { |