KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > jdt > internal > ui > text > PreferencesAdapter


1 /*******************************************************************************
2  * Copyright (c) 2000, 2006 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * IBM Corporation - initial API and implementation
10  *******************************************************************************/

11
12 package org.eclipse.jdt.internal.ui.text;
13
14 import org.eclipse.core.runtime.ListenerList;
15 import org.eclipse.core.runtime.Preferences;
16
17 import org.eclipse.swt.widgets.Display;
18 import org.eclipse.swt.widgets.Shell;
19
20 import org.eclipse.jface.preference.IPreferenceStore;
21 import org.eclipse.jface.util.IPropertyChangeListener;
22 import org.eclipse.jface.util.PropertyChangeEvent;
23
24 import org.eclipse.jdt.internal.ui.JavaPlugin;
25
26 /**
27  * Adapts {@link org.eclipse.core.runtime.Preferences} to
28  * {@link org.eclipse.jface.preference.IPreferenceStore}
29  *
30  * @since 3.0
31  */

32 public class PreferencesAdapter implements IPreferenceStore {
33
34     /**
35      * Property change listener. Listens for events of type
36      * {@link org.eclipse.core.runtime.Preferences.PropertyChangeEvent} and fires
37      * a {@link org.eclipse.jface.util.PropertyChangeEvent} on the
38      * adapter with arguments from the received event.
39      */

40     private class PropertyChangeListener implements Preferences.IPropertyChangeListener {
41
42         /*
43          * @see org.eclipse.core.runtime.Preferences.IPropertyChangeListener#propertyChange(org.eclipse.core.runtime.Preferences.PropertyChangeEvent)
44          */

45         public void propertyChange(Preferences.PropertyChangeEvent event) {
46             firePropertyChangeEvent(event.getProperty(), event.getOldValue(), event.getNewValue());
47         }
48     }
49
50     /** Listeners on the adapter */
51     private ListenerList fListeners= new ListenerList(ListenerList.IDENTITY);
52
53     /** Listener on the adapted Preferences */
54     private PropertyChangeListener fListener= new PropertyChangeListener();
55
56     /** Adapted Preferences */
57     private Preferences fPreferences;
58
59     /** True iff no events should be forwarded */
60     private boolean fSilent;
61
62     /**
63      * Initialize with empty Preferences.
64      */

65     public PreferencesAdapter() {
66         this(new Preferences());
67     }
68     /**
69      * Initialize with the given Preferences.
70      *
71      * @param preferences The preferences to wrap.
72      */

73     public PreferencesAdapter(Preferences preferences) {
74         fPreferences= preferences;
75     }
76
77     /**
78      * {@inheritDoc}
79      */

80     public void addPropertyChangeListener(IPropertyChangeListener listener) {
81         if (fListeners.size() == 0)
82             fPreferences.addPropertyChangeListener(fListener);
83         fListeners.add(listener);
84     }
85
86     /**
87      * {@inheritDoc}
88      */

89     public void removePropertyChangeListener(IPropertyChangeListener listener) {
90         fListeners.remove(listener);
91         if (fListeners.size() == 0)
92             fPreferences.removePropertyChangeListener(fListener);
93     }
94
95     /**
96      * {@inheritDoc}
97      */

98     public boolean contains(String JavaDoc name) {
99         return fPreferences.contains(name);
100     }
101
102     /**
103      * {@inheritDoc}
104      */

105     public void firePropertyChangeEvent(String JavaDoc name, Object JavaDoc oldValue, Object JavaDoc newValue) {
106         if (!fSilent) {
107             final PropertyChangeEvent event= new PropertyChangeEvent(this, name, oldValue, newValue);
108             Object JavaDoc[] listeners= fListeners.getListeners();
109             for (int i= 0; i < listeners.length; i++) {
110                 final IPropertyChangeListener listener= (IPropertyChangeListener)listeners[i];
111                 Runnable JavaDoc runnable= new Runnable JavaDoc() {
112                     public void run() {
113                         listener.propertyChange(event);
114                     }
115                 };
116                 
117                 if (Display.getCurrent() != null)
118                     runnable.run();
119                 else {
120                     // Post runnable into UI thread
121
Shell shell= JavaPlugin.getActiveWorkbenchShell();
122                     Display display;
123                     if (shell != null)
124                         display= shell.getDisplay();
125                     else
126                         display= Display.getDefault();
127                     display.asyncExec(runnable);
128                 }
129             }
130         }
131     }
132
133     /**
134      * {@inheritDoc}
135      */

136     public boolean getBoolean(String JavaDoc name) {
137         return fPreferences.getBoolean(name);
138     }
139
140     /**
141      * {@inheritDoc}
142      */

143     public boolean getDefaultBoolean(String JavaDoc name) {
144         return fPreferences.getDefaultBoolean(name);
145     }
146
147     /**
148      * {@inheritDoc}
149      */

150     public double getDefaultDouble(String JavaDoc name) {
151         return fPreferences.getDefaultDouble(name);
152     }
153
154     /**
155      * {@inheritDoc}
156      */

157     public float getDefaultFloat(String JavaDoc name) {
158         return fPreferences.getDefaultFloat(name);
159     }
160
161     /**
162      * {@inheritDoc}
163      */

164     public int getDefaultInt(String JavaDoc name) {
165         return fPreferences.getDefaultInt(name);
166     }
167
168     /**
169      * {@inheritDoc}
170      */

171     public long getDefaultLong(String JavaDoc name) {
172         return fPreferences.getDefaultLong(name);
173     }
174
175     /**
176      * {@inheritDoc}
177      */

178     public String JavaDoc getDefaultString(String JavaDoc name) {
179         return fPreferences.getDefaultString(name);
180     }
181
182     /**
183      * {@inheritDoc}
184      */

185     public double getDouble(String JavaDoc name) {
186         return fPreferences.getDouble(name);
187     }
188
189     /**
190      * {@inheritDoc}
191      */

192     public float getFloat(String JavaDoc name) {
193         return fPreferences.getFloat(name);
194     }
195
196     /**
197      * {@inheritDoc}
198      */

199     public int getInt(String JavaDoc name) {
200         return fPreferences.getInt(name);
201     }
202
203     /**
204      * {@inheritDoc}
205      */

206     public long getLong(String JavaDoc name) {
207         return fPreferences.getLong(name);
208     }
209
210     /**
211      * {@inheritDoc}
212      */

213     public String JavaDoc getString(String JavaDoc name) {
214         return fPreferences.getString(name);
215     }
216
217     /**
218      * {@inheritDoc}
219      */

220     public boolean isDefault(String JavaDoc name) {
221         return fPreferences.isDefault(name);
222     }
223
224     /**
225      * {@inheritDoc}
226      */

227     public boolean needsSaving() {
228         return fPreferences.needsSaving();
229     }
230
231     /**
232      * {@inheritDoc}
233      */

234     public void putValue(String JavaDoc name, String JavaDoc value) {
235         try {
236             fSilent= true;
237             fPreferences.setValue(name, value);
238         } finally {
239             fSilent= false;
240         }
241     }
242
243     /**
244      * {@inheritDoc}
245      */

246     public void setDefault(String JavaDoc name, double value) {
247         fPreferences.setDefault(name, value);
248     }
249
250     /**
251      * {@inheritDoc}
252      */

253     public void setDefault(String JavaDoc name, float value) {
254         fPreferences.setDefault(name, value);
255     }
256
257     /**
258      * {@inheritDoc}
259      */

260     public void setDefault(String JavaDoc name, int value) {
261         fPreferences.setDefault(name, value);
262     }
263
264     /**
265      * {@inheritDoc}
266      */

267     public void setDefault(String JavaDoc name, long value) {
268         fPreferences.setDefault(name, value);
269     }
270
271     /**
272      * {@inheritDoc}
273      */

274     public void setDefault(String JavaDoc name, String JavaDoc defaultObject) {
275         fPreferences.setDefault(name, defaultObject);
276     }
277
278     /**
279      * {@inheritDoc}
280      */

281     public void setDefault(String JavaDoc name, boolean value) {
282         fPreferences.setDefault(name, value);
283     }
284
285     /**
286      * {@inheritDoc}
287      */

288     public void setToDefault(String JavaDoc name) {
289         fPreferences.setToDefault(name);
290     }
291
292     /**
293      * {@inheritDoc}
294      */

295     public void setValue(String JavaDoc name, double value) {
296         fPreferences.setValue(name, value);
297     }
298
299     /**
300      * {@inheritDoc}
301      */

302     public void setValue(String JavaDoc name, float value) {
303         fPreferences.setValue(name, value);
304     }
305
306     /**
307      * {@inheritDoc}
308      */

309     public void setValue(String JavaDoc name, int value) {
310         fPreferences.setValue(name, value);
311     }
312
313     /**
314      * {@inheritDoc}
315      */

316     public void setValue(String JavaDoc name, long value) {
317         fPreferences.setValue(name, value);
318     }
319
320     /**
321      * {@inheritDoc}
322      */

323     public void setValue(String JavaDoc name, String JavaDoc value) {
324         fPreferences.setValue(name, value);
325     }
326
327     /**
328      * {@inheritDoc}
329      */

330     public void setValue(String JavaDoc name, boolean value) {
331         fPreferences.setValue(name, value);
332     }
333 }
334
Popular Tags