| 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() {
|
|
|