diff options
Diffstat (limited to 'bundles/code/org.eclipse.fx.code.editor.configuration.text.e4')
10 files changed, 165 insertions, 0 deletions
diff --git a/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/.classpath b/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/.classpath new file mode 100644 index 000000000..eca7bdba8 --- /dev/null +++ b/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/.gitignore b/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/.gitignore new file mode 100644 index 000000000..09e3bc9b2 --- /dev/null +++ b/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/.gitignore @@ -0,0 +1,2 @@ +/bin/ +/target/ diff --git a/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/.project b/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/.project new file mode 100644 index 000000000..86e7a2b98 --- /dev/null +++ b/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/.project @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.fx.code.editor.configuration.text.e4</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ds.core.builder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/.settings/ca.ecliptical.pde.ds.prefs b/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/.settings/ca.ecliptical.pde.ds.prefs new file mode 100644 index 000000000..963a30719 --- /dev/null +++ b/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/.settings/ca.ecliptical.pde.ds.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +enabled=true +path=OSGI-INF/services +validationErrorLevel=error +validationErrorLevel.missingImplicitUnbindMethod=error diff --git a/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/.settings/org.eclipse.jdt.core.prefs b/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..0c68a61dc --- /dev/null +++ b/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/META-INF/MANIFEST.MF b/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/META-INF/MANIFEST.MF new file mode 100644 index 000000000..71d7643a4 --- /dev/null +++ b/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/META-INF/MANIFEST.MF @@ -0,0 +1,13 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: E4 +Bundle-SymbolicName: org.eclipse.fx.code.editor.configuration.text.e4 +Bundle-Version: 2.2.0.qualifier +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Require-Bundle: org.eclipse.e4.core.contexts;bundle-version="1.4.0" +Import-Package: org.eclipse.fx.code.editor;version="2.2.0", + org.eclipse.fx.code.editor.configuration, + org.eclipse.fx.code.editor.configuration.text, + org.osgi.service.component.annotations +Service-Component: OSGI-INF/services/org.eclipse.fx.code.editor.configuration.text.e4.ConfigurationModelCF.xml +Bundle-ActivationPolicy: lazy diff --git a/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/OSGI-INF/services/org.eclipse.fx.code.editor.configuration.text.e4.ConfigurationModelCF.xml b/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/OSGI-INF/services/org.eclipse.fx.code.editor.configuration.text.e4.ConfigurationModelCF.xml new file mode 100644 index 000000000..364c87295 --- /dev/null +++ b/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/OSGI-INF/services/org.eclipse.fx.code.editor.configuration.text.e4.ConfigurationModelCF.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.configuration.text.e4.ConfigurationModelCF"> + <property name="service.context.key" value="org.eclipse.fx.code.editor.configuration.LanguageDef"/> + <service> + <provide interface="org.eclipse.e4.core.contexts.IContextFunction"/> + </service> + <reference bind="registerProvider" cardinality="0..n" interface="org.eclipse.fx.code.editor.configuration.text.ConfigurationModelProvider" name="registerProvider" policy="dynamic" policy-option="greedy" unbind="unregisterProvider"/> + <implementation class="org.eclipse.fx.code.editor.configuration.text.e4.ConfigurationModelCF"/> +</scr:component>
\ No newline at end of file diff --git a/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/build.properties b/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/build.properties new file mode 100644 index 000000000..c58ea2178 --- /dev/null +++ b/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/build.properties @@ -0,0 +1,5 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + OSGI-INF/ diff --git a/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/pom.xml b/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/pom.xml new file mode 100644 index 000000000..42b58d169 --- /dev/null +++ b/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/pom.xml @@ -0,0 +1,34 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <name>e(fx)clipse - Runtime - Code - JSON UI Toolkit Independent Config e4 integration</name> + <groupId>org.eclipse.fx.runtime</groupId> + <artifactId>org.eclipse.fx.code.editor.configuration.text.e4</artifactId> + <packaging>eclipse-plugin</packaging> + + <parent> + <groupId>org.eclipse.fx</groupId> + <artifactId>releng</artifactId> + <relativePath>../../../releng/org.eclipse.fx.releng/pom.xml</relativePath> + <version>2.2.0-SNAPSHOT</version> + </parent> + + <build> + <resources> + <!-- to ensure that the feature lookup of the ui test works --> + <resource> + <directory>.</directory> + <includes> + <include>META-INF/</include> + </includes> + </resource> + </resources> + <plugins> + <plugin> + <groupId>org.eclipse.tycho</groupId> + <artifactId>tycho-source-plugin</artifactId> + </plugin> + </plugins> + </build> + +</project> diff --git a/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/src/org/eclipse/fx/code/editor/configuration/text/e4/ConfigurationModelCF.java b/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/src/org/eclipse/fx/code/editor/configuration/text/e4/ConfigurationModelCF.java new file mode 100644 index 000000000..adaab64ac --- /dev/null +++ b/bundles/code/org.eclipse.fx.code.editor.configuration.text.e4/src/org/eclipse/fx/code/editor/configuration/text/e4/ConfigurationModelCF.java @@ -0,0 +1,50 @@ +package org.eclipse.fx.code.editor.configuration.text.e4; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.e4.core.contexts.ContextFunction; +import org.eclipse.e4.core.contexts.IContextFunction; +import org.eclipse.e4.core.contexts.IEclipseContext; +import org.eclipse.fx.code.editor.Input; +import org.eclipse.fx.code.editor.configuration.text.ConfigurationModelProvider; +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.code.editor.configuration.LanguageDef"}) +public class ConfigurationModelCF extends ContextFunction { + private List<ConfigurationModelProvider> providerList = new ArrayList<>(); + + @Reference(cardinality=ReferenceCardinality.MULTIPLE,policy=ReferencePolicy.DYNAMIC,policyOption=ReferencePolicyOption.GREEDY) + public void registerProvider(ConfigurationModelProvider provider) { + synchronized (providerList) { + providerList.add(provider); + } + } + + public void unregisterProvider(ConfigurationModelProvider provider) { + synchronized (providerList) { + providerList.remove(provider); + } + } + + @Override + public Object compute(IEclipseContext context) { + List<ConfigurationModelProvider> list; + + synchronized (providerList) { + list = new ArrayList<>(providerList); + } + + Input<?> input = context.get(Input.class); + + return list.stream() + .filter( p -> p.applies(input)) + .findFirst() + .map( p -> p.getModel(input)).orElse(null); + } +} |