package autotest.common.table; import com.google.gwt.json.client.JSONArray; import com.google.gwt.json.client.JSONString; import com.google.gwt.json.client.JSONValue; public class MultipleListFilter extends ListFilter { protected int maxVisibleSize; public MultipleListFilter(String fieldName, int maxVisibleSize) { super(fieldName); this.maxVisibleSize = maxVisibleSize; } @Override protected boolean isMultipleSelect() { return true; } @Override public JSONValue getMatchValue() { JSONArray labels = new JSONArray(); // skip first item ("all values") for (int i = 1; i < select.getItemCount(); i++) { if (select.isItemSelected(i)) { labels.set(labels.size(), new JSONString(getItemText(i))); } } return labels; } @Override public boolean isActive() { return true; } @Override public void setChoices(String[] choices) { super.setChoices(choices); int visibleSize = Math.min(select.getItemCount(), maxVisibleSize); select.setVisibleItemCount(visibleSize); select.setSelectedIndex(0); } }