Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/ExtensionBasedTextViewerConfiguration.java')
-rw-r--r--org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/ExtensionBasedTextViewerConfiguration.java47
1 files changed, 14 insertions, 33 deletions
diff --git a/org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/ExtensionBasedTextViewerConfiguration.java b/org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/ExtensionBasedTextViewerConfiguration.java
index 41ae32499e3..2ef26c14123 100644
--- a/org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/ExtensionBasedTextViewerConfiguration.java
+++ b/org.eclipse.ui.genericeditor/src/org/eclipse/ui/internal/genericeditor/ExtensionBasedTextViewerConfiguration.java
@@ -14,6 +14,7 @@
* - Bug 521382 default highlight reconciler
* Simon Scholz <simon.scholz@vogella.com> - Bug 527830
* Angelo Zerr <angelo.zerr@gmail.com> - [generic editor] Default Code folding for generic editor should use IndentFoldingStrategy - Bug 520659
+ * Christoph Läubrich - Bug 570459 - [genericeditor] Support ContentAssistProcessors to be registered as OSGi-Services
*******************************************************************************/
package org.eclipse.ui.internal.genericeditor;
@@ -33,14 +34,12 @@ import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.content.IContentType;
import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.text.AbstractReusableInformationControlCreator;
import org.eclipse.jface.text.DefaultInformationControl;
import org.eclipse.jface.text.IAutoEditStrategy;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IDocumentPartitioningListener;
-import org.eclipse.jface.text.IInformationControl;
import org.eclipse.jface.text.ITextHover;
-import org.eclipse.jface.text.contentassist.ContentAssistant;
+import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
import org.eclipse.jface.text.contentassist.IContentAssistant;
import org.eclipse.jface.text.presentation.IPresentationReconciler;
@@ -49,7 +48,6 @@ import org.eclipse.jface.text.quickassist.IQuickAssistProcessor;
import org.eclipse.jface.text.quickassist.QuickAssistAssistant;
import org.eclipse.jface.text.reconciler.IReconciler;
import org.eclipse.jface.text.source.ISourceViewer;
-import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.editors.text.TextSourceViewerConfiguration;
import org.eclipse.ui.internal.editors.text.EditorsPlugin;
import org.eclipse.ui.internal.genericeditor.folding.DefaultFoldingReconciler;
@@ -72,8 +70,7 @@ public final class ExtensionBasedTextViewerConfiguration extends TextSourceViewe
private Set<IContentType> contentTypes;
private IDocument document;
- private ContentAssistant contentAssistant;
- private List<IContentAssistProcessor> processors;
+ private GenericEditorContentAssistant contentAssistant;
/**
*
@@ -85,7 +82,7 @@ public final class ExtensionBasedTextViewerConfiguration extends TextSourceViewe
this.editor = editor;
}
- Set<IContentType> getContentTypes(ISourceViewer viewer) {
+ Set<IContentType> getContentTypes(ITextViewer viewer) {
if (this.contentTypes == null) {
this.contentTypes = new LinkedHashSet<>();
String fileName = null;
@@ -107,7 +104,7 @@ public final class ExtensionBasedTextViewerConfiguration extends TextSourceViewe
return this.contentTypes;
}
- private String getCurrentFileName(ISourceViewer viewer) {
+ private String getCurrentFileName(ITextViewer viewer) {
String fileName = null;
if (this.editor != null) {
fileName = editor.getEditorInput().getName();
@@ -140,28 +137,15 @@ public final class ExtensionBasedTextViewerConfiguration extends TextSourceViewe
@Override
public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {
ContentAssistProcessorRegistry registry = GenericEditorPlugin.getDefault().getContentAssistProcessorRegistry();
- contentAssistant = new ContentAssistant(true);
- contentAssistant.setContextInformationPopupOrientation(IContentAssistant.CONTEXT_INFO_BELOW);
- contentAssistant.setProposalPopupOrientation(IContentAssistant.PROPOSAL_REMOVE);
- contentAssistant.setAutoActivationDelay(0);
- contentAssistant.enableColoredLabels(true);
- contentAssistant.enableAutoActivation(true);
- this.processors = registry.getContentAssistProcessors(sourceViewer, editor, getContentTypes(sourceViewer));
- if (this.processors.isEmpty()) {
- this.processors.add(new DefaultContentAssistProcessor());
- }
- for (IContentAssistProcessor processor : this.processors) {
- contentAssistant.addContentAssistProcessor(processor, IDocument.DEFAULT_CONTENT_TYPE);
- }
+ ContentTypeRelatedExtensionTracker<IContentAssistProcessor> contentAssistProcessorTracker = new ContentTypeRelatedExtensionTracker<>(
+ GenericEditorPlugin.getDefault().getBundle().getBundleContext(), IContentAssistProcessor.class,
+ sourceViewer.getTextWidget().getDisplay());
+ Set<IContentType> types = getContentTypes(sourceViewer);
+ contentAssistant = new GenericEditorContentAssistant(contentAssistProcessorTracker,
+ registry.getContentAssistProcessors(sourceViewer, editor, types), types);
if (this.document != null) {
associateTokenContentTypes(this.document);
}
- contentAssistant.setInformationControlCreator(new AbstractReusableInformationControlCreator() {
- @Override
- protected IInformationControl doCreateInformationControl(Shell parent) {
- return new DefaultInformationControl(parent);
- }
- });
watchDocument(sourceViewer.getDocument());
return contentAssistant;
}
@@ -197,14 +181,10 @@ public final class ExtensionBasedTextViewerConfiguration extends TextSourceViewe
}
private void associateTokenContentTypes(IDocument document) {
- if (contentAssistant == null || this.processors == null) {
+ if (contentAssistant == null) {
return;
}
- for (String legalTokenContentType : document.getLegalContentTypes()) {
- for (IContentAssistProcessor processor : this.processors) {
- contentAssistant.addContentAssistProcessor(processor, legalTokenContentType);
- }
- }
+ contentAssistant.updateTokens(document);
}
@Override
@@ -268,4 +248,5 @@ public final class ExtensionBasedTextViewerConfiguration extends TextSourceViewe
targets.put(ExtensionBasedTextEditor.GENERIC_EDITOR_ID, editor);
return targets;
}
+
}

Back to the top