annotate dwtx/jface/preference/PreferenceNode.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 b3c8e32d406f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
34
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 /*******************************************************************************
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2 * Copyright (c) 2000, 2007 IBM Corporation and others.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 * Port to the D programming language:
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 * Frank Benoit <benoit@tionex.de>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 *******************************************************************************/
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 module dwtx.jface.preference.PreferenceNode;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15 import dwtx.jface.preference.IPreferenceNode;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 import dwtx.jface.preference.IPreferencePage;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 // import java.util.List;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import dwt.graphics.Image;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 import dwtx.core.runtime.Assert;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 import dwtx.jface.resource.ImageDescriptor;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 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: 34
diff changeset
26 import dwtx.dwtxhelper.Collection;
34
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 * A concrete implementation of a node in a preference dialog tree. This class
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 * also supports lazy creation of the node's preference page.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 public class PreferenceNode : IPreferenceNode {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 * Preference page, or <code>null</code> if not yet loaded.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 private IPreferencePage page;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 * The list of subnodes (immediate children) of this node (element type:
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 * <code>IPreferenceNode</code>).
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 */
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: 34
diff changeset
42 private List subNodes;
34
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 * Name of a class that implements <code>IPreferencePage</code>, or
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 * <code>null</code> if none.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 private String classname;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 * The id of this node.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 private String id;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 * Text label for this node. Note that this field is only used prior to the
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 * creation of the preference page.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 private String label;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 * Image descriptor for this node, or <code>null</code> if none.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 private ImageDescriptor imageDescriptor;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 * Cached image, or <code>null</code> if none.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 private Image image;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 * Creates a new preference node with the given id. The new node has no
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 * subnodes.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 * @param id
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 * the node id
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 public this(String id) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 Assert.isNotNull(id);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 this.id = id;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 * Creates a preference node with the given id, label, and image, and
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 * lazily-loaded preference page. The preference node assumes (sole)
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 * responsibility for disposing of the image; this will happen when the node
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 * is disposed.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 * @param id
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 * the node id
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 * @param label
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92 * the label used to display the node in the preference dialog's
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93 * tree
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 * @param image
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 * the image displayed left of the label in the preference
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 * dialog's tree, or <code>null</code> if none
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 * @param className
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 * the class name of the preference page; this class must
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 * implement <code>IPreferencePage</code>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101 public this(String id, String label, ImageDescriptor image,
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 String className) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 this(id);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 this.imageDescriptor = image;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 Assert.isNotNull(label);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 this.label = label;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 this.classname = className;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 * Creates a preference node with the given id and preference page. The
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 * title of the preference page is used for the node label. The node will
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 * not have an image.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 * @param id
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 * the node id
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 * @param preferencePage
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 * the preference page
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 public this(String id, IPreferencePage preferencePage) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 this(id);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 Assert.isNotNull(cast(Object)preferencePage);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 page = preferencePage;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 /*
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 * (non-Javadoc) Method declared on IPreferenceNode.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 public void add(IPreferenceNode node) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 if (subNodes is null) {
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: 34
diff changeset
131 subNodes = new ArrayList();
34
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 }
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: 34
diff changeset
133 subNodes.add(cast(Object)node);
34
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 * Creates a new instance of the given class <code>className</code>.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 * @param className
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 * @return new Object or <code>null</code> in case of failures.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 private Object createObject(String className) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 Assert.isNotNull(className);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 // try {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 ClassInfo cl = ClassInfo.find(className);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 if (cl !is null) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 return cl.create();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
148 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149 // } catch (ClassNotFoundException e) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
150 // return null;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151 // } catch (InstantiationException e) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 // return null;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 // } catch (IllegalAccessException e) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154 // return null;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155 // } catch (NoSuchMethodError e) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156 // return null;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 // }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158 return null;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
159 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
160
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
161 /*
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162 * (non-Javadoc) Method declared on IPreferenceNode.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
163 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164 public void createPage() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 page = cast(IPreferencePage) createObject(classname);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 if (getLabelImage() !is null) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 page.setImageDescriptor(imageDescriptor);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169 page.setTitle(label);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
172 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
173 * (non-Javadoc) Method declared on IPreferenceNode.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
175 public void disposeResources() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176 if (image !is null) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 image.dispose();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 image = null;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 if (page !is null) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 page.dispose();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182 page = null;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 /*
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 * (non-Javadoc) Method declared on IContributionNode.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 public IPreferenceNode findSubNode(String id) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 Assert.isNotNull(id);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191 Assert.isTrue(id.length > 0);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 if (subNodes is null) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 return null;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 int size = subNodes.size();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 for (int i = 0; i < size; i++) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 IPreferenceNode node = cast(IPreferenceNode) subNodes.get(i);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
198 if (id.equals(node.getId())) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 return node;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 return null;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 /*
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 * (non-Javadoc) Method declared on IPreferenceNode.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 public String getId() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 return this.id;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213 * Returns the image descriptor for this node.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 * @return the image descriptor
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217 protected ImageDescriptor getImageDescriptor() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
218 return imageDescriptor;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
221 /*
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222 * (non-Javadoc) Method declared on IPreferenceNode.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
224 public Image getLabelImage() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225 if (image is null && imageDescriptor !is null) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226 image = imageDescriptor.createImage();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
228 return image;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
229 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
230
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
231 /*
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
232 * (non-Javadoc) Method declared on IPreferenceNode.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
233 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
234 public String getLabelText() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235 if (page !is null) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
236 return page.getTitle();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
237 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238 return label;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
240
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
241 /*
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
242 * (non-Javadoc) Method declared on IPreferenceNode.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
243 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
244 public IPreferencePage getPage() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
245 return page;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
246 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
248 /*
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
249 * (non-Javadoc) Method declared on IPreferenceNode.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
250 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
251 public IPreferenceNode[] getSubNodes() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
252 if (subNodes is null) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
253 return new IPreferenceNode[0];
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
254 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
255 return arraycast!(IPreferenceNode)( subNodes
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
256 .toArray());
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
257 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
258
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
259 /*
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
260 * (non-Javadoc) Method declared on IPreferenceNode.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
261 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
262 public IPreferenceNode remove(String id) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
263 IPreferenceNode node = findSubNode(id);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
264 if (node !is null) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
265 remove(node);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
266 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
267 return node;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
268 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
269
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
270 /*
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
271 * (non-Javadoc) Method declared on IPreferenceNode.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
272 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
273 public bool remove(IPreferenceNode node) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
274 if (subNodes is null) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
275 return false;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
276 }
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: 34
diff changeset
277 return subNodes.remove(cast(Object)node);
34
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
278 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
279
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
280 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
281 * Set the current page to be newPage.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
282 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
283 * @param newPage
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
284 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
285 public void setPage(IPreferencePage newPage) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
286 page = newPage;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
287 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
288 }