/**
* Sencha GXT 3.0.0b - Sencha for GWT
* Copyright(c) 2007-2012, Sencha, Inc.
* licensing@sencha.com
*
* http://www.sencha.com/products/gxt/license/
*/
package com.sencha.gxt.explorer.client.forms;
import java.util.List;
import com.google.gwt.cell.client.TextCell;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.editor.client.Editor.Path;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.core.client.ValueProvider;
import com.sencha.gxt.data.shared.LabelProvider;
import com.sencha.gxt.data.shared.ListStore;
import com.sencha.gxt.data.shared.ModelKeyProvider;
import com.sencha.gxt.data.shared.PropertyAccess;
import com.sencha.gxt.examples.resources.client.TestData;
import com.sencha.gxt.examples.resources.client.model.State;
import com.sencha.gxt.explorer.client.model.Example.Detail;
import com.sencha.gxt.widget.core.client.FramedPanel;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
import com.sencha.gxt.widget.core.client.form.DualListField;
import com.sencha.gxt.widget.core.client.form.DualListField.Mode;
import com.sencha.gxt.widget.core.client.form.FieldLabel;
import com.sencha.gxt.widget.core.client.form.TextField;
import com.sencha.gxt.widget.core.client.form.validator.EmptyValidator;
@Detail(name = "DualListField", icon = "duallistfield", category = "Forms")
public class DualListFieldExample implements IsWidget, EntryPoint {
interface StateProperties extends PropertyAccess<State> {
ModelKeyProvider<State> abbr();
LabelProvider<State> name();
@Path("name")
ValueProvider<State, String> nameProp();
}
private FramedPanel panel;
public Widget asWidget() {
if (panel == null) {
panel = new FramedPanel();
panel.setHeadingText("DualListField Example");
panel.setWidth(550);
panel.getElement().setMargins(10);
VerticalLayoutContainer con = new VerticalLayoutContainer();
panel.add(con);
TextField firstName = new TextField();
firstName.setAllowBlank(false);
con.add(new FieldLabel(firstName, "Name"), new VerticalLayoutData(-18, -1));
StateProperties props = GWT.create(StateProperties.class);
ListStore<State> states = new ListStore<State>(props.abbr());
states.addAll(TestData.getStates());
ListStore<State> toStates = new ListStore<State>(props.abbr());
final DualListField<State, String> field = new DualListField<State, String>(states, toStates, props.nameProp(),
new TextCell());
field.addValidator(new EmptyValidator<List<State>>());
field.setEnableDnd(true);
field.setMode(Mode.INSERT);
con.add(new FieldLabel(field, "States"), new VerticalLayoutData(-18, -1));
TextField email = new TextField();
email.setAllowBlank(false);
con.add(new FieldLabel(email, "Email"), new VerticalLayoutData(-18, -1));
panel.addButton(new TextButton("Cancel"));
panel.addButton(new TextButton("Save"));
}
return panel;
}
public void onModuleLoad() {
RootPanel.get().add(asWidget());
}
}