Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/code/org.eclipse.fx.code.editor.configuration.text/src/org/eclipse/fx/code/editor/configuration/text/ConfigurationModelDependentTypeProvider.java')
-rw-r--r--bundles/code/org.eclipse.fx.code.editor.configuration.text/src/org/eclipse/fx/code/editor/configuration/text/ConfigurationModelDependentTypeProvider.java30
1 files changed, 30 insertions, 0 deletions
diff --git a/bundles/code/org.eclipse.fx.code.editor.configuration.text/src/org/eclipse/fx/code/editor/configuration/text/ConfigurationModelDependentTypeProvider.java b/bundles/code/org.eclipse.fx.code.editor.configuration.text/src/org/eclipse/fx/code/editor/configuration/text/ConfigurationModelDependentTypeProvider.java
new file mode 100644
index 000000000..17c992fbb
--- /dev/null
+++ b/bundles/code/org.eclipse.fx.code.editor.configuration.text/src/org/eclipse/fx/code/editor/configuration/text/ConfigurationModelDependentTypeProvider.java
@@ -0,0 +1,30 @@
+package org.eclipse.fx.code.editor.configuration.text;
+
+import static org.eclipse.fx.core.RankedObjectRegistry.getOSGiServiceRank;
+
+import java.util.Map;
+
+import org.eclipse.fx.code.editor.Input;
+import org.eclipse.fx.code.editor.services.InputDependentTypeProviderService;
+import org.eclipse.fx.core.RankedObjectRegistry;
+
+@SuppressWarnings("restriction")
+public abstract class ConfigurationModelDependentTypeProvider<T> implements InputDependentTypeProviderService<T> {
+ private RankedObjectRegistry<ConfigurationModelProvider> modelProviders = new RankedObjectRegistry<>();
+
+ public void registerModelProvider(ConfigurationModelProvider provider, Map<String, Object> properties) {
+ modelProviders.registerObject(getOSGiServiceRank(properties), provider);
+ }
+
+ public void unregisterModelProvider(ConfigurationModelProvider provider) {
+ modelProviders.unregisterObject(provider);
+ }
+
+ @Override
+ public boolean test(Input<?> s) {
+ synchronized (modelProviders) {
+ return modelProviders.unsynchronizedStream().filter( m -> m.applies(s)).findFirst().isPresent();
+ }
+ }
+
+}

Back to the top