/**
* 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.Date;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
import com.google.gwt.i18n.client.NumberFormat;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.core.client.util.DateWrapper;
import com.sencha.gxt.core.client.util.ToggleGroup;
import com.sencha.gxt.data.shared.ListStore;
import com.sencha.gxt.examples.resources.client.TestData;
import com.sencha.gxt.examples.resources.client.model.Stock;
import com.sencha.gxt.examples.resources.client.model.StockProperties;
import com.sencha.gxt.explorer.client.model.Example.Detail;
import com.sencha.gxt.widget.core.client.event.ParseErrorEvent;
import com.sencha.gxt.widget.core.client.form.ComboBox;
import com.sencha.gxt.widget.core.client.form.DateField;
import com.sencha.gxt.widget.core.client.form.NumberField;
import com.sencha.gxt.widget.core.client.form.NumberPropertyEditor;
import com.sencha.gxt.widget.core.client.form.NumberPropertyEditor.DoublePropertyEditor;
import com.sencha.gxt.widget.core.client.form.Radio;
import com.sencha.gxt.widget.core.client.form.SpinnerField;
import com.sencha.gxt.widget.core.client.form.TextArea;
import com.sencha.gxt.widget.core.client.form.validator.MinDateValidator;
import com.sencha.gxt.widget.core.client.form.validator.MinLengthValidator;
import com.sencha.gxt.widget.core.client.info.Info;
@Detail(name = "Forms Example (UiBinder)", icon = "forms", category = "Forms", files = "FormsUiBinderExample.ui.xml")
public class FormsUiBinderExample implements IsWidget, EntryPoint {
interface MyUiBinder extends UiBinder<VerticalPanel, FormsUiBinderExample> {
}
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
private VerticalPanel vp;
StockProperties props = GWT.create(StockProperties.class);
ListStore<Stock> store = new ListStore<Stock>(props.key());
@UiField(provided = true)
ComboBox<Stock> combo = new ComboBox<Stock>(store, props.nameLabel());
@UiField
DateField date;
@UiField
Radio radio;
@UiField
Radio radio2;
@UiField
TextArea description;
@UiField(provided = true)
SpinnerField<Double> spinnerField;
@UiField(provided = true)
NumberField<Integer> age;
@UiField(provided = true)
Date minValue = new DateWrapper().clearTime().addHours(8).asDate();
@UiField(provided = true)
Date maxValue = new DateWrapper().clearTime().addHours(18).addSeconds(1).asDate();
public Widget asWidget() {
if (vp == null) {
store.addAll(TestData.getStocks());
spinnerField = new SpinnerField<Double>(new DoublePropertyEditor());
age = new NumberField<Integer>(new NumberPropertyEditor.IntegerPropertyEditor());
vp = uiBinder.createAndBindUi(this);
date.addValidator(new MinDateValidator(new Date()));
description.addValidator(new MinLengthValidator(10));
spinnerField.setIncrement(.1d);
spinnerField.setMinValue(-10d);
spinnerField.setMaxValue(10d);
spinnerField.getPropertyEditor().setFormat(NumberFormat.getFormat("00.0"));
// we can set name on radios or use toggle group
ToggleGroup toggle = new ToggleGroup();
toggle.add(radio);
toggle.add(radio2);
}
return vp;
}
public void onModuleLoad() {
RootPanel.get().add(asWidget());
}
@UiHandler("firstName")
public void firstNameChanged(ValueChangeEvent<String> event) {
Info.display("Value Changed", "First name changed to " + event.getValue() == null ? "blank" : event.getValue());
}
@UiHandler("age")
public void onAgeParseError(ParseErrorEvent event) {
Info.display("Parse Error", event.getErrorValue() + " could not be parsed as a number");
}
@UiHandler("date")
public void onDateParseError(ParseErrorEvent event) {
Info.display("Parse Error", event.getErrorValue() + " could not be parsed as a date");
}
@UiHandler("date")
public void onDateChanged(ValueChangeEvent<Date> event) {
String v = event.getValue() == null ? "nothing" : DateTimeFormat.getFormat(PredefinedFormat.DATE_MEDIUM).format(
event.getValue());
Info.display("Selected", "You selected " + v);
}
@UiHandler("time")
public void onTimeParseError(ParseErrorEvent event) {
Info.display("Parse Error", event.getErrorValue() + " could not be parsed as a valid time.");
}
}