KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > nightlabs > editor2d > outline > filter > FilterManager


1 /* *****************************************************************************
2  * NightLabs Editor2D - Graphical editor framework *
3  * Copyright (C) 2004-2005 NightLabs - http://NightLabs.org *
4  * Project author: Daniel Mazurek <Daniel.Mazurek [at] nightlabs [dot] org> *
5  * *
6  * This library is free software; you can redistribute it and/or *
7  * modify it under the terms of the GNU Lesser General Public *
8  * License as published by the Free Software Foundation; either *
9  * version 2.1 of the License, or (at your option) any later version. *
10  * *
11  * This library is distributed in the hope that it will be useful, *
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
14  * Lesser General Public License for more details. *
15  * *
16  * You should have received a copy of the GNU Lesser General Public *
17  * License along with this library; if not, write to the *
18  * Free Software Foundation, Inc., *
19  * 51 Franklin St, Fifth Floor, *
20  * Boston, MA 02110-1301 USA *
21  * *
22  * Or get it online : *
23  * http://www.gnu.org/copyleft/lesser.html *
24  * *
25  * *
26  ******************************************************************************/

27
28 package org.nightlabs.editor2d.outline.filter;
29
30 import java.beans.PropertyChangeEvent JavaDoc;
31 import java.beans.PropertyChangeListener JavaDoc;
32 import java.beans.PropertyChangeSupport JavaDoc;
33 import java.util.ArrayList JavaDoc;
34 import java.util.Collection JavaDoc;
35 import java.util.Iterator JavaDoc;
36 import java.util.List JavaDoc;
37
38 import org.nightlabs.editor2d.MultiLayerDrawComponent;
39
40 /**
41  * Used to set Filters in the Outline Page
42  */

43 public class FilterManager
44 {
45   public static final String JavaDoc FILTER_CHANGED = "Filter changed";
46   public static final String JavaDoc FILTER_ADDED = "Filter added";
47   public static final String JavaDoc FILTERS_ADDED = "Filters added";
48         
49   public String JavaDoc getTypeName(Class JavaDoc c) {
50     return nameProvider.getTypeName(c);
51   }
52   
53   protected List JavaDoc filters;
54   protected List JavaDoc allFilters;
55   protected FilterNameProvider nameProvider = null;
56   public FilterManager(FilterNameProvider nameProvider)
57   {
58     super();
59     this.nameProvider = nameProvider;
60   }
61     
62   public void addFilter(Class JavaDoc clazz)
63   {
64     if (clazz == null)
65             throw new IllegalArgumentException JavaDoc("Param clazz must not be null!");
66     
67     getFilters().add(clazz);
68     getAllFilters().add(clazz);
69     
70     checkIgnore();
71     pcs.firePropertyChange(FILTER_ADDED, null, clazz);
72   }
73   
74   public void addFilters(Collection JavaDoc classes)
75   {
76     if (classes == null)
77             throw new IllegalArgumentException JavaDoc("Param classes must not be null!");
78     
79     getFilters().addAll(classes);
80     getAllFilters().addAll(classes);
81     
82     checkIgnore();
83     pcs.firePropertyChange(FILTERS_ADDED, null, classes);
84   }
85   
86   public List JavaDoc getFilters()
87   {
88     if (filters == null)
89       filters = new ArrayList JavaDoc();
90     
91     return filters;
92   }
93   
94   public List JavaDoc getAllFilters()
95   {
96     if (allFilters == null)
97       allFilters = new ArrayList JavaDoc();
98     
99     return allFilters;
100   }
101   
102   public void setFilter(Class JavaDoc clazz)
103   {
104     if (clazz == null)
105             throw new IllegalArgumentException JavaDoc("Param clazz must not be null!");
106     
107     getFilters().clear();
108     getFilters().add(clazz);
109     pcs.firePropertyChange(FILTER_CHANGED, null, getFilters());
110   }
111   
112   public void setFilter(Collection JavaDoc classes)
113   {
114     if (classes == null)
115             throw new IllegalArgumentException JavaDoc("Param classes must not be null!");
116     
117     getFilters().clear();
118     getFilters().addAll(classes);
119     pcs.firePropertyChange(FILTER_CHANGED, null, getFilters());
120   }
121   
122   public void setAllFiltersAvailable() {
123     setFilter(getAllFilters());
124   }
125     
126   public boolean isAllFilterSet() {
127     if (filters != null && allFilters != null) {
128         if (filters.size() == allFilters.size())
129             return true;
130         else
131             return false;
132     }
133     return true;
134   }
135   
136   protected PropertyChangeSupport JavaDoc pcs = new PropertyChangeSupport JavaDoc(this);
137     public void addPropertyChangeListener(PropertyChangeListener JavaDoc pcl) {
138         pcs.addPropertyChangeListener(pcl);
139     }
140     public void removePropertyChangeListener(PropertyChangeListener JavaDoc pcl) {
141         pcs.removePropertyChangeListener(pcl);
142     }
143     
144     protected PropertyChangeListener JavaDoc newTypeListener = new PropertyChangeListener JavaDoc()
145     {
146         public void propertyChange(PropertyChangeEvent JavaDoc evt)
147         {
148             if (evt.getPropertyName().equals(MultiLayerDrawComponent.TYPE_ADDED)) {
149                 Class JavaDoc c = (Class JavaDoc) evt.getNewValue();
150                 addFilter(c);
151             }
152         }
153     };
154     
155     public PropertyChangeListener JavaDoc getTypeListener() {
156         return newTypeListener;
157     }
158     
159     protected List JavaDoc ignoreClasses = new ArrayList JavaDoc();
160     public void ignoreClass(Class JavaDoc c)
161     {
162         ignoreClasses.add(c);
163         checkIgnore();
164     }
165     
166     protected void checkIgnore()
167     {
168         for (Iterator JavaDoc it = ignoreClasses.iterator(); it.hasNext(); ) {
169             Class JavaDoc c = (Class JavaDoc) it.next();
170             if (getAllFilters().contains(c)) {
171                 getAllFilters().remove(c);
172                 if (getFilters().contains(c))
173                     getFilters().remove(c);
174             }
175         }
176     }
177     
178 }
179
Popular Tags