Home | History | Annotate | Download | only in afe
      1 package autotest.afe;
      2 
      3 import autotest.common.table.MultipleListFilter;
      4 
      5 import com.google.gwt.event.dom.client.ChangeEvent;
      6 import com.google.gwt.event.dom.client.ChangeHandler;
      7 import com.google.gwt.json.client.JSONArray;
      8 import com.google.gwt.json.client.JSONString;
      9 import com.google.gwt.json.client.JSONValue;
     10 import com.google.gwt.user.client.ui.ListBox;
     11 import com.google.gwt.user.client.ui.Widget;
     12 
     13 public class LabelFilter extends MultipleListFilter {
     14     public static final int VISIBLE_SIZE = 10;
     15     private final ListBox platform;
     16 
     17     public LabelFilter() {
     18       super("multiple_labels", VISIBLE_SIZE);
     19       setMatchAllText("All labels");
     20       setChoices(AfeUtils.getNonPlatformLabelStrings());
     21 
     22       String[] platformStrings = AfeUtils.getPlatformStrings();
     23 
     24       platform = new ListBox();
     25       platform.addItem("All platforms");
     26       for (String platformString : platformStrings) {
     27         platform.addItem(platformString);
     28       }
     29       platform.setStylePrimaryName("filter-box");
     30       platform.addChangeHandler(new ChangeHandler() {
     31         public void onChange(ChangeEvent event) {
     32             notifyListeners();
     33         }
     34     });
     35     }
     36 
     37     @Override
     38     protected String getItemText(int index) {
     39         return AfeUtils.decodeLabelName(super.getItemText(index));
     40     }
     41 
     42     public Widget getPlatformWidget() {
     43         return platform;
     44     }
     45 
     46     @Override
     47     public JSONValue getMatchValue() {
     48       JSONArray labels = super.getMatchValue().isArray();
     49 
     50       int selectedIndex = platform.getSelectedIndex();
     51       // Skip the first item ("All platforms")
     52       if (selectedIndex > 0) {
     53         String platformString = platform.getItemText(selectedIndex);
     54         labels.set(labels.size(), new JSONString(platformString));
     55       }
     56 
     57       return labels;
     58   }
     59 }
     60