1 package autotest.common.ui; 2 3 import com.google.gwt.dom.client.Document; 4 import com.google.gwt.dom.client.OptionElement; 5 import com.google.gwt.dom.client.SelectElement; 6 import com.google.gwt.user.client.ui.ListBox; 7 8 public class ExtendedListBox extends ListBox implements SimplifiedList { findItemByName(String name)9 private int findItemByName(String name) { 10 for (int i = 0; i < getItemCount(); i++) { 11 if (getItemText(i).equals(name)) { 12 return i; 13 } 14 } 15 throw new IllegalArgumentException("No such name found: " + name); 16 } 17 findItemByValue(String value)18 private int findItemByValue(String value) { 19 for (int i = 0; i < getItemCount(); i++) { 20 if (getValue(i).equals(value)) { 21 return i; 22 } 23 } 24 throw new IllegalArgumentException("No such value found: " + value); 25 } 26 selectAppend(SelectElement select, OptionElement option)27 private native void selectAppend(SelectElement select, 28 OptionElement option) /*-{ 29 select.appendChild(option); 30 }-*/; 31 addItem(String name)32 public void addItem(String name) { 33 addItem(name, name); 34 } 35 addItem(String name, String value)36 public void addItem(String name, String value) { 37 SelectElement select = getElement().cast(); 38 OptionElement option = Document.get().createOptionElement(); 39 setOptionText(option, name, null); 40 option.setValue(value); 41 selectAppend(select, option); 42 } 43 removeItemByName(String name)44 public void removeItemByName(String name) { 45 removeItem(findItemByName(name)); 46 } 47 isNothingSelected()48 private boolean isNothingSelected() { 49 return getSelectedIndex() == -1; 50 } 51 getSelectedName()52 public String getSelectedName() { 53 if (isNothingSelected()) { 54 return null; 55 } 56 return getItemText(getSelectedIndex()); 57 } 58 getSelectedValue()59 public String getSelectedValue() { 60 if (isNothingSelected()) { 61 return null; 62 } 63 return getValue(getSelectedIndex()); 64 } 65 selectByName(String name)66 public void selectByName(String name) { 67 setSelectedIndex(findItemByName(name)); 68 } 69 selectByValue(String value)70 public void selectByValue(String value) { 71 setSelectedIndex(findItemByValue(value)); 72 } 73 } 74