raimund@863: package de.intevation.flys.client.client.ui;
raimund@863:
raimund@863: import java.util.ArrayList;
raimund@863: import java.util.List;
raimund@863:
raimund@863: import com.smartgwt.client.widgets.IButton;
raimund@863: import com.smartgwt.client.widgets.events.ClickEvent;
raimund@863: import com.smartgwt.client.widgets.events.ClickHandler;
raimund@863: import com.smartgwt.client.widgets.form.DynamicForm;
raimund@863: import com.smartgwt.client.widgets.form.fields.TextItem;
raimund@863: import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
raimund@863: import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;
raimund@863: import com.smartgwt.client.widgets.form.fields.events.KeyPressEvent;
raimund@863: import com.smartgwt.client.widgets.form.fields.events.KeyPressHandler;
raimund@863: import com.smartgwt.client.widgets.layout.HLayout;
raimund@863:
raimund@863: import de.intevation.flys.client.client.event.FilterHandler;
raimund@863: import de.intevation.flys.client.client.event.StringFilterEvent;
raimund@863:
raimund@863:
raimund@863: /**
raimund@863: * @author Ingo Weinzierl
raimund@863: */
raimund@863: public class TableFilter
raimund@863: extends HLayout
raimund@863: implements ChangedHandler, ClickHandler, KeyPressHandler
raimund@863: {
raimund@863: public static final String SEARCH_FIELD = "searchfield";
raimund@863:
raimund@863:
raimund@863: protected List handlers;
raimund@863:
raimund@863: protected TextItem searchfield;
raimund@863:
raimund@863:
raimund@863: public TableFilter() {
raimund@863: super();
raimund@863: searchfield = new TextItem(SEARCH_FIELD);
raimund@863: handlers = new ArrayList();
raimund@863:
raimund@863: searchfield.addChangedHandler(this);
raimund@863: searchfield.addKeyPressHandler(this);
raimund@863:
raimund@863: DynamicForm form = new DynamicForm();
raimund@863: form.setFields(searchfield);
raimund@863:
raimund@863: IButton clear = new IButton("Clear");
raimund@863: clear.addClickHandler(this);
raimund@863:
raimund@863: addMember(form);
raimund@863: addMember(clear);
raimund@863: }
raimund@863:
raimund@863:
raimund@863: public void onChanged(ChangedEvent event) {
raimund@863: // This event handler is to slow...
raimund@863: // fireFilterCriteriaChanged(getSearchString());
raimund@863: }
raimund@863:
raimund@863:
raimund@863: public void onKeyPress(KeyPressEvent event) {
raimund@863: //To deactivate "As you type" filter add
raimund@863: // ' && event.getKeyName().equals("Enter")'
raimund@863: // to the if-clause.
raimund@863: if (event != null) {
raimund@869: fireFilterCriteriaChanged(getSearchString());
raimund@863: }
raimund@863: }
raimund@863:
raimund@863:
raimund@863: public void onClick(ClickEvent event) {
raimund@863: searchfield.setValue("");
raimund@863: fireFilterCriteriaChanged("");
raimund@863: }
raimund@863:
raimund@863:
raimund@863: public void clearSearch() {
raimund@863: searchfield.setValue("");
raimund@863: }
raimund@863:
raimund@863:
raimund@863: public String getSearchString() {
raimund@863: return searchfield.getValueAsString();
raimund@863: }
raimund@863:
raimund@863:
raimund@863: public void addFilterHandler(FilterHandler handler) {
raimund@863: if (handler != null) {
raimund@863: handlers.add(handler);
raimund@863: }
raimund@863: }
raimund@863:
raimund@863:
raimund@863: protected void fireFilterCriteriaChanged(String searchstring) {
raimund@863: StringFilterEvent filter = new StringFilterEvent(searchstring);
raimund@863:
raimund@863: for (FilterHandler handler: handlers) {
raimund@863: handler.onFilterCriteriaChanged(filter);
raimund@863: }
raimund@863: }
raimund@863: }
raimund@863: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :