Index: frontend/client/src/autotest/afe/create/CreateJobViewPresenter.java |
diff --git a/frontend/client/src/autotest/afe/CreateJobView.java b/frontend/client/src/autotest/afe/create/CreateJobViewPresenter.java |
similarity index 54% |
rename from frontend/client/src/autotest/afe/CreateJobView.java |
rename to frontend/client/src/autotest/afe/create/CreateJobViewPresenter.java |
index 8b9e1fe80d31a935772385983a753bb97f94a33f..ff25998d6c68160009f0d7befb9b08586d0f5636 100644 |
--- a/frontend/client/src/autotest/afe/CreateJobView.java |
+++ b/frontend/client/src/autotest/afe/create/CreateJobViewPresenter.java |
@@ -1,7 +1,15 @@ |
-package autotest.afe; |
- |
+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; |
import autotest.afe.TestSelector.TestSelectorListener; |
-import autotest.afe.UserPreferencesView.UserPreferencesListener; |
import autotest.common.JSONArrayList; |
import autotest.common.JsonRpcCallback; |
import autotest.common.JsonRpcProxy; |
@@ -10,7 +18,7 @@ import autotest.common.StaticDataRepository; |
import autotest.common.Utils; |
import autotest.common.ui.NotifyManager; |
import autotest.common.ui.RadioChooser; |
-import autotest.common.ui.TabView; |
+import autotest.common.ui.SimplifiedList; |
import com.google.gwt.event.dom.client.BlurEvent; |
import com.google.gwt.event.dom.client.BlurHandler; |
@@ -18,11 +26,14 @@ 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; |
@@ -34,172 +45,80 @@ 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.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 com.google.gwt.user.client.ui.HasText; |
+import com.google.gwt.user.client.ui.HasValue; |
import java.util.ArrayList; |
import java.util.HashMap; |
import java.util.List; |
import java.util.Map; |
-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 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 interface JobCreateListener { |
public void onJobCreated(int jobId); |
} |
- protected JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy(); |
- protected JobCreateListener listener; |
- |
- private static class CheckBoxPanel<T extends CheckBox> extends Composite { |
- protected int numColumns; |
- protected FlexTable table = new FlexTable(); |
- protected List<T> testBoxes = new ArrayList<T>(); |
- |
- public CheckBoxPanel(int columns) { |
- numColumns = columns; |
- initWidget(table); |
- } |
- |
- 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 JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy(); |
+ private JobCreateListener listener; |
- private static class ControlTypeSelect extends Composite { |
- public static final String RADIO_GROUP = "controlTypeGroup"; |
- protected RadioButton client, server; |
- protected Panel panel = new HorizontalPanel(); |
+ private StaticDataRepository staticData = StaticDataRepository.getRepository(); |
- 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() { |
- } |
- } |
- |
- 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 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 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 HostSelector hostSelector; |
+ |
+ private boolean controlEdited = false; |
+ private boolean controlReadyForSubmit = false; |
private JSONArray dependencies = new JSONArray(); |
- public CreateJobView(JobCreateListener listener) { |
- this.listener = listener; |
+ private Display display; |
+ |
+ public void bindDisplay(Display display) { |
+ this.display = display; |
} |
- @Override |
- public String getElementId() { |
- return "create_job"; |
+ public CreateJobViewPresenter(JobCreateListener listener) { |
+ this.listener = listener; |
} |
public void cloneJob(JSONValue cloneInfo) { |
@@ -214,39 +133,34 @@ public class CreateJobView extends TabView |
JSONObject cloneObject = cloneInfo.isObject(); |
JSONObject jobObject = cloneObject.get("job").isObject(); |
- jobName.setText(jobObject.get("name").isString().stringValue()); |
+ display.getJobName().setText(jobObject.get("name").isString().stringValue()); |
String priority = jobObject.get("priority").isString().stringValue(); |
- for (int i = 0; i < priorityList.getItemCount(); i++) { |
- if (priorityList.getItemText(i).equals(priority)) { |
- priorityList.setSelectedIndex(i); |
- break; |
- } |
- } |
+ display.getPriorityList().selectByName(priority); |
- timeout.setText(Utils.jsonToString(jobObject.get("timeout"))); |
- maxRuntime.setText(Utils.jsonToString(jobObject.get("max_runtime_hrs"))); |
- emailList.setText( |
+ display.getTimeout().setText(Utils.jsonToString(jobObject.get("timeout"))); |
+ display.getMaxRuntime().setText(Utils.jsonToString(jobObject.get("max_runtime_hrs"))); |
+ display.getEmailList().setText( |
jobObject.get("email_list").isString().stringValue()); |
- skipVerify.setValue(!jobObject.get("run_verify").isBoolean().booleanValue()); |
+ display.getSkipVerify().setValue(!jobObject.get("run_verify").isBoolean().booleanValue()); |
rebootBefore.setSelectedChoice(Utils.jsonToString(jobObject.get("reboot_before"))); |
rebootAfter.setSelectedChoice(Utils.jsonToString(jobObject.get("reboot_after"))); |
- parseFailedRepair.setValue( |
+ display.getParseFailedRepair().setValue( |
jobObject.get("parse_failed_repair").isBoolean().booleanValue()); |
- hostless.setValue(cloneObject.get("hostless").isBoolean().booleanValue()); |
- if (hostless.getValue()) { |
+ display.getHostless().setValue(cloneObject.get("hostless").isBoolean().booleanValue()); |
+ if (display.getHostless().getValue()) { |
hostSelector.setEnabled(false); |
} |
if (cloneObject.get("drone_set").isNull() == null) { |
- AfeUtils.setSelectedItem(droneSet, Utils.jsonToString(cloneObject.get("drone_set"))); |
+ display.getDroneSet().selectByName(Utils.jsonToString(cloneObject.get("drone_set"))); |
} |
controlTypeSelect.setControlType( |
jobObject.get("control_type").isString().stringValue()); |
- synchCountInput.setText(Utils.jsonToString(jobObject.get("synch_count"))); |
+ display.getSynchCountInput().setText(Utils.jsonToString(jobObject.get("synch_count"))); |
setSelectedDependencies(jobObject.get("dependencies").isArray()); |
- controlFile.setText( |
+ display.getControlFile().setText( |
jobObject.get("control_file").isString().stringValue()); |
controlReadyForSubmit = true; |
@@ -268,40 +182,38 @@ public class CreateJobView extends TabView |
hostSelector.refresh(); |
} |
- protected void openControlFileEditor() { |
- controlFile.setReadOnly(false); |
- editControlButton.setText(UNEDIT_CONTROL_STRING); |
- controlFilePanel.setOpen(true); |
+ private void openControlFileEditor() { |
+ display.getControlFile().setReadOnly(false); |
+ display.getEditControlButton().setText(UNEDIT_CONTROL_STRING); |
+ display.setControlFilePanelOpen(true); |
controlTypeSelect.setEnabled(true); |
- synchCountInput.setEnabled(true); |
- editControlButton.setEnabled(true); |
+ display.getSynchCountInput().setEnabled(true); |
+ display.getEditControlButton().setEnabled(true); |
} |
- protected void populatePriorities(JSONArray priorities) { |
+ private 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(); |
- priorityList.addItem(priority); |
+ display.getPriorityList().addItem(priority, priority); |
} |
resetPriorityToDefault(); |
} |
- protected void resetPriorityToDefault() { |
+ private void resetPriorityToDefault() { |
JSONValue defaultValue = staticData.getData("default_priority"); |
String defaultPriority = defaultValue.isString().stringValue(); |
- for(int i = 0; i < priorityList.getItemCount(); i++) { |
- if (priorityList.getItemText(i).equals(defaultPriority)) |
- priorityList.setSelectedIndex(i); |
- } |
+ display.getPriorityList().selectByName(defaultPriority); |
} |
- protected void populateProfilers() { |
+ private void populateProfilers() { |
JSONArray tests = staticData.getData("profilers").isArray(); |
for(JSONObject profiler : new JSONArrayList<JSONObject>(tests)) { |
String name = profiler.get("name").isString().stringValue(); |
- CheckBox checkbox = new CheckBox(name); |
+ ICheckBox checkbox = profilersPanel.generateCheckBox(); |
+ checkbox.setText(name); |
checkbox.addClickHandler(new ClickHandler() { |
public void onClick(ClickEvent event) { |
updateNonProfiledRunControl(); |
@@ -312,19 +224,19 @@ public class CreateJobView extends TabView |
profilersPanel.add(checkbox); |
} |
- runNonProfiledIteration.addClickHandler(new ClickHandler() { |
+ display.getRunNonProfiledIteration().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
generateControlFile(false); |
} |
}); |
// default to checked -- run a non-profiled iteration by default |
- runNonProfiledIteration.setValue(true); |
+ display.getRunNonProfiledIteration().setValue(true); |
} |
private void updateNonProfiledRunControl() { |
boolean anyProfilersChecked = !profilersPanel.getChecked().isEmpty(); |
- runNonProfiledIteration.setVisible(anyProfilersChecked); |
+ display.getRunNonProfiledIteration().setVisible(anyProfilersChecked); |
} |
private void populateRebootChoices() { |
@@ -358,9 +270,10 @@ public class CreateJobView extends TabView |
protected JSONObject getControlFileParams(boolean readyForSubmit) { |
JSONObject params = new JSONObject(); |
- String kernelString = kernel.getText(); |
+ String kernelString = display.getKernel().getText(); |
if (!kernelString.equals("")) { |
- params.put("kernel", getKernelParams(kernelString, kernel_cmdline.getText())); |
+ params.put( |
+ "kernel", getKernelParams(kernelString, display.getKernelCmdline().getText())); |
} |
JSONArray tests = new JSONArray(); |
@@ -369,22 +282,22 @@ public class CreateJobView extends TabView |
} |
JSONArray profilers = new JSONArray(); |
- for (CheckBox profiler : profilersPanel.getChecked()) { |
+ for (ICheckBox profiler : profilersPanel.getChecked()) { |
profilers.set(profilers.size(), new JSONString(profiler.getText())); |
} |
params.put("tests", tests); |
params.put("profilers", profilers); |
- if (runNonProfiledIteration.isVisible()) { |
- boolean profileOnly = !runNonProfiledIteration.getValue(); |
+ if (display.getRunNonProfiledIteration().isVisible()) { |
+ boolean profileOnly = !display.getRunNonProfiledIteration().getValue(); |
params.put("profile_only", JSONBoolean.getInstance(profileOnly)); |
} |
return params; |
} |
- protected void generateControlFile(final boolean readyForSubmit, |
+ private void generateControlFile(final boolean readyForSubmit, |
final SimpleCallback finishedCallback, |
final SimpleCallback errorCallback) { |
JSONObject params = getControlFileParams(readyForSubmit); |
@@ -396,20 +309,22 @@ public class CreateJobView extends TabView |
boolean isServer = controlInfo.get("is_server").isBoolean().booleanValue(); |
String synchCount = Utils.jsonToString(controlInfo.get("synch_count")); |
setSelectedDependencies(controlInfo.get("dependencies").isArray()); |
- controlFile.setText(controlFileText); |
+ display.getControlFile().setText(controlFileText); |
controlTypeSelect.setControlType(isServer ? TestSelector.SERVER_TYPE : |
TestSelector.CLIENT_TYPE); |
- synchCountInput.setText(synchCount); |
+ display.getSynchCountInput().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); |
+ } |
} |
}); |
} |
@@ -429,10 +344,10 @@ public class CreateJobView extends TabView |
} |
if (shouldSkipVerify) { |
- skipVerify.setValue(true); |
- skipVerify.setEnabled(false); |
+ display.getSkipVerify().setValue(true); |
+ display.getSkipVerify().setEnabled(false); |
} else { |
- skipVerify.setEnabled(true); |
+ display.getSkipVerify().setEnabled(true); |
} |
} |
@@ -440,24 +355,30 @@ public class CreateJobView extends TabView |
testSelector.setEnabled(true); |
profilersPanel.setEnabled(true); |
handleSkipVerify(); |
- kernel.setEnabled(true); |
- kernel_cmdline.setEnabled(true); |
- } |
- |
- protected boolean isClientTypeSelected() { |
- return testSelector.getSelectedTestType().equals(TestSelector.CLIENT_TYPE); |
+ display.getKernel().setEnabled(true); |
+ display.getKernelCmdline().setEnabled(true); |
} |
protected void disableInputs() { |
testSelector.setEnabled(false); |
profilersPanel.setEnabled(false); |
- kernel.setEnabled(false); |
- kernel_cmdline.setEnabled(false); |
+ display.getKernel().setEnabled(false); |
+ display.getKernelCmdline().setEnabled(false); |
} |
- @Override |
public void initialize() { |
- super.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()); |
populatePriorities(staticData.getData("priorities").isArray()); |
@@ -467,65 +388,37 @@ public class CreateJobView extends TabView |
} |
}; |
- kernel.addBlurHandler(kernelBlurHandler); |
- kernel_cmdline.addBlurHandler(kernelBlurHandler); |
+ display.getKernel().addBlurHandler(kernelBlurHandler); |
+ display.getKernelCmdline().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); |
+ } |
} |
}; |
- kernel.addKeyPressHandler(kernelKeyPressHandler); |
- kernel_cmdline.addKeyPressHandler(kernelKeyPressHandler); |
+ display.getKernel().addKeyPressHandler(kernelKeyPressHandler); |
+ display.getKernelCmdline().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()) { |
- editControlButton.setEnabled(false); |
+ display.getEditControlButton().setEnabled(false); |
} |
- controlFilePanel.setHeader(controlHeaderPanel); |
- controlFilePanel.add(controlEditPanel); |
- |
- editControlButton.addClickHandler(new ClickHandler() { |
+ display.getEditControlButton().addClickHandler(new ClickHandler() { |
public void onClick(ClickEvent event) { |
DOM.eventCancelBubble(DOM.eventGetCurrentEvent(), true); |
- if (editControlButton.getText().equals(EDIT_CONTROL_STRING)) { |
+ if (display.getEditControlButton().getText().equals(EDIT_CONTROL_STRING)) { |
disableInputs(); |
- editControlButton.setEnabled(false); |
+ display.getEditControlButton().setEnabled(false); |
SimpleCallback onGotControlFile = new SimpleCallback() { |
public void doCallback(Object source) { |
openControlFileEditor(); |
@@ -534,7 +427,7 @@ public class CreateJobView extends TabView |
SimpleCallback onControlFileError = new SimpleCallback() { |
public void doCallback(Object source) { |
setInputsEnabled(); |
- editControlButton.setEnabled(true); |
+ display.getEditControlButton().setEnabled(true); |
} |
}; |
generateControlFile(true, onGotControlFile, onControlFileError); |
@@ -542,92 +435,67 @@ public class CreateJobView extends TabView |
else { |
if (controlEdited && |
!Window.confirm("Are you sure you want to revert your" + |
- " changes?")) |
+ " changes?")) { |
return; |
+ } |
generateControlFile(false); |
- controlFile.setReadOnly(true); |
+ display.getControlFile().setReadOnly(true); |
setInputsEnabled(); |
- editControlButton.setText(EDIT_CONTROL_STRING); |
+ display.getEditControlButton().setText(EDIT_CONTROL_STRING); |
controlTypeSelect.setEnabled(false); |
- synchCountInput.setEnabled(false); |
+ display.getSynchCountInput().setEnabled(false); |
controlEdited = false; |
} |
} |
}); |
- controlFile.addChangeHandler(new ChangeHandler() { |
+ display.getControlFile().addChangeHandler(new ChangeHandler() { |
public void onChange(ChangeEvent event) { |
controlEdited = true; |
} |
}); |
- controlFilePanel.addCloseHandler(new CloseHandler<DisclosurePanel>() { |
+ display.getControlFilePanelClose().addCloseHandler(new CloseHandler<DisclosurePanel>() { |
public void onClose(CloseEvent<DisclosurePanel> event) { |
- viewLink.setText(VIEW_CONTROL_STRING); |
+ display.getViewLink().setText(VIEW_CONTROL_STRING); |
} |
}); |
- controlFilePanel.addOpenHandler(new OpenHandler<DisclosurePanel>() { |
+ display.getControlFilePanelOpen().addOpenHandler(new OpenHandler<DisclosurePanel>() { |
public void onOpen(OpenEvent<DisclosurePanel> event) { |
- viewLink.setText(HIDE_CONTROL_STRING); |
+ display.getViewLink().setText(HIDE_CONTROL_STRING); |
} |
}); |
- hostSelector = new HostSelector(); |
- HostSelectorDisplay hostSelectorDisplay = new HostSelectorDisplay(); |
- hostSelector.initialize(); |
- hostSelector.bindDisplay(hostSelectorDisplay); |
- |
- submitJobButton.addClickHandler(new ClickHandler() { |
+ display.getSubmitJobButton().addClickHandler(new ClickHandler() { |
public void onClick(ClickEvent event) { |
submitJob(false); |
} |
}); |
- createTemplateJobButton.addClickHandler(new ClickHandler() { |
+ display.getCreateTemplateJobButton().addClickHandler(new ClickHandler() { |
public void onClick(ClickEvent event) { |
submitJob(true); |
} |
}); |
- resetButton.addClickHandler(new ClickHandler() { |
+ display.getResetButton().addClickHandler(new ClickHandler() { |
public void onClick(ClickEvent event) { |
reset(); |
} |
}); |
- hostless.addClickHandler(new ClickHandler() { |
+ display.getHostless().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
- hostSelector.setEnabled(!hostless.getValue()); |
+ hostSelector.setEnabled(!display.getHostless().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.popualateListBox(droneSet, "drone_sets"); |
- addWidget(droneSet, "create_drone_set"); |
+ AfeUtils.populateListBox(display.getDroneSet(), "drone_sets"); |
} else { |
AfeUtils.removeElement("create_drone_set_wrapper"); |
} |
@@ -638,80 +506,83 @@ public class CreateJobView extends TabView |
public void reset() { |
StaticDataRepository repository = StaticDataRepository.getRepository(); |
- jobName.setText(""); |
+ display.getJobName().setText(""); |
resetPriorityToDefault(); |
rebootBefore.reset(); |
rebootAfter.reset(); |
- parseFailedRepair.setValue( |
+ display.getParseFailedRepair().setValue( |
repository.getData("parse_failed_repair_default").isBoolean().booleanValue()); |
- 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(""); |
+ 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(""); |
testSelector.reset(); |
- skipVerify.setValue(false); |
+ display.getSkipVerify().setValue(false); |
profilersPanel.reset(); |
setInputsEnabled(); |
controlTypeSelect.setControlType(TestSelector.CLIENT_TYPE); |
controlTypeSelect.setEnabled(false); |
- synchCountInput.setEnabled(false); |
- synchCountInput.setText("1"); |
- controlFile.setText(""); |
- controlFile.setReadOnly(true); |
+ display.getSynchCountInput().setEnabled(false); |
+ display.getSynchCountInput().setText("1"); |
+ display.getControlFile().setText(""); |
+ display.getControlFile().setReadOnly(true); |
controlEdited = false; |
- controlFilePanel.setOpen(false); |
- editControlButton.setText(EDIT_CONTROL_STRING); |
+ display.setControlFilePanelOpen(false); |
+ display.getEditControlButton().setText(EDIT_CONTROL_STRING); |
hostSelector.reset(); |
dependencies = new JSONArray(); |
} |
- protected void submitJob(final boolean isTemplate) { |
+ private void submitJob(final boolean isTemplate) { |
final int timeoutValue, maxRuntimeValue; |
final JSONValue synchCount; |
try { |
- timeoutValue = parsePositiveIntegerInput(timeout.getText(), "timeout"); |
- maxRuntimeValue = parsePositiveIntegerInput(maxRuntime.getText(), "max runtime"); |
+ timeoutValue = parsePositiveIntegerInput(display.getTimeout().getText(), "timeout"); |
+ maxRuntimeValue = parsePositiveIntegerInput( |
+ display.getMaxRuntime().getText(), "max runtime"); |
- if (hostless.getValue()) { |
+ if (display.getHostless().getValue()) { |
synchCount = JSONNull.getInstance(); |
} else { |
synchCount = new JSONNumber(parsePositiveIntegerInput( |
- synchCountInput.getText(), "number of machines used per execution")); |
+ display.getSynchCountInput().getText(), |
+ "number of machines used per execution")); |
} |
} catch (IllegalArgumentException exc) { |
return; |
} |
// disallow accidentally clicking submit twice |
- submitJobButton.setEnabled(false); |
+ display.getSubmitJobButton().setEnabled(false); |
final SimpleCallback doSubmit = new SimpleCallback() { |
public void doCallback(Object source) { |
JSONObject args = new JSONObject(); |
- args.put("name", new JSONString(jobName.getText())); |
- String priority = priorityList.getItemText(priorityList.getSelectedIndex()); |
+ args.put("name", new JSONString(display.getJobName().getText())); |
+ String priority = display.getPriorityList().getSelectedName(); |
args.put("priority", new JSONString(priority)); |
- args.put("control_file", new JSONString(controlFile.getText())); |
+ args.put("control_file", new JSONString(display.getControlFile().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(emailList.getText())); |
- args.put("run_verify", JSONBoolean.getInstance(!skipVerify.getValue())); |
+ args.put("email_list", new JSONString(display.getEmailList().getText())); |
+ args.put("run_verify", JSONBoolean.getInstance( |
+ !display.getSkipVerify().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(parseFailedRepair.getValue())); |
- args.put("hostless", JSONBoolean.getInstance(hostless.getValue())); |
+ JSONBoolean.getInstance(display.getParseFailedRepair().getValue())); |
+ args.put("hostless", JSONBoolean.getInstance(display.getHostless().getValue())); |
if (staticData.getData("drone_sets_enabled").isBoolean().booleanValue()) { |
- args.put("drone_set", |
- new JSONString(droneSet.getItemText(droneSet.getSelectedIndex()))); |
+ args.put("drone_set", new JSONString(display.getDroneSet().getSelectedName())); |
} |
HostSelector.HostSelection hosts = hostSelector.getSelectedHosts(); |
@@ -727,29 +598,31 @@ public class CreateJobView extends TabView |
NotifyManager.getInstance().showMessage( |
"Job " + Integer.toString(id) + " created"); |
reset(); |
- if (listener != null) |
+ if (listener != null) { |
listener.onJobCreated(id); |
- submitJobButton.setEnabled(true); |
+ } |
+ display.getSubmitJobButton().setEnabled(true); |
} |
@Override |
public void onError(JSONObject errorObject) { |
super.onError(errorObject); |
- submitJobButton.setEnabled(true); |
+ display.getSubmitJobButton().setEnabled(true); |
} |
}); |
} |
}; |
// ensure control file is ready for submission |
- if (!controlReadyForSubmit) |
+ if (!controlReadyForSubmit) { |
generateControlFile(true, doSubmit, new SimpleCallback() { |
public void doCallback(Object source) { |
- submitJobButton.setEnabled(true); |
+ display.getSubmitJobButton().setEnabled(true); |
} |
}); |
- else |
+ } else { |
doSubmit.doCallback(this); |
+ } |
} |
private JSONArray getSelectedDependencies() { |
@@ -777,9 +650,7 @@ public class CreateJobView extends TabView |
return parsedInt; |
} |
- @Override |
public void refresh() { |
- super.refresh(); |
hostSelector.refresh(); |
} |
@@ -796,8 +667,11 @@ public class CreateJobView extends TabView |
private void selectPreferredDroneSet() { |
JSONObject user = staticData.getData("current_user").isObject(); |
- String preference = Utils.jsonToString(user.get("drone_set")); |
- AfeUtils.setSelectedItem(droneSet, preference); |
+ JSONValue droneSet = user.get("drone_set"); |
+ if (droneSet.isNull() == null) { |
+ String preference = Utils.jsonToString(user.get("drone_set")); |
+ display.getDroneSet().selectByName(preference); |
+ } |
} |
public void onPreferencesChanged() { |