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 }