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 }