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@875: import com.google.gwt.core.client.GWT; raimund@875: 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@875: import com.smartgwt.client.widgets.form.fields.events.KeyUpEvent; raimund@875: import com.smartgwt.client.widgets.form.fields.events.KeyUpHandler; 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@875: import de.intevation.flys.client.client.FLYSConstants; raimund@863: raimund@863: raimund@863: /** raimund@863: * @author Ingo Weinzierl raimund@863: */ raimund@863: public class TableFilter raimund@863: extends HLayout raimund@875: implements ChangedHandler, KeyUpHandler raimund@863: { raimund@875: /** The message class that provides i18n strings. */ raimund@875: protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class); 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@875: searchfield = new TextItem(MESSAGES.search()); raimund@863: handlers = new ArrayList(); raimund@863: raimund@863: searchfield.addChangedHandler(this); raimund@875: searchfield.addKeyUpHandler(this); raimund@863: raimund@863: DynamicForm form = new DynamicForm(); raimund@863: form.setFields(searchfield); raimund@863: raimund@863: addMember(form); 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@875: public void onKeyUp(KeyUpEvent 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 String getSearchString() { raimund@875: if (searchfield.getValueAsString() == null) { raimund@875: return ""; raimund@875: } raimund@875: else { raimund@875: return searchfield.getValueAsString(); raimund@875: } 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@893: raimund@893: raimund@893: public void clear() { raimund@893: searchfield.clearValue(); raimund@893: fireFilterCriteriaChanged(""); raimund@893: } raimund@863: } raimund@863: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :