/** * 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.binding; import java.util.ArrayList; import java.util.List; import com.google.gwt.core.client.GWT; import com.google.gwt.editor.client.Editor; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.IsWidget; import com.google.gwt.user.client.ui.Widget; import com.sencha.gxt.core.client.ValueProvider; import com.sencha.gxt.data.client.editor.ListStoreEditor; 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.model.Kid; import com.sencha.gxt.examples.resources.client.model.Person; import com.sencha.gxt.widget.core.client.form.FieldLabel; import com.sencha.gxt.widget.core.client.form.FormPanel.LabelAlign; import com.sencha.gxt.widget.core.client.form.NumberField; import com.sencha.gxt.widget.core.client.form.NumberPropertyEditor.DoublePropertyEditor; import com.sencha.gxt.widget.core.client.form.NumberPropertyEditor.IntegerPropertyEditor; import com.sencha.gxt.widget.core.client.form.TextField; import com.sencha.gxt.widget.core.client.grid.ColumnConfig; import com.sencha.gxt.widget.core.client.grid.ColumnModel; import com.sencha.gxt.widget.core.client.grid.Grid; import com.sencha.gxt.widget.core.client.grid.editing.GridInlineEditing; public class PersonEditor implements IsWidget, Editor<Person> { interface KidProperties extends PropertyAccess<Kid> { @Path("name") ModelKeyProvider<Kid> key(); ValueProvider<Kid, String> name(); ValueProvider<Kid, Integer> age(); } private static final KidProperties props = GWT.create(KidProperties.class); TextField name = new TextField(); TextField company = new TextField(); TextField location = new TextField(); NumberField<Double> income = new NumberField<Double>(new DoublePropertyEditor()); ListStore<Kid> kidStore = new ListStore<Kid>(props.key()); ListStoreEditor<Kid> kids = new ListStoreEditor<Kid>(kidStore); @Override public Widget asWidget() { FlowPanel container = new FlowPanel(); // should be layout based int w = 275; name.setWidth(w); company.setWidth(w); location.setWidth(w); income.setWidth(w); container.add(new FieldLabel(name, "Name")); container.add(new FieldLabel(company, "Company")); container.add(new FieldLabel(location, "Location")); container.add(new FieldLabel(income, "Income")); List<ColumnConfig<Kid, ?>> columns = new ArrayList<ColumnConfig<Kid,?>>(); ColumnConfig<Kid, String> name = new ColumnConfig<Kid, String>(props.name(), 200, "Name"); columns.add(name); ColumnConfig<Kid, Integer> age = new ColumnConfig<Kid, Integer>(props.age(), 100, "Age"); columns.add(age); Grid<Kid> grid = new Grid<Kid>(kidStore, new ColumnModel<Kid>(columns)); grid.setBorders(true); grid.getView().setForceFit(true); GridInlineEditing<Kid> inlineEditor = new GridInlineEditing<Kid>(grid); inlineEditor.addEditor(name, new TextField()); inlineEditor.addEditor(age, new NumberField<Integer>(new IntegerPropertyEditor())); grid.setWidth(382); grid.setHeight(200); FieldLabel kidsContainer = new FieldLabel(); kidsContainer.setText("Kids"); kidsContainer.setLabelAlign(LabelAlign.TOP); kidsContainer.setWidget(grid); container.add(kidsContainer); return container; } }