/** * 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.examples.test.client; import com.google.gwt.cell.client.AbstractCell; import com.google.gwt.cell.client.Cell; 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.event.logical.shared.ValueChangeHandler; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.VerticalPanel; import com.sencha.gxt.cell.core.client.form.ComboBoxCell.TriggerAction; import com.sencha.gxt.core.client.IdentityValueProvider; import com.sencha.gxt.core.client.XTemplates; 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.widget.core.client.ListView; import com.sencha.gxt.widget.core.client.Slider; import com.sencha.gxt.widget.core.client.event.BlurEvent; import com.sencha.gxt.widget.core.client.event.BlurEvent.BlurHandler; import com.sencha.gxt.widget.core.client.event.FocusEvent; import com.sencha.gxt.widget.core.client.event.FocusEvent.FocusHandler; import com.sencha.gxt.widget.core.client.form.ComboBox; import com.sencha.gxt.widget.core.client.form.TextArea; import com.sencha.gxt.widget.core.client.form.TextField; public class ComboBoxTest implements EntryPoint { interface StateProperties extends PropertyAccess<State> { ModelKeyProvider<State> abbr(); LabelProvider<State> name(); } interface Template extends XTemplates { @XTemplate("<div>yo {state.name}</div>") SafeHtml render(State state); } @Override public void onModuleLoad() { VerticalPanel vp = new VerticalPanel(); vp.setSpacing(10); StateProperties props = GWT.create(StateProperties.class); ListStore<State> states = new ListStore<State>(props.abbr()); states.addAll(TestData.getStates()); final Template t = GWT.create(Template.class); ListView<State, State> view = new ListView<State, State>(states, new IdentityValueProvider<State>()); view.setCell(new AbstractCell<State>() { @Override public void render(Cell.Context context, State value, SafeHtmlBuilder sb) { sb.append(t.render(value)); } }); final ComboBox<State> combo = new ComboBox<State>(states, props.name(), view); combo.setEmptyText("Select a state..."); combo.setEditable(false); // combo.setForceSelection(true); combo.setWidth(150); // combo.setReadOnly(true); // combo.setTypeAhead(true); combo.setTriggerAction(TriggerAction.ALL); combo.addValueChangeHandler(new ValueChangeHandler<State>() { @Override public void onValueChange(ValueChangeEvent<State> event) { State s = event.getValue(); System.out.println(s); // System.out.println("e: " + event.getValue()); // System.out.println("c: " + combo.getValue()); } }); vp.add(combo); Timer tt = new Timer() { @Override public void run() { System.out.println("run"); combo.getListView().getSelectionModel().select(2, false); } }; tt.schedule(3000); class Handler implements FocusHandler, BlurHandler { @Override public void onBlur(BlurEvent event) { // System.out.println("blur"); } @Override public void onFocus(FocusEvent event) { // System.out.println("focus"); } } Handler h = new Handler(); combo.addFocusHandler(h); combo.addBlurHandler(h); TextField text = new TextField(); text.setWidth(150); vp.add(text); TextArea area = new TextArea(); area.setPixelSize(150, 100); vp.add(area); Slider s = new Slider(); s.setWidth(150); vp.add(s); RootPanel.get().add(vp); } }