ComboBox databinding with DataSource (Smart GWT)
/*
* SmartGWT (GWT for SmartClient)
* Copyright 2008 and beyond, Isomorphic Software, Inc.
*
* SmartGWT is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License version 3
* as published by the Free Software Foundation. SmartGWT is also
* available under typical commercial license terms - see
* http://smartclient.com/license
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package com.smartgwt.sample.showcase.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.RootPanel;
import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.data.fields.DataSourceBooleanField;
import com.smartgwt.client.data.fields.DataSourceDateField;
import com.smartgwt.client.data.fields.DataSourceEnumField;
import com.smartgwt.client.data.fields.DataSourceFloatField;
import com.smartgwt.client.data.fields.DataSourceIntegerField;
import com.smartgwt.client.data.fields.DataSourceTextField;
import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.HeaderItem;
import com.smartgwt.client.widgets.form.fields.SelectItem;
import com.smartgwt.client.widgets.form.fields.SpinnerItem;
import com.smartgwt.client.widgets.form.fields.events.ChangeEvent;
import com.smartgwt.client.widgets.form.fields.events.ChangeHandler;
import com.smartgwt.client.widgets.form.validator.FloatPrecisionValidator;
import com.smartgwt.client.widgets.form.validator.FloatRangeValidator;
import com.smartgwt.client.widgets.grid.ListGridField;
public class Showcase implements EntryPoint {
public void onModuleLoad() {
RootPanel.get().add(getViewPanel());
}
public Canvas getViewPanel() {
Canvas canvas = new Canvas();
DataSource supplyItemDS = ItemSupplyXmlDS.getInstance();
final Label label = new Label();
label.setAlign(Alignment.CENTER);
label.setBorder("1px solid blue");
label.setTop(75);
label.setHeight(50);
label.setWidth(250);
label.setMargin(10);
label.setContents("Select an item to order");
canvas.addChild(label);
DynamicForm form = new DynamicForm();
HeaderItem headerItem = new HeaderItem();
headerItem.setDefaultValue("Order Supply Item");
SelectItem selectItem = new SelectItem();
selectItem.setDefaultToFirstOption(true);
selectItem.setTitle("Item");
selectItem.setDisplayField("itemName");
selectItem.setPickListWidth(250);
selectItem.setOptionDataSource(supplyItemDS);
selectItem.addChangeHandler(new ChangeHandler() {
public void onChange(ChangeEvent event) {
label.setContents("Selected itemID : " + event.getValue());
}
});
SpinnerItem spinnerItem = new SpinnerItem();
spinnerItem.setName("Quantity");
spinnerItem.setDefaultValue(1);
spinnerItem.setMin(1);
form.setItems(headerItem, selectItem, spinnerItem);
canvas.addChild(form);
final Label label2 = new Label();
label2.setAlign(Alignment.CENTER);
label2.setBorder("1px solid blue");
label2.setTop(75);
label2.setLeft(300);
label2.setHeight(50);
label2.setWidth(250);
label2.setMargin(10);
label2.setContents("Select an item to order");
canvas.addChild(label2);
DynamicForm form2 = new DynamicForm();
form2.setLeft(300);
HeaderItem headerItem2 = new HeaderItem();
headerItem2.setDefaultValue("Order Supply Item");
ListGridField itemField = new ListGridField("itemName");
ListGridField unitsField = new ListGridField("units");
ListGridField unitCostField = new ListGridField("unitCost");
SelectItem selectItem2 = new SelectItem();
selectItem2.setTitle("Item");
selectItem2.setOptionDataSource(supplyItemDS);
selectItem2.setDisplayField("itemName");
selectItem2.setValueField("SKU");
selectItem2.addChangeHandler(new ChangeHandler() {
public void onChange(ChangeEvent event) {
label2.setContents("Selected Item SKU: " + event.getValue());
}
});
selectItem2.setPickListWidth(450);
selectItem2.setPickListFields(itemField, unitsField, unitCostField);
SpinnerItem spinnerItem2 = new SpinnerItem();
spinnerItem2.setName("Quantity");
spinnerItem2.setDefaultValue(1);
spinnerItem2.setMin(1);
form2.setItems(headerItem2, selectItem2, spinnerItem2);
canvas.addChild(form2);
return canvas;
}
}
class ItemSupplyXmlDS extends DataSource {
private static ItemSupplyXmlDS instance = null;
public static ItemSupplyXmlDS getInstance() {
if (instance == null) {
instance = new ItemSupplyXmlDS("supplyItemDS");
}
return instance;
}
public ItemSupplyXmlDS(String id) {
setID(id);
setRecordXPath("/List/supplyItem");
DataSourceIntegerField pkField = new DataSourceIntegerField("itemID");
pkField.setHidden(true);
pkField.setPrimaryKey(true);
DataSourceTextField itemNameField = new DataSourceTextField("itemName", "Item Name", 128, true);
DataSourceTextField skuField = new DataSourceTextField("SKU", "SKU", 10, true);
DataSourceTextField descriptionField = new DataSourceTextField("description", "Description", 2000);
DataSourceTextField categoryField = new DataSourceTextField("category", "Category", 128, true);
categoryField.setForeignKey("supplyCategoryDS.categoryName");
DataSourceEnumField unitsField = new DataSourceEnumField("units", "Units", 5);
unitsField.setValueMap("Roll", "Ea", "Pkt", "Set", "Tube", "Pad", "Ream", "Tin", "Bag", "Ctn", "Box");
DataSourceFloatField unitCostField = new DataSourceFloatField("unitCost", "Unit Cost", 5);
FloatRangeValidator rangeValidator = new FloatRangeValidator();
rangeValidator.setMin(0);
rangeValidator.setErrorMessage("Please enter a valid (positive) cost");
FloatPrecisionValidator precisionValidator = new FloatPrecisionValidator();
precisionValidator.setPrecision(2);
precisionValidator.setErrorMessage("The maximum allowed precision is 2");
unitCostField.setValidators(rangeValidator, precisionValidator);
DataSourceBooleanField inStockField = new DataSourceBooleanField("inStock", "In Stock");
DataSourceDateField nextShipmentField = new DataSourceDateField("nextShipment", "Next Shipment");
setFields(pkField, itemNameField, skuField, descriptionField, categoryField, unitsField,
unitCostField, inStockField, nextShipmentField);
setDataURL("ds/test_data/supplyItem.data.xml");
setClientOnly(true);
}
}
SmartGWT.zip( 9,880 k)Related examples in the same category