enum で使用可能なすべての値を表示する汎用 GXT3 ComboBox があります。
public static <T extends Enum<T>> ComboBox<T> buildEnumCombo(Class<T> t){
ListStore<T> listStore=new ListStore<T>(new EnumModelKeyProvider<T>());
for(T e:t.getEnumConstants()){
listStore.add(e);
}
ComboBox<T> combo= new ComboBox<T>(listStore, new EnumLabelProvider<T>());
combo.setTriggerAction(ComboBoxCell.TriggerAction.ALL);
return combo;
}
このコンボはうまくいきます。
必要なもの: 「すべて」の値を追加できるようにしたいと思います。
ストアに「null」を追加し、LabelProvider をカスタマイズしてこの特定のケースで「すべて」を表示しようとしましたが、期待どおりに動作しません。コンボには期待される行が含まれていますが、「すべて」ではなく空のテキストが表示され、行のサイズが正しくありません。
ここに、列挙型の汎用 ModelKeyProvider があります
public class EnumModelKeyProvider<T extends Enum> implements ModelKeyProvider<T> {
@Override
public String getKey(T item) {
if(item==null){
return null;
}else{
return item.name();
}
}
そして私の一般的な LabelProvider :
public class EnumLabelProvider<T extends Enum<T>> implements LabelProvider<T> {
@Override
public String getLabel(T item) {
if(item==null){
return "All";
}else{
return I18nEnum.i18nEnum(item);
}
}
}