Mercurial > projects > dwt2
comparison org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/ContentAssistSubjectControlAdapter.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 |
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.contentassist.ContentAssistSubjectControlAdapter; | |
14 | |
15 import org.eclipse.jface.text.contentassist.ContentAssistEvent; // packageimport | |
16 import org.eclipse.jface.text.contentassist.Helper; // packageimport | |
17 import org.eclipse.jface.text.contentassist.PopupCloser; // packageimport | |
18 import org.eclipse.jface.text.contentassist.IContentAssistant; // packageimport | |
19 import org.eclipse.jface.text.contentassist.CompletionProposal; // packageimport | |
20 import org.eclipse.jface.text.contentassist.ICompletionProposalExtension5; // packageimport | |
21 import org.eclipse.jface.text.contentassist.IContextInformationValidator; // packageimport | |
22 import org.eclipse.jface.text.contentassist.IContentAssistListener; // packageimport | |
23 import org.eclipse.jface.text.contentassist.ICompletionProposalExtension6; // packageimport | |
24 import org.eclipse.jface.text.contentassist.ICompletionListener; // packageimport | |
25 import org.eclipse.jface.text.contentassist.ICompletionProposalExtension2; // packageimport | |
26 import org.eclipse.jface.text.contentassist.IContentAssistantExtension4; // packageimport | |
27 import org.eclipse.jface.text.contentassist.ContextInformation; // packageimport | |
28 import org.eclipse.jface.text.contentassist.ICompletionProposalExtension3; // packageimport | |
29 import org.eclipse.jface.text.contentassist.ContextInformationValidator; // packageimport | |
30 import org.eclipse.jface.text.contentassist.ICompletionProposal; // packageimport | |
31 import org.eclipse.jface.text.contentassist.IContentAssistProcessor; // packageimport | |
32 import org.eclipse.jface.text.contentassist.AdditionalInfoController; // packageimport | |
33 import org.eclipse.jface.text.contentassist.IContextInformationPresenter; // packageimport | |
34 import org.eclipse.jface.text.contentassist.ICompletionProposalExtension4; // packageimport | |
35 import org.eclipse.jface.text.contentassist.ICompletionListenerExtension; // packageimport | |
36 import org.eclipse.jface.text.contentassist.ContextInformationPopup; // packageimport | |
37 import org.eclipse.jface.text.contentassist.IContextInformationExtension; // packageimport | |
38 import org.eclipse.jface.text.contentassist.IContentAssistantExtension2; // packageimport | |
39 import org.eclipse.jface.text.contentassist.CompletionProposalPopup; // packageimport | |
40 import org.eclipse.jface.text.contentassist.ICompletionProposalExtension; // packageimport | |
41 import org.eclipse.jface.text.contentassist.IContextInformation; // packageimport | |
42 import org.eclipse.jface.text.contentassist.IContentAssistantExtension3; // packageimport | |
43 import org.eclipse.jface.text.contentassist.ContentAssistant; // packageimport | |
44 import org.eclipse.jface.text.contentassist.IContentAssistantExtension; // packageimport | |
45 import org.eclipse.jface.text.contentassist.JFaceTextMessages; // packageimport | |
46 | |
47 | |
48 import java.lang.all; | |
49 import java.util.Set; | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 import org.eclipse.swt.custom.StyledText; | |
56 import org.eclipse.swt.custom.VerifyKeyListener; | |
57 import org.eclipse.swt.events.KeyListener; | |
58 import org.eclipse.swt.events.SelectionListener; | |
59 import org.eclipse.swt.graphics.Point; | |
60 import org.eclipse.swt.widgets.Control; | |
61 import org.eclipse.core.runtime.Assert; | |
62 import org.eclipse.jface.contentassist.IContentAssistSubjectControl; | |
63 import org.eclipse.jface.contentassist.ISubjectControlContextInformationPresenter; | |
64 import org.eclipse.jface.contentassist.ISubjectControlContextInformationValidator; | |
65 import org.eclipse.jface.text.IDocument; | |
66 import org.eclipse.jface.text.IEventConsumer; | |
67 import org.eclipse.jface.text.ITextViewer; | |
68 import org.eclipse.jface.text.ITextViewerExtension; | |
69 import org.eclipse.jface.text.contentassist.ContextInformationPopup; | |
70 | |
71 | |
72 /** | |
73 * This content assist adapter delegates the calls either to | |
74 * a text viewer or to a content assist subject control. | |
75 * | |
76 * @since 3.0 | |
77 */ | |
78 final class ContentAssistSubjectControlAdapter : IContentAssistSubjectControl { | |
79 | |
80 /** | |
81 * The text viewer which is used as content assist subject control. | |
82 */ | |
83 private ITextViewer fViewer; | |
84 | |
85 /** | |
86 * The content assist subject control. | |
87 */ | |
88 private IContentAssistSubjectControl fContentAssistSubjectControl; | |
89 | |
90 | |
91 /** | |
92 * Creates an adapter for the given content assist subject control. | |
93 * | |
94 * @param contentAssistSubjectControl the content assist subject control | |
95 */ | |
96 this(IContentAssistSubjectControl contentAssistSubjectControl) { | |
97 Assert.isNotNull(cast(Object)contentAssistSubjectControl); | |
98 fContentAssistSubjectControl= contentAssistSubjectControl; | |
99 } | |
100 | |
101 /** | |
102 * Creates an adapter for the given text viewer. | |
103 * | |
104 * @param viewer the text viewer | |
105 */ | |
106 public this(ITextViewer viewer) { | |
107 Assert.isNotNull(cast(Object)viewer); | |
108 fViewer= viewer; | |
109 } | |
110 | |
111 /* | |
112 * @see IContentAssistSubjectControl#getLineHeight() | |
113 */ | |
114 public int getLineHeight() { | |
115 if (fContentAssistSubjectControl !is null) | |
116 return fContentAssistSubjectControl.getLineHeight(); | |
117 | |
118 return fViewer.getTextWidget().getLineHeight(getCaretOffset()); | |
119 } | |
120 | |
121 /* | |
122 * @see IContentAssistSubjectControl#getControl() | |
123 */ | |
124 public Control getControl() { | |
125 if (fContentAssistSubjectControl !is null) | |
126 return fContentAssistSubjectControl.getControl(); | |
127 return fViewer.getTextWidget(); | |
128 } | |
129 | |
130 /* | |
131 * @see IContentAssistSubjectControl#getLocationAtOffset(int) | |
132 */ | |
133 public Point getLocationAtOffset(int offset) { | |
134 if (fContentAssistSubjectControl !is null) | |
135 return fContentAssistSubjectControl.getLocationAtOffset(offset); | |
136 return fViewer.getTextWidget().getLocationAtOffset(offset); | |
137 } | |
138 | |
139 /* | |
140 * @see IContentAssistSubjectControl#getWidgetSelectionRange() | |
141 */ | |
142 public Point getWidgetSelectionRange() { | |
143 if (fContentAssistSubjectControl !is null) | |
144 return fContentAssistSubjectControl.getWidgetSelectionRange(); | |
145 return fViewer.getTextWidget().getSelectionRange(); | |
146 } | |
147 | |
148 /* | |
149 * @see IContentAssistSubjectControl#getSelectedRange() | |
150 */ | |
151 public Point getSelectedRange() { | |
152 if (fContentAssistSubjectControl !is null) | |
153 return fContentAssistSubjectControl.getSelectedRange(); | |
154 return fViewer.getSelectedRange(); | |
155 } | |
156 | |
157 /* | |
158 * @see org.eclipse.jface.text.contentassist.IContentAssistSubjectControl#getCaretOffset() | |
159 */ | |
160 public int getCaretOffset() { | |
161 if (fContentAssistSubjectControl !is null) | |
162 return fContentAssistSubjectControl.getCaretOffset(); | |
163 return fViewer.getTextWidget().getCaretOffset(); | |
164 } | |
165 | |
166 /* | |
167 * @see org.eclipse.jface.text.contentassist.IContentAssistSubjectControl#getLineDelimiter() | |
168 */ | |
169 public String getLineDelimiter() { | |
170 if (fContentAssistSubjectControl !is null) | |
171 return fContentAssistSubjectControl.getLineDelimiter(); | |
172 return fViewer.getTextWidget().getLineDelimiter(); | |
173 } | |
174 | |
175 /* | |
176 * @see org.eclipse.jface.text.contentassist.IContentAssistSubjectControl#addKeyListener(org.eclipse.swt.events.KeyListener) | |
177 */ | |
178 public void addKeyListener(KeyListener keyListener) { | |
179 if (fContentAssistSubjectControl !is null) | |
180 fContentAssistSubjectControl.addKeyListener(keyListener); | |
181 else | |
182 fViewer.getTextWidget().addKeyListener(keyListener); | |
183 } | |
184 | |
185 /* | |
186 * @see org.eclipse.jface.text.contentassist.IContentAssistSubjectControl#removeKeyListener(org.eclipse.swt.events.KeyListener) | |
187 */ | |
188 public void removeKeyListener(KeyListener keyListener) { | |
189 if (fContentAssistSubjectControl !is null) | |
190 fContentAssistSubjectControl.removeKeyListener(keyListener); | |
191 else | |
192 fViewer.getTextWidget().removeKeyListener(keyListener); | |
193 } | |
194 | |
195 /* | |
196 * @see org.eclipse.jface.text.contentassist.IContentAssistSubjectControl#getDocument() | |
197 */ | |
198 public IDocument getDocument() { | |
199 if (fContentAssistSubjectControl !is null) | |
200 return fContentAssistSubjectControl.getDocument(); | |
201 return fViewer.getDocument(); | |
202 } | |
203 | |
204 /* | |
205 * @see org.eclipse.jface.text.contentassist.IContentAssistSubjectControl#prependVerifyKeyListener(VerifyKeyListener) | |
206 */ | |
207 public bool prependVerifyKeyListener(VerifyKeyListener verifyKeyListener) { | |
208 if (fContentAssistSubjectControl !is null) { | |
209 return fContentAssistSubjectControl.prependVerifyKeyListener(verifyKeyListener); | |
210 } else if ( cast(ITextViewerExtension)fViewer ) { | |
211 ITextViewerExtension e= cast(ITextViewerExtension) fViewer; | |
212 e.prependVerifyKeyListener(verifyKeyListener); | |
213 return true; | |
214 } else { | |
215 | |
216 StyledText textWidget= fViewer.getTextWidget(); | |
217 if (Helper.okToUse(textWidget)) { | |
218 textWidget.addVerifyKeyListener(verifyKeyListener); | |
219 return true; | |
220 } | |
221 } | |
222 return false; | |
223 } | |
224 | |
225 /* | |
226 * @see org.eclipse.jface.text.contentassist.IContentAssistSubjectControl#appendVerifyKeyListener(org.eclipse.swt.custom.VerifyKeyListener) | |
227 */ | |
228 public bool appendVerifyKeyListener(VerifyKeyListener verifyKeyListener) { | |
229 if (fContentAssistSubjectControl !is null) | |
230 return fContentAssistSubjectControl.appendVerifyKeyListener(verifyKeyListener); | |
231 else if ( cast(ITextViewerExtension)fViewer ) { | |
232 ITextViewerExtension extension= cast(ITextViewerExtension)fViewer; | |
233 extension.appendVerifyKeyListener(verifyKeyListener); | |
234 return true; | |
235 } else { | |
236 StyledText textWidget= fViewer.getTextWidget(); | |
237 if (Helper.okToUse(textWidget)) { | |
238 textWidget.addVerifyKeyListener(verifyKeyListener); | |
239 return true; | |
240 } | |
241 } | |
242 return false; | |
243 } | |
244 | |
245 /* | |
246 * @see org.eclipse.jface.text.contentassist.IContentAssistSubjectControl#removeVerifyKeyListener(org.eclipse.swt.custom.VerifyKeyListener) | |
247 */ | |
248 public void removeVerifyKeyListener(VerifyKeyListener verifyKeyListener) { | |
249 if (fContentAssistSubjectControl !is null) { | |
250 fContentAssistSubjectControl.removeVerifyKeyListener(verifyKeyListener); | |
251 } else if ( cast(ITextViewerExtension)fViewer ) { | |
252 ITextViewerExtension extension= cast(ITextViewerExtension) fViewer; | |
253 extension.removeVerifyKeyListener(verifyKeyListener); | |
254 } else { | |
255 StyledText textWidget= fViewer.getTextWidget(); | |
256 if (Helper.okToUse(textWidget)) | |
257 textWidget.removeVerifyKeyListener(verifyKeyListener); | |
258 } | |
259 } | |
260 | |
261 /* | |
262 * @see org.eclipse.jface.text.contentassist.IContentAssistSubjectControl#setEventConsumer(org.eclipse.jface.text.contentassist.ContentAssistant.InternalListener) | |
263 */ | |
264 public void setEventConsumer(IEventConsumer eventConsumer) { | |
265 if (fContentAssistSubjectControl !is null) | |
266 fContentAssistSubjectControl.setEventConsumer(eventConsumer); | |
267 else | |
268 fViewer.setEventConsumer(eventConsumer); | |
269 } | |
270 | |
271 /* | |
272 * @see org.eclipse.jface.text.contentassist.IContentAssistSubjectControl#setSelectedRange(int, int) | |
273 */ | |
274 public void setSelectedRange(int i, int j) { | |
275 if (fContentAssistSubjectControl !is null) | |
276 fContentAssistSubjectControl.setSelectedRange(i, j); | |
277 else | |
278 fViewer.setSelectedRange(i, j); | |
279 } | |
280 | |
281 /* | |
282 * @see org.eclipse.jface.text.contentassist.IContentAssistSubjectControl#revealRange(int, int) | |
283 */ | |
284 public void revealRange(int i, int j) { | |
285 if (fContentAssistSubjectControl !is null) | |
286 fContentAssistSubjectControl.revealRange(i, j); | |
287 else | |
288 fViewer.revealRange(i, j); | |
289 } | |
290 | |
291 /* | |
292 * @see org.eclipse.jface.text.contentassist.IContentAssistSubjectControl#canAddVerifyKeyListener() | |
293 */ | |
294 public bool supportsVerifyKeyListener() { | |
295 if (fContentAssistSubjectControl !is null) | |
296 return fContentAssistSubjectControl.supportsVerifyKeyListener(); | |
297 return true; | |
298 } | |
299 /** | |
300 * Returns the characters which when typed by the user should automatically | |
301 * initiate proposing completions. The position is used to determine the | |
302 * appropriate content assist processor to invoke. | |
303 * | |
304 * @param contentAssistant the content assistant | |
305 * @param offset a document offset | |
306 * @return the auto activation characters | |
307 * @see IContentAssistProcessor#getCompletionProposalAutoActivationCharacters() | |
308 */ | |
309 public char[] getCompletionProposalAutoActivationCharacters(ContentAssistant contentAssistant, int offset) { | |
310 if (fContentAssistSubjectControl !is null) | |
311 return contentAssistant.getCompletionProposalAutoActivationCharacters(fContentAssistSubjectControl, offset); | |
312 return contentAssistant.getCompletionProposalAutoActivationCharacters(fViewer, offset); | |
313 } | |
314 | |
315 /** | |
316 * Returns the characters which when typed by the user should automatically | |
317 * initiate the presentation of context information. The position is used | |
318 * to determine the appropriate content assist processor to invoke. | |
319 * | |
320 * @param contentAssistant the content assistant | |
321 * @param offset a document offset | |
322 * @return the auto activation characters | |
323 * | |
324 * @see IContentAssistProcessor#getContextInformationAutoActivationCharacters() | |
325 */ | |
326 char[] getContextInformationAutoActivationCharacters(ContentAssistant contentAssistant, int offset) { | |
327 if (fContentAssistSubjectControl !is null) | |
328 return contentAssistant.getContextInformationAutoActivationCharacters(fContentAssistSubjectControl, offset); | |
329 return contentAssistant.getContextInformationAutoActivationCharacters(fViewer, offset); | |
330 } | |
331 | |
332 /** | |
333 * Creates and returns a completion proposal popup for the given content assistant. | |
334 * | |
335 * @param contentAssistant the content assistant | |
336 * @param controller the additional info controller | |
337 * @return the completion proposal popup | |
338 */ | |
339 CompletionProposalPopup createCompletionProposalPopup(ContentAssistant contentAssistant, AdditionalInfoController controller) { | |
340 if (fContentAssistSubjectControl !is null) | |
341 return new CompletionProposalPopup(contentAssistant, fContentAssistSubjectControl, controller); | |
342 return new CompletionProposalPopup(contentAssistant, fViewer, controller); | |
343 | |
344 } | |
345 | |
346 /** | |
347 * Creates and returns a context info popup for the given content assistant. | |
348 * | |
349 * @param contentAssistant the content assistant | |
350 * @return the context info popup or <code>null</code> | |
351 */ | |
352 ContextInformationPopup createContextInfoPopup(ContentAssistant contentAssistant) { | |
353 if (fContentAssistSubjectControl !is null) | |
354 return new ContextInformationPopup(contentAssistant, fContentAssistSubjectControl); | |
355 return new ContextInformationPopup(contentAssistant, fViewer); | |
356 | |
357 } | |
358 | |
359 /** | |
360 * Returns the context information validator that should be used to | |
361 * determine when the currently displayed context information should | |
362 * be dismissed. The position is used to determine the appropriate | |
363 * content assist processor to invoke. | |
364 * | |
365 * @param contentAssistant the content assistant | |
366 * @param offset a document offset | |
367 * @return an validator | |
368 */ | |
369 public IContextInformationValidator getContextInformationValidator(ContentAssistant contentAssistant, int offset) { | |
370 if (fContentAssistSubjectControl !is null) | |
371 return contentAssistant.getContextInformationValidator(fContentAssistSubjectControl, offset); | |
372 return contentAssistant.getContextInformationValidator(fViewer, offset); | |
373 } | |
374 | |
375 /** | |
376 * Returns the context information presenter that should be used to | |
377 * display context information. The position is used to determine the | |
378 * appropriate content assist processor to invoke. | |
379 * | |
380 * @param contentAssistant the content assistant | |
381 * @param offset a document offset | |
382 * @return a presenter | |
383 */ | |
384 public IContextInformationPresenter getContextInformationPresenter(ContentAssistant contentAssistant, int offset) { | |
385 if (fContentAssistSubjectControl !is null) | |
386 return contentAssistant.getContextInformationPresenter(fContentAssistSubjectControl, offset); | |
387 return contentAssistant.getContextInformationPresenter(fViewer, offset); | |
388 } | |
389 | |
390 /** | |
391 * Installs this adapter's information validator on the given context frame. | |
392 * | |
393 * @param frame the context frame | |
394 */ | |
395 public void installValidator(ContextInformationPopup_ContextFrame frame) { | |
396 if (fContentAssistSubjectControl !is null) { | |
397 if (cast(ISubjectControlContextInformationValidator)frame.fValidator ) | |
398 (cast(ISubjectControlContextInformationValidator)frame.fValidator).install(frame.fInformation, fContentAssistSubjectControl, frame.fOffset); | |
399 } else | |
400 frame.fValidator.install(frame.fInformation, fViewer, frame.fOffset); | |
401 } | |
402 | |
403 /** | |
404 * Installs this adapter's information presenter on the given context frame. | |
405 * | |
406 * @param frame the context frame | |
407 */ | |
408 public void installContextInformationPresenter(ContextInformationPopup_ContextFrame frame) { | |
409 if (fContentAssistSubjectControl !is null) { | |
410 if (cast(ISubjectControlContextInformationPresenter)frame.fPresenter ) | |
411 (cast(ISubjectControlContextInformationPresenter)frame.fValidator).install(frame.fInformation, fContentAssistSubjectControl, frame.fBeginOffset); | |
412 } else | |
413 frame.fPresenter.install(frame.fInformation, fViewer, frame.fBeginOffset); | |
414 } | |
415 | |
416 /** | |
417 * Returns an array of context information objects computed based | |
418 * on the specified document position. The position is used to determine | |
419 * the appropriate content assist processor to invoke. | |
420 * | |
421 * @param contentAssistant the content assistant | |
422 * @param offset a document offset | |
423 * @return an array of context information objects | |
424 * @see IContentAssistProcessor#computeContextInformation(ITextViewer, int) | |
425 */ | |
426 public IContextInformation[] computeContextInformation(ContentAssistant contentAssistant, int offset) { | |
427 if (fContentAssistSubjectControl !is null) | |
428 return contentAssistant.computeContextInformation(fContentAssistSubjectControl, offset); | |
429 return contentAssistant.computeContextInformation(fViewer, offset); | |
430 } | |
431 | |
432 /* | |
433 * @see IContentAssistSubjectControl#addSelectionListener(SelectionListener) | |
434 */ | |
435 public bool addSelectionListener(SelectionListener selectionListener) { | |
436 if (fContentAssistSubjectControl !is null) | |
437 return fContentAssistSubjectControl.addSelectionListener(selectionListener); | |
438 fViewer.getTextWidget().addSelectionListener(selectionListener); | |
439 return true; | |
440 } | |
441 | |
442 /* | |
443 * @see IContentAssistSubjectControl#removeSelectionListener(SelectionListener) | |
444 */ | |
445 public void removeSelectionListener(SelectionListener selectionListener) { | |
446 if (fContentAssistSubjectControl !is null) | |
447 fContentAssistSubjectControl.removeSelectionListener(selectionListener); | |
448 else | |
449 fViewer.getTextWidget().removeSelectionListener(selectionListener); | |
450 } | |
451 } |