Bug 575438 - [SysML] add element group display in the model explorer
+ in addition fix some reference to plugin.properties in some plugin
+ add a missing about.html
Signed-off-by: Patrick <Patrick.Tessier@cea.fr>
Signed-off-by: Vincent Lorenzo <vincent.lorenzo@cea.fr>
Change-Id: I3fb0dcbd45ad5404d39f846ccb9f5a7b430309ae
diff --git a/features/org.eclipse.papyrus.sysml16.elementgroup.feature/.project b/features/org.eclipse.papyrus.sysml16.elementgroup.feature/.project
new file mode 100644
index 0000000..c701d3e
--- /dev/null
+++ b/features/org.eclipse.papyrus.sysml16.elementgroup.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.sysml16.elementgroup.feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/features/org.eclipse.papyrus.sysml16.elementgroup.feature/build.properties b/features/org.eclipse.papyrus.sysml16.elementgroup.feature/build.properties
new file mode 100644
index 0000000..b3a611b
--- /dev/null
+++ b/features/org.eclipse.papyrus.sysml16.elementgroup.feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = feature.xml,\
+ feature.properties
diff --git a/features/org.eclipse.papyrus.sysml16.elementgroup.feature/feature.properties b/features/org.eclipse.papyrus.sysml16.elementgroup.feature/feature.properties
new file mode 100755
index 0000000..bd80142
--- /dev/null
+++ b/features/org.eclipse.papyrus.sysml16.elementgroup.feature/feature.properties
@@ -0,0 +1,8 @@
+# NLS_MESSAGEFORMAT_VAR
+
+# "featureName" property - name of the feature
+featureName=Papyrus SysML 1.6 Element Group Feature
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse Modeling Project
+
diff --git a/features/org.eclipse.papyrus.sysml16.elementgroup.feature/feature.xml b/features/org.eclipse.papyrus.sysml16.elementgroup.feature/feature.xml
new file mode 100644
index 0000000..279a9c0
--- /dev/null
+++ b/features/org.eclipse.papyrus.sysml16.elementgroup.feature/feature.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.papyrus.sysml16.elementgroup.feature"
+ label="%featureName"
+ version="1.0.0.qualifier"
+ provider-name="%providerName"
+ license-feature="org.eclipse.license"
+ license-feature-version="2.0.2">
+
+ <description url="https://eclipse.org/papyrus/">
+ This feature contains plugins in order to create a glossary for models
+ </description>
+
+ <copyright url="https://www.eclipse.org/legal/epl-2.0/">
+ Copyright (c) 2021 CEA LIST
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License
+2.0
+which accompanies this distribution, and is available at
+https://www.eclipse.org/legal/epl-2.0/
+SPDX-License-Identifier: EPL-2.0
+ </copyright>
+
+ <requires>
+ <import feature="org.eclipse.papyrus.sysml16.feature" version="2.1.0" match="compatible"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.papyrus.sysml16.elementgroup"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.papyrus.sysml16.elementgroup.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/features/org.eclipse.papyrus.sysml16.elementgroup.feature/pom.xml b/features/org.eclipse.papyrus.sysml16.elementgroup.feature/pom.xml
new file mode 100644
index 0000000..b703ee1
--- /dev/null
+++ b/features/org.eclipse.papyrus.sysml16.elementgroup.feature/pom.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+
+ <parent>
+ <artifactId>org.eclipse.papyrus.sysml16.features</artifactId>
+ <groupId>org.eclipse.papyrus.sysml</groupId>
+ <version>2.0.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.eclipse.papyrus.sysml16.elementgroup.feature</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-feature</packaging>
+
+ <name>Element group tools</name>
+ <description>Set of eclipse artifacts to use SysML</description>
+</project>
\ No newline at end of file
diff --git a/features/pom.xml b/features/pom.xml
index cf7ab83..e70a3d8 100644
--- a/features/pom.xml
+++ b/features/pom.xml
@@ -15,6 +15,7 @@
<modules>
<module>org.eclipse.papyrus.sysml16.feature</module>
<module>org.eclipse.papyrus.sysml16.requirements.extension.feature</module>
+ <module>org.eclipse.papyrus.sysml16.elementgroup.feature</module>
</modules>
<profiles>
diff --git a/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/about.html b/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/about.html
new file mode 100755
index 0000000..164f781
--- /dev/null
+++ b/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/about.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>About</title>
+</head>
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ ("Content"). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 ("EPL"). A copy of the EPL is
+ available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, "Program" will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ ("Redistributor") and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ </p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/build.properties b/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/build.properties
index 8d77138..89ff2fa 100644
--- a/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/build.properties
+++ b/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/build.properties
@@ -14,7 +14,9 @@
icons/,\
META-INF/,\
plugin.xml,\
- plugin.properties
+ plugin.properties,\
+ about.html
jars.compile.order = .
source.. = src-gen/
output.. = bin/
+src.includes = about.html
diff --git a/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/plugin.properties b/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/plugin.properties
index 5e40667..6376af4 100644
--- a/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/plugin.properties
+++ b/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.edit/plugin.properties
@@ -9,8 +9,8 @@
# Nicolas FAUVERGUE (CEA LIST) nicolas.fauvergue@cea.fr - Initial API and implementation
#
-pluginName = Papyrus SysML 1.6 Requirements Extension Profile Edit Support
-providerName = Eclipse Modeling Project
+Bundle-Name = Papyrus SysML 1.6 Requirements Extension Profile Edit Support
+Bundle-Vendor = Eclipse Modeling Project
_UI_CreateChild_text = {0}
_UI_CreateChild_text2 = {1} {0}
diff --git a/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.ui/META-INF/MANIFEST.MF b/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.ui/META-INF/MANIFEST.MF
index 0c6c14d..cd84ae1 100644
--- a/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.ui/META-INF/MANIFEST.MF
+++ b/plugins/extension/RequirementsExtension/org.eclipse.papyrus.sysml16.requirements.extension.ui/META-INF/MANIFEST.MF
@@ -17,4 +17,4 @@
Bundle-Localization: plugin
Bundle-Description: %Bundle-Description
Bundle-Vendor: %Bundle-Vendor
-Automatic-Module-Name: org.eclipse.papyrus.sysml16.ui
+Automatic-Module-Name: org.eclipse.papyrus.sysml16.requirements.extension.ui
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/.classpath b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/.classpath
new file mode 100644
index 0000000..e801ebf
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/.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-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/.project b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/.project
new file mode 100644
index 0000000..30c964d
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.sysml16.elementgroup.ui</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>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/.settings/org.eclipse.jdt.core.prefs b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..7adc0fb
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,10 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/META-INF/MANIFEST.MF b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..c2eb834
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Automatic-Module-Name: org.eclipse.papyrus.sysml16.elementgroup.ui
+Bundle-SymbolicName: org.eclipse.papyrus.sysml16.elementgroup.ui;singleton:=true
+Bundle-Name: %Bundle-Name
+Bundle-Version: 1.0.0.qualifier
+Bundle-Description: %Bundle-Description
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.uml2.uml;bundle-version="[5.5.0,6.0.0)",
+ org.eclipse.papyrus.emf.facet.query.java.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.papyrus.uml.tools;bundle-version="[5.1.0,6.0.0)",
+ org.eclipse.papyrus.sysml16.elementgroup;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.papyrus.emf.facet.efacet.core;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.papyrus.sysml16;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.emf.edit;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.papyrus.emf.facet.efacet.metamodel;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.equinox.registry;bundle-version="[3.0.200,4.0.0)",
+ org.eclipse.osgi;bundle-version="[3.0.0,4.0.0)"
+Bundle-ManifestVersion: 2
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-Vendor: %Bundle-Vendor
+Export-Package: org.eclipse.papyrus.sysml16.elementgroup.ui,
+ org.eclipse.papyrus.sysml16.elementgroup.ui.queries.element
+Bundle-ActivationPolicy: lazy
+Bundle-Activator: org.eclipse.papyrus.sysml16.elementgroup.ui.Activator
+
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/about.html b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/about.html
new file mode 100755
index 0000000..164f781
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/about.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>About</title>
+</head>
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ ("Content"). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 ("EPL"). A copy of the EPL is
+ available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, "Program" will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ ("Redistributor") and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ </p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/build.properties b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/build.properties
new file mode 100644
index 0000000..d944aef
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ icons/,\
+ resources/,\
+ about.html
+src.includes = about.html
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/icons/Cluster.png b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/icons/Cluster.png
new file mode 100644
index 0000000..80cb50a
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/icons/Cluster.png
Binary files differ
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/plugin.properties b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/plugin.properties
new file mode 100644
index 0000000..cd4286b
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/plugin.properties
@@ -0,0 +1,15 @@
+#################################################################################
+# Copyright (c) 2021 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+##################################################################################
+Bundle-Name=Papyrus SysML 1.6 Element Group UI
+Bundle-Description=This plug-in contains the SysML 1.6 model explorer for ElementGroup.
+Bundle-Vendor=Eclipse Modeling Project
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/plugin.xml b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/plugin.xml
new file mode 100644
index 0000000..d7d294f
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/plugin.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.papyrus.emf.facet.util.emf.core.modeldeclaration">
+ <modeldeclaration
+ file="resources/ElementGroup.custom">
+ </modeldeclaration>
+ </extension>
+ <extension point="org.eclipse.papyrus.uml.extensionpoints.UMLProfile">
+ <profile
+ description="Profile used to add a dynamic cluster"
+ iconpath="icons/Cluster.png"
+ name="Cluster ML"
+ path="pathmap://CLUSTER_PATHMAP/cluster.profile.uml"
+ provider="Eclipse Modeling Project">
+ </profile>
+ </extension>
+
+</plugin>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/pom.xml b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/pom.xml
new file mode 100644
index 0000000..53145de
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/pom.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+
+ <parent>
+ <groupId>org.eclipse.papyrus.sysml</groupId>
+ <artifactId>org.eclipse.papyrus.sysml16.elementgroup.plugins</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.eclipse.papyrus.sysml16.elementgroup.ui</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/resources/ElementGroup.custom b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/resources/ElementGroup.custom
new file mode 100644
index 0000000..d9114a7
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/resources/ElementGroup.custom
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<custom:Customization xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:custom="http://www.eclipse.org/papyrus/emf/facet/custom/0.2.incubation/custom" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:efacet="http://www.eclipse.org/papyrus/emf/facet/efacet/0.2.incubation/efacet" xmlns:javaQuery="http://www.eclipse.org/papyrus/emf/facet/query/java/0.2.incubation/javaquery" name="ElementGroup" documentation="This customization is used to display Requirement by using element group" mustBeLoadedByDefault="true">
+ <eClassifiers xsi:type="custom:EClassCustomization" name="Element">
+ <extendedMetaclass href="http://www.eclipse.org/uml2/5.0.0/UML#//Element"/>
+ <facetElements xsi:type="efacet:FacetReference" name="orderedMembers" upperBound="-1" volatile="true" transient="true" derived="true">
+ <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Element"/>
+ <query xsi:type="javaQuery:JavaQuery" implementationClassName="org.eclipse.papyrus.sysml16.elementgroup.ui.queries.element.OrderedMembersQuery"/>
+ </facetElements>
+ <facetElements xsi:type="efacet:FacetReference" name="dynamicMembers" upperBound="-1" volatile="true" transient="true" derived="true">
+ <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Element"/>
+ <query xsi:type="javaQuery:JavaQuery" implementationClassName="org.eclipse.papyrus.sysml16.elementgroup.ui.queries.element.DynamicMembersQuery"/>
+ </facetElements>
+ <facetOperations name="displayName">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="eReference">
+ <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EReference"/>
+ </eParameters>
+ <query xsi:type="javaQuery:JavaQuery" implementationClassName="org.eclipse.papyrus.sysml16.elementgroup.ui.queries.element.DisplayElementGroupNameQuery"/>
+ <override xsi:type="efacet:FacetOperation" href="platform:/plugin/org.eclipse.papyrus.emf.facet.custom.ui/resources/customproperties.efacet#//CustomizedEObject/label"/>
+ </facetOperations>
+ <facetOperations name="displayElementGroupBold">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eParameters name="eObject">
+ <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+ </eParameters>
+ <query xsi:type="javaQuery:JavaQuery" implementationClassName="org.eclipse.papyrus.sysml16.elementgroup.ui.queries.element.IsBoldQuery"/>
+ <override xsi:type="efacet:FacetOperation" href="platform:/plugin/org.eclipse.papyrus.emf.facet.custom.ui/resources/customproperties.efacet#//CustomizedEObject/isBold"/>
+ </facetOperations>
+ <extendedFacets href="platform:/plugin/org.eclipse.papyrus.emf.facet.custom.ui/resources/customproperties.efacet#//CustomizedEObject"/>
+ </eClassifiers>
+</custom:Customization>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/Activator.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/Activator.java
new file mode 100644
index 0000000..4a5752f
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/Activator.java
@@ -0,0 +1,49 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.ui;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/** The activator class controls the plug-in life cycle */
+public class Activator extends Plugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.sysml16.elementgroup.ui"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ @Override
+ public void start(final BundleContext context) throws Exception {
+ super.start(context);
+ Activator.plugin = this;
+ }
+
+ @Override
+ public void stop(final BundleContext context) throws Exception {
+ Activator.plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return Activator.plugin;
+ }
+}
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/DisplayElementGroupNameQuery.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/DisplayElementGroupNameQuery.java
new file mode 100644
index 0000000..6f761f3
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/DisplayElementGroupNameQuery.java
@@ -0,0 +1,51 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.ui.queries.element;
+
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.papyrus.emf.facet.efacet.core.IFacetManager;
+import org.eclipse.papyrus.emf.facet.efacet.core.exception.DerivedTypedElementException;
+import org.eclipse.papyrus.emf.facet.query.java.core.IJavaQuery2;
+import org.eclipse.papyrus.emf.facet.query.java.core.IParameterValueList2;
+import org.eclipse.papyrus.sysml16.modelelements.ElementGroup;
+import org.eclipse.papyrus.uml.tools.providers.DelegatingItemLabelProvider;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+public class DisplayElementGroupNameQuery implements IJavaQuery2<Element, String> {
+
+ private static final IItemLabelProvider labelProvider = new DelegatingItemLabelProvider();
+
+ public String evaluate(final Element context,
+ final IParameterValueList2 parameterValues,
+ final IFacetManager facetManager)
+ throws DerivedTypedElementException {
+
+ if (parameterValues.getParameterValueByName("eReference") != null) { //$NON-NLS-1$
+ if (parameterValues.getParameterValueByName("eReference").getValue() != null) { //$NON-NLS-1$
+ return labelProvider.getText(parameterValues.getParameterValueByName("eReference").getValue()); //$NON-NLS-1$
+ }
+ }
+ ElementGroup elementGroup = UMLUtil.getStereotypeApplication(context, ElementGroup.class);
+ if (elementGroup != null) {
+ if (elementGroup.getName() != null) {
+ return elementGroup.getName();
+ }
+ return ""; //$NON-NLS-1$
+ } else {
+ return labelProvider.getText(context);
+ }
+ }
+}
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/DynamicMembersQuery.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/DynamicMembersQuery.java
new file mode 100644
index 0000000..2ac7b41
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/DynamicMembersQuery.java
@@ -0,0 +1,42 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.ui.queries.element;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import org.eclipse.papyrus.emf.facet.efacet.core.IFacetManager;
+import org.eclipse.papyrus.emf.facet.efacet.core.exception.DerivedTypedElementException;
+import org.eclipse.papyrus.emf.facet.query.java.core.IJavaQuery2;
+import org.eclipse.papyrus.emf.facet.query.java.core.IParameterValueList2;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+
+public class DynamicMembersQuery implements IJavaQuery2<Element, Collection<Element>> {
+
+ public Collection<Element> evaluate(final Element context,
+ final IParameterValueList2 parameterValues,
+ final IFacetManager facetManager)
+ throws DerivedTypedElementException {
+ IntentionalElementGroup dynamicCluster = UMLUtil.getStereotypeApplication(context, IntentionalElementGroup.class);
+ if (dynamicCluster == null) {
+ return Collections.emptyList();
+ } else {
+ return dynamicCluster.getComputedMembers();
+ }
+ }
+}
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/IsBoldQuery.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/IsBoldQuery.java
new file mode 100644
index 0000000..a3c2638
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/IsBoldQuery.java
@@ -0,0 +1,40 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.ui.queries.element;
+
+import org.eclipse.papyrus.emf.facet.efacet.core.IFacetManager;
+import org.eclipse.papyrus.emf.facet.efacet.core.exception.DerivedTypedElementException;
+import org.eclipse.papyrus.emf.facet.query.java.core.IJavaQuery2;
+import org.eclipse.papyrus.emf.facet.query.java.core.IParameterValueList2;
+import org.eclipse.papyrus.sysml16.modelelements.ElementGroup;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+public class IsBoldQuery implements IJavaQuery2<Element, Boolean> {
+
+ public Boolean evaluate(final Element context,
+ final IParameterValueList2 parameterValues,
+ final IFacetManager facetManager)
+ throws DerivedTypedElementException {
+
+ ElementGroup elementGroup = UMLUtil.getStereotypeApplication(context, ElementGroup.class);
+
+ if (elementGroup == null) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+}
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/OrderedMembersQuery.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/OrderedMembersQuery.java
new file mode 100644
index 0000000..eac7bb6
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup.ui/src/org/eclipse/papyrus/sysml16/elementgroup/ui/queries/element/OrderedMembersQuery.java
@@ -0,0 +1,45 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.ui.queries.element;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import org.eclipse.papyrus.emf.facet.efacet.core.IFacetManager;
+import org.eclipse.papyrus.emf.facet.efacet.core.exception.DerivedTypedElementException;
+import org.eclipse.papyrus.emf.facet.query.java.core.IJavaQuery2;
+import org.eclipse.papyrus.emf.facet.query.java.core.IParameterValueList2;
+import org.eclipse.papyrus.sysml16.modelelements.ElementGroup;
+
+public class OrderedMembersQuery implements IJavaQuery2<Element, Collection<Element>> {
+
+
+ public Collection<Element> evaluate(final Element context,
+ final IParameterValueList2 parameterValues,
+ final IFacetManager facetManager)
+ throws DerivedTypedElementException {
+
+ ElementGroup elementGroup = UMLUtil.getStereotypeApplication(context, ElementGroup.class);
+ if (elementGroup == null) {
+ return Collections.emptyList();
+ } else {
+ Collection<Element> collec = elementGroup.getMember();
+ return collec;
+ }
+ }
+}
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/.classpath b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/.classpath
new file mode 100644
index 0000000..bb64293
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/.classpath
@@ -0,0 +1,8 @@
+<?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-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src-gen"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/.project b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/.project
new file mode 100644
index 0000000..7e2a63a
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.sysml16.elementgroup</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.papyrus.plugin.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.papyrus.plugin.nature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/.settings/org.eclipse.jdt.core.prefs b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..25169a3
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,24 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/META-INF/MANIFEST.MF b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..20fb758
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/META-INF/MANIFEST.MF
@@ -0,0 +1,30 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.sysml16.elementgroup;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.papyrus.sysml16.elementgroup.Activator
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-Description: %Bundle-Description
+Require-Bundle: org.eclipse.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.uml2.uml.profile.standard;bundle-version="[1.5.0,2.0.0)",
+ org.eclipse.uml2.types;bundle-version="[2.5.0,3.0.0)",
+ org.eclipse.uml2.uml;bundle-version="[5.5.0,6.0.0)",
+ org.eclipse.ocl.pivot;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.ocl.pivot.uml;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.emf.common;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.papyrus.sysml16;bundle-version="[2.0.0,3.0.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Export-Package: org.eclipse.papyrus.sysml16.elementgroup,
+ org.eclipse.papyrus.sysml16.elementgroup.api,
+ org.eclipse.papyrus.sysml16.elementgroup.internal,
+ org.eclipse.papyrus.sysml16.elementgroup.internal.impl,
+ org.eclipse.papyrus.sysml16.elementgroup.cluster,
+ org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl,
+ org.eclipse.papyrus.sysml16.elementgroup.cluster.util
+Automatic-Module-Name: org.eclipse.papyrus.sysml16.elementgroup
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/about.html b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/about.html
new file mode 100755
index 0000000..164f781
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/about.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>About</title>
+</head>
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ ("Content"). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 ("EPL"). A copy of the EPL is
+ available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, "Program" will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ ("Redistributor") and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ </p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/build.properties b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/build.properties
new file mode 100644
index 0000000..6a4209a
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/build.properties
@@ -0,0 +1,10 @@
+source.. = src/,\
+ src-gen/
+output.. = target/classes/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ resources/,\
+ plugin.properties,\
+ about.html
+src.includes = about.html
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/plugin.properties b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/plugin.properties
new file mode 100644
index 0000000..99df1f4
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/plugin.properties
@@ -0,0 +1,16 @@
+#################################################################################
+# Copyright (c) 2021 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+##################################################################################
+
+pluginName = Papyrus SysML 1.6 Element Group
+providerName =Eclipse Modeling Project
+Bundle-Description=This plug-in contains the SysML 1.6 ElementGroup.
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/plugin.xml b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/plugin.xml
new file mode 100644
index 0000000..6b93e2e
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/plugin.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension point="org.eclipse.emf.ecore.uri_mapping">
+ <!-- @generated NOT cluster -->
+ <mapping
+ source="pathmap://CLUSTER_PATHMAP/"
+ target="platform:/plugin/org.eclipse.papyrus.sysml16.elementgroup/resources/">
+ </mapping>
+ </extension>
+ <extension
+ point="org.eclipse.uml2.uml.generated_package">
+ <!-- @generated NOT cluster -->
+ <profile
+ location="pathmap://CLUSTER_PATHMAP/cluster.profile.uml#ClusterProfile-ID"
+ uri="http://www.eclipse.org/papyrus/Cluster">
+ </profile>
+ </extension>
+ <extension
+ point="org.eclipse.emf.ecore.factory_override">
+ <factory
+ class="org.eclipse.papyrus.sysml16.elementgroup.internal.impl.CustomClusterFactoryImpl"
+ uri="http://www.eclipse.org/papyrus/Cluster">
+ </factory>
+ </extension>
+
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <!-- @generated cluster.profile -->
+ <package
+ uri="http://www.eclipse.org/papyrus/Cluster"
+ class="org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage"
+ genModel="resources/cluster.profile.genmodel"/>
+ </extension>
+
+</plugin>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/pom.xml b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/pom.xml
new file mode 100644
index 0000000..e8f2d3d
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/pom.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+
+ <parent>
+ <groupId>org.eclipse.papyrus.sysml</groupId>
+ <artifactId>org.eclipse.papyrus.sysml16.elementgroup.plugins</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.eclipse.papyrus.sysml16.elementgroup</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/Design.di b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/Design.di
new file mode 100644
index 0000000..785b011
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/Design.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<architecture:ArchitectureDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:architecture="http://www.eclipse.org/papyrus/infra/core/architecture" contextId="org.eclipse.papyrus.sysml.architecture.SysML16"/>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/Design.notation b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/Design.notation
new file mode 100644
index 0000000..bf9abab
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/Design.notation
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/Design.uml b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/Design.uml
new file mode 100644
index 0000000..a3b3351
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/Design.uml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Requirements="http://www.eclipse.org/papyrus/sysml/1.6/SysML/Requirements" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/sysml/1.6/SysML/Requirements http://www.eclipse.org/papyrus/sysml/1.6/SysML#//requirements">
+ <uml:Model xmi:id="_ppCjsIwcEeiP09V4EdWAwg" name="Design">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_xTZAQIwcEeiP09V4EdWAwg">
+ <body>VisualisationReq001:
+ Each category shall been seen in the model explorer. 
+VisualisationReq002:
+All the elements referenced by the categories are displayed as if they were contained by this category.
+</body>
+ </ownedComment>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_pu1CoIwcEeiP09V4EdWAwg">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_pvNdIIwcEeiP09V4EdWAwg">
+ <importedPackage xmi:type="uml:Package" href="pathmap://SysML16_LIBRARIES/SysML-Standard-Library.uml#SysML.package_packagedElement_Libraries"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Class" xmi:id="_LpRH0IwdEeiP09V4EdWAwg" name="RequirementCluster:">
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_ikH6AIwdEeiP09V4EdWAwg" name="StructureReq001
"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_ikQc4IwdEeiP09V4EdWAwg" name="StructureReq002
"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_ikS5IIwdEeiP09V4EdWAwg" name="StructureReq003
"/>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_ikUuUIwdEeiP09V4EdWAwg" name="StructureReq004
"/>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_puuU8IwcEeiP09V4EdWAwg">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_puwxMIwcEeiP09V4EdWAwg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/sysml/1.6/SysML#/"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_pux_UIwcEeiP09V4EdWAwg">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pux_UYwcEeiP09V4EdWAwg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/sysml/1.6/SysML#//activities"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_Activities"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_pux_UowcEeiP09V4EdWAwg">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_puymYIwcEeiP09V4EdWAwg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/sysml/1.6/SysML#//allocations"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_Allocations"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_puymYYwcEeiP09V4EdWAwg">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_puymYowcEeiP09V4EdWAwg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/sysml/1.6/SysML#//blocks"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_Blocks"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_puymY4wcEeiP09V4EdWAwg">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_puymZIwcEeiP09V4EdWAwg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/sysml/1.6/SysML#//constraintblocks"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_ConstraintBlocks"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_puzNcIwcEeiP09V4EdWAwg">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_puzNcYwcEeiP09V4EdWAwg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/sysml/1.6/SysML#//deprecatedelements"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_DeprecatedElements"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_puzNcowcEeiP09V4EdWAwg">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_puzNc4wcEeiP09V4EdWAwg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/sysml/1.6/SysML#//modelelements"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_ModelElements"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_puzNdIwcEeiP09V4EdWAwg">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_puzNdYwcEeiP09V4EdWAwg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/sysml/1.6/SysML#//portsandflows"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_Ports_u0026Flows"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_puz0gIwcEeiP09V4EdWAwg">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_puz0gYwcEeiP09V4EdWAwg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/sysml/1.6/SysML#//requirements"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_Requirements"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_puz0gowcEeiP09V4EdWAwg">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_puz0g4wcEeiP09V4EdWAwg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#/"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Requirements:Requirement xmi:id="_LpiNkIwdEeiP09V4EdWAwg" id="RequirementCluster" text="The idea is to use ElementGroup of SysML in order to cluster elements by categories and not only by the structure of UML i. e. the owner of the element.
" base_Class="_LpRH0IwdEeiP09V4EdWAwg"/>
+ <Requirements:Requirement xmi:id="_ikNZkIwdEeiP09V4EdWAwg" id="StructureReq001
" text="A category is a SysML elementGroup.
" base_Class="_ikH6AIwdEeiP09V4EdWAwg"/>
+ <Requirements:Requirement xmi:id="_ikSSEIwdEeiP09V4EdWAwg" id="StructureReq002
" text="A category can be contained into another category.
" base_Class="_ikQc4IwdEeiP09V4EdWAwg"/>
+ <Requirements:Requirement xmi:id="_ikUHQIwdEeiP09V4EdWAwg" id="StructureReq003
" text="A DerivedElementGroup must inherits from elementGroup. A request can be associated to a category in order to compute children. The default behavior is to write request in OCL.
" base_Class="_ikS5IIwdEeiP09V4EdWAwg"/>
+ <Requirements:Requirement xmi:id="_ikV8cIwdEeiP09V4EdWAwg" id="StructureReq004
" text="A request can be associated to a category in order to compute children. The default behavior is to write request with EASE.
" base_Class="_ikUuUIwdEeiP09V4EdWAwg"/>
+</xmi:XMI>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.di b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.di
new file mode 100644
index 0000000..247ed5e
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<architecture:ArchitectureDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:architecture="http://www.eclipse.org/papyrus/infra/core/architecture" contextId="org.eclipse.papyrus.uml.architecture.Profile"/>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.ecore b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.ecore
new file mode 100644
index 0000000..ce0ff66
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.ecore
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="cluster" nsURI="http://www.eclipse.org/papyrus/Cluster" nsPrefix="Cluster">
+ <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <details key="originalName" value="Cluster"/>
+ </eAnnotations>
+ <eClassifiers xsi:type="ecore:EClass" name="IntentionalElementGroup" eSuperTypes="../../org.eclipse.papyrus.sysml16/resources/profile/SysML.profile.ecore#//modelelements/ElementGroup">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="computedBy" ordered="false"
+ upperBound="-1" eType="#//OpaqueRequest" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="computedMembers" ordered="false"
+ upperBound="-1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Element"
+ volatile="true" transient="true" derived="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OpaqueRequest">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="request" ordered="false"
+ lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="language" ordered="false"
+ lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.genmodel b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.genmodel
new file mode 100644
index 0000000..1e83db0
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.genmodel
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/uml2/2.2.0/GenModel"
+ copyrightText=" Copyright (c) 2021 CEA LIST, and others.

 All rights reserved. This program and the accompanying materials
 are made available under the terms of the Eclipse Public License 2.0
 which accompanies this distribution, and is available at
 https://www.eclipse.org/legal/epl-2.0/

 SPDX-License-Identifier: EPL-2.0

 Contributors:
 Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
"
+ modelDirectory="/org.eclipse.papyrus.sysml16.elementgroup/src-gen" editDirectory="/org.eclipse.papyrus.sysml16.elementgroup.edit/src-gen"
+ editorDirectory="/org.eclipse.papyrus.sysml16.elementgroup.editor/src-gen" modelPluginID="org.eclipse.papyrus.sysml16.elementgroup"
+ modelName="Cluster" editPluginClass="org.eclipse.papyrus.sysml16.cluster.provider.ClusterEditPlugin"
+ editorPluginClass="org.eclipse.papyrus.sysml16.cluster.presentation.ClusterEditorPlugin"
+ nonNLSMarkers="true" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ codeFormatting="true" commentFormatting="true" testsDirectory="/org.eclipse.papyrus.sysml16.elementgroup.tests/src-gen"
+ importerID="org.eclipse.uml2.uml.ecore.importer" complianceLevel="8.0" copyrightFields="false"
+ editPluginID="org.eclipse.papyrus.sysml16.elementgroup.edit" editorPluginID="org.eclipse.papyrus.sysml16.elementgroup.editor"
+ usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore ../../org.eclipse.uml2.uml.profile.standard/model/Standard.genmodel#//standard ../../org.eclipse.papyrus.sysml16/resources/profile/SysML.profile.genmodel#//sysml ../../org.eclipse.uml2.types/model/Types.genmodel#//types ../../org.eclipse.uml2.uml/model/UML.genmodel#//uml"
+ operationReflection="true" importOrganizing="true" cleanup="true" eclipsePlatformVersion="2021-03">
+ <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/importer/org.eclipse.uml2.uml.ecore.importer">
+ <details key="OPPOSITE_ROLE_NAMES" value="IGNORE"/>
+ <details key="DUPLICATE_FEATURES" value="DISCARD"/>
+ <details key="ANNOTATION_DETAILS" value="PROCESS"/>
+ <details key="PROPERTY_DEFAULT_EXPRESSIONS" value="IGNORE"/>
+ <details key="DUPLICATE_FEATURE_INHERITANCE" value="DISCARD"/>
+ <details key="COMMENTS" value="PROCESS"/>
+ <details key="DERIVED_FEATURES" value="PROCESS"/>
+ <details key="SUPER_CLASS_ORDER" value="PROCESS"/>
+ <details key="DUPLICATE_OPERATION_INHERITANCE" value="DISCARD"/>
+ <details key="REDEFINING_OPERATIONS" value="REPORT"/>
+ <details key="INVARIANT_CONSTRAINTS" value="PROCESS"/>
+ <details key="UNION_PROPERTIES" value="REPORT"/>
+ <details key="DUPLICATE_OPERATIONS" value="DISCARD"/>
+ <details key="NON_API_INVARIANTS" value="IGNORE"/>
+ <details key="CAMEL_CASE_NAMES" value="IGNORE"/>
+ <details key="SUBSETTING_PROPERTIES" value="REPORT"/>
+ <details key="OPERATION_BODIES" value="IGNORE"/>
+ <details key="ECORE_TAGGED_VALUES" value="PROCESS"/>
+ <details key="UNTYPED_PROPERTIES" value="REPORT"/>
+ <details key="REDEFINING_PROPERTIES" value="REPORT"/>
+ <details key="INVOCATION_DELEGATES" value="IGNORE"/>
+ <details key="VALIDATION_DELEGATES" value="IGNORE"/>
+ </genAnnotations>
+ <foreignModel>cluster.profile.uml</foreignModel>
+ <genPackages xsi:type="genmodel:GenPackage" prefix="Cluster" basePackage="org.eclipse.papyrus.sysml16.elementgroup"
+ disposableProviderFactory="true" classPackageSuffix="internal.impl" ecorePackage="cluster.profile.ecore#/">
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="cluster.profile.ecore#//IntentionalElementGroup">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference cluster.profile.ecore#//IntentionalElementGroup/computedBy"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference cluster.profile.ecore#//IntentionalElementGroup/computedMembers"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="cluster.profile.ecore#//OpaqueRequest">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute cluster.profile.ecore#//OpaqueRequest/request"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute cluster.profile.ecore#//OpaqueRequest/language"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.notation b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.notation
new file mode 100644
index 0000000..511224c
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.notation
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.3/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/gmfdiag/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_06r-4IRMEeiExpZ7uQR-NA" type="PapyrusUMLProfileDiagram" name="Profile Diagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_2r42wIRMEeiExpZ7uQR-NA" type="Stereotype_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_2r42woRMEeiExpZ7uQR-NA" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_2r42w4RMEeiExpZ7uQR-NA" type="Stereotype_AttributeCompartment">
+ <children xmi:type="notation:Shape" xmi:id="_TH3vMIRNEeiExpZ7uQR-NA" type="Property_ClassAttributeLabel">
+ <element xmi:type="uml:Property" href="cluster.profile.uml#_TH0r4IRNEeiExpZ7uQR-NA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TH3vMYRNEeiExpZ7uQR-NA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zl8SIIRPEeiExpZ7uQR-NA" type="Property_ClassAttributeLabel">
+ <element xmi:type="uml:Property" href="cluster.profile.uml#_zlzIMIRPEeiExpZ7uQR-NA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zl8SIYRPEeiExpZ7uQR-NA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_2r42xIRMEeiExpZ7uQR-NA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_2r42xYRMEeiExpZ7uQR-NA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_2r42xoRMEeiExpZ7uQR-NA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2r42x4RMEeiExpZ7uQR-NA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_2r42yIRMEeiExpZ7uQR-NA" visible="false" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_2r42yYRMEeiExpZ7uQR-NA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_2r42yoRMEeiExpZ7uQR-NA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_2r42y4RMEeiExpZ7uQR-NA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2r42zIRMEeiExpZ7uQR-NA"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="cluster.profile.uml#_2rvs0IRMEeiExpZ7uQR-NA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2r42wYRMEeiExpZ7uQR-NA" x="320" y="260"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_BQ0OEYRNEeiExpZ7uQR-NA" type="DataType_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_BQ0OE4RNEeiExpZ7uQR-NA" type="DataType_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_BQ0OFIRNEeiExpZ7uQR-NA" type="DataType_AttributeCompartment">
+ <children xmi:type="notation:Shape" xmi:id="_EEeogIRNEeiExpZ7uQR-NA" type="Property_DataTypeAttributeLabel">
+ <element xmi:type="uml:Property" href="cluster.profile.uml#_EEeBcIRNEeiExpZ7uQR-NA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EEeogYRNEeiExpZ7uQR-NA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_K3LEUIRNEeiExpZ7uQR-NA" type="Property_DataTypeAttributeLabel">
+ <element xmi:type="uml:Property" href="cluster.profile.uml#_K25XgIRNEeiExpZ7uQR-NA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_K3LEUYRNEeiExpZ7uQR-NA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_BQ0OFYRNEeiExpZ7uQR-NA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BQ0OFoRNEeiExpZ7uQR-NA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BQ0OF4RNEeiExpZ7uQR-NA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BQ0OGIRNEeiExpZ7uQR-NA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_BQ0OGYRNEeiExpZ7uQR-NA" visible="false" type="DataType_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_BQ0OGoRNEeiExpZ7uQR-NA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BQ0OG4RNEeiExpZ7uQR-NA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BQ0OHIRNEeiExpZ7uQR-NA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BQ0OHYRNEeiExpZ7uQR-NA"/>
+ </children>
+ <element xmi:type="uml:DataType" href="cluster.profile.uml#_BQ0OEIRNEeiExpZ7uQR-NA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BQ0OEoRNEeiExpZ7uQR-NA" x="600" y="260" width="161" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ImXF4P6GEeuBk6vx1EJOLw" type="Stereotype_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ImclcP6GEeuBk6vx1EJOLw" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ImdMgP6GEeuBk6vx1EJOLw" visible="false" type="Stereotype_AttributeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ImdMgf6GEeuBk6vx1EJOLw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ImdMgv6GEeuBk6vx1EJOLw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ImdMg_6GEeuBk6vx1EJOLw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ImdMhP6GEeuBk6vx1EJOLw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ImdMhf6GEeuBk6vx1EJOLw" visible="false" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ImdMhv6GEeuBk6vx1EJOLw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ImdMh_6GEeuBk6vx1EJOLw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ImdMiP6GEeuBk6vx1EJOLw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ImdMif6GEeuBk6vx1EJOLw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_ModelElements.stereotype_packagedElement_ElementGroup"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ImXF4f6GEeuBk6vx1EJOLw" x="320" y="160" width="221" height="40"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_06r-4YRMEeiExpZ7uQR-NA" name="diagram_compatibility_version" stringValue="1.4.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_06r-4oRMEeiExpZ7uQR-NA"/>
+ <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_06r-44RMEeiExpZ7uQR-NA" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+ <owner xmi:type="uml:Profile" href="cluster.profile.uml#_06Fh8IRMEeiExpZ7uQR-NA"/>
+ </styles>
+ <element xmi:type="uml:Profile" href="cluster.profile.uml#_06Fh8IRMEeiExpZ7uQR-NA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_NdDuwIwfEeiWkZcpYQDxUw" type="Generalization_Edge" source="_2r42wIRMEeiExpZ7uQR-NA" target="_ImXF4P6GEeuBk6vx1EJOLw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NdEV0IwfEeiWkZcpYQDxUw" type="Generalization_StereotypeLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Pk4W4IwfEeiWkZcpYQDxUw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NdEV0YwfEeiWkZcpYQDxUw" y="59"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_NdDuwYwfEeiWkZcpYQDxUw"/>
+ <element xmi:type="uml:Generalization" href="cluster.profile.uml#_Ncr7UIwfEeiWkZcpYQDxUw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NdDuwowfEeiWkZcpYQDxUw" points="[360, 260, -643984, -643984]$[220, 166, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NeX9YIwfEeiWkZcpYQDxUw" id="(0.45871559633027525,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NeX9YYwfEeiWkZcpYQDxUw" id="(0.45248868778280543,1.0)"/>
+ </edges>
+</notation:Diagram>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.uml b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.uml
new file mode 100644
index 0000000..11895be
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/resources/cluster.profile.uml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
+ <uml:Profile xmi:id="ClusterProfile-ID" name="Cluster">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mLiNYIRNEeiExpZ7uQR-NA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ja3sAP6GEeuBk6vx1EJOLw" source="PapyrusVersion">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ja3sAf6GEeuBk6vx1EJOLw" key="Version" value="0.0.0"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ja3sAv6GEeuBk6vx1EJOLw" key="Comment" value="<undefined>"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ja3sA_6GEeuBk6vx1EJOLw" key="Copyright" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ja3sBP6GEeuBk6vx1EJOLw" key="Date" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ja3sBf6GEeuBk6vx1EJOLw" key="Author" value="<undefined>"/>
+ </eAnnotations>
+ </eAnnotations>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_1BXOoIRMEeiExpZ7uQR-NA">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_1BXOoYRMEeiExpZ7uQR-NA">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_9A7tQIRMEeiExpZ7uQR-NA">
+ <importedPackage xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_ModelElements"/>
+ </packageImport>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_K18ikIwfEeiWkZcpYQDxUw">
+ <importedPackage xmi:type="uml:Profile" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_ModelElements"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_2rvs0IRMEeiExpZ7uQR-NA" name="IntentionalElementGroup">
+ <generalization xmi:type="uml:Generalization" xmi:id="_Ncr7UIwfEeiWkZcpYQDxUw">
+ <general xmi:type="uml:Stereotype" href="pathmap://SysML16_PROFILES/SysML.profile.uml#SysML.package_packagedElement_ModelElements.stereotype_packagedElement_ElementGroup"/>
+ </generalization>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_TH0r4IRNEeiExpZ7uQR-NA" name="computedBy" visibility="public" type="_BQ0OEIRNEeiExpZ7uQR-NA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_b1K2gIRNEeiExpZ7uQR-NA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_b2V7MIRNEeiExpZ7uQR-NA" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_zlzIMIRPEeiExpZ7uQR-NA" name="computedMembers" visibility="public" isDerived="true">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OkxQEIRQEeiExpZ7uQR-NA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ok7BEIRQEeiExpZ7uQR-NA" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:DataType" xmi:id="_BQ0OEIRNEeiExpZ7uQR-NA" name="OpaqueRequest">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_EEeBcIRNEeiExpZ7uQR-NA" name="request" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_K25XgIRNEeiExpZ7uQR-NA" name="language">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_ZZxOQIRREeiExpZ7uQR-NA">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZZxOQYRREeiExpZ7uQR-NA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Profile>
+ <Ecore:EPackage xmi:id="_axsqgIRREeiExpZ7uQR-NA" base_Package="ClusterProfile-ID" packageName="cluster" nsURI="http://www.eclipse.org/papyrus/Cluster" basePackage="com.cea.papyrus.sysml"/>
+</xmi:XMI>
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/ClusterFactory.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/ClusterFactory.java
new file mode 100755
index 0000000..189480e
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/ClusterFactory.java
@@ -0,0 +1,68 @@
+/**
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.sysml16.elementgroup.cluster;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage
+ * @generated
+ */
+public interface ClusterFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ ClusterFactory eINSTANCE = org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.ClusterFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Intentional Element Group</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Intentional Element Group</em>'.
+ * @generated
+ */
+ IntentionalElementGroup createIntentionalElementGroup();
+
+ /**
+ * Returns a new object of class '<em>Opaque Request</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Opaque Request</em>'.
+ * @generated
+ */
+ OpaqueRequest createOpaqueRequest();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the package supported by this factory.
+ * @generated
+ */
+ ClusterPackage getClusterPackage();
+
+} // ClusterFactory
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/ClusterPackage.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/ClusterPackage.java
new file mode 100755
index 0000000..a7d4907
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/ClusterPackage.java
@@ -0,0 +1,437 @@
+/**
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.sysml16.elementgroup.cluster;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.papyrus.sysml16.modelelements.ModelElementsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterFactory
+ * @model kind="package"
+ * annotation="http://www.eclipse.org/uml2/2.0.0/UML originalName='Cluster'"
+ * @generated
+ */
+public interface ClusterPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String eNAME = "cluster"; //$NON-NLS-1$
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/papyrus/Cluster"; //$NON-NLS-1$
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String eNS_PREFIX = "Cluster"; //$NON-NLS-1$
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ ClusterPackage eINSTANCE = org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.ClusterPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.IntentionalElementGroupImpl <em>Intentional Element Group</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.IntentionalElementGroupImpl
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.ClusterPackageImpl#getIntentionalElementGroup()
+ * @generated
+ */
+ int INTENTIONAL_ELEMENT_GROUP = 0;
+
+ /**
+ * The feature id for the '<em><b>Base Comment</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTENTIONAL_ELEMENT_GROUP__BASE_COMMENT = ModelElementsPackage.ELEMENT_GROUP__BASE_COMMENT;
+
+ /**
+ * The feature id for the '<em><b>Criterion</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTENTIONAL_ELEMENT_GROUP__CRITERION = ModelElementsPackage.ELEMENT_GROUP__CRITERION;
+
+ /**
+ * The feature id for the '<em><b>Member</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTENTIONAL_ELEMENT_GROUP__MEMBER = ModelElementsPackage.ELEMENT_GROUP__MEMBER;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTENTIONAL_ELEMENT_GROUP__NAME = ModelElementsPackage.ELEMENT_GROUP__NAME;
+
+ /**
+ * The feature id for the '<em><b>Ordered Member</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTENTIONAL_ELEMENT_GROUP__ORDERED_MEMBER = ModelElementsPackage.ELEMENT_GROUP__ORDERED_MEMBER;
+
+ /**
+ * The feature id for the '<em><b>Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTENTIONAL_ELEMENT_GROUP__SIZE = ModelElementsPackage.ELEMENT_GROUP__SIZE;
+
+ /**
+ * The feature id for the '<em><b>Computed By</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTENTIONAL_ELEMENT_GROUP__COMPUTED_BY = ModelElementsPackage.ELEMENT_GROUP_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Computed Members</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTENTIONAL_ELEMENT_GROUP__COMPUTED_MEMBERS = ModelElementsPackage.ELEMENT_GROUP_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Intentional Element Group</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTENTIONAL_ELEMENT_GROUP_FEATURE_COUNT = ModelElementsPackage.ELEMENT_GROUP_FEATURE_COUNT + 2;
+
+ /**
+ * The operation id for the '<em>All Groups</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTENTIONAL_ELEMENT_GROUP___ALL_GROUPS__ELEMENT_ELIST = ModelElementsPackage.ELEMENT_GROUP___ALL_GROUPS__ELEMENT_ELIST;
+
+ /**
+ * The operation id for the '<em>Criterion</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTENTIONAL_ELEMENT_GROUP___CRITERION__STRING = ModelElementsPackage.ELEMENT_GROUP___CRITERION__STRING;
+
+ /**
+ * The operation id for the '<em>Member</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTENTIONAL_ELEMENT_GROUP___MEMBER__ELIST = ModelElementsPackage.ELEMENT_GROUP___MEMBER__ELIST;
+
+ /**
+ * The operation id for the '<em>Size</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTENTIONAL_ELEMENT_GROUP___SIZE__INT = ModelElementsPackage.ELEMENT_GROUP___SIZE__INT;
+
+ /**
+ * The number of operations of the '<em>Intentional Element Group</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTENTIONAL_ELEMENT_GROUP_OPERATION_COUNT = ModelElementsPackage.ELEMENT_GROUP_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.OpaqueRequestImpl <em>Opaque Request</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.OpaqueRequestImpl
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.ClusterPackageImpl#getOpaqueRequest()
+ * @generated
+ */
+ int OPAQUE_REQUEST = 1;
+
+ /**
+ * The feature id for the '<em><b>Request</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int OPAQUE_REQUEST__REQUEST = 0;
+
+ /**
+ * The feature id for the '<em><b>Language</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int OPAQUE_REQUEST__LANGUAGE = 1;
+
+ /**
+ * The number of structural features of the '<em>Opaque Request</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int OPAQUE_REQUEST_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the '<em>Opaque Request</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int OPAQUE_REQUEST_OPERATION_COUNT = 0;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup <em>Intentional Element Group</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Intentional Element Group</em>'.
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup
+ * @generated
+ */
+ EClass getIntentionalElementGroup();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup#getComputedBy <em>Computed By</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference list '<em>Computed By</em>'.
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup#getComputedBy()
+ * @see #getIntentionalElementGroup()
+ * @generated
+ */
+ EReference getIntentionalElementGroup_ComputedBy();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup#getComputedMembers <em>Computed Members</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the reference list '<em>Computed Members</em>'.
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup#getComputedMembers()
+ * @see #getIntentionalElementGroup()
+ * @generated
+ */
+ EReference getIntentionalElementGroup_ComputedMembers();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest <em>Opaque Request</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Opaque Request</em>'.
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest
+ * @generated
+ */
+ EClass getOpaqueRequest();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest#getRequest <em>Request</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Request</em>'.
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest#getRequest()
+ * @see #getOpaqueRequest()
+ * @generated
+ */
+ EAttribute getOpaqueRequest_Request();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest#getLanguage <em>Language</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Language</em>'.
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest#getLanguage()
+ * @see #getOpaqueRequest()
+ * @generated
+ */
+ EAttribute getOpaqueRequest_Language();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ ClusterFactory getClusterFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.IntentionalElementGroupImpl <em>Intentional Element Group</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.IntentionalElementGroupImpl
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.ClusterPackageImpl#getIntentionalElementGroup()
+ * @generated
+ */
+ EClass INTENTIONAL_ELEMENT_GROUP = eINSTANCE.getIntentionalElementGroup();
+
+ /**
+ * The meta object literal for the '<em><b>Computed By</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference INTENTIONAL_ELEMENT_GROUP__COMPUTED_BY = eINSTANCE.getIntentionalElementGroup_ComputedBy();
+
+ /**
+ * The meta object literal for the '<em><b>Computed Members</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference INTENTIONAL_ELEMENT_GROUP__COMPUTED_MEMBERS = eINSTANCE.getIntentionalElementGroup_ComputedMembers();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.OpaqueRequestImpl <em>Opaque Request</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.OpaqueRequestImpl
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.ClusterPackageImpl#getOpaqueRequest()
+ * @generated
+ */
+ EClass OPAQUE_REQUEST = eINSTANCE.getOpaqueRequest();
+
+ /**
+ * The meta object literal for the '<em><b>Request</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute OPAQUE_REQUEST__REQUEST = eINSTANCE.getOpaqueRequest_Request();
+
+ /**
+ * The meta object literal for the '<em><b>Language</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute OPAQUE_REQUEST__LANGUAGE = eINSTANCE.getOpaqueRequest_Language();
+
+ }
+
+} // ClusterPackage
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/IntentionalElementGroup.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/IntentionalElementGroup.java
new file mode 100755
index 0000000..14c5bab
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/IntentionalElementGroup.java
@@ -0,0 +1,75 @@
+/**
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.sysml16.elementgroup.cluster;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.papyrus.sysml16.modelelements.ElementGroup;
+
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Intentional Element Group</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup#getComputedBy <em>Computed By</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup#getComputedMembers <em>Computed Members</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage#getIntentionalElementGroup()
+ * @model
+ * @generated
+ */
+public interface IntentionalElementGroup extends ElementGroup {
+ /**
+ * Returns the value of the '<em><b>Computed By</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Computed By</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Computed By</em>' containment reference list.
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage#getIntentionalElementGroup_ComputedBy()
+ * @model containment="true" ordered="false"
+ * @generated
+ */
+ EList<OpaqueRequest> getComputedBy();
+
+ /**
+ * Returns the value of the '<em><b>Computed Members</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.uml2.uml.Element}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Computed Members</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Computed Members</em>' reference list.
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage#getIntentionalElementGroup_ComputedMembers()
+ * @model transient="true" volatile="true" derived="true" ordered="false"
+ * @generated
+ */
+ EList<Element> getComputedMembers();
+
+} // IntentionalElementGroup
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/OpaqueRequest.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/OpaqueRequest.java
new file mode 100755
index 0000000..3962d03
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/OpaqueRequest.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.sysml16.elementgroup.cluster;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Opaque Request</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest#getRequest <em>Request</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest#getLanguage <em>Language</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage#getOpaqueRequest()
+ * @model
+ * @generated
+ */
+public interface OpaqueRequest extends EObject {
+ /**
+ * Returns the value of the '<em><b>Request</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Request</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Request</em>' attribute.
+ * @see #setRequest(String)
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage#getOpaqueRequest_Request()
+ * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+ * @generated
+ */
+ String getRequest();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest#getRequest <em>Request</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Request</em>' attribute.
+ * @see #getRequest()
+ * @generated
+ */
+ void setRequest(String value);
+
+ /**
+ * Returns the value of the '<em><b>Language</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Language</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Language</em>' attribute.
+ * @see #setLanguage(String)
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage#getOpaqueRequest_Language()
+ * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+ * @generated
+ */
+ String getLanguage();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest#getLanguage <em>Language</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Language</em>' attribute.
+ * @see #getLanguage()
+ * @generated
+ */
+ void setLanguage(String value);
+
+} // OpaqueRequest
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/ClusterFactoryImpl.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/ClusterFactoryImpl.java
new file mode 100755
index 0000000..6b08a65
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/ClusterFactoryImpl.java
@@ -0,0 +1,130 @@
+/**
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ClusterFactoryImpl extends EFactoryImpl implements ClusterFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static ClusterFactory init() {
+ try {
+ ClusterFactory theClusterFactory = (ClusterFactory) EPackage.Registry.INSTANCE.getEFactory(ClusterPackage.eNS_URI);
+ if (theClusterFactory != null) {
+ return theClusterFactory;
+ }
+ } catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new ClusterFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ClusterFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case ClusterPackage.INTENTIONAL_ELEMENT_GROUP:
+ return createIntentionalElementGroup();
+ case ClusterPackage.OPAQUE_REQUEST:
+ return createOpaqueRequest();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public IntentionalElementGroup createIntentionalElementGroup() {
+ IntentionalElementGroupImpl intentionalElementGroup = new IntentionalElementGroupImpl();
+ return intentionalElementGroup;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public OpaqueRequest createOpaqueRequest() {
+ OpaqueRequestImpl opaqueRequest = new OpaqueRequestImpl();
+ return opaqueRequest;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public ClusterPackage getClusterPackage() {
+ return (ClusterPackage) getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static ClusterPackage getPackage() {
+ return ClusterPackage.eINSTANCE;
+ }
+
+} // ClusterFactoryImpl
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/ClusterPackageImpl.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/ClusterPackageImpl.java
new file mode 100755
index 0000000..7517af8
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/ClusterPackageImpl.java
@@ -0,0 +1,322 @@
+/**
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterFactory;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest;
+
+import org.eclipse.papyrus.sysml16.modelelements.ModelElementsPackage;
+
+import org.eclipse.papyrus.sysml16.sysml.SysMLPackage;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+import org.eclipse.uml2.uml.profile.standard.StandardPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ClusterPackageImpl extends EPackageImpl implements ClusterPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass intentionalElementGroupEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass opaqueRequestEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>
+ * Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private ClusterPackageImpl() {
+ super(eNS_URI, ClusterFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>
+ * This method is used to initialize {@link ClusterPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static ClusterPackage init() {
+ if (isInited) {
+ return (ClusterPackage) EPackage.Registry.INSTANCE.getEPackage(ClusterPackage.eNS_URI);
+ }
+
+ // Obtain or create and register package
+ Object registeredClusterPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+ ClusterPackageImpl theClusterPackage = registeredClusterPackage instanceof ClusterPackageImpl ? (ClusterPackageImpl) registeredClusterPackage : new ClusterPackageImpl();
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+ StandardPackage.eINSTANCE.eClass();
+ SysMLPackage.eINSTANCE.eClass();
+ TypesPackage.eINSTANCE.eClass();
+ UMLPackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theClusterPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theClusterPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theClusterPackage.freeze();
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(ClusterPackage.eNS_URI, theClusterPackage);
+ return theClusterPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EClass getIntentionalElementGroup() {
+ return intentionalElementGroupEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EReference getIntentionalElementGroup_ComputedBy() {
+ return (EReference) intentionalElementGroupEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EReference getIntentionalElementGroup_ComputedMembers() {
+ return (EReference) intentionalElementGroupEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EClass getOpaqueRequest() {
+ return opaqueRequestEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getOpaqueRequest_Request() {
+ return (EAttribute) opaqueRequestEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EAttribute getOpaqueRequest_Language() {
+ return (EAttribute) opaqueRequestEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public ClusterFactory getClusterFactory() {
+ return (ClusterFactory) getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) {
+ return;
+ }
+ isCreated = true;
+
+ // Create classes and their features
+ intentionalElementGroupEClass = createEClass(INTENTIONAL_ELEMENT_GROUP);
+ createEReference(intentionalElementGroupEClass, INTENTIONAL_ELEMENT_GROUP__COMPUTED_BY);
+ createEReference(intentionalElementGroupEClass, INTENTIONAL_ELEMENT_GROUP__COMPUTED_MEMBERS);
+
+ opaqueRequestEClass = createEClass(OPAQUE_REQUEST);
+ createEAttribute(opaqueRequestEClass, OPAQUE_REQUEST__REQUEST);
+ createEAttribute(opaqueRequestEClass, OPAQUE_REQUEST__LANGUAGE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) {
+ return;
+ }
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ ModelElementsPackage theModelElementsPackage = (ModelElementsPackage) EPackage.Registry.INSTANCE.getEPackage(ModelElementsPackage.eNS_URI);
+ UMLPackage theUMLPackage = (UMLPackage) EPackage.Registry.INSTANCE.getEPackage(UMLPackage.eNS_URI);
+ TypesPackage theTypesPackage = (TypesPackage) EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ intentionalElementGroupEClass.getESuperTypes().add(theModelElementsPackage.getElementGroup());
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(intentionalElementGroupEClass, IntentionalElementGroup.class, "IntentionalElementGroup", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getIntentionalElementGroup_ComputedBy(), this.getOpaqueRequest(), null, "computedBy", null, 0, -1, IntentionalElementGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, //$NON-NLS-1$
+ !IS_DERIVED, !IS_ORDERED);
+ initEReference(getIntentionalElementGroup_ComputedMembers(), theUMLPackage.getElement(), null, "computedMembers", null, 0, -1, IntentionalElementGroup.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, //$NON-NLS-1$
+ IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+
+ initEClass(opaqueRequestEClass, OpaqueRequest.class, "OpaqueRequest", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getOpaqueRequest_Request(), theTypesPackage.getString(), "request", null, 1, 1, OpaqueRequest.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getOpaqueRequest_Language(), theTypesPackage.getString(), "language", null, 1, 1, OpaqueRequest.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+ // Create resource
+ createResource(eNS_URI);
+
+ // Create annotations
+ // http://www.eclipse.org/uml2/2.0.0/UML
+ createUMLAnnotations();
+ }
+
+ /**
+ * Initializes the annotations for <b>http://www.eclipse.org/uml2/2.0.0/UML</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void createUMLAnnotations() {
+ String source = "http://www.eclipse.org/uml2/2.0.0/UML"; //$NON-NLS-1$
+ addAnnotation(this,
+ source,
+ new String[] {
+ "originalName", "Cluster" //$NON-NLS-1$ //$NON-NLS-2$
+ });
+ }
+
+} // ClusterPackageImpl
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/IntentionalElementGroupImpl.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/IntentionalElementGroupImpl.java
new file mode 100755
index 0000000..e8ae359
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/IntentionalElementGroupImpl.java
@@ -0,0 +1,201 @@
+/**
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest;
+
+import org.eclipse.papyrus.sysml16.modelelements.internal.impl.ElementGroupImpl;
+
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Intentional Element Group</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.IntentionalElementGroupImpl#getComputedBy <em>Computed By</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.IntentionalElementGroupImpl#getComputedMembers <em>Computed Members</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class IntentionalElementGroupImpl extends ElementGroupImpl implements IntentionalElementGroup {
+ /**
+ * The cached value of the '{@link #getComputedBy() <em>Computed By</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getComputedBy()
+ * @generated
+ * @ordered
+ */
+ protected EList<OpaqueRequest> computedBy;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected IntentionalElementGroupImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ClusterPackage.Literals.INTENTIONAL_ELEMENT_GROUP;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EList<OpaqueRequest> getComputedBy() {
+ if (computedBy == null) {
+ computedBy = new EObjectContainmentEList<>(OpaqueRequest.class, this, ClusterPackage.INTENTIONAL_ELEMENT_GROUP__COMPUTED_BY);
+ }
+ return computedBy;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EList<Element> getComputedMembers() {
+ // TODO: implement this method to return the 'Computed Members' reference list
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ClusterPackage.INTENTIONAL_ELEMENT_GROUP__COMPUTED_BY:
+ return ((InternalEList<?>) getComputedBy()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ClusterPackage.INTENTIONAL_ELEMENT_GROUP__COMPUTED_BY:
+ return getComputedBy();
+ case ClusterPackage.INTENTIONAL_ELEMENT_GROUP__COMPUTED_MEMBERS:
+ return getComputedMembers();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ClusterPackage.INTENTIONAL_ELEMENT_GROUP__COMPUTED_BY:
+ getComputedBy().clear();
+ getComputedBy().addAll((Collection<? extends OpaqueRequest>) newValue);
+ return;
+ case ClusterPackage.INTENTIONAL_ELEMENT_GROUP__COMPUTED_MEMBERS:
+ getComputedMembers().clear();
+ getComputedMembers().addAll((Collection<? extends Element>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ClusterPackage.INTENTIONAL_ELEMENT_GROUP__COMPUTED_BY:
+ getComputedBy().clear();
+ return;
+ case ClusterPackage.INTENTIONAL_ELEMENT_GROUP__COMPUTED_MEMBERS:
+ getComputedMembers().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ClusterPackage.INTENTIONAL_ELEMENT_GROUP__COMPUTED_BY:
+ return computedBy != null && !computedBy.isEmpty();
+ case ClusterPackage.INTENTIONAL_ELEMENT_GROUP__COMPUTED_MEMBERS:
+ return !getComputedMembers().isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // IntentionalElementGroupImpl
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/OpaqueRequestImpl.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/OpaqueRequestImpl.java
new file mode 100755
index 0000000..79f48a8
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/internal/impl/OpaqueRequestImpl.java
@@ -0,0 +1,252 @@
+/**
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Opaque Request</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.OpaqueRequestImpl#getRequest <em>Request</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.OpaqueRequestImpl#getLanguage <em>Language</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class OpaqueRequestImpl extends MinimalEObjectImpl.Container implements OpaqueRequest {
+ /**
+ * The default value of the '{@link #getRequest() <em>Request</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getRequest()
+ * @generated
+ * @ordered
+ */
+ protected static final String REQUEST_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getRequest() <em>Request</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getRequest()
+ * @generated
+ * @ordered
+ */
+ protected String request = REQUEST_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getLanguage() <em>Language</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getLanguage()
+ * @generated
+ * @ordered
+ */
+ protected static final String LANGUAGE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getLanguage() <em>Language</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getLanguage()
+ * @generated
+ * @ordered
+ */
+ protected String language = LANGUAGE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected OpaqueRequestImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ClusterPackage.Literals.OPAQUE_REQUEST;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getRequest() {
+ return request;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setRequest(String newRequest) {
+ String oldRequest = request;
+ request = newRequest;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, ClusterPackage.OPAQUE_REQUEST__REQUEST, oldRequest, request));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String getLanguage() {
+ return language;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setLanguage(String newLanguage) {
+ String oldLanguage = language;
+ language = newLanguage;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, ClusterPackage.OPAQUE_REQUEST__LANGUAGE, oldLanguage, language));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ClusterPackage.OPAQUE_REQUEST__REQUEST:
+ return getRequest();
+ case ClusterPackage.OPAQUE_REQUEST__LANGUAGE:
+ return getLanguage();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ClusterPackage.OPAQUE_REQUEST__REQUEST:
+ setRequest((String) newValue);
+ return;
+ case ClusterPackage.OPAQUE_REQUEST__LANGUAGE:
+ setLanguage((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ClusterPackage.OPAQUE_REQUEST__REQUEST:
+ setRequest(REQUEST_EDEFAULT);
+ return;
+ case ClusterPackage.OPAQUE_REQUEST__LANGUAGE:
+ setLanguage(LANGUAGE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ClusterPackage.OPAQUE_REQUEST__REQUEST:
+ return REQUEST_EDEFAULT == null ? request != null : !REQUEST_EDEFAULT.equals(request);
+ case ClusterPackage.OPAQUE_REQUEST__LANGUAGE:
+ return LANGUAGE_EDEFAULT == null ? language != null : !LANGUAGE_EDEFAULT.equals(language);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) {
+ return super.toString();
+ }
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (request: "); //$NON-NLS-1$
+ result.append(request);
+ result.append(", language: "); //$NON-NLS-1$
+ result.append(language);
+ result.append(')');
+ return result.toString();
+ }
+
+} // OpaqueRequestImpl
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/util/ClusterAdapterFactory.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/util/ClusterAdapterFactory.java
new file mode 100755
index 0000000..8336e18
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/util/ClusterAdapterFactory.java
@@ -0,0 +1,183 @@
+/**
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.sysml16.elementgroup.cluster.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.*;
+
+import org.eclipse.papyrus.sysml16.modelelements.ElementGroup;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage
+ * @generated
+ */
+public class ClusterAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected static ClusterPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ClusterAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = ClusterPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ *
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject) object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ClusterSwitch<Adapter> modelSwitch = new ClusterSwitch<>() {
+ @Override
+ public Adapter caseIntentionalElementGroup(IntentionalElementGroup object) {
+ return createIntentionalElementGroupAdapter();
+ }
+
+ @Override
+ public Adapter caseOpaqueRequest(OpaqueRequest object) {
+ return createOpaqueRequestAdapter();
+ }
+
+ @Override
+ public Adapter caseElementGroup(ElementGroup object) {
+ return createElementGroupAdapter();
+ }
+
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param target
+ * the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject) target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup <em>Intentional Element Group</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup
+ * @generated
+ */
+ public Adapter createIntentionalElementGroupAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest <em>Opaque Request</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest
+ * @generated
+ */
+ public Adapter createOpaqueRequestAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.sysml16.modelelements.ElementGroup <em>Element Group</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.sysml16.modelelements.ElementGroup
+ * @generated
+ */
+ public Adapter createElementGroupAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} // ClusterAdapterFactory
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/util/ClusterSwitch.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/util/ClusterSwitch.java
new file mode 100755
index 0000000..a2f83b8
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src-gen/org/eclipse/papyrus/sysml16/elementgroup/cluster/util/ClusterSwitch.java
@@ -0,0 +1,182 @@
+/**
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.sysml16.elementgroup.cluster.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.*;
+
+import org.eclipse.papyrus.sysml16.modelelements.ElementGroup;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.sysml16.elementgroup.cluster.ClusterPackage
+ * @generated
+ */
+public class ClusterSwitch<T> extends Switch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected static ClusterPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ClusterSwitch() {
+ if (modelPackage == null) {
+ modelPackage = ClusterPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param ePackage
+ * the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case ClusterPackage.INTENTIONAL_ELEMENT_GROUP: {
+ IntentionalElementGroup intentionalElementGroup = (IntentionalElementGroup) theEObject;
+ T result = caseIntentionalElementGroup(intentionalElementGroup);
+ if (result == null) {
+ result = caseElementGroup(intentionalElementGroup);
+ }
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ case ClusterPackage.OPAQUE_REQUEST: {
+ OpaqueRequest opaqueRequest = (OpaqueRequest) theEObject;
+ T result = caseOpaqueRequest(opaqueRequest);
+ if (result == null) {
+ result = defaultCase(theEObject);
+ }
+ return result;
+ }
+ default:
+ return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Intentional Element Group</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Intentional Element Group</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIntentionalElementGroup(IntentionalElementGroup object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Opaque Request</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Opaque Request</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseOpaqueRequest(OpaqueRequest object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Element Group</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Element Group</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseElementGroup(ElementGroup object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} // ClusterSwitch
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/Activator.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/Activator.java
new file mode 100644
index 0000000..376e3c2
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/Activator.java
@@ -0,0 +1,66 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ /** The plug-in ID **/
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.sysml16.elementgroup"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/IRequestDispatcher.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/IRequestDispatcher.java
new file mode 100644
index 0000000..4410c76
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/IRequestDispatcher.java
@@ -0,0 +1,40 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.api;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * This Interface declare method to execute a request
+ *
+ */
+public interface IRequestDispatcher {
+
+ /**
+ * @param language
+ * the type of the language to execute the request
+ * @param context
+ * the element context
+ * @param request
+ * the request
+ * @return the list of element
+ * @throws Exception
+ * if the language is not knew or if the request is bad build.
+ */
+ BasicEList<Element> executeRequest(String language, EObject context, String request) throws Exception;
+
+}
\ No newline at end of file
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/RequestDispatcherDelegation.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/RequestDispatcherDelegation.java
new file mode 100644
index 0000000..ca38cc9
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/RequestDispatcherDelegation.java
@@ -0,0 +1,40 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.api;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.sysml16.elementgroup.internal.RequestDispatcher;
+import org.eclipse.uml2.uml.Element;
+
+
+/**
+ * This class is used to execute request from the model
+ *
+ */
+public class RequestDispatcherDelegation implements IRequestDispatcher {
+
+ private RequestDispatcher requestDispatcher = new RequestDispatcher();
+
+
+ /**
+ * @see org.eclipse.papyrus.sysml16.elementgroup.api.IRequestDispatcher#executeRequest(java.lang.String, org.eclipse.emf.ecore.EObject, java.lang.String)
+ */
+
+ @Override
+ public BasicEList<Element> executeRequest(String language, EObject context, String request) throws Exception {
+ return requestDispatcher.executeRequest(language, context, request);
+ }
+}
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/copy/IRequestDispatcher.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/copy/IRequestDispatcher.java
new file mode 100755
index 0000000..af2e172
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/copy/IRequestDispatcher.java
@@ -0,0 +1,40 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.api.copy;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * This Interface declare method to execute a request
+ *
+ */
+public interface IRequestDispatcher {
+
+ /**
+ * @param language
+ * the type of the language to execute the request
+ * @param context
+ * the element context
+ * @param request
+ * the request
+ * @return the list of element
+ * @throws Exception
+ * if the language is not knew or if the request is bad build.
+ */
+ BasicEList<Element> executeRequest(String language, EObject context, String request) throws Exception;
+
+}
\ No newline at end of file
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/copy/RequestDispatcherDelegation.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/copy/RequestDispatcherDelegation.java
new file mode 100755
index 0000000..0171cae
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/api/copy/RequestDispatcherDelegation.java
@@ -0,0 +1,40 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.api.copy;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.sysml16.elementgroup.internal.RequestDispatcher;
+import org.eclipse.uml2.uml.Element;
+
+
+/**
+ * This class is used to execute request from the model
+ *
+ */
+public class RequestDispatcherDelegation implements IRequestDispatcher {
+
+ private RequestDispatcher requestDispatcher = new RequestDispatcher();
+
+
+ /**
+ * @see org.eclipse.papyrus.sysml16.elementgroup.api.IRequestDispatcher#executeRequest(java.lang.String, org.eclipse.emf.ecore.EObject, java.lang.String)
+ */
+
+ @Override
+ public BasicEList<Element> executeRequest(String language, EObject context, String request) throws Exception {
+ return requestDispatcher.executeRequest(language, context, request);
+ }
+}
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/internal/RequestDispatcher.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/internal/RequestDispatcher.java
new file mode 100644
index 0000000..0a157e3
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/internal/RequestDispatcher.java
@@ -0,0 +1,82 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.internal;
+
+import java.util.Collection;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.ocl.pivot.ExpressionInOCL;
+import org.eclipse.ocl.pivot.utilities.OCL;
+import org.eclipse.ocl.pivot.utilities.OCLHelper;
+import org.eclipse.ocl.pivot.values.SetValue;
+import org.eclipse.papyrus.sysml16.elementgroup.api.IRequestDispatcher;
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * This class is used to execute request from the model
+ * for the moment only OCL requests can be interpreted
+ *
+ */
+public class RequestDispatcher implements IRequestDispatcher {
+ private static final String OCL_LANGUAGE = "OCL"; //$NON-NLS-1$
+
+ /**
+ * execute an OCL request
+ *
+ * @param context
+ * the OCL context
+ * @param request
+ * the OCL that represent a request
+ * @return a list of element
+ * @throws Exception
+ * if the request is bad build
+ */
+ @SuppressWarnings("unchecked")
+ public BasicEList<Element> executeOCLRequest(EObject context, String request) throws Exception {
+ OCL ocl = OCL.newInstance();
+ org.eclipse.ocl.pivot.Class contextType = ocl.getContextType(context);
+ OCLHelper oclHelper = ocl.createOCLHelper(contextType);
+ ExpressionInOCL createQuery = oclHelper.createQuery(request);
+ Object evaluate = ocl.evaluate(context, createQuery);
+ if (evaluate instanceof SetValue) {
+ return new BasicEList<Element>((Collection<? extends Element>) ((SetValue) evaluate).getElements());
+ }
+ return new BasicEList<Element>();
+ }
+
+ /**
+ * @param language
+ * the type of the language to execute the request
+ * @param context
+ * the element context
+ * @param request
+ * the request
+ * @return the list of element
+ * @throws Exception
+ * if the language is not knew or if the request is bad build.
+ */
+ public BasicEList<Element> executeRequest(String language, EObject context, String request) throws Exception {
+ if (language != null) {
+ if (OCL_LANGUAGE.equals(language)) {
+ return executeOCLRequest(context, request);
+ }
+ throw new ExecutionException("The language is not knew"); //$NON-NLS-1$
+
+ }
+ throw new ExecutionException("The language cannot be null"); //$NON-NLS-1$
+ }
+}
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/internal/impl/CustomClusterFactoryImpl.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/internal/impl/CustomClusterFactoryImpl.java
new file mode 100644
index 0000000..1eed545
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/internal/impl/CustomClusterFactoryImpl.java
@@ -0,0 +1,34 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.internal.impl;
+
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.ClusterFactoryImpl;
+
+
+/**
+ * This overload the generated in order to create a CustomDynamicCluster.
+ * It implement the EditionReq003: It is possible to fill a property of the stereotype "DynamicCluster" in order to write the request.*
+ *
+ */
+public class CustomClusterFactoryImpl extends ClusterFactoryImpl {
+
+ @Override
+ public IntentionalElementGroup createIntentionalElementGroup() {
+ IntentionalElementGroup dynamicCluster = new CustomIntentionalElementGroupImpl();
+ return dynamicCluster;
+ }
+
+}
diff --git a/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/internal/impl/CustomIntentionalElementGroupImpl.java b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/internal/impl/CustomIntentionalElementGroupImpl.java
new file mode 100644
index 0000000..1c991ff
--- /dev/null
+++ b/plugins/extension/elementgroup/org.eclipse.papyrus.sysml16.elementgroup/src/org/eclipse/papyrus/sysml16/elementgroup/internal/impl/CustomIntentionalElementGroupImpl.java
@@ -0,0 +1,138 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.sysml16.elementgroup.internal.impl;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.util.EcoreEList.UnmodifiableEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.edit.command.SetCommand;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.papyrus.sysml16.elementgroup.api.IRequestDispatcher;
+import org.eclipse.papyrus.sysml16.elementgroup.api.RequestDispatcherDelegation;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.IntentionalElementGroup;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.OpaqueRequest;
+import org.eclipse.papyrus.sysml16.elementgroup.cluster.internal.impl.IntentionalElementGroupImpl;
+import org.eclipse.papyrus.sysml16.modelelements.ModelElementsPackage;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * This overload the generated in order to create a CustomDynamicCluster.
+ * It implement the EditionReq003: It is possible to fill a property of the stereotype "DynamicCluster" in order to write the request.*
+ *
+ */
+@SuppressWarnings("restriction")
+public class CustomIntentionalElementGroupImpl extends IntentionalElementGroupImpl implements IntentionalElementGroup {
+
+ protected IRequestDispatcher requestDispatcherDelegation = new RequestDispatcherDelegation();
+
+ /**
+ * Constructor.
+ *
+ */
+ public CustomIntentionalElementGroupImpl() {
+ super();
+ }
+
+ protected EList<OpaqueRequest> computedBy;
+
+ @Override
+ public EList<Element> getComputedMembers() {
+ if (getComputedBy().size() > 0) {
+ OpaqueRequest opaqueRequest = getComputedBy().get(0);
+ try {
+ return requestDispatcherDelegation.executeRequest(opaqueRequest.getLanguage(), this.getBase_Comment(), opaqueRequest.getRequest());
+ } catch (Exception e) {
+ String body = this.getBase_Comment().getBody();
+ IEditingDomainProvider domainProvider = (IEditingDomainProvider) EcoreUtil.getExistingAdapter(this.getBase_Comment().eResource().getResourceSet(), IEditingDomainProvider.class);
+ SetCommand setCommand = new SetCommand(domainProvider.getEditingDomain(), this.getBase_Comment(), UMLPackage.eINSTANCE.getComment_Body(), body + "\n" + e); //$NON-NLS-1$
+ domainProvider.getEditingDomain().getCommandStack().execute(setCommand);
+ return new BasicEList<Element>();
+ }
+ }
+
+ return new BasicEList<Element>();
+ }
+
+ /**
+ * 7.3.2.2 ElementGroup : /criterion[0..1]: String Specifies the rationale for being member of the group.
+ * Adding an element to the group asserts that the criterion applies to this element.
+ * Derived from Comment::body.
+ *
+ * @see org.eclipse.papyrus.sysml14.modelelements.internal.impl.ElementGroupImpl#getCriterion()
+ * <p>
+ * See the requirement <b>{@papyrus.req org.eclipse.papyrus.sysml14#Req014}</b>.
+ * @return
+ */
+ @Override
+ public String getCriterion() {
+ String criterion = ""; //$NON-NLS-1$
+ Comment comment = getBase_Comment();
+ if (comment != null) {
+ criterion = comment.getBody();
+ }
+ return criterion;
+ }
+
+
+ /**
+ * 7.3.2.2 ElementGroup : /criterion[0..1]: String Specifies the rationale for being member of the group.
+ * Adding an element to the group asserts that the criterion applies to this element.
+ * Derived from Comment::body.
+ *
+ * @see org.eclipse.papyrus.sysml14.modelelements.internal.impl.ElementGroupImpl#setCriterion(java.lang.String)
+ *
+ * @param newCriterion
+ */
+ public void setCriterion(String newCriterion) {
+ Comment comment = getBase_Comment();
+ if (comment != null) {
+ comment.setBody(newCriterion);
+ }
+ }
+
+ /**
+ *
+ * 7.3.2.2 ElementGroup : /member: Element[0..*] Set specifying the members of the group.
+ * Derived from Comment::annotatedElement.
+ *
+ * @see org.eclipse.papyrus.sysml14.modelelements.internal.impl.ElementGroupImpl#getMember()
+ *
+ * @return
+ */
+ @Override
+ public EList<Element> getMember() {
+ BasicEList<Element> elementEList = new BasicEList<>();
+ Comment comment = getBase_Comment();
+ if (comment != null) {
+ elementEList.addAll(comment.getAnnotatedElements());
+ }
+ return new UnmodifiableEList<>(this, ModelElementsPackage.eINSTANCE.getElementGroup_Member(), elementEList.size(), elementEList.toArray());
+ }
+
+ /**
+ * 7.3.2.2 ElementGroup : /size: Integer Number of members in the group. Derived.
+ *
+ * @see org.eclipse.papyrus.sysml14.modelelements.internal.impl.ElementGroupImpl#getSize()
+ *
+ * @return
+ */
+ @Override
+ public int getSize() {
+ return getMember().size();
+ }
+}
diff --git a/plugins/extension/elementgroup/pom.xml b/plugins/extension/elementgroup/pom.xml
new file mode 100644
index 0000000..4757618
--- /dev/null
+++ b/plugins/extension/elementgroup/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+
+ <parent>
+ <groupId>org.eclipse.papyrus.sysml</groupId>
+ <artifactId>org.eclipse.papyrus.sysml16.extensions</artifactId>
+ <version>2.0.0-SNAPSHOT</version>
+ </parent>
+
+
+ <artifactId>org.eclipse.papyrus.sysml16.elementgroup.plugins</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>pom</packaging>
+
+ <name>Element group SysML Plugins</name>
+ <description>Container of the Element group SysML Plugins</description>
+
+ <modules>
+ <module>org.eclipse.papyrus.sysml16.elementgroup</module>
+ <module>org.eclipse.papyrus.sysml16.elementgroup.ui</module>
+ </modules>
+</project>
diff --git a/plugins/extension/pom.xml b/plugins/extension/pom.xml
index 6ddf716..03dd624 100644
--- a/plugins/extension/pom.xml
+++ b/plugins/extension/pom.xml
@@ -12,5 +12,6 @@
<description>The extensions described in the SysML Profile</description>
<modules>
<module>RequirementsExtension</module>
+ <module>elementgroup</module>
</modules>
</project>
diff --git a/plugins/gui/org.eclipse.papyrus.sysml16.modelexplorer/META-INF/MANIFEST.MF b/plugins/gui/org.eclipse.papyrus.sysml16.modelexplorer/META-INF/MANIFEST.MF
index c30d680..6d92403 100644
--- a/plugins/gui/org.eclipse.papyrus.sysml16.modelexplorer/META-INF/MANIFEST.MF
+++ b/plugins/gui/org.eclipse.papyrus.sysml16.modelexplorer/META-INF/MANIFEST.MF
@@ -21,3 +21,4 @@
org.eclipse.papyrus.emf.facet.efacet.metamodel;bundle-version="[2.0.0,3.0.0)",
org.eclipse.papyrus.emf.facet.query.java.metamodel;bundle-version="[2.0.0,3.0.0)"
Export-Package: org.eclipse.papyrus.sysml16.modelexplorer
+Bundle-Localization: plugin
diff --git a/releng/org.eclipse.papyrus.sysml16.p2/category.xml b/releng/org.eclipse.papyrus.sysml16.p2/category.xml
index 2c87c97..f40ef43 100644
--- a/releng/org.eclipse.papyrus.sysml16.p2/category.xml
+++ b/releng/org.eclipse.papyrus.sysml16.p2/category.xml
@@ -12,6 +12,9 @@
<feature url="features/org.eclipse.papyrus.sysml16.requirements.extension.feature.source_2.0.0.qualifier.jar" id="org.eclipse.papyrus.sysml16.requirements.extension.feature.source" version="2.0.0.qualifier">
<category name="org.eclipse.papyrus.category"/>
</feature>
+ <feature url="features/org.eclipse.papyrus.sysml16.elementgroup.feature_1.0.0.qualifier.jar" id="org.eclipse.papyrus.sysml16.elementgroup.feature" version="1.0.0.qualifier">
+ <category name="org.eclipse.papyrus.category"/>
+ </feature>
<category-def name="org.eclipse.papyrus.category" label="Papyrus SysML 1.6 Category">
<description>
Papyrus SysML 1.6 Category
diff --git a/releng/org.eclipse.papyrus.sysml16.product/papyrusSysml.product b/releng/org.eclipse.papyrus.sysml16.product/papyrusSysml.product
index 77499d5..83f9740 100644
--- a/releng/org.eclipse.papyrus.sysml16.product/papyrusSysml.product
+++ b/releng/org.eclipse.papyrus.sysml16.product/papyrusSysml.product
@@ -110,6 +110,7 @@
<feature id="org.eclipse.papyrus.sdk.feature"/>
<feature id="org.eclipse.papyrus.sysml16.feature"/>
<feature id="org.eclipse.papyrus.sysml16.rcp.feature"/>
+ <feature id="org.eclipse.papyrus.sysml16.elementgroup.feature"/>
</features>
<configurations>
@@ -120,14 +121,15 @@
<plugin id="org.eclipse.equinox.p2.reconciler.dropins" autoStart="true" startLevel="4" />
<plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />
<plugin id="org.eclipse.update.configurator" autoStart="true" startLevel="3" />
- <property name="osgi.bundles.defaultStartLevel" value="4" />
- <property name="osgi.instance.area.default" value="@user.home/workspace-papyrus-sysml" />
- <property name="osgi.requiredJavaVersion" value="11" />
<property name="org.eclipse.update.reconcile" value="false" />
+ <property name="osgi.bundles.defaultStartLevel" value="4" />
+ <property name="osgi.requiredJavaVersion" value="11" />
+ <property name="osgi.instance.area.default" value="@user.home/workspace-papyrus-sysml" />
</configurations>
<repositories>
<repository location="http://https://download.eclipse.org/modeling/mdt/papyrus/updates/releases/2021-03" enabled="true" />
+ <repository location="http://https://download.eclipse.org/modeling/mdt/papyrus/updates/releases/2021-03" enabled="true" />
</repositories>
<preferencesInfo>
diff --git a/releng/org.eclipse.papyrus.sysml16.rcp/plugin.properties b/releng/org.eclipse.papyrus.sysml16.rcp/plugin.properties
index ffd40ab..b179f0d 100644
--- a/releng/org.eclipse.papyrus.sysml16.rcp/plugin.properties
+++ b/releng/org.eclipse.papyrus.sysml16.rcp/plugin.properties
@@ -10,6 +10,6 @@
# Contributors:
# Nicolas FAUVERGUE (CEA LIST) nicolas.fauvergue@cea.fr - Initial API and implementation
##################################################################################
-Bundle-Name=Papyrus Sysml 1.6 RCP
+Bundle-Name=Papyrus SysML 1.6 RCP
Bundle-Vendor=Eclipse Modeling Project
Bundle-Description=This plug-in contains the information to build the SysML 1.6 Rcp