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@1534: searchfield.setWidth(120);
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 :