1 27 28 package org.nightlabs.editor2d.outline.filter; 29 30 import java.beans.PropertyChangeEvent ; 31 import java.beans.PropertyChangeListener ; 32 import java.beans.PropertyChangeSupport ; 33 import java.util.ArrayList ; 34 import java.util.Collection ; 35 import java.util.Iterator ; 36 import java.util.List ; 37 38 import org.nightlabs.editor2d.MultiLayerDrawComponent; 39 40 43 public class FilterManager 44 { 45 public static final String FILTER_CHANGED = "Filter changed"; 46 public static final String FILTER_ADDED = "Filter added"; 47 public static final String FILTERS_ADDED = "Filters added"; 48 49 public String getTypeName(Class c) { 50 return nameProvider.getTypeName(c); 51 } 52 53 protected List filters; 54 protected List 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 clazz) 63 { 64 if (clazz == null) 65 throw new IllegalArgumentException ("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 classes) 75 { 76 if (classes == null) 77 throw new IllegalArgumentException ("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 getFilters() 87 { 88 if (filters == null) 89 filters = new ArrayList (); 90 91 return filters; 92 } 93 94 public List getAllFilters() 95 { 96 if (allFilters == null) 97 allFilters = new ArrayList (); 98 99 return allFilters; 100 } 101 102 public void setFilter(Class clazz) 103 { 104 if (clazz == null) 105 throw new IllegalArgumentException ("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 classes) 113 { 114 if (classes == null) 115 throw new IllegalArgumentException ("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 pcs = new PropertyChangeSupport (this); 137 public void addPropertyChangeListener(PropertyChangeListener pcl) { 138 pcs.addPropertyChangeListener(pcl); 139 } 140 public void removePropertyChangeListener(PropertyChangeListener pcl) { 141 pcs.removePropertyChangeListener(pcl); 142 } 143 144 protected PropertyChangeListener newTypeListener = new PropertyChangeListener () 145 { 146 public void propertyChange(PropertyChangeEvent evt) 147 { 148 if (evt.getPropertyName().equals(MultiLayerDrawComponent.TYPE_ADDED)) { 149 Class c = (Class ) evt.getNewValue(); 150 addFilter(c); 151 } 152 } 153 }; 154 155 public PropertyChangeListener getTypeListener() { 156 return newTypeListener; 157 } 158 159 protected List ignoreClasses = new ArrayList (); 160 public void ignoreClass(Class c) 161 { 162 ignoreClasses.add(c); 163 checkIgnore(); 164 } 165 166 protected void checkIgnore() 167 { 168 for (Iterator it = ignoreClasses.iterator(); it.hasNext(); ) { 169 Class c = (Class ) 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 |