| package autotest.afe; |
| |
| import autotest.common.table.MultipleListFilter; |
| |
| import com.google.gwt.event.dom.client.ChangeEvent; |
| import com.google.gwt.event.dom.client.ChangeHandler; |
| import com.google.gwt.json.client.JSONArray; |
| import com.google.gwt.json.client.JSONString; |
| import com.google.gwt.json.client.JSONValue; |
| import com.google.gwt.user.client.ui.ListBox; |
| import com.google.gwt.user.client.ui.Widget; |
| |
| public class LabelFilter extends MultipleListFilter { |
| public static final int VISIBLE_SIZE = 10; |
| private final ListBox platform; |
| |
| public LabelFilter() { |
| super("multiple_labels", VISIBLE_SIZE); |
| setMatchAllText("All labels"); |
| setChoices(AfeUtils.getNonPlatformLabelStrings()); |
| |
| String[] platformStrings = AfeUtils.getPlatformStrings(); |
| |
| platform = new ListBox(); |
| platform.addItem("All platforms"); |
| for (String platformString : platformStrings) { |
| platform.addItem(platformString); |
| } |
| platform.setStylePrimaryName("filter-box"); |
| platform.addChangeHandler(new ChangeHandler() { |
| public void onChange(ChangeEvent event) { |
| notifyListeners(); |
| } |
| }); |
| } |
| |
| @Override |
| protected String getItemText(int index) { |
| return AfeUtils.decodeLabelName(super.getItemText(index)); |
| } |
| |
| public Widget getPlatformWidget() { |
| return platform; |
| } |
| |
| @Override |
| public JSONValue getMatchValue() { |
| JSONArray labels = super.getMatchValue().isArray(); |
| |
| int selectedIndex = platform.getSelectedIndex(); |
| // Skip the first item ("All platforms") |
| if (selectedIndex > 0) { |
| String platformString = platform.getItemText(selectedIndex); |
| labels.set(labels.size(), new JSONString(platformString)); |
| } |
| |
| return labels; |
| } |
| } |