176 // no need to synchronize just to read a single simple boolean
177 return enabled;
178 }
179
180 public void setEnabled(boolean newVal) {
181 if (enabled == newVal)
182 return;
183
184 boolean oldVal = enabled;
185 enabled = newVal;
186
187 if (listeners.length > 0)
188 firePropertyChangeEvent("enabled", new Boolean(oldVal), new Boolean(newVal));
189 }
190
191 public synchronized void addPropertyChangeListener(PropertyChangeListener listener) {
192 listeners = DynamicArray.append(listeners, new WeakReference<>(listener));
193 }
194
195 public synchronized void removePropertyChangeListener(PropertyChangeListener listener) {
196 WeakReference[] l = listeners;
197 int size = l.length;
198 for (int i = size - 1; i >= 0; i--) {
199 if (l[i].get() == listener)
200 System.arraycopy(l, i+1, l, i, (--size) - i);
201 }
202
203 if (size < l.length) {
204 listeners = new WeakReference[size];
205 System.arraycopy(l, 0, listeners, 0, size);
206 }
207 }
208
209 private void firePropertyChangeEvent(String name, Object oldVal, Object newVal) {
210 PropertyChangeEvent ev = null; // lazy create event if needed
211 WeakReference[] l = listeners;
212 if (l.length > 0) {
213 for (int i = l.length - 1; i >= 0; i--) {
214 PropertyChangeListener pcl = (PropertyChangeListener) (l[i].get());
215 if (pcl != null) {
216 if (ev == null)
217 ev = new PropertyChangeEvent(this, name, oldVal, newVal);
218 pcl.propertyChange(ev);
219 }
220 }
221 }
222 }
223
224
225 private static int getMnemonic(I18NResourceBundle i18n, String key) {
226 String keyString = i18n.getString(key);
227 KeyStroke keyStroke = KeyStroke.getKeyStroke(keyString);
228 return (keyStroke == null ? 0 : keyStroke.getKeyCode());
229 }
230
231 private static boolean equal(Object a, Object b) {
232 return (a == null ? b == null : a.equals(b));
233 }
234
235 private String name;
236 private String desc;
237 private Integer mnemonic;
238 private Icon icon;
239 private Map<String, Object> misc;
240 private boolean enabled = true;
241
242 private WeakReference[] listeners = new WeakReference[0];
243 }
|
176 // no need to synchronize just to read a single simple boolean
177 return enabled;
178 }
179
180 public void setEnabled(boolean newVal) {
181 if (enabled == newVal)
182 return;
183
184 boolean oldVal = enabled;
185 enabled = newVal;
186
187 if (listeners.length > 0)
188 firePropertyChangeEvent("enabled", new Boolean(oldVal), new Boolean(newVal));
189 }
190
191 public synchronized void addPropertyChangeListener(PropertyChangeListener listener) {
192 listeners = DynamicArray.append(listeners, new WeakReference<>(listener));
193 }
194
195 public synchronized void removePropertyChangeListener(PropertyChangeListener listener) {
196 WeakReference<PropertyChangeListener>[] l = listeners;
197 int size = l.length;
198 for (int i = size - 1; i >= 0; i--) {
199 if (l[i].get() == listener)
200 System.arraycopy(l, i+1, l, i, (--size) - i);
201 }
202
203 if (size < l.length) {
204 listeners = new WeakReference[size];
205 System.arraycopy(l, 0, listeners, 0, size);
206 }
207 }
208
209 private void firePropertyChangeEvent(String name, Object oldVal, Object newVal) {
210 PropertyChangeEvent ev = null; // lazy create event if needed
211 WeakReference<PropertyChangeListener>[] l = listeners;
212 if (l.length > 0) {
213 for (int i = l.length - 1; i >= 0; i--) {
214 PropertyChangeListener pcl = (l[i].get());
215 if (pcl != null) {
216 if (ev == null)
217 ev = new PropertyChangeEvent(this, name, oldVal, newVal);
218 pcl.propertyChange(ev);
219 }
220 }
221 }
222 }
223
224
225 private static int getMnemonic(I18NResourceBundle i18n, String key) {
226 String keyString = i18n.getString(key);
227 KeyStroke keyStroke = KeyStroke.getKeyStroke(keyString);
228 return (keyStroke == null ? 0 : keyStroke.getKeyCode());
229 }
230
231 private static boolean equal(Object a, Object b) {
232 return (a == null ? b == null : a.equals(b));
233 }
234
235 private String name;
236 private String desc;
237 private Integer mnemonic;
238 private Icon icon;
239 private Map<String, Object> misc;
240 private boolean enabled = true;
241
242 private WeakReference<PropertyChangeListener>[] listeners = new WeakReference[0];
243 }
|