diff options
author | Tom Schindl | 2016-04-19 10:18:42 +0000 |
---|---|---|
committer | Tom Schindl | 2016-04-19 10:18:42 +0000 |
commit | b279f6336e45c790c51c0823193f306ccc0c74a6 (patch) | |
tree | 279fa3bec9b1826d5ca1ee08aee3fd63923d8417 /bundles | |
parent | 9e072d52b4495c0a231acd623d68cabdff1c20ad (diff) | |
download | org.eclipse.efxclipse-b279f6336e45c790c51c0823193f306ccc0c74a6.tar.gz org.eclipse.efxclipse-b279f6336e45c790c51c0823193f306ccc0c74a6.tar.xz org.eclipse.efxclipse-b279f6336e45c790c51c0823193f306ccc0c74a6.zip |
Bug 491983 - Add possibility to validate if a context-popup still shows valid information
Diffstat (limited to 'bundles')
8 files changed, 72 insertions, 6 deletions
diff --git a/bundles/code/org.eclipse.fx.code.editor.fx.e4/META-INF/MANIFEST.MF b/bundles/code/org.eclipse.fx.code.editor.fx.e4/META-INF/MANIFEST.MF index 6f761d5f3..2110e5db2 100644 --- a/bundles/code/org.eclipse.fx.code.editor.fx.e4/META-INF/MANIFEST.MF +++ b/bundles/code/org.eclipse.fx.code.editor.fx.e4/META-INF/MANIFEST.MF @@ -11,7 +11,8 @@ Require-Bundle: org.eclipse.e4.core.contexts;bundle-version="1.4.0", org.eclipse.e4.core.di;bundle-version="1.5.0", org.eclipse.e4.core.services;bundle-version="2.0.0", org.eclipse.text;bundle-version="3.5.400", - org.eclipse.e4.ui.services;bundle-version="1.2.0" + org.eclipse.e4.ui.services;bundle-version="1.2.0", + org.eclipse.fx.text.ui Import-Package: javax.inject, org.eclipse.fx.code.editor;version="2.3.0", org.eclipse.fx.code.editor.e4;version="2.3.0", @@ -33,6 +34,7 @@ Service-Component: OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.S OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.ContextInformationPresenterTypeProviderContextFunction.xml, OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.EditorContextMenuProviderTypeProviderContextFunction.xml, OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.SnippetEditorContextMenuService.xml, - OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.UndoManagerCF.xml + OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.UndoManagerCF.xml, + OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.ContextInformationValidatorTypeProviderCF.xml Bundle-Vendor: Eclipse.org Export-Package: org.eclipse.fx.code.editor.fx.e4;version="2.3.0";x-internal:=true diff --git a/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.ContextInformationValidatorTypeProviderCF.xml b/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.ContextInformationValidatorTypeProviderCF.xml new file mode 100644 index 000000000..1e8c9198b --- /dev/null +++ b/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.ContextInformationValidatorTypeProviderCF.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" name="org.eclipse.fx.code.editor.fx.e4.internal.ContextInformationValidatorTypeProviderCF"> + <property name="service.context.key" value="org.eclipse.fx.text.ui.contentassist.IContextInformationValidator"/> + <service> + <provide interface="org.eclipse.e4.core.contexts.IContextFunction"/> + </service> + <reference bind="registerService" cardinality="0..n" interface="org.eclipse.fx.code.editor.fx.services.ContextInformationValidatorTypeProvider" name="registerService" policy="dynamic" policy-option="greedy" unbind="unregisterService"/> + <implementation class="org.eclipse.fx.code.editor.fx.e4.internal.ContextInformationValidatorTypeProviderCF"/> +</scr:component>
\ No newline at end of file diff --git a/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.EditorContextMenuProviderTypeProviderContextFunction.xml b/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.EditorContextMenuProviderTypeProviderContextFunction.xml index db065a11f..5beadc827 100644 --- a/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.EditorContextMenuProviderTypeProviderContextFunction.xml +++ b/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.EditorContextMenuProviderTypeProviderContextFunction.xml @@ -1,8 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> -<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.fx.code.editor.fx.e4.internal.EditorContextMenuProviderTypeProviderContextFunction"> +<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" name="org.eclipse.fx.code.editor.fx.e4.internal.EditorContextMenuProviderTypeProviderContextFunction"> <property name="service.context.key" type="String" value="org.eclipse.fx.code.editor.fx.services.EditorContextMenuProvider"/> <service> <provide interface="org.eclipse.e4.core.contexts.IContextFunction"/> </service> + <reference bind="registerService" cardinality="0..n" interface="org.eclipse.fx.code.editor.fx.services.EditorContextMenuProviderTypeProvider" name="registerService" policy="dynamic" policy-option="greedy" unbind="unregisterService"/> <implementation class="org.eclipse.fx.code.editor.fx.e4.internal.EditorContextMenuProviderTypeProviderContextFunction"/> </scr:component>
\ No newline at end of file diff --git a/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/ContextInformationValidatorTypeProviderCF.java b/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/ContextInformationValidatorTypeProviderCF.java new file mode 100644 index 000000000..8df09280b --- /dev/null +++ b/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/ContextInformationValidatorTypeProviderCF.java @@ -0,0 +1,26 @@ +package org.eclipse.fx.code.editor.fx.e4.internal; + +import java.util.Map; + +import org.eclipse.e4.core.contexts.IContextFunction; +import org.eclipse.fx.code.editor.e4.InputBasedContextFunction; +import org.eclipse.fx.code.editor.fx.services.ContextInformationValidatorTypeProvider; +import org.eclipse.fx.text.ui.contentassist.IContextInformationValidator; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; +import org.osgi.service.component.annotations.ReferenceCardinality; +import org.osgi.service.component.annotations.ReferencePolicy; +import org.osgi.service.component.annotations.ReferencePolicyOption; + +@SuppressWarnings("restriction") +@Component(service=IContextFunction.class,property={"service.context.key=org.eclipse.fx.text.ui.contentassist.IContextInformationValidator"}) +public class ContextInformationValidatorTypeProviderCF extends InputBasedContextFunction<IContextInformationValidator, ContextInformationValidatorTypeProvider> { + @Reference(cardinality=ReferenceCardinality.MULTIPLE,policy=ReferencePolicy.DYNAMIC,policyOption=ReferencePolicyOption.GREEDY) + public void registerService(ContextInformationValidatorTypeProvider service, Map<String, Object> properties) { + super.registerService(service, properties); + } + + public void unregisterService(ContextInformationValidatorTypeProvider service) { + super.unregisterService(service); + } +} diff --git a/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/EditorContextMenuProviderTypeProviderContextFunction.java b/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/EditorContextMenuProviderTypeProviderContextFunction.java index a5fd9f303..da3c102b6 100644 --- a/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/EditorContextMenuProviderTypeProviderContextFunction.java +++ b/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/EditorContextMenuProviderTypeProviderContextFunction.java @@ -1,5 +1,7 @@ package org.eclipse.fx.code.editor.fx.e4.internal; +import java.util.Map; + import javax.inject.Inject; import org.eclipse.e4.core.contexts.ContextInjectionFactory; @@ -10,6 +12,10 @@ import org.eclipse.fx.code.editor.e4.InputBasedContextFunction; import org.eclipse.fx.code.editor.fx.services.EditorContextMenuProvider; import org.eclipse.fx.code.editor.fx.services.EditorContextMenuProviderTypeProvider; import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; +import org.osgi.service.component.annotations.ReferenceCardinality; +import org.osgi.service.component.annotations.ReferencePolicy; +import org.osgi.service.component.annotations.ReferencePolicyOption; import javafx.scene.control.Control; @@ -17,6 +23,15 @@ import javafx.scene.control.Control; @Component(service=IContextFunction.class,property="service.context.key:String=org.eclipse.fx.code.editor.fx.services.EditorContextMenuProvider") public class EditorContextMenuProviderTypeProviderContextFunction extends InputBasedContextFunction<EditorContextMenuProvider, EditorContextMenuProviderTypeProvider> { + @Reference(cardinality=ReferenceCardinality.MULTIPLE,policy=ReferencePolicy.DYNAMIC,policyOption=ReferencePolicyOption.GREEDY) + public void registerService(EditorContextMenuProviderTypeProvider service, Map<String, Object> properties) { + super.registerService(service, properties); + } + + public void unregisterService(EditorContextMenuProviderTypeProvider service) { + super.unregisterService(service); + } + @Override protected EditorContextMenuProvider createDefault(IEclipseContext context) { return ContextInjectionFactory.make(ModelEditorContextMenuProvider.class, context); diff --git a/bundles/code/org.eclipse.fx.code.editor.fx/src/org/eclipse/fx/code/editor/fx/SimpleSourceTextEditorBuilder.java b/bundles/code/org.eclipse.fx.code.editor.fx/src/org/eclipse/fx/code/editor/fx/SimpleSourceTextEditorBuilder.java index 9b5a1fff0..53e40c0ff 100644 --- a/bundles/code/org.eclipse.fx.code.editor.fx/src/org/eclipse/fx/code/editor/fx/SimpleSourceTextEditorBuilder.java +++ b/bundles/code/org.eclipse.fx.code.editor.fx/src/org/eclipse/fx/code/editor/fx/SimpleSourceTextEditorBuilder.java @@ -173,7 +173,7 @@ public class SimpleSourceTextEditorBuilder { } editor.setPartitioner(new FastPartitioner(new PartitionerImpl(this), contentTypes.toArray(new String[0]))); - editor.setSourceViewerConfiguration(new DefaultSourceViewerConfiguration(threadSynchronize, input, new ReconcilerImpl(this), proposalComputer, annotationModel, annotationPresenter, hoverInformationProvider, completionProposalPresenter, searchProvider, navigationProvider, editorOpener, behaviorContributor)); + editor.setSourceViewerConfiguration(new DefaultSourceViewerConfiguration(threadSynchronize, input, new ReconcilerImpl(this), proposalComputer, annotationModel, annotationPresenter, hoverInformationProvider, completionProposalPresenter, searchProvider, navigationProvider, editorOpener, behaviorContributor, null)); return editor; } diff --git a/bundles/code/org.eclipse.fx.code.editor.fx/src/org/eclipse/fx/code/editor/fx/services/ContextInformationValidatorTypeProvider.java b/bundles/code/org.eclipse.fx.code.editor.fx/src/org/eclipse/fx/code/editor/fx/services/ContextInformationValidatorTypeProvider.java new file mode 100644 index 000000000..ba4648af6 --- /dev/null +++ b/bundles/code/org.eclipse.fx.code.editor.fx/src/org/eclipse/fx/code/editor/fx/services/ContextInformationValidatorTypeProvider.java @@ -0,0 +1,9 @@ +package org.eclipse.fx.code.editor.fx.services; + +import org.eclipse.fx.code.editor.services.InputDependentTypeProviderService; +import org.eclipse.fx.text.ui.contentassist.IContextInformationValidator; + +@SuppressWarnings("restriction") +public interface ContextInformationValidatorTypeProvider extends InputDependentTypeProviderService<IContextInformationValidator> { + +} diff --git a/bundles/code/org.eclipse.fx.code.editor.fx/src/org/eclipse/fx/code/editor/fx/services/internal/DefaultSourceViewerConfiguration.java b/bundles/code/org.eclipse.fx.code.editor.fx/src/org/eclipse/fx/code/editor/fx/services/internal/DefaultSourceViewerConfiguration.java index bfb9b59a4..6222aef4a 100644 --- a/bundles/code/org.eclipse.fx.code.editor.fx/src/org/eclipse/fx/code/editor/fx/services/internal/DefaultSourceViewerConfiguration.java +++ b/bundles/code/org.eclipse.fx.code.editor.fx/src/org/eclipse/fx/code/editor/fx/services/internal/DefaultSourceViewerConfiguration.java @@ -41,6 +41,7 @@ import org.eclipse.fx.text.ui.contentassist.ContentAssistant; import org.eclipse.fx.text.ui.contentassist.ICompletionProposal; import org.eclipse.fx.text.ui.contentassist.IContentAssistant; import org.eclipse.fx.text.ui.contentassist.IContextInformation; +import org.eclipse.fx.text.ui.contentassist.IContextInformationValidator; import org.eclipse.fx.text.ui.presentation.IPresentationReconciler; import org.eclipse.fx.text.ui.presentation.PresentationReconciler; import org.eclipse.fx.text.ui.source.AnnotationPresenter; @@ -87,6 +88,7 @@ public class DefaultSourceViewerConfiguration extends SourceViewerConfiguration private SetProperty<Feature> featureSet = new SimpleSetProperty<Feature>(this, "featureSet", FXCollections.observableSet()); private final ThreadSynchronize threadSynchronize; + private final IContextInformationValidator contextInformationValidator; @Inject public DefaultSourceViewerConfiguration( @@ -101,9 +103,11 @@ public class DefaultSourceViewerConfiguration extends SourceViewerConfiguration @Optional SearchProvider searchProvider, @Optional NavigationProvider navigationProvider, @Optional EditorOpener editorOpener, - @Optional BehaviorContributor behaviorContributor + @Optional BehaviorContributor behaviorContributor, + @Optional IContextInformationValidator contextInformationValidator ) { this.threadSynchronize = threadSynchronize; + this.contextInformationValidator = contextInformationValidator; this.input = input; this.hoverInformationProvider = hoverInformationProvider; this.reconciler = reconciler; @@ -212,7 +216,7 @@ public class DefaultSourceViewerConfiguration extends SourceViewerConfiguration public IContentAssistant getContentAssist() { if( proposalComputer != null ) { if( contentAssistant == null ) { - contentAssistant = new ContentAssistant(this.threadSynchronize, this::computeProposals); + contentAssistant = new ContentAssistant(this.contextInformationValidator, this.threadSynchronize, this::computeProposals); } return contentAssistant; |