annotate dwtx/jface/resource/ResourceRegistry.d @ 104:04b47443bb01

Reworked the collection uses to make use of a wrapper collection that is compatible to the Java Collections. These new wrappers now use the tango.util.containers instead of the tango.util.collections.
author Frank Benoit <benoit@tionex.de>
date Thu, 07 Aug 2008 15:01:33 +0200
parents 8a302fdb4140
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 /*******************************************************************************
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2 * Copyright (c) 2004, 2005 IBM Corporation and others.
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 * Port to the D programming language:
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 * Frank Benoit <benoit@tionex.de>
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 *******************************************************************************/
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 module dwtx.jface.resource.ResourceRegistry;
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 import dwtx.core.commands.common.EventManager;
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 import dwtx.jface.util.IPropertyChangeListener;
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 import dwtx.jface.util.PropertyChangeEvent;
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import dwt.dwthelper.utils;
104
04b47443bb01 Reworked the collection uses to make use of a wrapper collection that is compatible to the Java Collections.
Frank Benoit <benoit@tionex.de>
parents: 7
diff changeset
21 import dwtx.dwtxhelper.Collection;
7
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 /**
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 * Abstract base class for various JFace registries.
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 *
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 * @since 3.0
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 */
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 public abstract class ResourceRegistry : EventManager {
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 /**
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 * Adds a property change listener to this registry.
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 *
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 * @param listener a property change listener
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 */
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 public void addListener(IPropertyChangeListener listener) {
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 addListenerObject(cast(Object)listener);
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 }
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 /**
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 * Disposes all currently allocated resources.
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 */
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 protected abstract void clearCaches();
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 /**
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 * @return the set of keys this manager knows about. This collection
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 * should be immutable.
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 */
104
04b47443bb01 Reworked the collection uses to make use of a wrapper collection that is compatible to the Java Collections.
Frank Benoit <benoit@tionex.de>
parents: 7
diff changeset
48 public abstract Set getKeySet();
7
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 /**
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 * Return whether or not the receiver has a value for the supplied key.
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 *
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 * @param key the key
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 * @return <code>true</code> if there is a value for this key
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 */
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 public abstract bool hasValueFor(String key);
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 /**
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 * Fires a <code>PropertyChangeEvent</code>.
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 *
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 * @param name the name of the symbolic value that is changing.
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 * @param oldValue the old value.
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 * @param newValue the new value.
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 */
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 protected void fireMappingChanged(String name, Object oldValue,
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 Object newValue) {
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 Object[] myListeners = getListeners();
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 if (myListeners.length > 0) {
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 PropertyChangeEvent event = new PropertyChangeEvent(this, name,
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 oldValue, newValue);
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 for (int i = 0; i < myListeners.length; ++i) {
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 try {
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 (cast(IPropertyChangeListener) myListeners[i])
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 .propertyChange(event);
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 } catch (Exception e) {
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 // TODO: how to log?
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 }
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 }
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 }
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 }
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 /**
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 * Removes the given listener from this registry. Has no affect if the
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 * listener is not registered.
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 *
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 * @param listener a property change listener
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 */
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 public void removeListener(IPropertyChangeListener listener) {
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 removeListenerObject(cast(Object)listener);
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 }
8a302fdb4140 Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 }