1e3f6868dac3b4c4714637d12b93d97823011a35cshowardpackage autotest.common.table;
21c8c2215e525de8813c375e796354f8ffb811a08showard
3e3f6868dac3b4c4714637d12b93d97823011a35cshowardimport autotest.common.SimpleCallback;
41c8c2215e525de8813c375e796354f8ffb811a08showard
51c8c2215e525de8813c375e796354f8ffb811a08showardimport com.google.gwt.json.client.JSONObject;
61c8c2215e525de8813c375e796354f8ffb811a08showardimport com.google.gwt.user.client.ui.Widget;
71c8c2215e525de8813c375e796354f8ffb811a08showard
81c8c2215e525de8813c375e796354f8ffb811a08showardimport java.util.ArrayList;
91c8c2215e525de8813c375e796354f8ffb811a08showardimport java.util.List;
101c8c2215e525de8813c375e796354f8ffb811a08showard
111c8c2215e525de8813c375e796354f8ffb811a08showardpublic abstract class Filter {
120d92da0fe19a095fc5678c4159e6a1756df65e48showard    protected List<SimpleCallback> callbacks = new ArrayList<SimpleCallback>();
13589cc78019a41fa293d7583a3c1b6dfca42da41bjamesren
141c8c2215e525de8813c375e796354f8ffb811a08showard    public abstract void addParams(JSONObject params);
151c8c2215e525de8813c375e796354f8ffb811a08showard    public abstract boolean isActive();
161c8c2215e525de8813c375e796354f8ffb811a08showard    public abstract Widget getWidget();
17b9c6617bdc063b3b4aa760a0a45190ee069139fdshoward
18b9c6617bdc063b3b4aa760a0a45190ee069139fdshoward    // is this filter controlled by a user-facing widget?
19b9c6617bdc063b3b4aa760a0a45190ee069139fdshoward    public boolean isUserControlled() {
20b9c6617bdc063b3b4aa760a0a45190ee069139fdshoward        return getWidget() != null;
21b9c6617bdc063b3b4aa760a0a45190ee069139fdshoward    }
22b9c6617bdc063b3b4aa760a0a45190ee069139fdshoward
230d92da0fe19a095fc5678c4159e6a1756df65e48showard    public void addCallback(SimpleCallback callback) {
240d92da0fe19a095fc5678c4159e6a1756df65e48showard        callbacks.add(callback);
251c8c2215e525de8813c375e796354f8ffb811a08showard    }
26589cc78019a41fa293d7583a3c1b6dfca42da41bjamesren
270d92da0fe19a095fc5678c4159e6a1756df65e48showard    public void removeCallback(SimpleCallback callback) {
280d92da0fe19a095fc5678c4159e6a1756df65e48showard        callbacks.remove(callback);
291c8c2215e525de8813c375e796354f8ffb811a08showard    }
30589cc78019a41fa293d7583a3c1b6dfca42da41bjamesren
311c8c2215e525de8813c375e796354f8ffb811a08showard    protected void notifyListeners() {
320d92da0fe19a095fc5678c4159e6a1756df65e48showard        for (SimpleCallback callback : callbacks) {
330d92da0fe19a095fc5678c4159e6a1756df65e48showard            callback.doCallback(this);
341c8c2215e525de8813c375e796354f8ffb811a08showard        }
351c8c2215e525de8813c375e796354f8ffb811a08showard    }
36589cc78019a41fa293d7583a3c1b6dfca42da41bjamesren}
37