Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStéphane Bégaudeau2018-05-24 07:10:36 +0000
committerPierre-Charles David2018-05-25 13:51:46 +0000
commitb82fdf585de90f18fa2c8b4599d778889d3d71c9 (patch)
tree90ee9fd002f0c1e1c4dd34d5e954664cb8a2cd9c /plugins
parent26c8fe0dacb847cf7ab64be71c834f6aa2f2aced (diff)
downloadorg.eclipse.sirius-b82fdf585de90f18fa2c8b4599d778889d3d71c9.tar.gz
org.eclipse.sirius-b82fdf585de90f18fa2c8b4599d778889d3d71c9.tar.xz
org.eclipse.sirius-b82fdf585de90f18fa2c8b4599d778889d3d71c9.zip
[509735] Add support for the gap pattern generator in the workflow
Bug: 509735 Change-Id: Idcfe25720e79f8b4139f52f2878fcab2a0836c37 Signed-off-by: Stéphane Bégaudeau <stephane.begaudeau@obeo.fr>
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.sirius.workflow.edit/.classpath2
-rw-r--r--plugins/org.eclipse.sirius.workflow.edit/.settings/org.eclipse.jdt.core.prefs44
-rw-r--r--plugins/org.eclipse.sirius.workflow.edit/META-INF/MANIFEST.MF5
-rw-r--r--plugins/org.eclipse.sirius.workflow.edit/build.properties4
-rw-r--r--plugins/org.eclipse.sirius.workflow.edit/plugin.xml8
-rw-r--r--plugins/org.eclipse.sirius.workflow.edit/src-generator/org/eclipse/sirius/workflow/edit/internal/generator/GapPatternGenerator.java263
-rw-r--r--plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/ActivityDescriptionItemProviderSpec.java47
-rw-r--r--plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/DescriptionChildCreationExtenderSpec.java22
-rw-r--r--plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/PageDescriptionItemProviderSpec.java48
-rw-r--r--plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/SectionDescriptionItemProviderSpec.java54
-rw-r--r--plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/Utils.java138
-rw-r--r--plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/WorkflowDescriptionItemProviderSpec.java48
-rw-r--r--plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/WorkflowItemProviderAdapterFactorySpec.java58
13 files changed, 732 insertions, 9 deletions
diff --git a/plugins/org.eclipse.sirius.workflow.edit/.classpath b/plugins/org.eclipse.sirius.workflow.edit/.classpath
index 03565ec5d9..623f92521e 100644
--- a/plugins/org.eclipse.sirius.workflow.edit/.classpath
+++ b/plugins/org.eclipse.sirius.workflow.edit/.classpath
@@ -1,6 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src-gen"/>
+ <classpathentry kind="src" path="src-generator"/>
+ <classpathentry kind="src" path="src-spec"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="output" path="bin"/>
diff --git a/plugins/org.eclipse.sirius.workflow.edit/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.sirius.workflow.edit/.settings/org.eclipse.jdt.core.prefs
index 97c066b909..1332c7faf2 100644
--- a/plugins/org.eclipse.sirius.workflow.edit/.settings/org.eclipse.jdt.core.prefs
+++ b/plugins/org.eclipse.sirius.workflow.edit/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,13 @@
eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
@@ -7,15 +16,19 @@ org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
org.eclipse.jdt.core.compiler.problem.deprecation=warning
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
@@ -23,33 +36,58 @@ org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=error
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
@@ -57,14 +95,17 @@ org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedImport=warning
org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.source=1.8
@@ -351,4 +392,3 @@ org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled
diff --git a/plugins/org.eclipse.sirius.workflow.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.sirius.workflow.edit/META-INF/MANIFEST.MF
index b1cf261521..8b0684bee8 100644
--- a/plugins/org.eclipse.sirius.workflow.edit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.sirius.workflow.edit/META-INF/MANIFEST.MF
@@ -8,8 +8,9 @@ Bundle-Activator: org.eclipse.sirius.workflow.edit.WorkflowEditPlugin$Implementa
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Export-Package: org.eclipse.sirius.workflow.edit,
- org.eclipse.sirius.workflow.provider
+Export-Package: org.eclipse.sirius.workflow.edit;version="6.0.0",
+ org.eclipse.sirius.workflow.edit.internal.generator;version="6.0.0";x-internal:=true,
+ org.eclipse.sirius.workflow.provider;version="6.0.0"
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.12.0",
org.eclipse.sirius.workflow.model;bundle-version="6.0.0";visibility:=reexport,
org.eclipse.emf.edit;bundle-version="2.12.0";visibility:=reexport,
diff --git a/plugins/org.eclipse.sirius.workflow.edit/build.properties b/plugins/org.eclipse.sirius.workflow.edit/build.properties
index aec82a9812..e9714277c6 100644
--- a/plugins/org.eclipse.sirius.workflow.edit/build.properties
+++ b/plugins/org.eclipse.sirius.workflow.edit/build.properties
@@ -15,7 +15,9 @@ bin.includes = .,\
plugin.properties,\
about.html
jars.compile.order = .
-source.. = src-gen/
+source.. = src-gen/,\
+ src-generator/,\
+ src-spec/
output.. = bin/
javacWarnings.. = none
javacDefaultEncoding.. = US-ASCII
diff --git a/plugins/org.eclipse.sirius.workflow.edit/plugin.xml b/plugins/org.eclipse.sirius.workflow.edit/plugin.xml
index 9354db6bb3..558e09f885 100644
--- a/plugins/org.eclipse.sirius.workflow.edit/plugin.xml
+++ b/plugins/org.eclipse.sirius.workflow.edit/plugin.xml
@@ -16,10 +16,10 @@
<plugin>
<extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
- <!-- @generated workflow -->
+ <!-- @generated NOT workflow -->
<factory
uri="http://www.eclipse.org/sirius/workflow/1.0.0"
- class="org.eclipse.sirius.workflow.provider.WorkflowItemProviderAdapterFactory"
+ class="org.eclipse.sirius.workflow.provider.WorkflowItemProviderAdapterFactorySpec"
supportedTypes=
"org.eclipse.emf.edit.provider.IEditingDomainItemProvider
org.eclipse.emf.edit.provider.IStructuredItemContentProvider
@@ -30,9 +30,9 @@
</extension>
<extension point="org.eclipse.emf.edit.childCreationExtenders">
- <!-- @generated workflow -->
+ <!-- @generated NOT workflow -->
<extender
uri="http://www.eclipse.org/sirius/description/1.1.0"
- class="org.eclipse.sirius.workflow.provider.WorkflowItemProviderAdapterFactory$DescriptionChildCreationExtender"/>
+ class="org.eclipse.sirius.workflow.provider.DescriptionChildCreationExtenderSpec"/>
</extension>
</plugin>
diff --git a/plugins/org.eclipse.sirius.workflow.edit/src-generator/org/eclipse/sirius/workflow/edit/internal/generator/GapPatternGenerator.java b/plugins/org.eclipse.sirius.workflow.edit/src-generator/org/eclipse/sirius/workflow/edit/internal/generator/GapPatternGenerator.java
new file mode 100644
index 0000000000..cd90135dbf
--- /dev/null
+++ b/plugins/org.eclipse.sirius.workflow.edit/src-generator/org/eclipse/sirius/workflow/edit/internal/generator/GapPatternGenerator.java
@@ -0,0 +1,263 @@
+/**
+ * Copyright (c) 2016, 2018 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *
+ */
+package org.eclipse.sirius.workflow.edit.internal.generator;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;
+
+/**
+ * Utility class used to generate the Java classes used for the generation gap pattern of the EMF Edit part.
+ *
+ * @author sbegaudeau
+ */
+@SuppressWarnings({ "checkstyle:multiplestringliterals" })
+public final class GapPatternGenerator {
+ /**
+ * The constructor.
+ */
+ private GapPatternGenerator() {
+ // do nothing
+ }
+
+ /**
+ * The entry point of our generator.
+ *
+ * @param args
+ * The arguments (unused)
+ */
+ public static void main(String[] args) {
+ String userDir = System.getProperty("user.dir"); //$NON-NLS-1$
+ Path siriusWorkflowEditProjectPath = Paths.get(userDir);
+ Path siriusWorkflowProjectPath = siriusWorkflowEditProjectPath.getParent().resolve("org.eclipse.sirius.workflow.model"); //$NON-NLS-1$
+ Path ecoreModel = siriusWorkflowProjectPath.resolve("model/workflow.ecore"); //$NON-NLS-1$
+
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("ecore", new EcoreResourceFactoryImpl()); //$NON-NLS-1$
+ URI uri = URI.createFileURI(ecoreModel.toAbsolutePath().toString());
+
+ Path outputFolderPath = siriusWorkflowEditProjectPath.resolve("src-spec/org/eclipse/sirius/workflow/provider"); //$NON-NLS-1$
+
+ Resource resource = resourceSet.getResource(uri, true);
+ if (resource != null && resource.getContents().size() == 1 && resource.getContents().get(0) instanceof EPackage) {
+ EPackage ePackage = (EPackage) resource.getContents().get(0);
+
+ GapPatternGenerator.generateAdapterFactory(outputFolderPath, ePackage);
+ GapPatternGenerator.generateDescriptionChildCreationExtender(outputFolderPath, ePackage);
+
+ List<EClassifier> eClassifiers = ePackage.getEClassifiers();
+ for (EClassifier eClassifier : eClassifiers) {
+ if (eClassifier instanceof EClass) {
+ GapPatternGenerator.generateItemProvider(outputFolderPath, (EClass) eClassifier);
+ }
+ }
+ }
+ }
+
+ /**
+ * Appends the copyrights to the given string builder and returns it.
+ *
+ * @param builder
+ * The string builder
+ * @return The given string builder
+ */
+ private static StringBuilder appendCopyright(StringBuilder builder) {
+ builder.append("/**").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" * Copyright (c) 2018 Obeo.").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" * All rights reserved. This program and the accompanying materials").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" * are made available under the terms of the Eclipse Public License v1.0").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" * which accompanies this distribution, and is available at").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" * http://www.eclipse.org/legal/epl-v10.html").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" *").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" * Contributors:").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" * Obeo - initial API and implementation").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" *").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" */").append(System.lineSeparator()); //$NON-NLS-1$
+ return builder;
+ }
+
+ /**
+ * Returns the given word with the first character in upper case.
+ *
+ * @param word
+ * The word
+ * @return The given word with the first character in upper case
+ */
+ private static String toUpperFirst(String word) {
+ return word.substring(0, 1).toUpperCase() + word.substring(1);
+ }
+
+ /**
+ * Returns the given word with the first character in lower case.
+ *
+ * @param word
+ * The word
+ * @return The given word with the first character in lower case
+ */
+ private static String toLowerFirst(String word) {
+ return word.substring(0, 1).toLowerCase() + word.substring(1);
+ }
+
+ /**
+ * Writes the file at the given location with the given content.
+ *
+ * @param outputFilePath
+ * The file location
+ * @param builder
+ * The content
+ * @param force
+ * <code>true</code> to indicate that we should overwrite the existing file, if any, <code>false</code>
+ * otherwise
+ */
+ private static void writeSourceFile(Path outputFilePath, StringBuilder builder, boolean force) {
+ File parentFolder = outputFilePath.toFile().getParentFile();
+ if (!parentFolder.exists()) {
+ parentFolder.mkdirs();
+ }
+ if (!outputFilePath.toFile().exists() || force) {
+ try {
+ Files.write(outputFilePath, builder.toString().getBytes());
+ } catch (IOException e) {
+ // CHECKSTYLE:OFF
+ e.printStackTrace();
+ // CHECKSTYLE:ON
+ }
+ }
+ }
+
+ /**
+ * Generates the adapter factory for the given EPackage in the given output folder.
+ *
+ * @param outputFolderPath
+ * The path of the output folder
+ * @param ePackage
+ * The EPackage
+ */
+ private static void generateAdapterFactory(Path outputFolderPath, EPackage ePackage) {
+ StringBuilder builder = GapPatternGenerator.appendCopyright(new StringBuilder());
+
+ builder.append("package org.eclipse.sirius.workflow.provider;").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(System.lineSeparator());
+ builder.append("import org.eclipse.emf.common.notify.Adapter;").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(System.lineSeparator());
+ builder.append("/**").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" * Subclass used to not have to modify the generated code.").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" *").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" * @author ").append(System.getProperty("user.name")).append(System.lineSeparator()); //$NON-NLS-1$ //$NON-NLS-2$
+ builder.append(" */").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append("public class WorkflowItemProviderAdapterFactorySpec extends WorkflowItemProviderAdapterFactory {").append(System.lineSeparator()); //$NON-NLS-1$
+
+ for (EClassifier eClassifier : ePackage.getEClassifiers()) {
+ if (eClassifier instanceof EClass && !((EClass) eClassifier).isAbstract() && !((EClass) eClassifier).isInterface()) {
+ builder.append(System.lineSeparator());
+ builder.append(" @Override").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" public Adapter create" + GapPatternGenerator.toUpperFirst(eClassifier.getName()) + "Adapter() {").append(System.lineSeparator()); //$NON-NLS-1$ //$NON-NLS-2$
+ builder.append(" if (" + GapPatternGenerator.toLowerFirst(eClassifier.getName()) + "ItemProvider == null) {").append(System.lineSeparator()); //$NON-NLS-1$ //$NON-NLS-2$
+ builder.append(" " + GapPatternGenerator.toLowerFirst(eClassifier.getName()) + "ItemProvider = new " + GapPatternGenerator.toUpperFirst(eClassifier.getName()) //$NON-NLS-1$ //$NON-NLS-2$
+ + "ItemProviderSpec(this);") //$NON-NLS-1$
+ .append(System.lineSeparator());
+ builder.append(" }").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(System.lineSeparator());
+ builder.append(" return " + GapPatternGenerator.toLowerFirst(eClassifier.getName()) + "ItemProvider;").append(System.lineSeparator()); //$NON-NLS-1$ //$NON-NLS-2$
+ builder.append(" }").append(System.lineSeparator()); //$NON-NLS-1$
+ }
+ }
+
+ builder.append("}").append(System.lineSeparator()); //$NON-NLS-1$
+
+ String className = GapPatternGenerator.toUpperFirst(ePackage.getName()) + "ItemProviderAdapterFactorySpec.java"; //$NON-NLS-1$
+ Path outputFilePath = outputFolderPath.resolve(className);
+
+ GapPatternGenerator.writeSourceFile(outputFilePath, builder, true);
+ }
+
+ /**
+ * Generates the description child creation extender for the given EPackage in the given output folder.
+ *
+ * @param outputFolderPath
+ * The path of the output folder
+ * @param ePackage
+ * The EPackage
+ */
+ private static void generateDescriptionChildCreationExtender(Path outputFolderPath, EPackage ePackage) {
+ StringBuilder builder = GapPatternGenerator.appendCopyright(new StringBuilder());
+ builder.append("package org.eclipse.sirius.workflow.provider;").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(System.lineSeparator());
+ builder.append("import org.eclipse.sirius.workflow.provider.WorkflowItemProviderAdapterFactory.DescriptionChildCreationExtender;").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(System.lineSeparator());
+ builder.append("/**").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" * Subclass used to not have to modify the generated code.").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" *").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" * @author ").append(System.getProperty("user.name")).append(System.lineSeparator()); //$NON-NLS-1$ //$NON-NLS-2$
+ builder.append(" */").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append("public class DescriptionChildCreationExtenderSpec extends DescriptionChildCreationExtender {") //$NON-NLS-1$
+ .append(System.lineSeparator());
+ builder.append("}").append(System.lineSeparator()); //$NON-NLS-1$
+
+ String className = "DescriptionChildCreationExtenderSpec.java"; //$NON-NLS-1$
+ Path outputFilePath = outputFolderPath.resolve(className);
+
+ GapPatternGenerator.writeSourceFile(outputFilePath, builder, false);
+ }
+
+ /**
+ * Generates the item provider for the given EClass in the given output folder.
+ *
+ * @param outputFolderPath
+ * The path of the output folder
+ * @param eClass
+ * The EClass
+ */
+ private static void generateItemProvider(Path outputFolderPath, EClass eClass) {
+ StringBuilder builder = GapPatternGenerator.appendCopyright(new StringBuilder());
+ builder.append("package org.eclipse.sirius.workflow.provider;").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(System.lineSeparator());
+ builder.append("import org.eclipse.emf.common.notify.AdapterFactory;").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(System.lineSeparator());
+ builder.append("/**").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" * Subclass used to not have to modify the generated code.").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" *").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" * @author sbegaudeau").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" */").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append("public class " + GapPatternGenerator.toUpperFirst(eClass.getName()) + "ItemProviderSpec extends " + GapPatternGenerator.toUpperFirst(eClass.getName()) + "ItemProvider {") //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ .append(System.lineSeparator());
+ builder.append(System.lineSeparator());
+ builder.append(" /**").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" * The constructor.").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" *").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" * @param adapterFactory").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" * The adapter factory").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" */").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" public " + GapPatternGenerator.toUpperFirst(eClass.getName()) + "ItemProviderSpec(AdapterFactory adapterFactory) {").append(System.lineSeparator()); //$NON-NLS-1$ //$NON-NLS-2$
+ builder.append(" super(adapterFactory);").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(" }").append(System.lineSeparator()); //$NON-NLS-1$
+ builder.append(System.lineSeparator());
+ builder.append("}").append(System.lineSeparator()); //$NON-NLS-1$
+
+ String className = GapPatternGenerator.toUpperFirst(eClass.getName()) + "ItemProviderSpec.java"; //$NON-NLS-1$
+ Path outputFilePath = outputFolderPath.resolve(className);
+
+ GapPatternGenerator.writeSourceFile(outputFilePath, builder, false);
+ }
+}
diff --git a/plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/ActivityDescriptionItemProviderSpec.java b/plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/ActivityDescriptionItemProviderSpec.java
new file mode 100644
index 0000000000..5524fc26ee
--- /dev/null
+++ b/plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/ActivityDescriptionItemProviderSpec.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) 2018 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *
+ */
+package org.eclipse.sirius.workflow.provider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.StyledString;
+
+/**
+ * Subclass used to not have to modify the generated code.
+ *
+ * @author sbegaudeau
+ */
+public class ActivityDescriptionItemProviderSpec extends ActivityDescriptionItemProvider {
+
+ /**
+ * The constructor.
+ *
+ * @param adapterFactory
+ * The adapter factory
+ */
+ public ActivityDescriptionItemProviderSpec(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ @Override
+ public String getText(Object object) {
+ Object styledText = this.getStyledText(object);
+ if (styledText instanceof StyledString) {
+ return ((StyledString) styledText).getString();
+ }
+ return super.getText(object);
+ }
+
+ @Override
+ public Object getStyledText(Object object) {
+ return Utils.computeLabel(this, object, "_UI_ActivityDescription_type"); //$NON-NLS-1$
+ }
+}
diff --git a/plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/DescriptionChildCreationExtenderSpec.java b/plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/DescriptionChildCreationExtenderSpec.java
new file mode 100644
index 0000000000..3b00d1c8cb
--- /dev/null
+++ b/plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/DescriptionChildCreationExtenderSpec.java
@@ -0,0 +1,22 @@
+/**
+ * Copyright (c) 2018 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *
+ */
+package org.eclipse.sirius.workflow.provider;
+
+import org.eclipse.sirius.workflow.provider.WorkflowItemProviderAdapterFactory.DescriptionChildCreationExtender;
+
+/**
+ * Subclass used to not have to modify the generated code.
+ *
+ * @author sbegaudeau
+ */
+public class DescriptionChildCreationExtenderSpec extends DescriptionChildCreationExtender {
+}
diff --git a/plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/PageDescriptionItemProviderSpec.java b/plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/PageDescriptionItemProviderSpec.java
new file mode 100644
index 0000000000..56e527de0c
--- /dev/null
+++ b/plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/PageDescriptionItemProviderSpec.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2018 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *
+ */
+package org.eclipse.sirius.workflow.provider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.StyledString;
+
+/**
+ * Subclass used to not have to modify the generated code.
+ *
+ * @author sbegaudeau
+ */
+public class PageDescriptionItemProviderSpec extends PageDescriptionItemProvider {
+
+ /**
+ * The constructor.
+ *
+ * @param adapterFactory
+ * The adapter factory
+ */
+ public PageDescriptionItemProviderSpec(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ @Override
+ public String getText(Object object) {
+ Object styledText = this.getStyledText(object);
+ if (styledText instanceof StyledString) {
+ return ((StyledString) styledText).getString();
+ }
+ return super.getText(object);
+ }
+
+ @Override
+ public Object getStyledText(Object object) {
+ return Utils.computeLabel(this, object, "_UI_PageDescription_type"); //$NON-NLS-1$
+ }
+
+}
diff --git a/plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/SectionDescriptionItemProviderSpec.java b/plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/SectionDescriptionItemProviderSpec.java
new file mode 100644
index 0000000000..86138eb02f
--- /dev/null
+++ b/plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/SectionDescriptionItemProviderSpec.java
@@ -0,0 +1,54 @@
+/**
+ * Copyright (c) 2018 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *
+ */
+package org.eclipse.sirius.workflow.provider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.command.CommandParameter;
+import org.eclipse.emf.edit.provider.StyledString;
+
+/**
+ * Subclass used to not have to modify the generated code.
+ *
+ * @author sbegaudeau
+ */
+public class SectionDescriptionItemProviderSpec extends SectionDescriptionItemProvider {
+
+ /**
+ * The constructor.
+ *
+ * @param adapterFactory
+ * The adapter factory
+ */
+ public SectionDescriptionItemProviderSpec(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ @Override
+ public String getText(Object object) {
+ Object styledText = this.getStyledText(object);
+ if (styledText instanceof StyledString) {
+ return ((StyledString) styledText).getString();
+ }
+ return super.getText(object);
+ }
+
+ @Override
+ public Object getStyledText(Object object) {
+ return Utils.computeLabel(this, object, "_UI_SectionDescription_type"); //$NON-NLS-1$
+ }
+
+ @Override
+ protected CommandParameter createChildParameter(Object feature, Object child) {
+ Utils.addNoopNavigationOperations(child);
+ return super.createChildParameter(feature, child);
+ }
+}
diff --git a/plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/Utils.java b/plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/Utils.java
new file mode 100644
index 0000000000..50eac08822
--- /dev/null
+++ b/plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/Utils.java
@@ -0,0 +1,138 @@
+/**
+ * Copyright (c) 2017 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *
+ */
+package org.eclipse.sirius.workflow.provider;
+
+import java.util.Optional;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IItemFontProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.StyledString;
+import org.eclipse.emf.edit.provider.StyledString.Style;
+import org.eclipse.sirius.viewpoint.description.IdentifiedElement;
+import org.eclipse.sirius.viewpoint.description.tool.ChangeContext;
+import org.eclipse.sirius.viewpoint.description.tool.InitialOperation;
+import org.eclipse.sirius.viewpoint.description.tool.ToolFactory;
+import org.eclipse.sirius.viewpoint.description.tool.ToolPackage;
+
+/**
+ * Utility class used to store common operations for all the item providers.
+ *
+ * @author sbegaudeau
+ */
+public final class Utils {
+
+ /**
+ * The style used by keywords.
+ */
+ public static final Style KEYWORD_STYLE = Style.newBuilder().setForegroundColor(URI.createURI("color://rgb/125/9/82")).setFont(IItemFontProvider.BOLD_FONT).toStyle(); //$NON-NLS-1$
+
+ /**
+ * The constructor.
+ */
+ private Utils() {
+ // prevent instantiation
+ }
+
+ /**
+ * Computes the label of the given object.
+ *
+ * @param itemProviderAdapter
+ * The item provider adapter of the object
+ * @param object
+ * The object
+ * @param defaultLabelKey
+ * The key of the default label
+ * @return The label or <code>null</code> if it is undefined
+ */
+ public static StyledString computeLabel(ItemProviderAdapter itemProviderAdapter, Object object, String defaultLabelKey) {
+ StyledString styledString = new StyledString();
+ if (object instanceof IdentifiedElement) {
+ IdentifiedElement identifiedElement = (IdentifiedElement) object;
+ styledString = Utils.computeIdentifiedElementLabel(itemProviderAdapter, identifiedElement, defaultLabelKey);
+ }
+ return styledString;
+ }
+
+ /**
+ * Computes the label of the given identified element.
+ *
+ * @param itemProviderAdapter
+ * The {@link ItemProviderAdapter}
+ * @param identifiedElement
+ * The Identified Element
+ * @param defaultLabelKey
+ * The default label key
+ * @return The label of the element
+ */
+ private static StyledString computeIdentifiedElementLabel(ItemProviderAdapter itemProviderAdapter, IdentifiedElement identifiedElement, String defaultLabelKey) {
+ String label = Optional.ofNullable(identifiedElement.getLabel()).orElse(""); //$NON-NLS-1$
+ if (label.isEmpty()) {
+ label = Optional.ofNullable(identifiedElement.getName()).filter(id -> !id.isEmpty()).orElse(itemProviderAdapter.getString(defaultLabelKey));
+ }
+ StyledString styledString = new StyledString(label);
+
+ EStructuralFeature eStructuralFeature = identifiedElement.eClass().getEStructuralFeature("extends"); //$NON-NLS-1$
+ if (eStructuralFeature instanceof EReference && identifiedElement.eIsSet(eStructuralFeature)) {
+ Object extendsValue = identifiedElement.eGet(eStructuralFeature);
+ styledString.append(" extends ", KEYWORD_STYLE); //$NON-NLS-1$
+ styledString.append(Utils.computeSimpleLabel(itemProviderAdapter, extendsValue));
+ }
+
+ return styledString;
+ }
+
+ /**
+ * Returns the label of the given object.
+ *
+ * @param itemProviderAdapter
+ * The Item Provider Adapter
+ * @param object
+ * The object
+ * @return Its Label
+ */
+ private static String computeSimpleLabel(ItemProviderAdapter itemProviderAdapter, Object object) {
+ if (object instanceof IdentifiedElement) {
+ IdentifiedElement identifiedElement = (IdentifiedElement) object;
+ String label = Optional.ofNullable(identifiedElement.getLabel()).orElse(""); //$NON-NLS-1$
+ if (label.isEmpty()) {
+ label = Optional.ofNullable(identifiedElement.getName()).filter(id -> !id.isEmpty()).orElse(itemProviderAdapter.getString("_UI_" + identifiedElement.eClass().getName() + "_type")); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ return label;
+ }
+ return ""; //$NON-NLS-1$
+ }
+
+ /**
+ * Add default "Begin" operations with a no-op navigation to the specific element.
+ *
+ * @param child
+ * a newly created child.
+ */
+ public static void addNoopNavigationOperations(Object child) {
+ if (child instanceof EObject) {
+ EObject obj = (EObject) child;
+ for (EReference ref : obj.eClass().getEAllReferences()) {
+ if (ref.isContainment() && ref.getEReferenceType() == ToolPackage.Literals.INITIAL_OPERATION) {
+ InitialOperation begin = ToolFactory.eINSTANCE.createInitialOperation();
+ ChangeContext noop = ToolFactory.eINSTANCE.createChangeContext();
+ noop.setBrowseExpression("var:self"); //$NON-NLS-1$
+ begin.setFirstModelOperations(noop);
+ obj.eSet(ref, begin);
+ }
+ }
+ }
+ }
+}
diff --git a/plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/WorkflowDescriptionItemProviderSpec.java b/plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/WorkflowDescriptionItemProviderSpec.java
new file mode 100644
index 0000000000..681519d6d5
--- /dev/null
+++ b/plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/WorkflowDescriptionItemProviderSpec.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2018 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *
+ */
+package org.eclipse.sirius.workflow.provider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.StyledString;
+
+/**
+ * Subclass used to not have to modify the generated code.
+ *
+ * @author sbegaudeau
+ */
+public class WorkflowDescriptionItemProviderSpec extends WorkflowDescriptionItemProvider {
+
+ /**
+ * The constructor.
+ *
+ * @param adapterFactory
+ * The adapter factory
+ */
+ public WorkflowDescriptionItemProviderSpec(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ @Override
+ public String getText(Object object) {
+ Object styledText = this.getStyledText(object);
+ if (styledText instanceof StyledString) {
+ return ((StyledString) styledText).getString();
+ }
+ return super.getText(object);
+ }
+
+ @Override
+ public Object getStyledText(Object object) {
+ return Utils.computeLabel(this, object, "_UI_WorkflowDescription_type"); //$NON-NLS-1$
+ }
+
+}
diff --git a/plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/WorkflowItemProviderAdapterFactorySpec.java b/plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/WorkflowItemProviderAdapterFactorySpec.java
new file mode 100644
index 0000000000..e482620ce1
--- /dev/null
+++ b/plugins/org.eclipse.sirius.workflow.edit/src-spec/org/eclipse/sirius/workflow/provider/WorkflowItemProviderAdapterFactorySpec.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2018 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *
+ */
+package org.eclipse.sirius.workflow.provider;
+
+import org.eclipse.emf.common.notify.Adapter;
+
+/**
+ * Subclass used to not have to modify the generated code.
+ *
+ * @author sbegaudeau
+ */
+public class WorkflowItemProviderAdapterFactorySpec extends WorkflowItemProviderAdapterFactory {
+
+ @Override
+ public Adapter createWorkflowDescriptionAdapter() {
+ if (workflowDescriptionItemProvider == null) {
+ workflowDescriptionItemProvider = new WorkflowDescriptionItemProviderSpec(this);
+ }
+
+ return workflowDescriptionItemProvider;
+ }
+
+ @Override
+ public Adapter createPageDescriptionAdapter() {
+ if (pageDescriptionItemProvider == null) {
+ pageDescriptionItemProvider = new PageDescriptionItemProviderSpec(this);
+ }
+
+ return pageDescriptionItemProvider;
+ }
+
+ @Override
+ public Adapter createSectionDescriptionAdapter() {
+ if (sectionDescriptionItemProvider == null) {
+ sectionDescriptionItemProvider = new SectionDescriptionItemProviderSpec(this);
+ }
+
+ return sectionDescriptionItemProvider;
+ }
+
+ @Override
+ public Adapter createActivityDescriptionAdapter() {
+ if (activityDescriptionItemProvider == null) {
+ activityDescriptionItemProvider = new ActivityDescriptionItemProviderSpec(this);
+ }
+
+ return activityDescriptionItemProvider;
+ }
+}

Back to the top