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