Mercurial > projects > dwt-addons
annotate dwtx/jface/text/source/AnnotationMap.d @ 162:1a5b8f8129df
...
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Mon, 08 Sep 2008 00:51:37 +0200 |
parents | f70d9508c95c |
children |
rev | line source |
---|---|
129 | 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 * Port to the D programming language: | |
11 * Frank Benoit <benoit@tionex.de> | |
12 *******************************************************************************/ | |
13 module dwtx.jface.text.source.AnnotationMap; | |
14 | |
131 | 15 import dwtx.jface.text.source.ISharedTextColors; // packageimport |
16 import dwtx.jface.text.source.ILineRange; // packageimport | |
17 import dwtx.jface.text.source.IAnnotationPresentation; // packageimport | |
18 import dwtx.jface.text.source.IVerticalRulerInfoExtension; // packageimport | |
19 import dwtx.jface.text.source.ICharacterPairMatcher; // packageimport | |
20 import dwtx.jface.text.source.TextInvocationContext; // packageimport | |
21 import dwtx.jface.text.source.LineChangeHover; // packageimport | |
22 import dwtx.jface.text.source.IChangeRulerColumn; // packageimport | |
23 import dwtx.jface.text.source.IAnnotationMap; // packageimport | |
24 import dwtx.jface.text.source.IAnnotationModelListenerExtension; // packageimport | |
25 import dwtx.jface.text.source.ISourceViewerExtension2; // packageimport | |
26 import dwtx.jface.text.source.IAnnotationHover; // packageimport | |
27 import dwtx.jface.text.source.ContentAssistantFacade; // packageimport | |
28 import dwtx.jface.text.source.IAnnotationAccess; // packageimport | |
29 import dwtx.jface.text.source.IVerticalRulerExtension; // packageimport | |
30 import dwtx.jface.text.source.IVerticalRulerColumn; // packageimport | |
31 import dwtx.jface.text.source.LineNumberRulerColumn; // packageimport | |
32 import dwtx.jface.text.source.MatchingCharacterPainter; // packageimport | |
33 import dwtx.jface.text.source.IAnnotationModelExtension; // packageimport | |
34 import dwtx.jface.text.source.ILineDifferExtension; // packageimport | |
35 import dwtx.jface.text.source.DefaultCharacterPairMatcher; // packageimport | |
36 import dwtx.jface.text.source.LineNumberChangeRulerColumn; // packageimport | |
37 import dwtx.jface.text.source.IAnnotationAccessExtension; // packageimport | |
38 import dwtx.jface.text.source.ISourceViewer; // packageimport | |
39 import dwtx.jface.text.source.AnnotationModel; // packageimport | |
40 import dwtx.jface.text.source.ILineDifferExtension2; // packageimport | |
41 import dwtx.jface.text.source.IAnnotationModelListener; // packageimport | |
42 import dwtx.jface.text.source.IVerticalRuler; // packageimport | |
43 import dwtx.jface.text.source.DefaultAnnotationHover; // packageimport | |
44 import dwtx.jface.text.source.SourceViewer; // packageimport | |
45 import dwtx.jface.text.source.SourceViewerConfiguration; // packageimport | |
46 import dwtx.jface.text.source.AnnotationBarHoverManager; // packageimport | |
47 import dwtx.jface.text.source.CompositeRuler; // packageimport | |
48 import dwtx.jface.text.source.ImageUtilities; // packageimport | |
49 import dwtx.jface.text.source.VisualAnnotationModel; // packageimport | |
50 import dwtx.jface.text.source.IAnnotationModel; // packageimport | |
51 import dwtx.jface.text.source.ISourceViewerExtension3; // packageimport | |
52 import dwtx.jface.text.source.ILineDiffInfo; // packageimport | |
53 import dwtx.jface.text.source.VerticalRulerEvent; // packageimport | |
54 import dwtx.jface.text.source.ChangeRulerColumn; // packageimport | |
55 import dwtx.jface.text.source.ILineDiffer; // packageimport | |
56 import dwtx.jface.text.source.AnnotationModelEvent; // packageimport | |
57 import dwtx.jface.text.source.AnnotationColumn; // packageimport | |
58 import dwtx.jface.text.source.AnnotationRulerColumn; // packageimport | |
59 import dwtx.jface.text.source.IAnnotationHoverExtension; // packageimport | |
60 import dwtx.jface.text.source.AbstractRulerColumn; // packageimport | |
61 import dwtx.jface.text.source.ISourceViewerExtension; // packageimport | |
62 import dwtx.jface.text.source.IVerticalRulerInfo; // packageimport | |
63 import dwtx.jface.text.source.IAnnotationModelExtension2; // packageimport | |
64 import dwtx.jface.text.source.LineRange; // packageimport | |
65 import dwtx.jface.text.source.IAnnotationAccessExtension2; // packageimport | |
66 import dwtx.jface.text.source.VerticalRuler; // packageimport | |
67 import dwtx.jface.text.source.JFaceTextMessages; // packageimport | |
68 import dwtx.jface.text.source.IOverviewRuler; // packageimport | |
69 import dwtx.jface.text.source.Annotation; // packageimport | |
70 import dwtx.jface.text.source.IVerticalRulerListener; // packageimport | |
71 import dwtx.jface.text.source.ISourceViewerExtension4; // packageimport | |
72 import dwtx.jface.text.source.AnnotationPainter; // packageimport | |
73 import dwtx.jface.text.source.IAnnotationHoverExtension2; // packageimport | |
74 import dwtx.jface.text.source.OverviewRuler; // packageimport | |
75 import dwtx.jface.text.source.OverviewRulerHoverManager; // packageimport | |
76 | |
77 | |
129 | 78 import dwt.dwthelper.utils; |
79 | |
80 | |
153
f70d9508c95c
Fix java Collection imports
Frank Benoit <benoit@tionex.de>
parents:
146
diff
changeset
|
81 import dwtx.dwtxhelper.Collection; |
f70d9508c95c
Fix java Collection imports
Frank Benoit <benoit@tionex.de>
parents:
146
diff
changeset
|
82 |
f70d9508c95c
Fix java Collection imports
Frank Benoit <benoit@tionex.de>
parents:
146
diff
changeset
|
83 |
f70d9508c95c
Fix java Collection imports
Frank Benoit <benoit@tionex.de>
parents:
146
diff
changeset
|
84 |
f70d9508c95c
Fix java Collection imports
Frank Benoit <benoit@tionex.de>
parents:
146
diff
changeset
|
85 |
f70d9508c95c
Fix java Collection imports
Frank Benoit <benoit@tionex.de>
parents:
146
diff
changeset
|
86 |
129 | 87 |
88 | |
89 /** | |
90 * Internal implementation of {@link dwtx.jface.text.source.IAnnotationMap}. | |
91 * | |
92 * @since 3.0 | |
93 */ | |
94 class AnnotationMap : IAnnotationMap { | |
95 | |
96 /** | |
97 * The lock object used to synchronize the operations explicitly defined by | |
98 * <code>IAnnotationMap</code> | |
99 */ | |
100 private Object fLockObject; | |
101 /** | |
102 * The internal lock object used if <code>fLockObject</code> is <code>null</code>. | |
103 * @since 3.2 | |
104 */ | |
162 | 105 private const Object fInternalLockObject; |
129 | 106 |
107 /** The map holding the annotations */ | |
108 private Map fInternalMap; | |
109 | |
110 /** | |
111 * Creates a new annotation map with the given capacity. | |
112 * | |
113 * @param capacity the capacity | |
114 */ | |
133
7d818bd32d63
Fix ctors to this with gvim regexp
Frank Benoit <benoit@tionex.de>
parents:
131
diff
changeset
|
115 public this(int capacity) { |
162 | 116 fInternalLockObject= new Object(); |
129 | 117 fInternalMap= new HashMap(capacity); |
118 } | |
119 | |
120 /* | |
121 * @see dwtx.jface.text.source.ISynchronizable#setLockObject(java.lang.Object) | |
122 */ | |
123 public synchronized void setLockObject(Object lockObject) { | |
124 fLockObject= lockObject; | |
125 } | |
126 | |
127 /* | |
128 * @see dwtx.jface.text.source.ISynchronizable#getLockObject() | |
129 */ | |
130 public synchronized Object getLockObject() { | |
131 if (fLockObject is null) | |
132 return fInternalLockObject; | |
133 return fLockObject; | |
134 } | |
135 | |
136 /* | |
137 * @see dwtx.jface.text.source.IAnnotationMap#valuesIterator() | |
138 */ | |
139 public Iterator valuesIterator() { | |
140 synchronized (getLockObject()) { | |
145 | 141 return (new ArrayList(fInternalMap.values())).iterator(); |
129 | 142 } |
143 } | |
144 | |
145 /* | |
146 * @see dwtx.jface.text.source.IAnnotationMap#keySetIterator() | |
147 */ | |
148 public Iterator keySetIterator() { | |
149 synchronized (getLockObject()) { | |
145 | 150 return (new ArrayList(fInternalMap.keySet())).iterator(); |
129 | 151 } |
152 } | |
153 | |
154 /* | |
155 * @see java.util.Map#containsKey(java.lang.Object) | |
156 */ | |
157 public bool containsKey(Object annotation) { | |
158 synchronized (getLockObject()) { | |
159 return fInternalMap.containsKey(annotation); | |
160 } | |
161 } | |
162 | |
163 /* | |
164 * @see java.util.Map#put(java.lang.Object, java.lang.Object) | |
165 */ | |
166 public Object put(Object annotation, Object position) { | |
167 synchronized (getLockObject()) { | |
168 return fInternalMap.put(annotation, position); | |
169 } | |
170 } | |
171 | |
172 /* | |
173 * @see java.util.Map#get(java.lang.Object) | |
174 */ | |
175 public Object get(Object annotation) { | |
176 synchronized (getLockObject()) { | |
177 return fInternalMap.get(annotation); | |
178 } | |
179 } | |
180 | |
181 /* | |
182 * @see java.util.Map#clear() | |
183 */ | |
184 public void clear() { | |
185 synchronized (getLockObject()) { | |
186 fInternalMap.clear(); | |
187 } | |
188 } | |
189 | |
190 /* | |
191 * @see java.util.Map#remove(java.lang.Object) | |
192 */ | |
193 public Object remove(Object annotation) { | |
194 synchronized (getLockObject()) { | |
195 return fInternalMap.remove(annotation); | |
196 } | |
197 } | |
198 | |
199 /* | |
200 * @see java.util.Map#size() | |
201 */ | |
202 public int size() { | |
203 synchronized (getLockObject()) { | |
204 return fInternalMap.size(); | |
205 } | |
206 } | |
207 | |
208 /* | |
209 * @see java.util.Map#isEmpty() | |
210 */ | |
211 public bool isEmpty() { | |
212 synchronized (getLockObject()) { | |
213 return fInternalMap.isEmpty(); | |
214 } | |
215 } | |
216 | |
217 /* | |
218 * @see java.util.Map#containsValue(java.lang.Object) | |
219 */ | |
220 public bool containsValue(Object value) { | |
221 synchronized(getLockObject()) { | |
222 return fInternalMap.containsValue(value); | |
223 } | |
224 } | |
225 | |
226 /* | |
227 * @see java.util.Map#putAll(java.util.Map) | |
228 */ | |
229 public void putAll(Map map) { | |
230 synchronized (getLockObject()) { | |
231 fInternalMap.putAll(map); | |
232 } | |
233 } | |
234 | |
235 /* | |
236 * @see IAnnotationMap#entrySet() | |
237 */ | |
238 public Set entrySet() { | |
239 synchronized (getLockObject()) { | |
240 return fInternalMap.entrySet(); | |
241 } | |
242 } | |
243 | |
244 /* | |
245 * @see IAnnotationMap#keySet() | |
246 */ | |
247 public Set keySet() { | |
248 synchronized (getLockObject()) { | |
249 return fInternalMap.keySet(); | |
250 } | |
251 } | |
252 | |
253 /* | |
254 * @see IAnnotationMap#values() | |
255 */ | |
256 public Collection values() { | |
257 synchronized (getLockObject()) { | |
258 return fInternalMap.values(); | |
259 } | |
260 } | |
162 | 261 |
262 /// DWT extension of Collection interfaces | |
263 | |
264 public bool containsKey(String key) { | |
265 return containsKey(stringcast(key)); | |
266 } | |
267 public Object get(String key) { | |
268 return get(stringcast(key)); | |
269 } | |
270 public Object put(String key, String value) { | |
271 return put(stringcast(key), stringcast(value)); | |
272 } | |
273 public Object put(Object key, String value) { | |
274 return put(key, stringcast(value)); | |
275 } | |
276 public Object put(String key, Object value) { | |
277 return put(stringcast(key), value); | |
278 } | |
279 public Object remove(String key) { | |
280 return remove(stringcast(key)); | |
281 } | |
282 public int opApply (int delegate(ref Object value) dg){ | |
283 implMissing(__FILE__,__LINE__); | |
284 return 0; | |
285 } | |
286 public int opApply (int delegate(ref Object key, ref Object value) dg){ | |
287 implMissing(__FILE__,__LINE__); | |
288 return 0; | |
289 } | |
290 | |
129 | 291 } |