/** * 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.desktop.client.widget; import com.sencha.gxt.cell.core.client.form.ComboBoxCell.TriggerAction; 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.widget.core.client.form.ComboBox; /** * Provides general purpose combo box support for Java enumerated types. The * {@link Enum#toString()} method is invoked to retrieve the text for each * choice. To support translatable text, override the {@code toString} method * for the enumerated type and/or choices. * * @param <T> */ public class EnumComboBox<T extends Enum<T>> extends ComboBox<T> { /** * Constructs an enumerated combo box with the specified values. To include * all of the values for an enum, use: * <p/> * <code> * EnumComboBox myEnumComboBox{@code <MyEnum>} = new EnumComboBox{@code <MyEnum>}(MyEnum.values()); * </code> * * @param values */ public EnumComboBox(T... values) { super(new ListStore<T>(new ModelKeyProvider<T>() { @Override public String getKey(T item) { return item.name(); } }), new LabelProvider<T>() { @Override public String getLabel(T item) { return item.toString(); } }); for (T value : values) { getStore().add(value); } if (values.length > 0) { select(0); } setEditable(false); setForceSelection(true); setTriggerAction(TriggerAction.ALL); } }