package autotest.common.table; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.KeyCodes; import com.google.gwt.event.dom.client.KeyUpEvent; import com.google.gwt.event.dom.client.KeyUpHandler; import com.google.gwt.json.client.JSONString; import com.google.gwt.json.client.JSONValue; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.Widget; public class SearchFilter extends FieldFilter { private TextBox searchBox = new TextBox(); private Button searchButton; private Panel container = new FlowPanel(); private String activeSearch = ""; public SearchFilter(String fieldName, final boolean isIncremental) { this(fieldName, "Search", isIncremental); } public SearchFilter(String fieldName, String buttonName, final boolean isIncremental) { super(fieldName); setExactMatch(false); container.add(searchBox); searchBox.setStylePrimaryName("filter-box"); if (!isIncremental) { searchButton = new Button(buttonName); container.add(searchButton); searchButton.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { notifyListeners(); } }); } searchBox.addKeyUpHandler (new KeyUpHandler() { public void onKeyUp(KeyUpEvent event) { if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER || isIncremental) { notifyListeners(); } } }); } @Override protected void notifyListeners() { activeSearch = searchBox.getText(); super.notifyListeners(); } @Override public JSONValue getMatchValue() { return new JSONString(activeSearch); } @Override public boolean isActive() { return !activeSearch.equals(""); } @Override public Widget getWidget() { return container; } }