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.google.gwt.core.client.GWT; 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 :