Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Lorenzo2015-01-26 08:24:42 -0500
committerVincent Lorenzo2015-01-26 08:31:14 -0500
commit5f6348c54e34c37c1a0c4cca5f6512ed1ca6f003 (patch)
tree7d8a982212da565f1f621966fb3a72263318aa35 /plugins
parent90c57a08467186b757ba11161c33b5fac7d516ab (diff)
downloadorg.eclipse.papyrus-5f6348c54e34c37c1a0c4cca5f6512ed1ca6f003.tar.gz
org.eclipse.papyrus-5f6348c54e34c37c1a0c4cca5f6512ed1ca6f003.tar.xz
org.eclipse.papyrus-5f6348c54e34c37c1a0c4cca5f6512ed1ca6f003.zip
move oep.emf.commandstack and oep.dev.project.managment from sandbox to plugins/developer + destroy old plugin oep.dev.project.management_old from sandbox + rename oep.emf.commandstack to oep.infra.emf.commandstack
Diffstat (limited to 'plugins')
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/.classpath7
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/.project28
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/META-INF/MANIFEST.MF19
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/OSGI-INF/l10n/bundle.properties3
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/about.html28
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/build.properties10
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/icons/copyright_icon.pngbin0 -> 281 bytes
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/icons/feature_obj.gifbin0 -> 585 bytes
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/icons/html.gifbin0 -> 362 bytes
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/icons/papyrus.pngbin0 -> 602 bytes
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/icons/plugin_mf_obj.gifbin0 -> 597 bytes
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/icons/plugin_obj.gifbin0 -> 328 bytes
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/icons/version.gifbin0 -> 868 bytes
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/icons/version.pngbin0 -> 289 bytes
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/plugin.xml120
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/resources/about.html.file106
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/resources/epl-v10.html.file304
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/resources/license.html.file108
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/Activator.java61
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/dialog/InputDialogWithCheckBox.java94
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/dialog/TwoInputDialog.java137
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/AbstractAddFileHandler.java122
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/AbstractChangeProjectVersionHandler.java129
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/AddFEPLFileHandler.java48
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/AddFeatureLicenseFileHandler.java48
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/ChangeFeatureVersionHandler.java56
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/SetCopyrightNoticeHandler.java94
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/AddProjectAboutFileHandler.java48
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/ChangeDependencyVersionNumberHandler.java171
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/ChangePluginVersionHandler.java47
-rw-r--r--plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/utils/Utils.java71
-rw-r--r--plugins/developer/org.eclipse.papyrus.emf.commandstack/.classpath7
-rw-r--r--plugins/developer/org.eclipse.papyrus.emf.commandstack/.project28
-rw-r--r--plugins/developer/org.eclipse.papyrus.emf.commandstack/.settings/org.eclipse.jdt.core.prefs8
-rw-r--r--plugins/developer/org.eclipse.papyrus.emf.commandstack/META-INF/MANIFEST.MF21
-rw-r--r--plugins/developer/org.eclipse.papyrus.emf.commandstack/about.html28
-rw-r--r--plugins/developer/org.eclipse.papyrus.emf.commandstack/build.properties8
-rw-r--r--plugins/developer/org.eclipse.papyrus.emf.commandstack/icons/stack.gifbin0 -> 575 bytes
-rw-r--r--plugins/developer/org.eclipse.papyrus.emf.commandstack/plugin.properties4
-rw-r--r--plugins/developer/org.eclipse.papyrus.emf.commandstack/plugin.xml16
-rw-r--r--plugins/developer/org.eclipse.papyrus.emf.commandstack/src/org/eclipse/papyrus/infra/emf/commandstack/Activator.java63
-rw-r--r--plugins/developer/org.eclipse.papyrus.emf.commandstack/src/org/eclipse/papyrus/infra/emf/commandstack/view/CommandStackView.java285
43 files changed, 2334 insertions, 0 deletions
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/.classpath b/plugins/developer/org.eclipse.papyrus.dev.project.management/.classpath
new file mode 100644
index 00000000000..64c5e31b7a2
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/.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/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/.project b/plugins/developer/org.eclipse.papyrus.dev.project.management/.project
new file mode 100644
index 00000000000..f7bd68fe1d4
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.dev.project.management</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/developer/org.eclipse.papyrus.dev.project.management/.settings/org.eclipse.jdt.core.prefs b/plugins/developer/org.eclipse.papyrus.dev.project.management/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..af0f20f97a5
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/.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.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/META-INF/MANIFEST.MF b/plugins/developer/org.eclipse.papyrus.dev.project.management/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..2de509d3ae2
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.commands,
+ org.eclipse.core.resources;bundle-version="3.8.0",
+ org.eclipse.papyrus.eclipse.project.editors;bundle-version="1.1.0",
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.1.0",
+ org.eclipse.pde.ui,
+ org.eclipse.ui.ide;bundle-version="3.10.0"
+Bundle-Vendor: %Bundle-Vendor
+Bundle-ActivationPolicy: lazy
+Bundle-Version: 1.1.0.qualifier
+Bundle-Name: %Bundle-Name
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.dev.project.management.Activator
+Bundle-SymbolicName: org.eclipse.papyrus.dev.project.management;single
+ ton:=true
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/OSGI-INF/l10n/bundle.properties b/plugins/developer/org.eclipse.papyrus.dev.project.management/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 00000000000..0c4249d2390
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,3 @@
+#Properties file for org.eclipse.papyrus.dev.project.managment
+Bundle-Vendor = Eclipse Modeling Project
+Bundle-Name = Papyrus Project Management (Incubation)
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/about.html b/plugins/developer/org.eclipse.papyrus.dev.project.management/about.html
new file mode 100644
index 00000000000..d35d5aed64c
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/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 (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). 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, &quot;Program&quot; 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 (&quot;Redistributor&quot;) 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/developer/org.eclipse.papyrus.dev.project.management/build.properties b/plugins/developer/org.eclipse.papyrus.dev.project.management/build.properties
new file mode 100644
index 00000000000..6d4fb79f8a8
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ icons/,\
+ OSGI-INF/,\
+ resources/,\
+ about.html
+src.includes = about.html
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/copyright_icon.png b/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/copyright_icon.png
new file mode 100644
index 00000000000..df9393d4f01
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/copyright_icon.png
Binary files differ
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/feature_obj.gif b/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/feature_obj.gif
new file mode 100644
index 00000000000..8706680c793
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/feature_obj.gif
Binary files differ
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/html.gif b/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/html.gif
new file mode 100644
index 00000000000..ec6cca4525b
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/html.gif
Binary files differ
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/papyrus.png b/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/papyrus.png
new file mode 100644
index 00000000000..0f74e27b483
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/papyrus.png
Binary files differ
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/plugin_mf_obj.gif b/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/plugin_mf_obj.gif
new file mode 100644
index 00000000000..eedacd2b7aa
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/plugin_mf_obj.gif
Binary files differ
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/plugin_obj.gif b/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/plugin_obj.gif
new file mode 100644
index 00000000000..8493df40dfe
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/plugin_obj.gif
Binary files differ
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/version.gif b/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/version.gif
new file mode 100644
index 00000000000..d2d5d765def
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/version.gif
Binary files differ
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/version.png b/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/version.png
new file mode 100644
index 00000000000..248a6ae5ce1
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/icons/version.png
Binary files differ
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/plugin.xml b/plugins/developer/org.eclipse.papyrus.dev.project.management/plugin.xml
new file mode 100644
index 00000000000..c56c5431a7a
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/plugin.xml
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ defaultHandler="org.eclipse.papyrus.dev.project.management.handlers.plugins.ChangePluginVersionHandler"
+ description="Change Plugin Version"
+ id="org.eclipse.papyrus.dev.project.management.command.plugin.change.version"
+ name="Change Plugin Version">
+ </command>
+ <command
+ defaultHandler="org.eclipse.papyrus.dev.project.management.handlers.features.ChangeFeatureVersionHandler"
+ description="Change Feature Version"
+ id="org.eclipse.papyrus.dev.project.management.command.feature.change.version"
+ name="Change Feature Version">
+ </command>
+ <command
+ defaultHandler="org.eclipse.papyrus.dev.project.management.handlers.plugins.ChangeDependencyVersionNumberHandler"
+ description="Change Dependencies Version"
+ id="org.eclipse.papyrus.dev.project.management.command.plugin.change.dependency.version"
+ name="Change Dependencies Version">
+ </command>
+ <command
+ defaultHandler="org.eclipse.papyrus.dev.project.management.handlers.plugins.AddProjectAboutFileHandler"
+ id="org.eclipse.papyrus.dev.project.management.command.plugin.add.about"
+ name="Add the file about.html to the project">
+ </command>
+ <command
+ defaultHandler="org.eclipse.papyrus.dev.project.management.handlers.features.AddFeatureLicenseFileHandler"
+ description="Add the license file to the feature"
+ id="org.eclipse.papyrus.dev.project.management.command.feature.add.license"
+ name="Add License File">
+ </command>
+ <command
+ defaultHandler="org.eclipse.papyrus.dev.project.management.handlers.features.AddFEPLFileHandler"
+ description="Add the EPL file to the feature"
+ id="org.eclipse.papyrus.dev.project.management.command.feature.add.epl"
+ name="Add EPL file">
+ </command>
+ <command
+ defaultHandler="org.eclipse.papyrus.dev.project.management.handlers.features.SetCopyrightNoticeHandler"
+ description="Set Feature Copyright"
+ id="org.eclipse.papyrus.dev.project.management.command.feature.set.copyright"
+ name="Set Feature Copyright">
+ </command>
+ <command
+ defaultHandler="org.eclipse.papyrus.dev.project.management.handlers.features.ExternalizeFeatureStringHandler"
+ id="org.eclipse.papyrus.dev.project.management.command.feature.externalize"
+ name="Externalize String for Feature">
+ </command>
+ </extension>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="menu:org.eclipse.ui.main.menu?after=edit">
+ <menu
+ icon="icons/papyrus.png"
+ label="Project management">
+ <menu
+ icon="icons/feature_obj.gif"
+ label="Feature">
+ <command
+ commandId="org.eclipse.papyrus.dev.project.management.command.feature.add.license"
+ icon="icons/html.gif"
+ label="Add License File (no undo)"
+ style="push">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.dev.project.management.command.feature.add.epl"
+ icon="icons/html.gif"
+ label="Add EPL File (no undo)"
+ style="push">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.dev.project.management.command.feature.change.version"
+ icon="icons/version.png"
+ label="Change Feature Version (no undo)"
+ style="push">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.dev.project.management.command.feature.set.copyright"
+ icon="icons/copyright_icon.png"
+ label="Set Copyright (doesn&apos;t erase existing value)"
+ style="push">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.dev.project.management.command.feature.externalize"
+ label="Externalize String"
+ style="push">
+ </command>
+ </menu>
+ <menu
+ icon="icons/plugin_obj.gif"
+ label="Plugin">
+ <command
+ commandId="org.eclipse.papyrus.dev.project.management.command.plugin.add.about"
+ icon="icons/html.gif"
+ label="Add about.html file (no undo)"
+ style="push">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.dev.project.management.command.plugin.change.dependency.version"
+ icon="icons/plugin_mf_obj.gif"
+ label="Change Dependencies Versions (no undo)"
+ style="push">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.dev.project.management.command.plugin.change.version"
+ icon="icons/version.png"
+ label="Change Plugin Version (no undo)"
+ style="push">
+ </command>
+ </menu>
+ </menu>
+ </menuContribution>
+ </extension>
+
+</plugin>
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/resources/about.html.file b/plugins/developer/org.eclipse.papyrus.dev.project.management/resources/about.html.file
new file mode 100644
index 00000000000..670d10856a8
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/resources/about.html.file
@@ -0,0 +1,106 @@
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 14, 2010</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+ OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+ NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+ CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+ (&quot;EPL&quot;). A copy of the EPL is provided with this Content and is also 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, &quot;Program&quot; will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+ repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+ <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;. Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+ and/or Fragments associated with that Feature.</li>
+ <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+ <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them. Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+ <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+ <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+ <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+ <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+ <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+ Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+ other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+ href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+ (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+ applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+ in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+ Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+ <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+ on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+ product.</li>
+ <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.</li>
+ <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+ Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+ the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+ indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+ another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+ possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html> \ No newline at end of file
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/resources/epl-v10.html.file b/plugins/developer/org.eclipse.papyrus.dev.project.management/resources/epl-v10.html.file
new file mode 100644
index 00000000000..cb1073a4bad
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/resources/epl-v10.html.file
@@ -0,0 +1,304 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<link rel=File-List
+href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
+<title>Eclipse Public License - Version 1.0</title>
+<style>
+<!--
+ /* Font Definitions */
+@font-face
+ {
+ panose-1:2 11 6 4 3 5 4 4 2 4;
+ mso-font-charset:0;
+ mso-font-pitch:variable;
+ mso-font-signature:553679495 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-parent:"";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ }
+p
+ {margin-right:0in;
+ mso-margin-top-alt:auto;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ }
+p.BalloonText, li.BalloonText, div.BalloonText
+ {mso-style-name:"Balloon Text";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:8.0pt;
+
+ }
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.25in 1.0in 1.25in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+-->
+</style>
+</head>
+
+<body lang="EN-US" style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
+</p>
+
+<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
+THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
+REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
+OF THIS AGREEMENT.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+in the case of the initial Contributor, the initial code and documentation
+distributed under this Agreement, and<br clear=left>
+b) in the case of each subsequent Contributor:</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
+changes to the Program, and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
+additions to the Program;</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
+such changes and/or additions to the Program originate from and are distributed
+by that particular Contributor. A Contribution 'originates' from a Contributor
+if it was added to the Program by such Contributor itself or anyone acting on
+such Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in conjunction
+with the Program under their own license agreement, and (ii) are not derivative
+works of the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
+entity that distributes the Program.</span> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
+claims licensable by a Contributor which are necessarily infringed by the use
+or sale of its Contribution alone or when combined with the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
+distributed in accordance with this Agreement.</span> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
+receives the Program under this Agreement, including all Contributors.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+Subject to the terms of this Agreement, each Contributor hereby grants Recipient
+a non-exclusive, worldwide, royalty-free copyright license to<span
+style='color:red'> </span>reproduce, prepare derivative works of, publicly
+display, publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and object code
+form.</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
+Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
+patent license under Licensed Patents to make, use, sell, offer to sell, import
+and otherwise transfer the Contribution of such Contributor, if any, in source
+code and object code form. This patent license shall apply to the combination
+of the Contribution and the Program if, at the time the Contribution is added
+by the Contributor, such addition of the Contribution causes such combination
+to be covered by the Licensed Patents. The patent license shall not apply to
+any other combinations which include the Contribution. No hardware per se is
+licensed hereunder. </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
+Recipient understands that although each Contributor grants the licenses to its
+Contributions set forth herein, no assurances are provided by any Contributor
+that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient
+for claims brought by any other entity based on infringement of intellectual
+property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility
+to secure any other intellectual property rights needed, if any. For example,
+if a third party patent license is required to allow Recipient to distribute
+the Program, it is Recipient's responsibility to acquire that license before
+distributing the Program.</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
+Each Contributor represents that to its knowledge it has sufficient copyright
+rights in its Contribution, if any, to grant the copyright license set forth in
+this Agreement. </span></p>
+
+<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
+
+<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
+Program in object code form under its own license agreement, provided that:</span>
+</p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+it complies with the terms and conditions of this Agreement; and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
+its license agreement:</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
+effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title
+and non-infringement, and implied warranties or conditions of merchantability
+and fitness for a particular purpose; </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
+effectively excludes on behalf of all Contributors all liability for damages,
+including direct, indirect, special, incidental and consequential damages, such
+as lost profits; </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
+states that any provisions which differ from this Agreement are offered by that
+Contributor alone and not by any other party; and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
+states that source code for the Program is available from such Contributor, and
+informs licensees how to obtain it in a reasonable manner on or through a
+medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
+
+<p><span style='font-size:10.0pt'>When the Program is made available in source
+code form:</span> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+it must be made available under this Agreement; and </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
+copy of this Agreement must be included with each copy of the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
+copyright notices contained within the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
+originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution. </span></p>
+
+<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
+
+<p><span style='font-size:10.0pt'>Commercial distributors of software may
+accept certain responsibilities with respect to end users, business partners
+and the like. While this license is intended to facilitate the commercial use
+of the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes the
+Program in a commercial product offering, such Contributor (&quot;Commercial
+Contributor&quot;) hereby agrees to defend and indemnify every other
+Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
+costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
+legal actions brought by a third party against the Indemnified Contributor to
+the extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor
+to control, and cooperate with the Commercial Contributor in, the defense and
+any related settlement negotiations. The Indemnified Contributor may participate
+in any such claim at its own expense.</span> </p>
+
+<p><span style='font-size:10.0pt'>For example, a Contributor might include the
+Program in a commercial product offering, Product X. That Contributor is then a
+Commercial Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance claims and
+warranties are such Commercial Contributor's responsibility alone. Under this
+section, the Commercial Contributor would have to defend claims against the
+other Contributors related to those performance claims and warranties, and if a
+court requires any other Contributor to pay any damages as a result, the
+Commercial Contributor must pay those damages.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
+
+<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and distributing the
+Program and assumes all risks associated with its exercise of rights under this
+Agreement , including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs or
+equipment, and unavailability or interruption of operations. </span></p>
+
+<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
+
+<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
+THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
+
+<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
+or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without
+further action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.</span> </p>
+
+<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
+against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with
+other software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the date
+such litigation is filed. </span></p>
+
+<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
+shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable
+period of time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive. </span></p>
+
+<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
+copies of this Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The Agreement
+Steward reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement Steward has
+the right to modify this Agreement. The Eclipse Foundation is the initial
+Agreement Steward. The Eclipse Foundation may assign the responsibility to
+serve as the Agreement Steward to a suitable separate entity. Each new version
+of the Agreement will be given a distinguishing version number. The Program
+(including Contributions) may always be distributed subject to the version of
+the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program
+(including its Contributions) under the new version. Except as expressly stated
+in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.</span> </p>
+
+<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
+State of New York and the intellectual property laws of the United States of
+America. No party to this Agreement will bring a legal action under this
+Agreement more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.</span> </p>
+
+<p class=MsoNormal></p>
+
+</div>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/resources/license.html.file b/plugins/developer/org.eclipse.papyrus.dev.project.management/resources/license.html.file
new file mode 100644
index 00000000000..f19c483b9c8
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/resources/license.html.file
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+ OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+ NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+ CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+ (&quot;EPL&quot;). A copy of the EPL is provided with this Content and is also 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, &quot;Program&quot; will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+ repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+ <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;. Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+ and/or Fragments associated with that Feature.</li>
+ <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+ <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them. Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+ <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+ <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+ <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+ <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+ <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+ <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+ Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+ other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+ href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+ (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+ applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+ in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+ Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+ <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+ on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+ product.</li>
+ <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.</li>
+ <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+ Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+ the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+ indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+ another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+ possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/Activator.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/Activator.java
new file mode 100644
index 00000000000..fe18ab13360
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/Activator.java
@@ -0,0 +1,61 @@
+package org.eclipse.papyrus.dev.project.management;
+
+import org.eclipse.papyrus.infra.core.log.LogHelper;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.dev.project.management"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * the log helper for this plugin
+ */
+ public static LogHelper log;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void start(final BundleContext context) throws Exception {
+ super.start(context);
+ log = new LogHelper(this);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void stop(final 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/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/dialog/InputDialogWithCheckBox.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/dialog/InputDialogWithCheckBox.java
new file mode 100644
index 00000000000..bfaaae2f469
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/dialog/InputDialogWithCheckBox.java
@@ -0,0 +1,94 @@
+package org.eclipse.papyrus.dev.project.management.dialog;
+
+import org.eclipse.jface.dialogs.IInputValidator;
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ *
+ * This input dialog provides a field to edit and a checkbox
+ *
+ */
+//TODO move this class in an upper project
+public class InputDialogWithCheckBox extends InputDialog {
+
+ /**
+ * the checkbox
+ */
+ private Button checkbox;
+
+ /**
+ * the message for the checkbox
+ */
+ final private String checkboxMessage;
+
+ /**
+ * the initial state of the checkbox
+ */
+ final private boolean checkboxStatus;
+
+ /**
+ * the state of the checkbox when the dialog is closed
+ */
+ private boolean finalState;
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param parentShell
+ * @param dialogTitle
+ * @param dialogMessage
+ * @param initialValue
+ * @param checkboxMessage
+ * @param checkboxStatus
+ * @param validator
+ */
+ public InputDialogWithCheckBox(Shell parentShell, String dialogTitle, String dialogMessage, String initialValue, final String checkboxMessage, final boolean checkboxStatus, final IInputValidator validator) {
+ super(parentShell, dialogTitle, dialogMessage, initialValue, validator);
+ this.checkboxMessage = checkboxMessage;
+ this.checkboxStatus = checkboxStatus;
+ }
+
+ /**
+ *
+ * @see org.eclipse.jface.dialogs.Dialog#createContents(org.eclipse.swt.widgets.Composite)
+ *
+ * @param parent
+ * @return
+ */
+ @Override
+ protected Control createContents(Composite parent) {
+ Control ctrl = super.createContents(parent);
+ checkbox = new Button((Composite)((Composite)ctrl).getChildren()[0], SWT.CHECK);
+ checkbox.setText(checkboxMessage);
+ checkbox.setSelection(checkboxStatus);
+ return ctrl;
+ }
+
+
+ /**
+ *
+ * @return
+ * <code>true</code> if the checkbox is checked
+ */
+ public boolean isChecked() {
+ return this.finalState;
+ }
+
+ /**
+ * save the state of the checkbox
+ *
+ * @see org.eclipse.jface.dialogs.Dialog#okPressed()
+ *
+ */
+ @Override
+ protected void okPressed() {
+ finalState = this.checkbox.getSelection();
+ super.okPressed();
+ }
+}
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/dialog/TwoInputDialog.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/dialog/TwoInputDialog.java
new file mode 100644
index 00000000000..1a7dbef6889
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/dialog/TwoInputDialog.java
@@ -0,0 +1,137 @@
+/*****************************************************************************
+ * Copyright (c) 2011 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:
+ * Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.dev.project.management.dialog;
+
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.IInputValidator;
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * This Dialog provides 2 texts field. It was created to be used during the table creation.
+ * It doesn't provide validator for the second field.
+ *
+ *
+ */
+//TODO move this class in an upper project
+//TODO generalize this class to have several text field
+//FIXME : duplicated code from oep.infra.table.common
+public class TwoInputDialog extends InputDialog {
+
+ /** widget for the second value */
+ private Text text_2;
+
+ /** the second values */
+ private String value_2;
+
+ /** the message for the second Text */
+ protected String message_2;
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param parentShell
+ * the parent shell
+ * @param dialogTitle
+ * the dialog title
+ * @param message1
+ * the first message for the dialog
+ * @param message2
+ * the second message for the dialog
+ * @param initialValue1
+ * the first initial value
+ * @param initialValue2
+ * the second initial value
+ * @param validator
+ * the validator
+ */
+ public TwoInputDialog(final Shell parentShell, final String dialogTitle, final String message1, final String message2, final String initialValue1, final String initialValue2, final IInputValidator validator) {
+ super(parentShell, dialogTitle, message1, initialValue1, validator);
+ this.message_2 = message2;
+ this.value_2 = initialValue2;
+ }
+
+ /**
+ * Create the second Text Area
+ *
+ * @see org.eclipse.jface.dialogs.InputDialog#createDialogArea(org.eclipse.swt.widgets.Composite)
+ *
+ * @param parent
+ * @return
+ */
+ @Override
+ protected Control createDialogArea(final Composite parent) {
+ final Composite composite = (Composite)super.createDialogArea(parent);
+ if(this.message_2 != null) {
+ final Label label = new Label(composite, SWT.WRAP);
+ label.setText(this.message_2);
+ final GridData data = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_CENTER);
+ data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);
+ label.setLayoutData(data);
+ label.setFont(parent.getFont());
+ }
+ this.text_2 = new Text(composite, getInputTextStyle());
+ this.text_2.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL));
+ applyDialogFont(composite);
+ return composite;
+ }
+
+ /**
+ *
+ * @see org.eclipse.jface.dialogs.InputDialog#buttonPressed(int)
+ *
+ * @param buttonId
+ */
+ @Override
+ protected void buttonPressed(final int buttonId) {
+ if(buttonId == IDialogConstants.OK_ID) {
+ this.value_2 = this.text_2.getText();
+ } else {
+ this.value_2 = null;
+ }
+ super.buttonPressed(buttonId);
+ }
+
+ /**
+ *
+ * @see org.eclipse.jface.dialogs.InputDialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
+ *
+ * @param parent
+ */
+ @Override
+ protected void createButtonsForButtonBar(final Composite parent) {
+ super.createButtonsForButtonBar(parent);
+ if(this.value_2 != null) {
+ this.text_2.setText(this.value_2);
+ }
+ }
+
+ /**
+ * Getter for {@link #value_2}
+ *
+ * @return
+ * the description for the table
+ */
+ public String getValue_2() {
+ return this.value_2;
+ }
+
+}
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/AbstractAddFileHandler.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/AbstractAddFileHandler.java
new file mode 100644
index 00000000000..d6b34ab1297
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/AbstractAddFileHandler.java
@@ -0,0 +1,122 @@
+package org.eclipse.papyrus.dev.project.management.handlers;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.jobs.JobChangeAdapter;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.papyrus.dev.project.management.Activator;
+import org.eclipse.papyrus.eclipse.project.editors.interfaces.IProjectEditor;
+import org.eclipse.papyrus.eclipse.project.editors.project.ProjectEditor;
+import org.eclipse.swt.widgets.Display;
+
+
+public abstract class AbstractAddFileHandler extends AbstractHandler {
+
+
+ public Object execute(final ExecutionEvent event) {
+
+ Job job = new Job(getJobName()) {
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ return runAsJob(monitor);
+ }
+
+ };
+
+ job.setUser(true);
+ job.schedule();
+
+ job.addJobChangeListener(new JobChangeAdapter() {
+
+ @Override
+ public void done(final IJobChangeEvent event) {
+ Display.getDefault().asyncExec(new Runnable() {
+
+ public void run() {
+ MessageDialog.openInformation(Display.getDefault().getActiveShell(), getJobName(), "Done.");
+ }
+ });
+ }
+ });
+
+ return null;
+ }
+
+ protected IStatus runAsJob(IProgressMonitor monitor) {
+ final IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
+
+ URL sourceURL = getSourceURL();
+ if(sourceURL == null) {
+ MessageDialog.openError(Display.getCurrent().getActiveShell(), "Cannot find the source file", "The source file is invalid");
+ }
+ String targetPath = getTargetPath();
+
+ monitor.beginTask(getJobName(), projects.length);
+
+ for(final IProject current : projects) {
+ if(current.isOpen() && isValidProject(current)) {
+ try {
+ addFile(current, sourceURL, targetPath);
+ } catch (final CoreException e) {
+ Activator.log.error(e);
+ } catch (final MalformedURLException e) {
+ Activator.log.error(e);
+ } catch (final IOException e) {
+ Activator.log.error(e);
+ }
+ }
+
+ monitor.worked(1);
+ }
+
+ return Status.OK_STATUS;
+ }
+
+ //Subclasses should override this
+ protected String getJobName() {
+ return "Add files";
+ }
+
+ protected abstract boolean isValidProject(IProject current);
+
+ protected abstract URL getSourceURL();
+
+ protected abstract String getTargetPath();
+
+ /**
+ *
+ * @param project
+ * the project
+ * @param file
+ * the file to add
+ * @param fileDestinationPath
+ * the path where add the file
+ * @throws CoreException
+ * @throws IOException
+ */
+ protected void addFile(final IProject project, final URL url, final String fileDestinationPath) throws CoreException, IOException {
+ Assert.isNotNull(url);
+ Assert.isNotNull(fileDestinationPath);
+ Assert.isNotNull(project);
+
+ final IProjectEditor editor = new ProjectEditor(project);
+ editor.init();
+ editor.addFile(url, fileDestinationPath, true);
+ editor.save();
+
+ }
+}
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/AbstractChangeProjectVersionHandler.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/AbstractChangeProjectVersionHandler.java
new file mode 100644
index 00000000000..b55ad7cf452
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/AbstractChangeProjectVersionHandler.java
@@ -0,0 +1,129 @@
+package org.eclipse.papyrus.dev.project.management.handlers;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.dialogs.IInputValidator;
+import org.eclipse.jface.window.Window;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.papyrus.dev.project.management.Activator;
+import org.eclipse.papyrus.dev.project.management.dialog.InputDialogWithCheckBox;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.progress.IProgressService;
+import org.eclipse.ui.statushandlers.StatusManager;
+
+
+public abstract class AbstractChangeProjectVersionHandler extends AbstractHandler {
+
+ private static final String TITLE = "Enter the new version number for Papyrus plugin.";
+
+ private static final String MESSAGE = "Enter the new version number.";
+
+ private static final String INITIAL_VALUE = "0.0.0.qualifier";
+
+ private static final String CHECKBOX_MESSAGE = "Only projects beginning with 'org.eclipse.papyrus.*'";
+
+ private static final String WARNING_DIALOG_TITLE = "Change Version Name Report";
+
+ private static final String WARNING_DIALOG_MESSAGE = "The following project were NOT managed : ";
+
+ private static final String WARNING_DIALOG_MESSAGE2 = "Done.";
+
+ private static final String PAPYRUS_NAME = "org.eclipse.papyrus";
+
+
+ public Object execute(final ExecutionEvent event) throws ExecutionException {
+
+ final IInputValidator validator = new IInputValidator() {
+
+ public String isValid(final String newText) {
+ final boolean match = newText.matches("[0-9]+\\.[0-9]+\\.[0-9]+\\.qualifier");
+ if(!match) {
+ return NLS.bind("The version number should be : something like this : {0}.", INITIAL_VALUE);
+ }
+ return null;
+ }
+ };
+
+
+ final InputDialogWithCheckBox dialog = new InputDialogWithCheckBox(Display.getCurrent().getActiveShell(), TITLE, MESSAGE, INITIAL_VALUE, CHECKBOX_MESSAGE, true, validator);
+ if(dialog.open() == Window.OK) {
+ WorkspaceModifyOperation workspaceOperation = new WorkspaceModifyOperation(){
+ protected void execute(IProgressMonitor monitor) throws CoreException ,InvocationTargetException ,InterruptedException {
+ IStatus result = runAsJob(dialog.getValue(), dialog.isChecked(), monitor);
+ StatusManager.getManager().handle(result, StatusManager.SHOW);
+ }
+ };
+
+ try {
+ IProgressService service = PlatformUI.getWorkbench().getProgressService();
+ service.run(true, true, workspaceOperation);
+ } catch (InvocationTargetException e) {
+ Activator.log.error(e);
+ } catch (InterruptedException e) {
+ Activator.log.error(e);
+ }
+
+ }
+
+ return null;
+ }
+
+ protected IStatus runAsJob(final String newVersion, final boolean papyrusProjectsOnly, IProgressMonitor monitor) {
+ String notManagedProjectNames = "";
+ final IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
+
+ monitor.beginTask("Update version numbers", projects.length);
+
+ for(final IProject current : projects) {
+
+ if (monitor.isCanceled()){
+ return new Status(IStatus.CANCEL, Activator.PLUGIN_ID, "Operation canceled");
+ }
+
+ final String name = current.getName();
+ if(papyrusProjectsOnly) {
+ if(name.startsWith(PAPYRUS_NAME)) {//we test the project name
+ setVersionNumber(current, newVersion, notManagedProjectNames);
+ } else {
+ notManagedProjectNames += NLS.bind("- {0} \n", current.getName());
+ }
+ } else {
+ setVersionNumber(current, newVersion, notManagedProjectNames);
+ }
+
+ monitor.worked(1);
+ }
+
+ if ("".equals(notManagedProjectNames)){
+ return Status.OK_STATUS;
+ } else {
+ return new Status(IStatus.WARNING, Activator.PLUGIN_ID, WARNING_DIALOG_MESSAGE + "\n" + notManagedProjectNames);
+ }
+
+ }
+
+ /**
+ *
+ * @param project
+ * the project to manage
+ * @param newVersion
+ * the new version for the project
+ * @param notManagedProjectNames
+ * a String used to build the message with the not managed projects
+ */
+ protected abstract void setVersionNumber(final IProject project, final String newVersion, String notManagedProjectNames);
+
+
+
+}
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/AddFEPLFileHandler.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/AddFEPLFileHandler.java
new file mode 100644
index 00000000000..8c90af90a31
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/AddFEPLFileHandler.java
@@ -0,0 +1,48 @@
+package org.eclipse.papyrus.dev.project.management.handlers.features;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.papyrus.dev.project.management.Activator;
+import org.eclipse.papyrus.dev.project.management.handlers.AbstractAddFileHandler;
+import org.eclipse.papyrus.dev.project.management.utils.Utils;
+
+
+public class AddFEPLFileHandler extends AbstractAddFileHandler {
+
+ public static final String EPL_HTML_SOURCE_PATH = "/resources/epl-v10.html.file"; //$NON-NLS-1$
+
+ public static final String EPL_HTML_PATH = "epl-v10.html"; //$NON-NLS-1$
+
+ @Override
+ protected boolean isValidProject(IProject current) {
+ try {
+ return current.hasNature(Utils.FEATURE_NATURE);
+ } catch (CoreException ex) {
+ Activator.log.error(ex);
+ }
+ return false;
+ }
+
+ @Override
+ protected URL getSourceURL() {
+ try {
+ return new URL("platform:/plugin/" + Activator.PLUGIN_ID + EPL_HTML_SOURCE_PATH); //$NON-NLS-1$
+ } catch (MalformedURLException ex) {
+ Activator.log.error(ex);
+ }
+ return null;
+ }
+
+ @Override
+ protected String getTargetPath() {
+ return EPL_HTML_PATH;
+ }
+
+ @Override
+ protected String getJobName() {
+ return "Add EPL file";
+ }
+}
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/AddFeatureLicenseFileHandler.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/AddFeatureLicenseFileHandler.java
new file mode 100644
index 00000000000..6969911a387
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/AddFeatureLicenseFileHandler.java
@@ -0,0 +1,48 @@
+package org.eclipse.papyrus.dev.project.management.handlers.features;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.papyrus.dev.project.management.Activator;
+import org.eclipse.papyrus.dev.project.management.handlers.AbstractAddFileHandler;
+import org.eclipse.papyrus.dev.project.management.utils.Utils;
+
+
+public class AddFeatureLicenseFileHandler extends AbstractAddFileHandler {
+
+ public static final String LICENSE_HTML_SOURCE_PATH = "/resources/license.html.file"; //$NON-NLS-1$
+
+ public static final String LICENSE_HTML_PATH = "license.html"; //$NON-NLS-1$
+
+ @Override
+ protected boolean isValidProject(IProject current) {
+ try {
+ return current.hasNature(Utils.FEATURE_NATURE);
+ } catch (CoreException ex) {
+ Activator.log.error(ex);
+ }
+ return false;
+ }
+
+ @Override
+ protected URL getSourceURL() {
+ try {
+ return new URL("platform:/plugin/" + Activator.PLUGIN_ID + LICENSE_HTML_SOURCE_PATH);
+ } catch (MalformedURLException ex) {
+ Activator.log.error(ex);
+ }
+ return null;
+ }
+
+ @Override
+ protected String getTargetPath() {
+ return LICENSE_HTML_PATH;
+ }
+
+ @Override
+ protected String getJobName() {
+ return "Add about.html file";
+ }
+}
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/ChangeFeatureVersionHandler.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/ChangeFeatureVersionHandler.java
new file mode 100644
index 00000000000..2ff35d0a709
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/ChangeFeatureVersionHandler.java
@@ -0,0 +1,56 @@
+package org.eclipse.papyrus.dev.project.management.handlers.features;
+
+import java.io.IOException;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.papyrus.dev.project.management.Activator;
+import org.eclipse.papyrus.dev.project.management.handlers.AbstractChangeProjectVersionHandler;
+import org.eclipse.papyrus.dev.project.management.utils.Utils;
+import org.eclipse.papyrus.eclipse.project.editors.interfaces.IFeatureProjectEditor;
+import org.eclipse.papyrus.eclipse.project.editors.project.FeatureProjectEditor;
+import org.xml.sax.SAXException;
+
+
+public class ChangeFeatureVersionHandler extends AbstractChangeProjectVersionHandler {
+
+
+ @Override
+ protected void setVersionNumber(final IProject project, final String newVersion, String notManagedProjectNames) {
+ if(project.isOpen()) {
+ try {
+ if(project.hasNature(Utils.FEATURE_NATURE)) {//for features
+ try {
+ final IFeatureProjectEditor editor = new FeatureProjectEditor(project);
+ editor.init();
+ editor.setVersion(newVersion);
+ editor.save();
+ } catch (final ParserConfigurationException e) {
+ Activator.log.error(e);
+ notManagedProjectNames += NLS.bind("- {0} \n", project.getName());
+ } catch (final SAXException e) {
+ Activator.log.error(e);
+ notManagedProjectNames += NLS.bind("- {0} \n", project.getName());
+ } catch (final IOException e) {
+ Activator.log.error(e);
+ notManagedProjectNames += NLS.bind("- {0} \n", project.getName());
+ } catch (final Throwable e) {
+ Activator.log.error(e);
+ notManagedProjectNames += NLS.bind("- {0} \n", project.getName());
+ }
+
+ } else {
+ notManagedProjectNames += NLS.bind("- {0} \n", project.getName());
+ }
+ } catch (final CoreException e) {
+ Activator.log.error(e);
+ }
+ } else {
+ notManagedProjectNames += NLS.bind("- {0} \n", project.getName());
+ }
+ }
+
+}
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/SetCopyrightNoticeHandler.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/SetCopyrightNoticeHandler.java
new file mode 100644
index 00000000000..2b6947eac76
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/SetCopyrightNoticeHandler.java
@@ -0,0 +1,94 @@
+/*****************************************************************************
+ * Copyright (c) 2012 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:
+ * Vincent Lorenzo (CEA LIST) Vincent.Lorenzo@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.dev.project.management.handlers.features;
+
+import java.util.List;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jface.window.Window;
+import org.eclipse.papyrus.dev.project.management.Activator;
+import org.eclipse.papyrus.dev.project.management.dialog.TwoInputDialog;
+import org.eclipse.papyrus.dev.project.management.utils.Utils;
+import org.eclipse.papyrus.eclipse.project.editors.interfaces.IFeatureProjectEditor;
+import org.eclipse.papyrus.eclipse.project.editors.project.FeatureProjectEditor;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ *
+ * set the Copyright and the URL only if it not yet set.
+ *
+ */
+public class SetCopyrightNoticeHandler extends AbstractHandler {
+
+ final static String OPTIONAL_URL = "url";
+
+ final static String TEXT = "text";
+
+ public Object execute(final ExecutionEvent event) throws ExecutionException {
+ Utils.getSelectedOpenProject();
+ final TwoInputDialog dialog = new TwoInputDialog(Display.getDefault().getActiveShell(), "Set Copyright Notice", "Licence url", "text", OPTIONAL_URL, TEXT, null);
+ if(dialog.open() == Window.OK) {
+ final String newVersion = dialog.getValue();
+ final List<IProject> featureProjects = Utils.getOpenedFeatureProject();
+ for(final IProject current : featureProjects) {
+ try {
+ setCopyrightNotice(current, dialog.getValue(), dialog.getValue_2());
+ } catch (final Throwable e) {
+ Activator.log.error(e);
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ *
+ * @param featureProject
+ * @param url
+ * @param text
+ * @throws Throwable
+ *
+ * TODO : doesn't erase existing value!
+ * TODO : add a checkbox in the dialog to erase existing value
+ */
+ protected void setCopyrightNotice(final IProject featureProject, final String url, final String text) throws Throwable {
+ final IFeatureProjectEditor editor = new FeatureProjectEditor(featureProject);
+ editor.init();
+ final String copyrirghtText = editor.getCopyrightText();
+ final String copyrightURL = editor.getCopyrightURL();
+ String settedURL = null;
+ String settedText = null;
+ //TODO improve these tests
+ if((copyrightURL == null) || copyrightURL.equals("")) {
+ settedURL = url;
+ } else {
+ settedURL = copyrightURL;
+ }
+
+ if((copyrirghtText == null) || copyrirghtText.equals("")) {
+ settedText = text;
+ }
+ if(settedText.equals(copyrirghtText) && settedURL.equals(copyrightURL)) {
+ //do nothing
+ } else {
+ editor.setCopyright(settedURL, settedText);
+ editor.save();
+ }
+
+ }
+
+}
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/AddProjectAboutFileHandler.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/AddProjectAboutFileHandler.java
new file mode 100644
index 00000000000..f452cff2fc5
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/AddProjectAboutFileHandler.java
@@ -0,0 +1,48 @@
+package org.eclipse.papyrus.dev.project.management.handlers.plugins;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.papyrus.dev.project.management.Activator;
+import org.eclipse.papyrus.dev.project.management.handlers.AbstractAddFileHandler;
+import org.eclipse.papyrus.dev.project.management.utils.Utils;
+
+//TODO should be covered with JUnit test
+public class AddProjectAboutFileHandler extends AbstractAddFileHandler {
+
+ public static final String ABOUT_HTML_SOURCE_PATH = "/resources/about.html.file"; //$NON-NLS-1$
+
+ public static final String ABOUT_HTML_PATH = "about.html"; //$NON-NLS-1$
+
+ @Override
+ protected boolean isValidProject(IProject current) {
+ try {
+ return current.hasNature(Utils.PLUGIN_NATURE);
+ } catch (CoreException ex) {
+ Activator.log.error(ex);
+ }
+ return false;
+ }
+
+ @Override
+ protected URL getSourceURL() {
+ try {
+ return new URL("platform:/plugin/" + Activator.PLUGIN_ID + ABOUT_HTML_SOURCE_PATH);
+ } catch (MalformedURLException ex) {
+ Activator.log.error(ex);
+ }
+ return null;
+ }
+
+ @Override
+ protected String getTargetPath() {
+ return ABOUT_HTML_PATH;
+ }
+
+ @Override
+ protected String getJobName() {
+ return "Add about.html file";
+ }
+}
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/ChangeDependencyVersionNumberHandler.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/ChangeDependencyVersionNumberHandler.java
new file mode 100644
index 00000000000..db0f336f7db
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/ChangeDependencyVersionNumberHandler.java
@@ -0,0 +1,171 @@
+package org.eclipse.papyrus.dev.project.management.handlers.plugins;
+
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.util.concurrent.atomic.AtomicReference;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.dialogs.IInputValidator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.window.Window;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.papyrus.dev.project.management.Activator;
+import org.eclipse.papyrus.dev.project.management.dialog.TwoInputDialog;
+import org.eclipse.papyrus.dev.project.management.utils.Utils;
+import org.eclipse.papyrus.eclipse.project.editors.file.ManifestEditor;
+import org.eclipse.papyrus.eclipse.project.editors.interfaces.IManifestEditor;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+//TODO should be covered with JUnit test
+public class ChangeDependencyVersionNumberHandler extends AbstractHandler {
+
+ private static final String TITLE = "Enter the new version number for Papyrus plugin.";
+
+
+ private static final String INITIAL_VALUE = "0.0.0";
+
+ private static final String WARNING_DIALOG_TITLE = "Change Version Name Report";
+
+ private static final String WARNING_DIALOG_MESSAGE = "The following project were NOT managed : ";
+
+ private static final String WARNING_DIALOG_MESSAGE2 = "Done.";
+
+ private static final String PAPYRUS_NAME = "org.eclipse.papyrus";
+
+ public Object execute(final ExecutionEvent event) throws ExecutionException {
+
+ final IInputValidator validator = new IInputValidator() {
+
+ public String isValid(final String newText) {
+ final boolean match = newText.matches("[0-9]+\\.[0-9]+\\.[0-9]");
+ if(!match) {
+ return NLS.bind("The version number should be : something like this : {0}.", INITIAL_VALUE);
+ }
+ return null;
+ }
+ };
+ final TwoInputDialog dialog = new TwoInputDialog(Display.getCurrent().getActiveShell(), TITLE, "Enter the new version for the Papyrus dependencies", "pattern plugin name", INITIAL_VALUE, PAPYRUS_NAME, validator);
+
+ if(dialog.open() == Window.OK) {
+ final String newVersion = dialog.getValue();
+ final String pattern = dialog.getValue_2();
+
+ Job job = new Job("Update dependency versions") {
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+
+ final AtomicReference<IStatus> result = new AtomicReference<IStatus>();
+
+ WorkspaceModifyOperation operation = new WorkspaceModifyOperation() {
+
+ @Override
+ protected void execute(IProgressMonitor monitor) throws CoreException, InvocationTargetException, InterruptedException {
+ result.set(runAsJob(newVersion, pattern, monitor));
+ }
+
+ };
+
+ try {
+ operation.run(monitor);
+ } catch (InvocationTargetException e) {
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage());
+ } catch (InterruptedException e) {
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage());
+ }
+
+ return result.get();
+ }
+
+ };
+ job.setUser(true);
+ job.schedule();
+ }
+ return null;
+ }
+
+ protected IStatus runAsJob(final String newVersion, final String pattern, IProgressMonitor monitor) {
+ String notManagedProjectNames = "";
+
+ final IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
+
+ monitor.beginTask("Update dependency versions", projects.length);
+
+ for(final IProject current : projects) {
+ final String name = current.getName();
+
+ if(name.startsWith(PAPYRUS_NAME)) {//TODO : add the possibility to manage other plugins
+ setVersionNumber(current, pattern, newVersion, notManagedProjectNames);
+ } else {
+ notManagedProjectNames += NLS.bind("- {0} \n", current.getName());
+ }
+
+ monitor.worked(1);
+ }
+
+
+ final String textResult = notManagedProjectNames;
+ Display.getDefault().asyncExec(new Runnable() {
+
+ public void run() {
+ if(textResult.equals("")) {
+ final MessageDialog informationDialog = new MessageDialog(Display.getCurrent().getActiveShell(), WARNING_DIALOG_TITLE, null, WARNING_DIALOG_MESSAGE2, MessageDialog.INFORMATION, new String[]{ "OK" }, 0);
+ informationDialog.open();
+ } else {
+ final MessageDialog informationDialog = new MessageDialog(Display.getCurrent().getActiveShell(), WARNING_DIALOG_TITLE, null, WARNING_DIALOG_MESSAGE + "\n" + textResult, MessageDialog.INFORMATION, new String[]{ "OK" }, 0);
+ informationDialog.open();
+ }
+ }
+ });
+
+ return Status.OK_STATUS;
+ }
+
+ /**
+ *
+ * @param project
+ * the project to manage
+ * @param dependencyPattern
+ * the pattern used to find the dependency to update
+ * @param newVersion
+ * the new version for the project
+ * @param notManagedProjectNames
+ * a String used to build the message with the not managed projects
+ */
+ private void setVersionNumber(final IProject project, final String dependencyPattern, final String newValue, String notManagedProjectNames) {
+ if(project.isOpen()) {
+ try {
+ final boolean pluginnature = project.hasNature(Utils.PLUGIN_NATURE);
+ if(pluginnature) {
+ try {
+ final IManifestEditor editor = new ManifestEditor(project);
+ editor.init();
+ editor.setDependenciesVersion(dependencyPattern, newValue);
+ editor.save();
+ } catch (final IOException e) {
+ Activator.log.error(e);
+ notManagedProjectNames += NLS.bind("- {0} \n", project.getName());
+ } catch (final Throwable e) {
+ Activator.log.error(e);
+ notManagedProjectNames += NLS.bind("- {0} \n", project.getName());
+ }
+
+ }
+ } catch (final CoreException e) {
+ Activator.log.error(e);
+ }
+ } else {
+ notManagedProjectNames += NLS.bind("- {0} \n", project.getName());
+ }
+ }
+}
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/ChangePluginVersionHandler.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/ChangePluginVersionHandler.java
new file mode 100644
index 00000000000..68ff928fedd
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/ChangePluginVersionHandler.java
@@ -0,0 +1,47 @@
+package org.eclipse.papyrus.dev.project.management.handlers.plugins;
+
+import java.io.IOException;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.papyrus.dev.project.management.Activator;
+import org.eclipse.papyrus.dev.project.management.handlers.AbstractChangeProjectVersionHandler;
+import org.eclipse.papyrus.dev.project.management.utils.Utils;
+import org.eclipse.papyrus.eclipse.project.editors.file.ManifestEditor;
+import org.eclipse.papyrus.eclipse.project.editors.interfaces.IManifestEditor;
+
+
+public class ChangePluginVersionHandler extends AbstractChangeProjectVersionHandler {
+
+
+ @Override
+ protected void setVersionNumber(final IProject project, final String newVersion, String notManagedProjectNames) {
+ if(project.isOpen()) {
+ try {
+ if(project.hasNature(Utils.PLUGIN_NATURE)) {
+ try {
+ final IManifestEditor editor = new ManifestEditor(project);
+ editor.init();
+ editor.setBundleVersion(newVersion);
+ editor.save();
+ } catch (final IOException e) {
+ Activator.log.error(e);
+ notManagedProjectNames += NLS.bind("- {0} \n", project.getName());
+ } catch (final Throwable e) {
+ Activator.log.error(e);
+ notManagedProjectNames += NLS.bind("- {0} \n", project.getName());
+ }
+
+ } else {
+ notManagedProjectNames += NLS.bind("- {0} \n", project.getName());
+ }
+ } catch (final CoreException e) {
+ Activator.log.error(e);
+ }
+ } else {
+ notManagedProjectNames += NLS.bind("- {0} \n", project.getName());
+ }
+ }
+
+}
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/utils/Utils.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/utils/Utils.java
new file mode 100644
index 00000000000..5419f815b20
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/utils/Utils.java
@@ -0,0 +1,71 @@
+package org.eclipse.papyrus.dev.project.management.utils;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.papyrus.dev.project.management.Activator;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.internal.WorkingSet;
+
+
+public class Utils {
+
+ private Utils() {
+ //to prevent instanciation
+ }
+
+ public static final String FEATURE_NATURE = "org.eclipse.pde.FeatureNature";
+
+ public static final String PLUGIN_NATURE = "org.eclipse.pde.PluginNature";
+
+ /**
+ *
+ * @return
+ * the list of opened feature project
+ */
+ public static List<IProject> getOpenedFeatureProject() {
+ final List<IProject> featureProject = new ArrayList<IProject>();
+ final IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
+ for(final IProject current : projects) {
+ try {
+ if(current.isOpen() && current.hasNature(FEATURE_NATURE)) {
+ featureProject.add(current);
+ }
+ } catch (final CoreException e) {
+ Activator.log.error(e);
+ }
+ }
+ return featureProject;
+ }
+
+ public static Collection<IProject> getSelectedOpenProject() {
+ final Set<IProject> selectedProject = new HashSet<IProject>();
+ final ISelection selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().getSelection();
+ Assert.isTrue(selection instanceof IStructuredSelection);
+ final Iterator<?> iter = ((IStructuredSelection)selection).iterator();
+ while(iter.hasNext()) {
+ final Object current = iter.next();
+ if((current instanceof IProject) && ((IProject)current).isOpen()) {
+ selectedProject.add((IProject)current);
+ } else if(current instanceof WorkingSet) {
+ for(final IAdaptable curr : ((WorkingSet)current).getElements()) {
+ if((curr instanceof IProject) && ((IProject)curr).isOpen()) {
+ selectedProject.add((IProject)curr);
+ }
+ }
+ }
+ }
+ return selectedProject;
+ }
+}
diff --git a/plugins/developer/org.eclipse.papyrus.emf.commandstack/.classpath b/plugins/developer/org.eclipse.papyrus.emf.commandstack/.classpath
new file mode 100644
index 00000000000..64c5e31b7a2
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.emf.commandstack/.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/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/developer/org.eclipse.papyrus.emf.commandstack/.project b/plugins/developer/org.eclipse.papyrus.emf.commandstack/.project
new file mode 100644
index 00000000000..d305eea197c
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.emf.commandstack/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.infra.emf.commandstack</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/developer/org.eclipse.papyrus.emf.commandstack/.settings/org.eclipse.jdt.core.prefs b/plugins/developer/org.eclipse.papyrus.emf.commandstack/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..b2cf4145e6c
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.emf.commandstack/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Fri Dec 02 10:21:08 CET 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/developer/org.eclipse.papyrus.emf.commandstack/META-INF/MANIFEST.MF b/plugins/developer/org.eclipse.papyrus.emf.commandstack/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..0edee1616af
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.emf.commandstack/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.edit;bundle-version="2.7.1",
+ org.eclipse.papyrus.infra.core;bundle-version="0.10.0",
+ org.eclipse.gmf.runtime.common.core;bundle-version="1.4.1",
+ org.eclipse.emf.workspace;bundle-version="1.4.0",
+ org.eclipse.papyrus.infra.gmfdiag.commands;bundle-version="0.10.0",
+ org.eclipse.gmf.runtime.diagram.ui;bundle-version="1.7.0",
+ org.eclipse.papyrus.emf.facet.common.ui
+Bundle-Vendor: %providerName
+Bundle-ActivationPolicy: lazy
+Bundle-Version: 1.1.0.qualifier
+Bundle-Name: %pluginName
+Bundle-Localization: plugin
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.infra.emf.commandstack.Activator
+Bundle-SymbolicName: org.eclipse.papyrus.infra.emf.commandstack;singleton:=true
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-Description: This plugin allows to show the command owned by the emf command stack
+
diff --git a/plugins/developer/org.eclipse.papyrus.emf.commandstack/about.html b/plugins/developer/org.eclipse.papyrus.emf.commandstack/about.html
new file mode 100644
index 00000000000..d35d5aed64c
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.emf.commandstack/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 (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). 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, &quot;Program&quot; 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 (&quot;Redistributor&quot;) 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/developer/org.eclipse.papyrus.emf.commandstack/build.properties b/plugins/developer/org.eclipse.papyrus.emf.commandstack/build.properties
new file mode 100644
index 00000000000..69d0f2e3ef2
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.emf.commandstack/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ icons/,\
+ about.html
diff --git a/plugins/developer/org.eclipse.papyrus.emf.commandstack/icons/stack.gif b/plugins/developer/org.eclipse.papyrus.emf.commandstack/icons/stack.gif
new file mode 100644
index 00000000000..3d49e781ea1
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.emf.commandstack/icons/stack.gif
Binary files differ
diff --git a/plugins/developer/org.eclipse.papyrus.emf.commandstack/plugin.properties b/plugins/developer/org.eclipse.papyrus.emf.commandstack/plugin.properties
new file mode 100644
index 00000000000..04e571f6f13
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.emf.commandstack/plugin.properties
@@ -0,0 +1,4 @@
+#Properties file for org.eclipse.papyrus.emf.commandstack
+providerName = Eclipse Modeling Project
+pluginName = A View for the commandstack
+view.name = CommandStack
diff --git a/plugins/developer/org.eclipse.papyrus.emf.commandstack/plugin.xml b/plugins/developer/org.eclipse.papyrus.emf.commandstack/plugin.xml
new file mode 100644
index 00000000000..2a1e8e4a703
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.emf.commandstack/plugin.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.ui.views">
+ <view
+ category="org.eclipse.papyrus.views.category"
+ class="org.eclipse.papyrus.infra.emf.commandstack.view.CommandStackView"
+ icon="icons/stack.gif"
+ id="org.eclipse.papyrus.command.view.commandstackview"
+ name="%view.name"
+ restorable="true">
+ </view>
+ </extension>
+
+</plugin>
diff --git a/plugins/developer/org.eclipse.papyrus.emf.commandstack/src/org/eclipse/papyrus/infra/emf/commandstack/Activator.java b/plugins/developer/org.eclipse.papyrus.emf.commandstack/src/org/eclipse/papyrus/infra/emf/commandstack/Activator.java
new file mode 100644
index 00000000000..309d259bfd6
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.emf.commandstack/src/org/eclipse/papyrus/infra/emf/commandstack/Activator.java
@@ -0,0 +1,63 @@
+/*****************************************************************************
+ * Copyright (c) 2011 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:
+ * Vincent Lorenzo (CEA LIST) Vincent.Lorenzo@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.emf.commandstack;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.infra.emf.commandstack"; //$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/developer/org.eclipse.papyrus.emf.commandstack/src/org/eclipse/papyrus/infra/emf/commandstack/view/CommandStackView.java b/plugins/developer/org.eclipse.papyrus.emf.commandstack/src/org/eclipse/papyrus/infra/emf/commandstack/view/CommandStackView.java
new file mode 100644
index 00000000000..093c1a345a9
--- /dev/null
+++ b/plugins/developer/org.eclipse.papyrus.emf.commandstack/src/org/eclipse/papyrus/infra/emf/commandstack/view/CommandStackView.java
@@ -0,0 +1,285 @@
+/*****************************************************************************
+ * Copyright (c) 2011 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:
+ * Vincent Lorenzo (CEA LIST) Vincent.Lorenzo@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.emf.commandstack.view;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+
+import org.eclipse.core.commands.operations.AbstractOperation;
+import org.eclipse.core.commands.operations.IOperationHistory;
+import org.eclipse.core.commands.operations.IOperationHistoryListener;
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.commands.operations.IUndoableOperation;
+import org.eclipse.core.commands.operations.OperationHistoryEvent;
+import org.eclipse.core.commands.operations.OperationHistoryFactory;
+import org.eclipse.emf.common.command.AbstractCommand;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CompoundCommand;
+import org.eclipse.emf.workspace.EMFCommandOperation;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.diagram.ui.commands.CommandProxy;
+import org.eclipse.gmf.runtime.emf.commands.core.command.EditingDomainUndoContext;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.IContentProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.papyrus.commands.wrappers.GEFtoEMFCommandWrapper;
+import org.eclipse.papyrus.commands.wrappers.GMFtoEMFCommandWrapper;
+import org.eclipse.papyrus.emf.facet.common.ui.internal.views.AbstractTreeView;
+
+public class CommandStackView extends AbstractTreeView {
+
+ private final int maxSize = 25;
+
+ private final IOperationHistory history;
+
+ private final List<IUndoableOperation> commandList = new ArrayList<IUndoableOperation>();
+
+ private final Map<IUndoableOperation, String> dates = new HashMap<IUndoableOperation, String>();
+
+ private final IOperationHistoryListener historyListener;
+
+ public CommandStackView() {
+ this.history = OperationHistoryFactory.getOperationHistory();
+ this.history.addOperationHistoryListener(historyListener = new IOperationHistoryListener() {
+
+ public void historyNotification(final OperationHistoryEvent event) {
+ if(!CommandStackView.this.commandList.contains(event.getOperation())) {
+ if(CommandStackView.this.commandList.size() == CommandStackView.this.maxSize) {
+ IUndoableOperation removedOperation = CommandStackView.this.commandList.remove(CommandStackView.this.maxSize - 1);
+ dates.remove(removedOperation);
+ }
+ CommandStackView.this.commandList.add(0, event.getOperation());
+ final DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
+ final Calendar cal = Calendar.getInstance();
+ CommandStackView.this.dates.put(event.getOperation(), dateFormat.format(cal.getTime()));
+ refresh(true);
+ }
+ }
+ });
+ }
+
+ private boolean isValidUndoContext(IUndoableOperation operation) {
+ for(IUndoContext undoContext : operation.getContexts()) {
+ if(undoContext instanceof EditingDomainUndoContext) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ protected void createColumns() {
+ createNameColumn();
+ createDescriptionColumn();
+ createCommandTypeColumn();
+ createTimeColumn();
+ createUndoContextColumn();
+ }
+
+ @Override
+ public void createPartControl(final org.eclipse.swt.widgets.Composite parent) {
+ super.createPartControl(parent);
+ final IToolBarManager tbm = getViewSite().getActionBars().getToolBarManager();
+ tbm.add(new Action() {
+
+ @Override
+ public void run() {
+ clear();
+ refresh(true);
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return true;
+ }
+
+ @Override
+ public String getToolTipText() {
+ return getText();
+ }
+
+ @Override
+ public String getText() {
+ return "Clear the view";
+ }
+ });
+ }
+
+ private void createCommandTypeColumn() {
+ final ColumnLabelProvider columnLabelProvider = new ColumnLabelProvider() {
+
+ @Override
+ public String getText(final Object element) {
+ return element.getClass().getName();
+ }
+ };
+ createColumn("Type", "TYPE_COLUMN_ID", 200, columnLabelProvider);
+ }
+
+ protected void createNameColumn() {
+ final ColumnLabelProvider columnLabelProvider = new ColumnLabelProvider() {
+
+ @Override
+ public String getText(final Object element) {
+ if(element instanceof AbstractOperation) {
+ return ((AbstractOperation)element).getLabel();
+ } else if(element instanceof AbstractCommand) {
+ return ((AbstractCommand)element).getLabel();
+ } else if(element instanceof org.eclipse.gef.commands.Command) {
+ return ((org.eclipse.gef.commands.Command)element).getLabel();
+ }
+ return "no managed";
+ }
+ };
+ createColumn("Name", "NAME_COLUMN_ID", 200, columnLabelProvider);
+ }
+
+ protected void createUndoContextColumn() {
+ final ColumnLabelProvider columnLabelProvider = new ColumnLabelProvider() {
+
+ @Override
+ public String getText(final Object element) {
+ if(element instanceof IUndoableOperation) {
+ return Boolean.toString(isValidUndoContext((IUndoableOperation)element));
+ }
+ return "?";
+ }
+ };
+ createColumn("EMF Command Stack", "UNDO_CONTEXT_COLUMN_ID", 100, columnLabelProvider);
+ }
+
+ protected void createDescriptionColumn() {
+ final ColumnLabelProvider columnLabelProvider = new ColumnLabelProvider() {
+
+ @Override
+ public String getText(final Object element) {
+ if(element instanceof AbstractCommand) {
+ return ((AbstractCommand)element).getDescription();
+ }
+ return "no description";
+ }
+ };
+ createColumn("Description", "DESCRIPTION_COLUMN_ID", 150, columnLabelProvider);
+ }
+
+ protected void createTimeColumn() {
+ final ColumnLabelProvider columnLabelProvider = new ColumnLabelProvider() {
+
+ @Override
+ public String getText(final Object element) {
+ if(CommandStackView.this.dates.containsKey(element)) {
+ return CommandStackView.this.dates.get(element);
+ }
+ return "";
+ }
+ };
+ createColumn("Time", "TIME_COLUMN_ID", 100, columnLabelProvider);
+ }
+
+ @Override
+ protected IContentProvider getContentProvider() {
+ return new ITreeContentProvider() {
+
+ public Object[] getElements(final Object inputElement) {
+ if(inputElement instanceof Command) {
+ return new Object[]{ inputElement };
+ } else if(inputElement instanceof Collection<?>) {
+ return ((Collection<?>)inputElement).toArray();
+ }
+ return new Object[0];
+ }
+
+ public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) {
+ // nothing
+ }
+
+ public void dispose() {
+ // nothing
+ }
+
+ public boolean hasChildren(final Object element) {
+ return getChildren(element).length != 0;
+ }
+
+ public Object getParent(final Object element) {
+ return null;
+ }
+
+ public Object[] getChildren(final Object parentElement) {
+ if(parentElement instanceof CompoundCommand) {
+ return ((CompoundCommand)parentElement).getCommandList().toArray();
+ } else if(parentElement instanceof CompositeCommand) {
+ final List<Object> children = new ArrayList<Object>();
+ final ListIterator<Object> iter = ((CompositeCommand)parentElement).listIterator();
+ while(iter.hasNext()) {
+ children.add(iter.next());
+ }
+ return children.toArray();
+ } else if(parentElement instanceof EMFCommandOperation) {
+ final List<Object> children = new ArrayList<Object>();
+ children.add(((EMFCommandOperation)parentElement).getCommand());
+ return children.toArray();
+ } else if(parentElement instanceof GMFtoEMFCommandWrapper) {
+ return new Object[]{ ((GMFtoEMFCommandWrapper)parentElement).getGMFCommand() };
+ } else if(parentElement instanceof GEFtoEMFCommandWrapper) {
+ return new Object[]{ ((GEFtoEMFCommandWrapper)parentElement).getGEFCommand() };
+ } else if(parentElement instanceof CommandProxy) {
+ return new Object[]{ ((CommandProxy)parentElement).getCommand() };
+ } else if(parentElement instanceof org.eclipse.gef.commands.CompoundCommand) {
+ return ((org.eclipse.gef.commands.CompoundCommand)parentElement).getChildren();
+ }
+ return new Object[0];
+ }
+ };
+ }
+
+ @Override
+ protected void openElement(final Object element) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected String getRefreshMessage() {
+ return "Refresh CommandStack View";
+ }
+
+ private Object result[];// = new Object[1];
+
+ @Override
+ protected Object getInput() {
+ return this.commandList;
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+ history.removeOperationHistoryListener(historyListener);
+ clear();
+ }
+
+ private void clear() {
+ this.commandList.clear();
+ this.dates.clear();
+ }
+}

Back to the top