blob: d9b8de050b947d19b814d63a5ddb7b837a219c6c [file] [log] [blame]
package autotest.tko;
import autotest.common.ui.ExtendedListBox;
import autotest.common.ui.SimplifiedList;
import autotest.tko.ParameterizedFieldListPresenter.Display;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HasText;
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.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
public class ParameterizedFieldListDisplay extends Composite implements Display {
private static class FieldWidget implements Display.FieldWidget {
private String label;
private Anchor deleteLink = new Anchor("[X]");
public FieldWidget(String label) {
this.label = label;
}
public String getLabel() {
return label;
}
@Override
public HasClickHandlers getDeleteLink() {
return deleteLink;
}
}
private ExtendedListBox typeSelect = new ExtendedListBox();
private TextBox valueInput = new TextBox();
private Anchor addLink = new Anchor("Add");
private FlexTable fieldTable = new FlexTable();
public ParameterizedFieldListDisplay() {
Panel addFieldPanel = new HorizontalPanel();
addFieldPanel.add(new Label("Add custom field:"));
addFieldPanel.add(typeSelect);
addFieldPanel.add(valueInput);
addFieldPanel.add(addLink);
fieldTable.setText(0, 0, "Field name");
fieldTable.setText(0, 1, "Filtering name");
fieldTable.setCellSpacing(0);
fieldTable.setStylePrimaryName("data-table");
fieldTable.getRowFormatter().setStyleName(0, "data-row-header");
setFieldTableVisible();
Panel container = new VerticalPanel();
container.add(fieldTable);
container.add(addFieldPanel);
initWidget(container);
}
private void setFieldTableVisible() {
boolean visible = (fieldTable.getRowCount() > 1);
fieldTable.setVisible(visible);
}
@Override
public HasClickHandlers getAddLink() {
return addLink;
}
@Override
public SimplifiedList getTypeSelect() {
return typeSelect;
}
@Override
public HasText getValueInput() {
return valueInput;
}
@Override
public Display.FieldWidget addFieldWidget(String name, String filteringName) {
int row = fieldTable.getRowCount();
FieldWidget widget = new FieldWidget(name);
fieldTable.setText(row, 0, name);
fieldTable.setText(row, 1, filteringName);
fieldTable.setWidget(row, 2, widget.deleteLink);
setFieldTableVisible();
return widget;
}
@Override
public void removeFieldWidget(Display.FieldWidget widget) {
FieldWidget fieldWidget = (FieldWidget) widget;
for (int row = 1; row < fieldTable.getRowCount(); row++) {
if (fieldTable.getText(row, 0).equals(fieldWidget.getLabel())) {
fieldTable.removeRow(row);
setFieldTableVisible();
return;
}
}
throw new IllegalArgumentException("Unable to find field widget " + widget);
}
}