blob: e325ce3ef52ba2372eba1ea2da4acf6338f73da4 [file] [log] [blame]
package autotest.afe;
import autotest.common.ui.ExtendedListBox;
import autotest.common.ui.SimplifiedList;
import com.google.gwt.event.dom.client.HasClickHandlers;
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.HasText;
import com.google.gwt.user.client.ui.HasValue;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.TabPanel;
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.Widget;
public class HostSelectorDisplay extends Composite implements HostSelector.Display {
private Label hostSelectorTitle = new Label("Select Hosts for Running Tests:");
private TextArea hostnameInput = new TextArea();
private Button addByHostnameButton = new Button();
private CheckBox allowOneTimeHostsBox = new CheckBox();
private ExtendedListBox labelList = new ExtendedListBox();
private TextBox labelNumberInput = new TextBox();
private Button addByLabelButton = new Button();
private Panel availableTablePanel, selectedTablePanel;
private TabPanel tabPanel = new TabPanel();
private boolean haveTables = false;
public HostSelectorDisplay() {
// Set title label style
hostSelectorTitle.setStyleName("field-name");
// available host table
availableTablePanel = new SimplePanel();
tabPanel.add(availableTablePanel, "By browsing hosts");
// choose by hostname
Panel hostnamePanel = new VerticalPanel();
hostnamePanel.add(new Label("Enter hostnames, separated by commas or spaces"));
hostnamePanel.add(hostnameInput);
hostnameInput.setSize("100%", "10em");
addByHostnameButton.setText("Select hosts");
allowOneTimeHostsBox.setText("Allow hosts not in Autotest");
Panel lowerPanel = new HorizontalPanel();
lowerPanel.add(addByHostnameButton);
lowerPanel.add(allowOneTimeHostsBox);
hostnamePanel.add(lowerPanel);
tabPanel.add(hostnamePanel, "By specifing hostnames");
// add metahosts
Panel labelPanel = new VerticalPanel();
Panel labelTop = new HorizontalPanel();
labelTop.add(new Label("Run on any hosts with label"));
labelTop.add(labelList);
labelPanel.add(labelTop);
Panel labelBottom = new HorizontalPanel();
labelBottom.add(new Label("Number of hosts:"));
labelBottom.add(labelNumberInput);
labelNumberInput.setVisibleLength(4);
addByLabelButton.setText("Add hosts");
labelBottom.add(addByLabelButton);
labelPanel.add(labelBottom);
tabPanel.add(labelPanel, "By specifing host labels");
tabPanel.selectTab(0);
// the tabbed selector is displayed alongside the list of selected hosts
selectedTablePanel = new VerticalPanel();
selectedTablePanel.addStyleName("data-table");
Label selectedTitle = new Label("Selected hosts:");
selectedTitle.addStyleName("field-name");
selectedTablePanel.add(selectedTitle);
Panel outerPanel = new VerticalPanel();
outerPanel.add(hostSelectorTitle);
outerPanel.add(tabPanel);
outerPanel.add(selectedTablePanel);
outerPanel.addStyleName("panel-boundedwidth");
outerPanel.addStyleName("data-table-outlined-gray");
initWidget(outerPanel);
}
@Override
public void addTables(Widget availableTable, Widget selectedTable) {
assert !haveTables;
availableTablePanel.add(availableTable);
selectedTablePanel.add(selectedTable);
haveTables = true;
}
@Override
public HasClickHandlers getAddByHostnameButton() {
return addByHostnameButton;
}
@Override
public HasValue<Boolean> getAllowOneTimeHostsField() {
return allowOneTimeHostsBox;
}
@Override
public HasClickHandlers getAddByLabelButton() {
return addByLabelButton;
}
@Override
public HasText getHostnameField() {
return hostnameInput;
}
@Override
public SimplifiedList getLabelList() {
return labelList;
}
@Override
public HasText getLabelNumberField() {
return labelNumberInput;
}
}