Merge "[PapyrusReq] add Allocation Matrix and update existing matrix"
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/.classpath b/plugins/proxy/org.eclipse.papyrus.proxy.ui/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.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-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/.project b/plugins/proxy/org.eclipse.papyrus.proxy.ui/.project
new file mode 100644
index 0000000..169b589
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.proxy.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/proxy/org.eclipse.papyrus.proxy.ui/.settings/org.eclipse.jdt.core.prefs b/plugins/proxy/org.eclipse.papyrus.proxy.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/META-INF/MANIFEST.MF b/plugins/proxy/org.eclipse.papyrus.proxy.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..cbe34b6
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.proxy.ui;singleton:=true
+Bundle-Version: 0.7.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Localization: plugin
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.osgi;bundle-version="3.12.50",
+ org.eclipse.ui.workbench;bundle-version="3.110.1",
+ org.eclipse.core.runtime;bundle-version="3.13.0",
+ org.eclipse.ui;bundle-version="3.109.0",
+ org.eclipse.uml2.uml,
+ org.eclipse.papyrus.proxy;bundle-version="0.7.0",
+ org.eclipse.emf.edit.ui,
+ org.eclipse.core.resources,
+ org.eclipse.papyrus.infra.ui
+Bundle-Activator: org.eclipse.papyrus.proxy.ui.Activator
+Bundle-Vendor: %providerName
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/about.html b/plugins/proxy/org.eclipse.papyrus.proxy.ui/about.html
new file mode 100644
index 0000000..d35d5ae
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/about.html
@@ -0,0 +1,28 @@
+<!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>June 5, 2007</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 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</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>
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/build.properties b/plugins/proxy/org.eclipse.papyrus.proxy.ui/build.properties
new file mode 100644
index 0000000..e9863e2
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/plugin.properties b/plugins/proxy/org.eclipse.papyrus.proxy.ui/plugin.properties
new file mode 100644
index 0000000..ddcab68
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/plugin.properties
@@ -0,0 +1,14 @@
+#################################################################################
+# Copyright (c) 2008, 2017 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr - initial API and implementation
+##################################################################################
+pluginName=GUI Proxy plugin
+providerName=Eclipse Modeling Project
+
+pluginDescription=The goal of this plugin is to bring GUI to connect other element of the environment
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/plugin.xml b/plugins/proxy/org.eclipse.papyrus.proxy.ui/plugin.xml
new file mode 100644
index 0000000..28c810c
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/plugin.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.proxy.ui.handler.LinkToEcoreModelHandler"
+ description="Link to ecore element"
+ id="org.eclipse.papyrus.proxy.ui.handler.LinkToEcoreModelHandler"
+ name="Link to ecore element">
+ </command>
+ </extension>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.papyrus.views.modelexplorer.modelexplorer.popup">
+ <command
+ commandId="org.eclipse.papyrus.proxy.ui.handler.LinkToEcoreModelHandler"
+ id="org.eclipse.papyrus.proxy.ui.handler.LinkToEcoreModelMenu"
+ label="Link to ecore element"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension
+ point="org.eclipse.ui.startup">
+ <startup
+ class="org.eclipse.papyrus.proxy.ui.Activator">
+ </startup>
+ </extension>
+
+</plugin>
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/Activator.java b/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/Activator.java
new file mode 100644
index 0000000..9122916
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/Activator.java
@@ -0,0 +1,61 @@
+package org.eclipse.papyrus.proxy.ui;
+
+import org.eclipse.ui.IStartup;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * This class manage the launch and stop of the plugin
+ *
+ */
+public class Activator extends AbstractUIPlugin implements IStartup {
+
+ /** The plug-in ID **/
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.proxy.ui"; //$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;
+ }
+
+ @Override
+ public void earlyStartup() {
+ // TODO Auto-generated method stub
+
+ }
+
+
+}
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/apiaccess/PapyrusResourceAccess.java b/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/apiaccess/PapyrusResourceAccess.java
new file mode 100644
index 0000000..100b8e1
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/apiaccess/PapyrusResourceAccess.java
@@ -0,0 +1,162 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.proxy.ui.apiaccess;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
+import org.eclipse.papyrus.infra.ui.editor.IMultiDiagramEditor;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
+import org.eclipse.ui.dialogs.PatternFilter;
+import org.eclipse.ui.model.BaseWorkbenchContentProvider;
+import org.eclipse.ui.model.WorkbenchLabelProvider;
+import org.osgi.framework.ServiceException;
+
+
+/**
+ * This class is used to access of loading file by using papyrus
+ *
+ */
+public class PapyrusResourceAccess {
+
+ protected ModelSet modelSet;
+
+ /**
+ *
+ * @return the editing domain of papyrus
+ */
+ public TransactionalEditingDomain getDomain() {
+ return getCurrentModelSet().getTransactionalEditingDomain();
+ }
+
+ public EObject getRootEObjectFromResource() {
+ ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(Display.getDefault().getActiveShell(), new WorkbenchLabelProvider(), new BaseWorkbenchContentProvider());
+ dialog.setInput(ResourcesPlugin.getWorkspace().getRoot());
+
+ PatternFilter UMLPattern = new PatternFilter() {
+ @Override
+ public boolean isElementVisible(Viewer viewer, Object element) {
+ if (viewer != null) {
+ return super.isElementVisible(viewer, element);
+ }
+ return true;
+ }
+ };
+ UMLPattern.setPattern("*.*");
+ dialog.setAllowMultiple(false);
+ dialog.addFilter(UMLPattern);
+ dialog.open();
+ if (dialog.getResult().length > 0) {
+ Object object = dialog.getResult()[0];
+ if (object instanceof IFile) {
+ IFile aReviewModel = ((IFile) object);
+ Resource tmpResource = getCurrentModelSet().getResource(URI.createPlatformResourceURI(aReviewModel.getFullPath().toOSString(), true), true);
+ return tmpResource.getContents().get(0);
+
+ }
+ }
+ return null;
+ }
+
+ /**
+ * used to get the the current workbenchPart
+ *
+ * @return
+ */
+ protected IWorkbenchPart getBootstrapPart() {
+
+
+ IWorkbenchPart part = null;
+ try {
+ IWorkbenchWindow activeWorkbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ if (activeWorkbenchWindow != null) {
+ IWorkbenchPage activePage = activeWorkbenchWindow.getActivePage();
+ if (activePage != null) {
+ part = activePage.getActiveEditor();
+ }
+ }
+ } catch (NullPointerException e) {
+ // An element is not active yet
+ return null;
+ }
+ if (isImportant(part)) {
+ return part;
+ }
+ // The current active part is not for us.
+ return null;
+ }
+
+ /**
+ * return true if the activated part is a {@link IMultiDiagramEditor}.
+ *
+ * @see org.eclipse.ui.part.PageBookView#isImportant(org.eclipse.ui.IWorkbenchPart)
+ *
+ * @param part
+ * @return
+ */
+ protected boolean isImportant(IWorkbenchPart part) {
+
+
+ if (part instanceof IMultiDiagramEditor) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ *
+ * @return the current model set of papyrus.
+ */
+ public ModelSet getCurrentModelSet() {
+ if (modelSet != null) {
+ return modelSet;
+ }
+ IWorkbenchPart part = getBootstrapPart();
+ if (part instanceof IMultiDiagramEditor) {
+ try {
+ modelSet = getServiceRegistry().getService(ModelSet.class);
+ } catch (ServiceException e) {
+ e.printStackTrace();
+ } catch (org.eclipse.papyrus.infra.core.services.ServiceException e) {
+ e.printStackTrace();
+ }
+ }
+ return modelSet;
+ }
+
+ /**
+ * @return current service registry
+ */
+ public ServicesRegistry getServiceRegistry() {
+ IWorkbenchPart part = getBootstrapPart();
+ if (part instanceof IMultiDiagramEditor) {
+ ServicesRegistry registry = ((IMultiDiagramEditor) part).getServicesRegistry();
+ return registry;
+ }
+ return null;
+ }
+
+}
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/handler/LinkToEcoreModelHandler.java b/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/handler/LinkToEcoreModelHandler.java
new file mode 100644
index 0000000..88fadd9
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/handler/LinkToEcoreModelHandler.java
@@ -0,0 +1,48 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.proxy.ui.handler;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.proxy.command.SetEReferenceCommand;
+import org.eclipse.papyrus.proxy.proxy.EcoreReference;
+import org.eclipse.papyrus.proxy.ui.apiaccess.PapyrusResourceAccess;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+public class LinkToEcoreModelHandler extends ProxyAbstractHandler {
+
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ PapyrusResourceAccess papyrusResourceAccess = new PapyrusResourceAccess();
+ EObject root = papyrusResourceAccess.getRootEObjectFromResource();
+ if (root != null) {
+ SetEReferenceCommand setEReferenceCommand = new SetEReferenceCommand(papyrusResourceAccess.getDomain(), getSelection(), root);
+ papyrusResourceAccess.getDomain().getCommandStack().execute(setEReferenceCommand);
+ }
+ return null;
+ }
+
+
+ @Override
+ public boolean isEnabled() {
+ Element selectedElement = getSelection();
+ if (UMLUtil.getStereotypeApplication(selectedElement, EcoreReference.class) != null) {
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/handler/ProxyAbstractHandler.java b/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/handler/ProxyAbstractHandler.java
new file mode 100644
index 0000000..39099e8
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/handler/ProxyAbstractHandler.java
@@ -0,0 +1,92 @@
+/*****************************************************************************
+ * Copyright (c) 2014, 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.proxy.ui.handler;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.ISelectionService;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * This is an abstract handler that can be used by other handlers. it provides methods to get list of selected elements.
+ *
+ */
+public abstract class ProxyAbstractHandler extends AbstractHandler {
+
+ /**
+ * the constructor
+ */
+ public ProxyAbstractHandler() {
+ super();
+ }
+
+ /**
+ * getSelected element in the diagram or in hte model explorer
+ *
+ * @return Element or null
+ */
+ protected Element getSelection() {
+ org.eclipse.uml2.uml.Element selectedElement = null;
+ final ISelectionService selectionService = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService();
+ final ISelection selection = selectionService.getSelection();
+
+ if (selection instanceof IStructuredSelection) {
+ final Object selectedobject = ((IStructuredSelection) selection).getFirstElement();
+
+ if (selectedobject instanceof IAdaptable) {
+ final EObject selectedEObject = ((IAdaptable) selectedobject).getAdapter(EObject.class);
+ if (selectedEObject instanceof org.eclipse.uml2.uml.Element) {
+ selectedElement = (Element) selectedEObject;
+ }
+ }
+
+ return selectedElement;
+ }
+ return null;
+ }
+
+ /**
+ * getSelected element in the diagram or in hte model explorer
+ *
+ * @return Element or null
+ */
+ protected ArrayList<Element> getSelectionSet() {
+ ArrayList<Element> selectedSet = new ArrayList<Element>();
+ ISelectionService selectionService = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService();
+ ISelection selection = selectionService.getSelection();
+
+ // look for papyrus
+
+ if (selection instanceof IStructuredSelection) {
+ @SuppressWarnings("rawtypes")
+ Iterator selectedobjectIteractor = ((IStructuredSelection) selection).iterator();
+ while (selectedobjectIteractor.hasNext()) {
+ Object currentSelection = selectedobjectIteractor.next();
+ if (currentSelection instanceof org.eclipse.uml2.uml.Element) {
+ selectedSet.add((Element) currentSelection);
+ }
+ }
+
+
+ }
+ return selectedSet;
+ }
+}
\ No newline at end of file
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/.classpath b/plugins/proxy/org.eclipse.papyrus.proxy/.classpath
new file mode 100644
index 0000000..2ff2a90
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/.classpath
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src-gen">
+ <attributes>
+ <attribute name="ignore_optional_problems" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/.project b/plugins/proxy/org.eclipse.papyrus.proxy/.project
new file mode 100644
index 0000000..776fe76
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.proxy</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/proxy/org.eclipse.papyrus.proxy/.settings/org.eclipse.jdt.core.prefs b/plugins/proxy/org.eclipse.papyrus.proxy/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..beab376
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,26 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
+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=protected
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/META-INF/MANIFEST.MF b/plugins/proxy/org.eclipse.papyrus.proxy/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..643f47a
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/META-INF/MANIFEST.MF
@@ -0,0 +1,25 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.proxy;singleton:=true
+Bundle-Version: 0.7.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.papyrus.proxy,
+ org.eclipse.papyrus.proxy.command,
+ org.eclipse.papyrus.proxy.proxy,
+ org.eclipse.papyrus.proxy.proxy.impl,
+ org.eclipse.papyrus.proxy.proxy.util
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.osgi,
+ org.eclipse.ui.workbench,
+ org.eclipse.core.runtime;bundle-version="3.13.0",
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.uml2.types;visibility:=reexport,
+ org.eclipse.uml2.uml;visibility:=reexport,
+ org.eclipse.papyrus.uml.extensionpoints;bundle-version="1.3.0",
+ org.eclipse.ui;bundle-version="3.109.0",
+ org.eclipse.emf.transaction
+Bundle-Activator: org.eclipse.papyrus.proxy.Activator
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/about.html b/plugins/proxy/org.eclipse.papyrus.proxy/about.html
new file mode 100644
index 0000000..d35d5ae
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/about.html
@@ -0,0 +1,28 @@
+<!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>June 5, 2007</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 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</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>
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/build.properties b/plugins/proxy/org.eclipse.papyrus.proxy/build.properties
new file mode 100644
index 0000000..cc3c96b
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/build.properties
@@ -0,0 +1,11 @@
+#
+
+bin.includes = .,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties,\
+ resource/
+jars.compile.order = .
+source.. = src-gen/,\
+ src/
+output.. = bin/
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/plugin.properties b/plugins/proxy/org.eclipse.papyrus.proxy/plugin.properties
new file mode 100644
index 0000000..e28a64e
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/plugin.properties
@@ -0,0 +1,14 @@
+#################################################################################
+# Copyright (c) 2008, 2017 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr - initial API and implementation
+##################################################################################
+pluginName=proxy plugin
+providerName=Eclipse Modeling Project
+
+pluginDescription=The goal of this plugin is to bring to other element of the environment
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/plugin.xml b/plugins/proxy/org.eclipse.papyrus.proxy/plugin.xml
new file mode 100644
index 0000000..a7b9aff
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/plugin.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <!-- @generated proxy -->
+ <package
+ uri="http://org.eclipse.papyrus/proxy"
+ class="org.eclipse.papyrus.proxy.proxy.ProxyPackage"
+ genModel="resource/profil/proxy.genmodel"/>
+ </extension>
+ <extension
+ point="org.eclipse.papyrus.uml.extensionpoints.UMLProfile">
+ <profile
+ description="This profile is used to connect to other model of file of this environment"
+ iconpath="resource/icons/reference.GIF"
+ name="Proxy profile"
+ path="platform:/plugin/org.eclipse.papyrus.proxy/resource/profil/Proxy.profile.uml"
+ qualifiednames="QSProject">
+ </profile>
+ </extension>
+ <extension
+ point="org.eclipse.uml2.uml.generated_package">
+ <profile
+ location="platform:/plugin/org.eclipse.papyrus.proxy/resource/profil/Proxy.profile.uml#_yTEaoK9cEeeX4J2fh1dVPQ"
+ uri="http://org.eclipse.papyrus/proxy">
+ </profile>
+ </extension>
+
+</plugin>
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/resource/icons/reference.GIF b/plugins/proxy/org.eclipse.papyrus.proxy/resource/icons/reference.GIF
new file mode 100644
index 0000000..4914941
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/resource/icons/reference.GIF
Binary files differ
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/Proxy.profile.di b/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/Proxy.profile.di
new file mode 100644
index 0000000..247ed5e
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/Proxy.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/proxy/org.eclipse.papyrus.proxy/resource/profil/Proxy.profile.notation b/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/Proxy.profile.notation
new file mode 100644
index 0000000..e11d2de
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/Proxy.profile.notation
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram 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:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/gmfdiag/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_yYRqwK9cEeeX4J2fh1dVPQ" type="PapyrusUMLProfileDiagram" name="Profile Diagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_2OGFwK9cEeeX4J2fh1dVPQ" type="Class_MetaclassShape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2P-VEK9cEeeX4J2fh1dVPQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2P-8IK9cEeeX4J2fh1dVPQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2P-8Ia9cEeeX4J2fh1dVPQ" key="StereotypeList" value="StandardProfile::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2P-8Iq9cEeeX4J2fh1dVPQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2P-8I69cEeeX4J2fh1dVPQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2P-8JK9cEeeX4J2fh1dVPQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_2POHIK9cEeeX4J2fh1dVPQ" type="Class_MetaclassNameLabel"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2POuMK9cEeeX4J2fh1dVPQ" x="380" y="80" width="141"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_2WVbwK9cEeeX4J2fh1dVPQ" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_2WVbwa9cEeeX4J2fh1dVPQ"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_2WWC0K9cEeeX4J2fh1dVPQ" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2WVbwq9cEeeX4J2fh1dVPQ" x="580" y="80"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3OsAEK9cEeeX4J2fh1dVPQ" type="Stereotype_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3OtOMK9cEeeX4J2fh1dVPQ" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3OvDYK9cEeeX4J2fh1dVPQ" type="Stereotype_AttributeCompartment">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_e73QkLIpEeeoUNX41D-9qA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_e73QkbIpEeeoUNX41D-9qA" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:Shape" xmi:id="_gq4XILIpEeeoUNX41D-9qA" type="Property_ClassAttributeLabel">
+ <element xmi:type="uml:Property" href="Proxy.profile.uml#_gqTvYLIpEeeoUNX41D-9qA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gq4XIbIpEeeoUNX41D-9qA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_3OvDYa9cEeeX4J2fh1dVPQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3OvDYq9cEeeX4J2fh1dVPQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3OvqcK9cEeeX4J2fh1dVPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Ovqca9cEeeX4J2fh1dVPQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Ovqcq9cEeeX4J2fh1dVPQ" visible="false" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_3Ovqc69cEeeX4J2fh1dVPQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3OvqdK9cEeeX4J2fh1dVPQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Ovqda9cEeeX4J2fh1dVPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Ovqdq9cEeeX4J2fh1dVPQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="Proxy.profile.uml#_3OjdMK9cEeeX4J2fh1dVPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3OsAEa9cEeeX4J2fh1dVPQ" x="520" y="420" height="81"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bk1d8bC2EeeytNa0G5wlRQ" type="Stereotype_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bk1d87C2EeeytNa0G5wlRQ" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bk_O8LC2EeeytNa0G5wlRQ" type="Stereotype_AttributeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bk_O8bC2EeeytNa0G5wlRQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bk_O8rC2EeeytNa0G5wlRQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bk_O87C2EeeytNa0G5wlRQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bk_O9LC2EeeytNa0G5wlRQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bk_O9bC2EeeytNa0G5wlRQ" visible="false" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bk_O9rC2EeeytNa0G5wlRQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bk_O97C2EeeytNa0G5wlRQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bk_O-LC2EeeytNa0G5wlRQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bk_O-bC2EeeytNa0G5wlRQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="Proxy.profile.uml#_bk1d8LC2EeeytNa0G5wlRQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bk1d8rC2EeeytNa0G5wlRQ" x="380" y="220" width="141"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_-bGSMLC2EeeytNa0G5wlRQ" type="Stereotype_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_-bGSMrC2EeeytNa0G5wlRQ" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-bGSM7C2EeeytNa0G5wlRQ" type="Stereotype_AttributeCompartment">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PcN2QLIqEeeoUNX41D-9qA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PcT84LIqEeeoUNX41D-9qA" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:Shape" xmi:id="_RDFtcLIqEeeoUNX41D-9qA" type="Property_ClassAttributeLabel">
+ <element xmi:type="uml:Property" href="Proxy.profile.uml#__zn1kK9cEeeX4J2fh1dVPQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_RDFtcbIqEeeoUNX41D-9qA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-bGSNLC2EeeytNa0G5wlRQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-bGSNbC2EeeytNa0G5wlRQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-bGSNrC2EeeytNa0G5wlRQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-bGSN7C2EeeytNa0G5wlRQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-bGSOLC2EeeytNa0G5wlRQ" visible="false" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-bGSObC2EeeytNa0G5wlRQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-bGSOrC2EeeytNa0G5wlRQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-bGSO7C2EeeytNa0G5wlRQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-bGSPLC2EeeytNa0G5wlRQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="Proxy.profile.uml#_-a8hMLC2EeeytNa0G5wlRQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-bGSMbC2EeeytNa0G5wlRQ" x="180" y="420" width="181" height="81"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_yYRqwa9cEeeX4J2fh1dVPQ" name="diagram_compatibility_version" stringValue="1.3.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_yYRqwq9cEeeX4J2fh1dVPQ"/>
+ <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_yYRqw69cEeeX4J2fh1dVPQ" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+ <owner xmi:type="uml:Profile" href="Proxy.profile.uml#_yTEaoK9cEeeX4J2fh1dVPQ"/>
+ </styles>
+ <element xmi:type="uml:Profile" href="Proxy.profile.uml#_yTEaoK9cEeeX4J2fh1dVPQ"/>
+ <edges xmi:type="notation:Connector" xmi:id="_2WcwgK9cEeeX4J2fh1dVPQ" type="StereotypeCommentLink" source="_2OGFwK9cEeeX4J2fh1dVPQ" target="_2WVbwK9cEeeX4J2fh1dVPQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_2Wcwga9cEeeX4J2fh1dVPQ"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_2WdXkq9cEeeX4J2fh1dVPQ" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2Wcwgq9cEeeX4J2fh1dVPQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2WdXkK9cEeeX4J2fh1dVPQ"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2WdXka9cEeeX4J2fh1dVPQ"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_fhv_cLC2EeeytNa0G5wlRQ" type="Extension_Edge" source="_bk1d8bC2EeeytNa0G5wlRQ" target="_2OGFwK9cEeeX4J2fh1dVPQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_fhv_cbC2EeeytNa0G5wlRQ"/>
+ <element xmi:type="uml:Extension" href="Proxy.profile.uml#_fhKJkLC2EeeytNa0G5wlRQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fhv_crC2EeeytNa0G5wlRQ" points="[420, 220, -643984, -643984]$[440, 130, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fiV1ULC2EeeytNa0G5wlRQ" id="(0.425531914893617,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fiV1UbC2EeeytNa0G5wlRQ" id="(0.425531914893617,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ucIUELC2EeeytNa0G5wlRQ" type="Generalization_Edge" source="_3OsAEK9cEeeX4J2fh1dVPQ" target="_bk1d8bC2EeeytNa0G5wlRQ" routing="Rectilinear">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ucIUE7C2EeeytNa0G5wlRQ" type="Generalization_StereotypeLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_wEIMoLC2EeeytNa0G5wlRQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ucIUFLC2EeeytNa0G5wlRQ" x="-1" y="58"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ucIUEbC2EeeytNa0G5wlRQ"/>
+ <element xmi:type="uml:Generalization" href="Proxy.profile.uml#_ubieMLC2EeeytNa0G5wlRQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ucIUErC2EeeytNa0G5wlRQ" points="[580, 420, -643984, -643984]$[580, 380, -643984, -643984]$[480, 380, -643984, -643984]$[480, 330, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uclAALC2EeeytNa0G5wlRQ" id="(0.603448275862069,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uclAAbC2EeeytNa0G5wlRQ" id="(0.7092198581560284,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_IbHloLC3EeeytNa0G5wlRQ" type="Generalization_Edge" source="_-bGSMLC2EeeytNa0G5wlRQ" target="_bk1d8bC2EeeytNa0G5wlRQ" routing="Rectilinear">
+ <children xmi:type="notation:DecorationNode" xmi:id="_IbHlo7C3EeeytNa0G5wlRQ" type="Generalization_StereotypeLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Iz9jcLC3EeeytNa0G5wlRQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_IbHlpLC3EeeytNa0G5wlRQ" y="59"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_IbHlobC3EeeytNa0G5wlRQ"/>
+ <element xmi:type="uml:Generalization" href="Proxy.profile.uml#_Ia0qsLC3EeeytNa0G5wlRQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_IbHlorC3EeeytNa0G5wlRQ" points="[340, 420, -643984, -643984]$[340, 380, -643984, -643984]$[420, 380, -643984, -643984]$[440, 326, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IbkRkLC3EeeytNa0G5wlRQ" id="(0.6629834254143646,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IbkRkbC3EeeytNa0G5wlRQ" id="(0.28368794326241137,1.0)"/>
+ </edges>
+</notation:Diagram>
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/Proxy.profile.uml b/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/Proxy.profile.uml
new file mode 100644
index 0000000..a8cd637
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/Proxy.profile.uml
@@ -0,0 +1,50 @@
+<?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="_yTEaoK9cEeeX4J2fh1dVPQ" name="Proxy" metaclassReference="_2NiFEK9cEeeX4J2fh1dVPQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OZDN4K9dEeeX4J2fh1dVPQ" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_2NiFEK9cEeeX4J2fh1dVPQ" alias="Element">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ </elementImport>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_5ceMkLKZEeeXdNpCuqJQzg" alias="EObject">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EObject"/>
+ </elementImport>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_yjh4gK9cEeeX4J2fh1dVPQ">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_yjk70K9cEeeX4J2fh1dVPQ">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_3OjdMK9cEeeX4J2fh1dVPQ" name="EcoreReference">
+ <generalization xmi:type="uml:Generalization" xmi:id="_ubieMLC2EeeytNa0G5wlRQ" general="_bk1d8LC2EeeytNa0G5wlRQ"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_gqTvYLIpEeeoUNX41D-9qA" name="ref" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EObject"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uQyMILIpEeeoUNX41D-9qA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uQ6vALIpEeeoUNX41D-9qA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_bk1d8LC2EeeytNa0G5wlRQ" name="Proxy" isAbstract="true">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_fhTTgbC2EeeytNa0G5wlRQ" name="base_Element" association="_fhKJkLC2EeeytNa0G5wlRQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_fhKJkLC2EeeytNa0G5wlRQ" name="E_Proxy_Element1" memberEnd="_fhTTgLC2EeeytNa0G5wlRQ _fhTTgbC2EeeytNa0G5wlRQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_fhTTgLC2EeeytNa0G5wlRQ" name="extension_Proxy" type="_bk1d8LC2EeeytNa0G5wlRQ" aggregation="composite" association="_fhKJkLC2EeeytNa0G5wlRQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_-a8hMLC2EeeytNa0G5wlRQ" name="FileReference">
+ <generalization xmi:type="uml:Generalization" xmi:id="_Ia0qsLC3EeeytNa0G5wlRQ" general="_bk1d8LC2EeeytNa0G5wlRQ"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="__zn1kK9cEeeX4J2fh1dVPQ" name="ref" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_H_tGMK9dEeeX4J2fh1dVPQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_H_5TcK9dEeeX4J2fh1dVPQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_U-8dkLA-Eee0iN1NNqo2iQ" name="defaultValue" value=" "/>
+ </ownedAttribute>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_3d2l8LA3Eee0iN1NNqo2iQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3d_v4LA3Eee0iN1NNqo2iQ" 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="_4zZckLA3Eee0iN1NNqo2iQ" base_Package="_yTEaoK9cEeeX4J2fh1dVPQ" packageName="proxy" nsURI="http://org.eclipse.papyrus/proxy" basePackage="org.eclipse.papyrus.proxy" prefix="Proxy"/>
+</xmi:XMI>
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/proxy.ecore b/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/proxy.ecore
new file mode 100644
index 0000000..ade38b8
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/proxy.ecore
@@ -0,0 +1,18 @@
+<?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="proxy" nsURI="http://org.eclipse.papyrus/proxy" nsPrefix="Proxy">
+ <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <details key="originalName" value="Proxy"/>
+ </eAnnotations>
+ <eClassifiers xsi:type="ecore:EClass" name="EcoreReference" eSuperTypes="#//Proxy">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ref" ordered="false" eType="ecore:EClass ../../../org.eclipse.emf.ecore/model/Ecore.ecore#//EObject"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Proxy" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Element" ordered="false"
+ lowerBound="1" eType="ecore:EClass ../../../org.eclipse.uml2.uml/model/UML.ecore#//Element"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FileReference" eSuperTypes="#//Proxy">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="ref" ordered="false" eType="ecore:EDataType ../../../org.eclipse.uml2.types/model/Types.ecore#//String"
+ defaultValueLiteral=" "/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/proxy.genmodel b/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/proxy.genmodel
new file mode 100644
index 0000000..fdfb1ce
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/proxy.genmodel
@@ -0,0 +1,49 @@
+<?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"
+ modelDirectory="/org.eclipse.papyrus.proxy/src-gen" editDirectory="/org.eclipse.papyrus.proxy.edit/src-gen"
+ editorDirectory="/org.eclipse.papyrus.proxy.editor/src-gen" modelPluginID="org.eclipse.papyrus.proxy"
+ modelName="Proxy" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ importerID="org.eclipse.uml2.uml.ecore.importer" complianceLevel="8.0" copyrightFields="false"
+ usedGenPackages="../../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore ../../../org.eclipse.uml2.types/model/Types.genmodel#//types ../../../org.eclipse.uml2.uml/model/UML.genmodel#//uml"
+ operationReflection="true" importOrganizing="true">
+ <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>Proxy.profile.uml</foreignModel>
+ <genPackages xsi:type="genmodel:GenPackage" prefix="Proxy" basePackage="org.eclipse.papyrus.proxy"
+ disposableProviderFactory="true" ecorePackage="proxy.ecore#/">
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="proxy.ecore#//EcoreReference">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference proxy.ecore#//EcoreReference/ref"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="proxy.ecore#//Proxy">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference proxy.ecore#//Proxy/base_Element"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="proxy.ecore#//FileReference">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute proxy.ecore#//FileReference/ref"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/EcoreReference.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/EcoreReference.java
new file mode 100644
index 0000000..99db3ef
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/EcoreReference.java
@@ -0,0 +1,51 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy;
+
+import org.eclipse.emf.ecore.EObject;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Ecore Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.proxy.proxy.EcoreReference#getRef <em>Ref</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.proxy.proxy.ProxyPackage#getEcoreReference()
+ * @model
+ * @generated
+ */
+public interface EcoreReference extends Proxy {
+
+ /**
+ * Returns the value of the '<em><b>Ref</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Ref</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Ref</em>' reference.
+ * @see #setRef(EObject)
+ * @see org.eclipse.papyrus.proxy.proxy.ProxyPackage#getEcoreReference_Ref()
+ * @model ordered="false"
+ * @generated
+ */
+ EObject getRef();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.proxy.proxy.EcoreReference#getRef <em>Ref</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Ref</em>' reference.
+ * @see #getRef()
+ * @generated
+ */
+ void setRef(EObject value);
+} // EcoreReference
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/FileReference.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/FileReference.java
new file mode 100644
index 0000000..97ba139
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/FileReference.java
@@ -0,0 +1,50 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>File Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.proxy.proxy.FileReference#getRef <em>Ref</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.proxy.proxy.ProxyPackage#getFileReference()
+ * @model
+ * @generated
+ */
+public interface FileReference extends Proxy {
+
+ /**
+ * Returns the value of the '<em><b>Ref</b></em>' attribute.
+ * The default value is <code>" "</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Ref</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Ref</em>' attribute.
+ * @see #setRef(String)
+ * @see org.eclipse.papyrus.proxy.proxy.ProxyPackage#getFileReference_Ref()
+ * @model default=" " dataType="org.eclipse.uml2.types.String" ordered="false"
+ * @generated
+ */
+ String getRef();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.proxy.proxy.FileReference#getRef <em>Ref</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Ref</em>' attribute.
+ * @see #getRef()
+ * @generated
+ */
+ void setRef(String value);
+} // FileReference
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/Proxy.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/Proxy.java
new file mode 100644
index 0000000..3313a71
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/Proxy.java
@@ -0,0 +1,52 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Proxy</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.proxy.proxy.Proxy#getBase_Element <em>Base Element</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.proxy.proxy.ProxyPackage#getProxy()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Proxy extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Element</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Element</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Element</em>' reference.
+ * @see #setBase_Element(Element)
+ * @see org.eclipse.papyrus.proxy.proxy.ProxyPackage#getProxy_Base_Element()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Element getBase_Element();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.proxy.proxy.Proxy#getBase_Element <em>Base Element</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Element</em>' reference.
+ * @see #getBase_Element()
+ * @generated
+ */
+ void setBase_Element(Element value);
+
+} // Proxy
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/ProxyFactory.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/ProxyFactory.java
new file mode 100644
index 0000000..fec923c
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/ProxyFactory.java
@@ -0,0 +1,51 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy;
+
+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.proxy.proxy.ProxyPackage
+ * @generated
+ */
+public interface ProxyFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ ProxyFactory eINSTANCE = org.eclipse.papyrus.proxy.proxy.impl.ProxyFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Ecore Reference</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Ecore Reference</em>'.
+ * @generated
+ */
+ EcoreReference createEcoreReference();
+
+ /**
+ * Returns a new object of class '<em>File Reference</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>File Reference</em>'.
+ * @generated
+ */
+ FileReference createFileReference();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ ProxyPackage getProxyPackage();
+
+} //ProxyFactory
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/ProxyPackage.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/ProxyPackage.java
new file mode 100644
index 0000000..88a26a4
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/ProxyPackage.java
@@ -0,0 +1,332 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- 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.proxy.proxy.ProxyFactory
+ * @model kind="package"
+ * annotation="http://www.eclipse.org/uml2/2.0.0/UML originalName='Proxy'"
+ * @generated
+ */
+public interface ProxyPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "proxy";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://org.eclipse.papyrus/proxy";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "Proxy";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ ProxyPackage eINSTANCE = org.eclipse.papyrus.proxy.proxy.impl.ProxyPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.proxy.proxy.impl.ProxyImpl <em>Proxy</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.proxy.proxy.impl.ProxyImpl
+ * @see org.eclipse.papyrus.proxy.proxy.impl.ProxyPackageImpl#getProxy()
+ * @generated
+ */
+ int PROXY = 1;
+
+ /**
+ * The feature id for the '<em><b>Base Element</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROXY__BASE_ELEMENT = 0;
+
+ /**
+ * The number of structural features of the '<em>Proxy</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROXY_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Proxy</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROXY_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.proxy.proxy.impl.EcoreReferenceImpl <em>Ecore Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.proxy.proxy.impl.EcoreReferenceImpl
+ * @see org.eclipse.papyrus.proxy.proxy.impl.ProxyPackageImpl#getEcoreReference()
+ * @generated
+ */
+ int ECORE_REFERENCE = 0;
+
+ /**
+ * The feature id for the '<em><b>Base Element</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ECORE_REFERENCE__BASE_ELEMENT = PROXY__BASE_ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Ref</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ECORE_REFERENCE__REF = PROXY_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Ecore Reference</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ECORE_REFERENCE_FEATURE_COUNT = PROXY_FEATURE_COUNT + 1;
+
+ /**
+ * The number of operations of the '<em>Ecore Reference</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ECORE_REFERENCE_OPERATION_COUNT = PROXY_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.proxy.proxy.impl.FileReferenceImpl <em>File Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.proxy.proxy.impl.FileReferenceImpl
+ * @see org.eclipse.papyrus.proxy.proxy.impl.ProxyPackageImpl#getFileReference()
+ * @generated
+ */
+ int FILE_REFERENCE = 2;
+
+ /**
+ * The feature id for the '<em><b>Base Element</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILE_REFERENCE__BASE_ELEMENT = PROXY__BASE_ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Ref</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILE_REFERENCE__REF = PROXY_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>File Reference</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILE_REFERENCE_FEATURE_COUNT = PROXY_FEATURE_COUNT + 1;
+
+ /**
+ * The number of operations of the '<em>File Reference</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FILE_REFERENCE_OPERATION_COUNT = PROXY_OPERATION_COUNT + 0;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.proxy.proxy.EcoreReference <em>Ecore Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Ecore Reference</em>'.
+ * @see org.eclipse.papyrus.proxy.proxy.EcoreReference
+ * @generated
+ */
+ EClass getEcoreReference();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.proxy.proxy.EcoreReference#getRef <em>Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Ref</em>'.
+ * @see org.eclipse.papyrus.proxy.proxy.EcoreReference#getRef()
+ * @see #getEcoreReference()
+ * @generated
+ */
+ EReference getEcoreReference_Ref();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.proxy.proxy.Proxy <em>Proxy</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Proxy</em>'.
+ * @see org.eclipse.papyrus.proxy.proxy.Proxy
+ * @generated
+ */
+ EClass getProxy();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.proxy.proxy.Proxy#getBase_Element <em>Base Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Element</em>'.
+ * @see org.eclipse.papyrus.proxy.proxy.Proxy#getBase_Element()
+ * @see #getProxy()
+ * @generated
+ */
+ EReference getProxy_Base_Element();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.proxy.proxy.FileReference <em>File Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>File Reference</em>'.
+ * @see org.eclipse.papyrus.proxy.proxy.FileReference
+ * @generated
+ */
+ EClass getFileReference();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.proxy.proxy.FileReference#getRef <em>Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Ref</em>'.
+ * @see org.eclipse.papyrus.proxy.proxy.FileReference#getRef()
+ * @see #getFileReference()
+ * @generated
+ */
+ EAttribute getFileReference_Ref();
+
+ /**
+ * 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
+ */
+ ProxyFactory getProxyFactory();
+
+ /**
+ * <!-- 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.proxy.proxy.impl.EcoreReferenceImpl <em>Ecore Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.proxy.proxy.impl.EcoreReferenceImpl
+ * @see org.eclipse.papyrus.proxy.proxy.impl.ProxyPackageImpl#getEcoreReference()
+ * @generated
+ */
+ EClass ECORE_REFERENCE = eINSTANCE.getEcoreReference();
+
+ /**
+ * The meta object literal for the '<em><b>Ref</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ECORE_REFERENCE__REF = eINSTANCE.getEcoreReference_Ref();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.proxy.proxy.impl.ProxyImpl <em>Proxy</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.proxy.proxy.impl.ProxyImpl
+ * @see org.eclipse.papyrus.proxy.proxy.impl.ProxyPackageImpl#getProxy()
+ * @generated
+ */
+ EClass PROXY = eINSTANCE.getProxy();
+
+ /**
+ * The meta object literal for the '<em><b>Base Element</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROXY__BASE_ELEMENT = eINSTANCE.getProxy_Base_Element();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.proxy.proxy.impl.FileReferenceImpl <em>File Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.proxy.proxy.impl.FileReferenceImpl
+ * @see org.eclipse.papyrus.proxy.proxy.impl.ProxyPackageImpl#getFileReference()
+ * @generated
+ */
+ EClass FILE_REFERENCE = eINSTANCE.getFileReference();
+
+ /**
+ * The meta object literal for the '<em><b>Ref</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FILE_REFERENCE__REF = eINSTANCE.getFileReference_Ref();
+
+ }
+
+} //ProxyPackage
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/EcoreReferenceImpl.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/EcoreReferenceImpl.java
new file mode 100644
index 0000000..0652627
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/EcoreReferenceImpl.java
@@ -0,0 +1,153 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.proxy.proxy.EcoreReference;
+import org.eclipse.papyrus.proxy.proxy.ProxyPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Ecore Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.proxy.proxy.impl.EcoreReferenceImpl#getRef <em>Ref</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EcoreReferenceImpl extends ProxyImpl implements EcoreReference {
+ /**
+ * The cached value of the '{@link #getRef() <em>Ref</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRef()
+ * @generated
+ * @ordered
+ */
+ protected EObject ref;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EcoreReferenceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ProxyPackage.Literals.ECORE_REFERENCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getRef() {
+ if (ref != null && ref.eIsProxy()) {
+ InternalEObject oldRef = (InternalEObject)ref;
+ ref = eResolveProxy(oldRef);
+ if (ref != oldRef) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProxyPackage.ECORE_REFERENCE__REF, oldRef, ref));
+ }
+ }
+ return ref;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject basicGetRef() {
+ return ref;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRef(EObject newRef) {
+ EObject oldRef = ref;
+ ref = newRef;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ProxyPackage.ECORE_REFERENCE__REF, oldRef, ref));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ProxyPackage.ECORE_REFERENCE__REF:
+ if (resolve) return getRef();
+ return basicGetRef();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ProxyPackage.ECORE_REFERENCE__REF:
+ setRef((EObject)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ProxyPackage.ECORE_REFERENCE__REF:
+ setRef((EObject)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ProxyPackage.ECORE_REFERENCE__REF:
+ return ref != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // EcoreReferenceImpl
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/FileReferenceImpl.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/FileReferenceImpl.java
new file mode 100644
index 0000000..7e23955
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/FileReferenceImpl.java
@@ -0,0 +1,159 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.proxy.proxy.FileReference;
+import org.eclipse.papyrus.proxy.proxy.ProxyPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>File Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.proxy.proxy.impl.FileReferenceImpl#getRef <em>Ref</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class FileReferenceImpl extends ProxyImpl implements FileReference {
+ /**
+ * The default value of the '{@link #getRef() <em>Ref</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRef()
+ * @generated
+ * @ordered
+ */
+ protected static final String REF_EDEFAULT = " ";
+ /**
+ * The cached value of the '{@link #getRef() <em>Ref</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRef()
+ * @generated
+ * @ordered
+ */
+ protected String ref = REF_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FileReferenceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ProxyPackage.Literals.FILE_REFERENCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getRef() {
+ return ref;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRef(String newRef) {
+ String oldRef = ref;
+ ref = newRef;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ProxyPackage.FILE_REFERENCE__REF, oldRef, ref));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ProxyPackage.FILE_REFERENCE__REF:
+ return getRef();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ProxyPackage.FILE_REFERENCE__REF:
+ setRef((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ProxyPackage.FILE_REFERENCE__REF:
+ setRef(REF_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ProxyPackage.FILE_REFERENCE__REF:
+ return REF_EDEFAULT == null ? ref != null : !REF_EDEFAULT.equals(ref);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (ref: ");
+ result.append(ref);
+ result.append(')');
+ return result.toString();
+ }
+
+} //FileReferenceImpl
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/ProxyFactoryImpl.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/ProxyFactoryImpl.java
new file mode 100644
index 0000000..738643c
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/ProxyFactoryImpl.java
@@ -0,0 +1,107 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy.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.proxy.proxy.*;
+import org.eclipse.papyrus.proxy.proxy.EcoreReference;
+import org.eclipse.papyrus.proxy.proxy.FileReference;
+import org.eclipse.papyrus.proxy.proxy.ProxyFactory;
+import org.eclipse.papyrus.proxy.proxy.ProxyPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ProxyFactoryImpl extends EFactoryImpl implements ProxyFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static ProxyFactory init() {
+ try {
+ ProxyFactory theProxyFactory = (ProxyFactory)EPackage.Registry.INSTANCE.getEFactory(ProxyPackage.eNS_URI);
+ if (theProxyFactory != null) {
+ return theProxyFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new ProxyFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ProxyFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case ProxyPackage.ECORE_REFERENCE: return createEcoreReference();
+ case ProxyPackage.FILE_REFERENCE: return createFileReference();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EcoreReference createEcoreReference() {
+ EcoreReferenceImpl ecoreReference = new EcoreReferenceImpl();
+ return ecoreReference;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FileReference createFileReference() {
+ FileReferenceImpl fileReference = new FileReferenceImpl();
+ return fileReference;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ProxyPackage getProxyPackage() {
+ return (ProxyPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static ProxyPackage getPackage() {
+ return ProxyPackage.eINSTANCE;
+ }
+
+} // ProxyFactoryImpl
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/ProxyImpl.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/ProxyImpl.java
new file mode 100644
index 0000000..537996f
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/ProxyImpl.java
@@ -0,0 +1,158 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.proxy.proxy.Proxy;
+import org.eclipse.papyrus.proxy.proxy.ProxyPackage;
+
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Proxy</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.proxy.proxy.impl.ProxyImpl#getBase_Element <em>Base Element</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class ProxyImpl extends MinimalEObjectImpl.Container implements Proxy {
+ /**
+ * The cached value of the '{@link #getBase_Element() <em>Base Element</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Element()
+ * @generated
+ * @ordered
+ */
+ protected Element base_Element;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ProxyImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ProxyPackage.Literals.PROXY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getBase_Element() {
+ if (base_Element != null && base_Element.eIsProxy()) {
+ InternalEObject oldBase_Element = (InternalEObject)base_Element;
+ base_Element = (Element)eResolveProxy(oldBase_Element);
+ if (base_Element != oldBase_Element) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProxyPackage.PROXY__BASE_ELEMENT, oldBase_Element, base_Element));
+ }
+ }
+ return base_Element;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element basicGetBase_Element() {
+ return base_Element;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Element(Element newBase_Element) {
+ Element oldBase_Element = base_Element;
+ base_Element = newBase_Element;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ProxyPackage.PROXY__BASE_ELEMENT, oldBase_Element, base_Element));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ProxyPackage.PROXY__BASE_ELEMENT:
+ if (resolve) return getBase_Element();
+ return basicGetBase_Element();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ProxyPackage.PROXY__BASE_ELEMENT:
+ setBase_Element((Element)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ProxyPackage.PROXY__BASE_ELEMENT:
+ setBase_Element((Element)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ProxyPackage.PROXY__BASE_ELEMENT:
+ return base_Element != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ProxyImpl
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/ProxyPackageImpl.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/ProxyPackageImpl.java
new file mode 100644
index 0000000..4d6b480
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/ProxyPackageImpl.java
@@ -0,0 +1,278 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy.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.proxy.proxy.EcoreReference;
+import org.eclipse.papyrus.proxy.proxy.FileReference;
+import org.eclipse.papyrus.proxy.proxy.Proxy;
+import org.eclipse.papyrus.proxy.proxy.ProxyFactory;
+import org.eclipse.papyrus.proxy.proxy.ProxyPackage;
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ProxyPackageImpl extends EPackageImpl implements ProxyPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass ecoreReferenceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass proxyEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass fileReferenceEClass = 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.proxy.proxy.ProxyPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private ProxyPackageImpl() {
+ super(eNS_URI, ProxyFactory.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 ProxyPackage#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 ProxyPackage init() {
+ if (isInited) return (ProxyPackage)EPackage.Registry.INSTANCE.getEPackage(ProxyPackage.eNS_URI);
+
+ // Obtain or create and register package
+ ProxyPackageImpl theProxyPackage = (ProxyPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ProxyPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ProxyPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+ TypesPackage.eINSTANCE.eClass();
+ UMLPackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theProxyPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theProxyPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theProxyPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(ProxyPackage.eNS_URI, theProxyPackage);
+ return theProxyPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getEcoreReference() {
+ return ecoreReferenceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getEcoreReference_Ref() {
+ return (EReference)ecoreReferenceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getProxy() {
+ return proxyEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getProxy_Base_Element() {
+ return (EReference)proxyEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFileReference() {
+ return fileReferenceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFileReference_Ref() {
+ return (EAttribute)fileReferenceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ProxyFactory getProxyFactory() {
+ return (ProxyFactory)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
+ ecoreReferenceEClass = createEClass(ECORE_REFERENCE);
+ createEReference(ecoreReferenceEClass, ECORE_REFERENCE__REF);
+
+ proxyEClass = createEClass(PROXY);
+ createEReference(proxyEClass, PROXY__BASE_ELEMENT);
+
+ fileReferenceEClass = createEClass(FILE_REFERENCE);
+ createEAttribute(fileReferenceEClass, FILE_REFERENCE__REF);
+ }
+
+ /**
+ * <!-- 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
+ EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.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
+ ecoreReferenceEClass.getESuperTypes().add(this.getProxy());
+ fileReferenceEClass.getESuperTypes().add(this.getProxy());
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(ecoreReferenceEClass, EcoreReference.class, "EcoreReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getEcoreReference_Ref(), theEcorePackage.getEObject(), null, "ref", null, 0, 1, EcoreReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(proxyEClass, Proxy.class, "Proxy", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getProxy_Base_Element(), theUMLPackage.getElement(), null, "base_Element", null, 1, 1, Proxy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(fileReferenceEClass, FileReference.class, "FileReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getFileReference_Ref(), theTypesPackage.getString(), "ref", " ", 0, 1, FileReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ // 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";
+ addAnnotation
+ (this,
+ source,
+ new String[] {
+ "originalName", "Proxy"
+ });
+ }
+
+} //ProxyPackageImpl
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/util/ProxyAdapterFactory.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/util/ProxyAdapterFactory.java
new file mode 100644
index 0000000..f13cde4
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/util/ProxyAdapterFactory.java
@@ -0,0 +1,156 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy.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.proxy.proxy.*;
+
+/**
+ * <!-- 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.proxy.proxy.ProxyPackage
+ * @generated
+ */
+public class ProxyAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static ProxyPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ProxyAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = ProxyPackage.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 ProxySwitch<Adapter> modelSwitch =
+ new ProxySwitch<Adapter>() {
+ @Override
+ public Adapter caseEcoreReference(EcoreReference object) {
+ return createEcoreReferenceAdapter();
+ }
+ @Override
+ public Adapter caseProxy(Proxy object) {
+ return createProxyAdapter();
+ }
+ @Override
+ public Adapter caseFileReference(FileReference object) {
+ return createFileReferenceAdapter();
+ }
+ @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.proxy.proxy.EcoreReference <em>Ecore Reference</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.proxy.proxy.EcoreReference
+ * @generated
+ */
+ public Adapter createEcoreReferenceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.proxy.proxy.Proxy <em>Proxy</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.proxy.proxy.Proxy
+ * @generated
+ */
+ public Adapter createProxyAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.proxy.proxy.FileReference <em>File Reference</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.proxy.proxy.FileReference
+ * @generated
+ */
+ public Adapter createFileReferenceAdapter() {
+ 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;
+ }
+
+} //ProxyAdapterFactory
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/util/ProxySwitch.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/util/ProxySwitch.java
new file mode 100644
index 0000000..dcd46be
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/util/ProxySwitch.java
@@ -0,0 +1,154 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.proxy.proxy.*;
+
+/**
+ * <!-- 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.proxy.proxy.ProxyPackage
+ * @generated
+ */
+public class ProxySwitch<T> extends Switch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static ProxyPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ProxySwitch() {
+ if (modelPackage == null) {
+ modelPackage = ProxyPackage.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 ProxyPackage.ECORE_REFERENCE: {
+ EcoreReference ecoreReference = (EcoreReference)theEObject;
+ T result = caseEcoreReference(ecoreReference);
+ if (result == null) result = caseProxy(ecoreReference);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ProxyPackage.PROXY: {
+ Proxy proxy = (Proxy)theEObject;
+ T result = caseProxy(proxy);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ProxyPackage.FILE_REFERENCE: {
+ FileReference fileReference = (FileReference)theEObject;
+ T result = caseFileReference(fileReference);
+ if (result == null) result = caseProxy(fileReference);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Ecore Reference</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>Ecore Reference</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseEcoreReference(EcoreReference object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Proxy</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>Proxy</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseProxy(Proxy object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>File Reference</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>File Reference</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFileReference(FileReference 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;
+ }
+
+} //ProxySwitch
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src/org/eclipse/papyrus/proxy/Activator.java b/plugins/proxy/org.eclipse.papyrus.proxy/src/org/eclipse/papyrus/proxy/Activator.java
new file mode 100644
index 0000000..17b55e4
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src/org/eclipse/papyrus/proxy/Activator.java
@@ -0,0 +1,54 @@
+package org.eclipse.papyrus.proxy;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * This class manage the launch and stop of the plugin
+ *
+ */
+public class Activator extends AbstractUIPlugin {
+
+ /** The plug-in ID **/
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.proxy"; //$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/proxy/org.eclipse.papyrus.proxy/src/org/eclipse/papyrus/proxy/command/SetEReferenceCommand.java b/plugins/proxy/org.eclipse.papyrus.proxy/src/org/eclipse/papyrus/proxy/command/SetEReferenceCommand.java
new file mode 100644
index 0000000..0ca763b
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src/org/eclipse/papyrus/proxy/command/SetEReferenceCommand.java
@@ -0,0 +1,56 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.proxy.command;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.proxy.proxy.EcoreReference;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+/**
+ * this command is used to create a refeence to an EcoreReference Sterotype application
+ *
+ */
+public class SetEReferenceCommand extends RecordingCommand {
+
+
+ private Element ecoreReferenceElement;
+ private EObject eobject;
+
+ /**
+ * use to create a review
+ *
+ * @param domain
+ * the transactional editing domain in order to execute the command
+ * @param ecoreReferenceElement
+ * the uml element that can reference an eObject
+ * @param eobject
+ * the eobject
+ */
+ public SetEReferenceCommand(TransactionalEditingDomain domain, Element ecoreReferenceElement, EObject eobject) {
+ super(domain, "create Review");
+ this.ecoreReferenceElement = ecoreReferenceElement;
+ this.eobject = eobject;
+ }
+
+ @Override
+ protected void doExecute() {
+
+ EcoreReference ecoreReferenceApp = UMLUtil.getStereotypeApplication(ecoreReferenceElement, EcoreReference.class);
+ ecoreReferenceApp.setRef(eobject);
+ }
+
+}