blob: 47c466f1e659c99f34dbfb28b3ccf30d7e2f2f20 [file] [log] [blame]
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;
}
}