parallel ip - initial checkin
Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/.osbp.releng.root b/.osbp.releng.root
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.osbp.releng.root
diff --git a/.project b/.project
new file mode 100644
index 0000000..08ede92
--- /dev/null
+++ b/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ </natures>
+</projectDescription>
diff --git a/LICENSE.TXT b/LICENSE.TXT
new file mode 100644
index 0000000..91104f1
--- /dev/null
+++ b/LICENSE.TXT
@@ -0,0 +1,5 @@
+Copyright (c) 2012 Rushan R. Gilmullin and others.
+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
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..cc41ad5
--- /dev/null
+++ b/README.md
@@ -0,0 +1,4 @@
+vaaclipse
+=========
+
+Vaaclipse is a framework for building web applications using Eclipse 4 platform and Vaadin.
diff --git a/about.html b/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/build.properties b/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/jenkins.build.config.xml b/jenkins.build.config.xml
new file mode 100644
index 0000000..c4355da
--- /dev/null
+++ b/jenkins.build.config.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2016 - Loetz GmbH&Co.KG -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+<!--# Module specific parameters for the Jenkins Job -->
+<!--#======================================================================= -->
+
+<jenkins>
+ <!-- DO NOT EDIT BELOW THIS LINE -->
+ <jenkins.build.dependencies>
+ <jenkins.build.dependency>org.eclipse.osbp.dsl</jenkins.build.dependency>
+ <jenkins.build.dependency>org.eclipse.osbp.ecview.core</jenkins.build.dependency>
+ <jenkins.build.dependency>org.eclipse.osbp.runtime</jenkins.build.dependency>
+ <jenkins.build.dependency>org.eclipse.osbp.runtime.web</jenkins.build.dependency>
+ <jenkins.build.dependency>org.eclipse.osbp.ui.api</jenkins.build.dependency>
+ <jenkins.build.dependency>org.eclipse.osbp.vaadin.emf</jenkins.build.dependency>
+ </jenkins.build.dependencies>
+</jenkins>
diff --git a/launcher/Vaaclipse - Build Cassandra Widgetset.launch b/launcher/Vaaclipse - Build Cassandra Widgetset.launch
new file mode 100644
index 0000000..367c8ad
--- /dev/null
+++ b/launcher/Vaaclipse - Build Cassandra Widgetset.launch
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
+<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
+<stringAttribute key="M2_GOALS" value="clean verify"/>
+<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
+<booleanAttribute key="M2_OFFLINE" value="false"/>
+<stringAttribute key="M2_PROFILES" value="build-cassandra-widgetsets"/>
+<listAttribute key="M2_PROPERTIES"/>
+<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
+<booleanAttribute key="M2_SKIP_TESTS" value="false"/>
+<intAttribute key="M2_THREADS" value="1"/>
+<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
+<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/org.semanticsoft.vaaclipse}"/>
+</launchConfiguration>
diff --git a/launcher/Vaaclipse - Build Widgetset.launch b/launcher/Vaaclipse - Build Widgetset.launch
new file mode 100644
index 0000000..04b6842
--- /dev/null
+++ b/launcher/Vaaclipse - Build Widgetset.launch
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
+<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
+<stringAttribute key="M2_GOALS" value="clean verify"/>
+<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
+<booleanAttribute key="M2_OFFLINE" value="false"/>
+<stringAttribute key="M2_PROFILES" value="build-widgetsets"/>
+<listAttribute key="M2_PROPERTIES"/>
+<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
+<booleanAttribute key="M2_SKIP_TESTS" value="false"/>
+<intAttribute key="M2_THREADS" value="1"/>
+<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
+<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/org.semanticsoft.vaaclipse}"/>
+</launchConfiguration>
diff --git a/launcher/Vaaclipse - P2-Juno.launch b/launcher/Vaaclipse - P2-Juno.launch
new file mode 100644
index 0000000..23e2977
--- /dev/null
+++ b/launcher/Vaaclipse - P2-Juno.launch
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
+<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
+<stringAttribute key="M2_GOALS" value="clean verify"/>
+<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
+<booleanAttribute key="M2_OFFLINE" value="false"/>
+<stringAttribute key="M2_PROFILES" value="p2-juno"/>
+<listAttribute key="M2_PROPERTIES"/>
+<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
+<booleanAttribute key="M2_SKIP_TESTS" value="true"/>
+<intAttribute key="M2_THREADS" value="1"/>
+<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
+<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dvaaclipse.p2.target.folder=Users/admin/git/vaaclipse/org.semanticsoft.vaaclipse.p2/test"/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/org.semanticsoft.vaaclipse}"/>
+</launchConfiguration>
diff --git a/launcher/Vaaclipse - P2-Kepler.launch b/launcher/Vaaclipse - P2-Kepler.launch
new file mode 100644
index 0000000..a05969e
--- /dev/null
+++ b/launcher/Vaaclipse - P2-Kepler.launch
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
+<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
+<stringAttribute key="M2_GOALS" value="clean install"/>
+<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
+<booleanAttribute key="M2_OFFLINE" value="false"/>
+<stringAttribute key="M2_PROFILES" value="p2-kepler"/>
+<listAttribute key="M2_PROPERTIES"/>
+<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
+<booleanAttribute key="M2_SKIP_TESTS" value="true"/>
+<intAttribute key="M2_THREADS" value="1"/>
+<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
+<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dvaaclipse.p2.target.folder=Users/admin/git/vaaclipse/org.semanticsoft.vaaclipse.p2/test"/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/vaaclipse}"/>
+</launchConfiguration>
diff --git a/manualSteps/README b/manualSteps/README
new file mode 100644
index 0000000..922b971
--- /dev/null
+++ b/manualSteps/README
@@ -0,0 +1,9 @@
+
+ ==========================================
+ Install the dragdroplayouts-development.jar under the group com.vaadin.addon.patch in your local maven repo:
+ mvn install:install-file -Dfile=dragdroplayouts-development.jar -DgroupId=com.vaadin.addon.patch
+ -DartifactId=dragdroplayouts -Dversion=0.0.1 -Dpackaging=jar
+ ==========================================
+
+
+
\ No newline at end of file
diff --git a/notice.html b/notice.html
new file mode 100644
index 0000000..c3d34c3
--- /dev/null
+++ b/notice.html
@@ -0,0 +1,107 @@
+<?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>April 9, 2014</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files named "feature.xml" 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 ("Included Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and conditions governing Features and
+Included Features should be contained in files named "license.html" ("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties" 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>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 ("Provisioning Technology") for the purpose of allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.e4.ui.model.workbench.edit/.project b/org.eclipse.e4.ui.model.workbench.edit/.project
new file mode 100644
index 0000000..aed62eb
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.e4.ui.model.workbench.edit</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.e4.ui.model.workbench.edit/META-INF/MANIFEST.MF b/org.eclipse.e4.ui.model.workbench.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..43c324f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.e4.ui.model.workbench.edit
+Bundle-SymbolicName: org.eclipse.e4.ui.model.workbench.edit;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin$Implementation
+Bundle-Vendor: Eclipse OSBP
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.e4.ui.model.application.commands.provider,
+ org.eclipse.e4.ui.model.application.descriptor.basic.provider,
+ org.eclipse.e4.ui.model.application.provider,
+ org.eclipse.e4.ui.model.application.ui.advanced.provider,
+ org.eclipse.e4.ui.model.application.ui.basic.provider,
+ org.eclipse.e4.ui.model.application.ui.menu.provider,
+ org.eclipse.e4.ui.model.application.ui.provider
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.e4.ui.model.workbench;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.e4.ui.model.workbench.edit/about.html b/org.eclipse.e4.ui.model.workbench.edit/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.e4.ui.model.workbench.edit/about.ini b/org.eclipse.e4.ui.model.workbench.edit/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.e4.ui.model.workbench.edit/about.mappings b/org.eclipse.e4.ui.model.workbench.edit/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.e4.ui.model.workbench.edit/about.properties b/org.eclipse.e4.ui.model.workbench.edit/about.properties
new file mode 100644
index 0000000..0853b83
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.e4.ui.model.workbench.edit
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.e4.ui.model.workbench.edit/build.properties b/org.eclipse.e4.ui.model.workbench.edit/build.properties
new file mode 100644
index 0000000..4088a74
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/build.properties
@@ -0,0 +1,21 @@
+# Copyright (c) 2008, 2013 IBM Corporation and others.
+# 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:
+# IBM Corporation - initial API and implementation
+
+bin.includes = about.properties, about.mappings, about.ini, about.html, .,\
+ icons/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties,\
+ epl-v10.html,\
+ license.html
+jars.compile.order = .
+source.. = src/
+output.. = bin/
+src.includes = about.properties, about.mappings, about.ini, about.html, epl-v10.html,\
+ license.html
diff --git a/org.eclipse.e4.ui.model.workbench.edit/epl-v10.html b/org.eclipse.e4.ui.model.workbench.edit/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplicationElement_persistedState_StringToStringMap.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplicationElement_persistedState_StringToStringMap.gif
new file mode 100644
index 0000000..40d0cdd
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplicationElement_persistedState_StringToStringMap.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplication_addons_Addon.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplication_addons_Addon.gif
new file mode 100644
index 0000000..ed645c3
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplication_addons_Addon.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplication_categories_Category.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplication_categories_Category.gif
new file mode 100644
index 0000000..2e2932f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplication_categories_Category.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplication_commands_Command.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplication_commands_Command.gif
new file mode 100644
index 0000000..2de4789
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateApplication_commands_Command.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateBindingContext_children_BindingContext.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateBindingContext_children_BindingContext.gif
new file mode 100644
index 0000000..09741e8
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateBindingContext_children_BindingContext.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateBindingTable_bindings_KeyBinding.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateBindingTable_bindings_KeyBinding.gif
new file mode 100644
index 0000000..845de0f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateBindingTable_bindings_KeyBinding.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateCommand_parameters_CommandParameter.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateCommand_parameters_CommandParameter.gif
new file mode 100644
index 0000000..43bee18
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateCommand_parameters_CommandParameter.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Application.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Application.gif
new file mode 100644
index 0000000..a2dd68e
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Application.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Area.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Area.gif
new file mode 100644
index 0000000..a36743b
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Area.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_CompositePart.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_CompositePart.gif
new file mode 100644
index 0000000..464f093
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_CompositePart.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Dialog.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Dialog.gif
new file mode 100644
index 0000000..3891882
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Dialog.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_DirectMenuItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_DirectMenuItem.gif
new file mode 100644
index 0000000..9fcf2c7
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_DirectMenuItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_DirectToolItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_DirectToolItem.gif
new file mode 100644
index 0000000..ac071ee
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_DirectToolItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_DynamicMenuContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_DynamicMenuContribution.gif
new file mode 100644
index 0000000..1e0e0f3
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_DynamicMenuContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_HandledMenuItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_HandledMenuItem.gif
new file mode 100644
index 0000000..68005ae
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_HandledMenuItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_HandledToolItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_HandledToolItem.gif
new file mode 100644
index 0000000..07b0fd9
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_HandledToolItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_InputPart.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_InputPart.gif
new file mode 100644
index 0000000..86d7811
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_InputPart.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Menu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Menu.gif
new file mode 100644
index 0000000..b067e51
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Menu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_MenuContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_MenuContribution.gif
new file mode 100644
index 0000000..e88df1c
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_MenuContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_MenuSeparator.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_MenuSeparator.gif
new file mode 100644
index 0000000..0d55746
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_MenuSeparator.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Part.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Part.gif
new file mode 100644
index 0000000..0a9ad1c
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Part.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PartSashContainer.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PartSashContainer.gif
new file mode 100644
index 0000000..3891882
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PartSashContainer.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PartStack.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PartStack.gif
new file mode 100644
index 0000000..1e0e0f3
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PartStack.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Perspective.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Perspective.gif
new file mode 100644
index 0000000..88d8844
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Perspective.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PerspectiveStack.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PerspectiveStack.gif
new file mode 100644
index 0000000..bee2a07
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PerspectiveStack.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Placeholder.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Placeholder.gif
new file mode 100644
index 0000000..08f15c5
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Placeholder.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PopupMenu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PopupMenu.gif
new file mode 100644
index 0000000..08f15c5
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_PopupMenu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolBar.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolBar.gif
new file mode 100644
index 0000000..f66fdd6
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolBar.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolBarContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolBarContribution.gif
new file mode 100644
index 0000000..9144498
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolBarContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolBarSeparator.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolBarSeparator.gif
new file mode 100644
index 0000000..0cf27b2
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolBarSeparator.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolControl.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolControl.gif
new file mode 100644
index 0000000..de6e628
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_ToolControl.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_TrimBar.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_TrimBar.gif
new file mode 100644
index 0000000..5fe40c4
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_TrimBar.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_TrimContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_TrimContribution.gif
new file mode 100644
index 0000000..9144498
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_TrimContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_TrimmedWindow.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_TrimmedWindow.gif
new file mode 100644
index 0000000..464f093
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_TrimmedWindow.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Window.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Window.gif
new file mode 100644
index 0000000..a303761
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_Window.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_WizardDialog.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_WizardDialog.gif
new file mode 100644
index 0000000..f66fdd6
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateElementContainer_children_WizardDialog.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateHandledItem_parameters_Parameter.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateHandledItem_parameters_Parameter.gif
new file mode 100644
index 0000000..542f33a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateHandledItem_parameters_Parameter.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateKeyBinding_parameters_Parameter.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateKeyBinding_parameters_Parameter.gif
new file mode 100644
index 0000000..6fc892d
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateKeyBinding_parameters_Parameter.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePartDescriptor_menus_Menu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePartDescriptor_menus_Menu.gif
new file mode 100644
index 0000000..33f4da0
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePartDescriptor_menus_Menu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePartDescriptor_menus_PopupMenu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePartDescriptor_menus_PopupMenu.gif
new file mode 100644
index 0000000..fd2e2cc
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePartDescriptor_menus_PopupMenu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePartDescriptor_toolbar_ToolBar.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePartDescriptor_toolbar_ToolBar.gif
new file mode 100644
index 0000000..85afdbb
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePartDescriptor_toolbar_ToolBar.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePart_menus_Menu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePart_menus_Menu.gif
new file mode 100644
index 0000000..b067e51
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePart_menus_Menu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePart_menus_PopupMenu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePart_menus_PopupMenu.gif
new file mode 100644
index 0000000..08f15c5
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePart_menus_PopupMenu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePart_toolbar_ToolBar.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePart_toolbar_ToolBar.gif
new file mode 100644
index 0000000..f66fdd6
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePart_toolbar_ToolBar.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_Dialog.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_Dialog.gif
new file mode 100644
index 0000000..0b0adae
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_Dialog.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_TrimmedWindow.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_TrimmedWindow.gif
new file mode 100644
index 0000000..e268a9e
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_TrimmedWindow.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_Window.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_Window.gif
new file mode 100644
index 0000000..5a20caa
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_Window.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_WizardDialog.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_WizardDialog.gif
new file mode 100644
index 0000000..df7afd7
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreatePerspective_windows_WizardDialog.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateToolItem_menu_Menu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateToolItem_menu_Menu.gif
new file mode 100644
index 0000000..c01322f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateToolItem_menu_Menu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateToolItem_menu_PopupMenu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateToolItem_menu_PopupMenu.gif
new file mode 100644
index 0000000..c9af92d
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateToolItem_menu_PopupMenu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateTrimmedWindow_trimBars_TrimBar.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateTrimmedWindow_trimBars_TrimBar.gif
new file mode 100644
index 0000000..59d3029
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateTrimmedWindow_trimBars_TrimBar.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateUIElement_visibleWhen_CoreExpression.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateUIElement_visibleWhen_CoreExpression.gif
new file mode 100644
index 0000000..aff8996
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateUIElement_visibleWhen_CoreExpression.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_mainMenu_Menu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_mainMenu_Menu.gif
new file mode 100644
index 0000000..af07ba1
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_mainMenu_Menu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_mainMenu_PopupMenu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_mainMenu_PopupMenu.gif
new file mode 100644
index 0000000..0855183
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_mainMenu_PopupMenu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Application.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Application.gif
new file mode 100644
index 0000000..38d77bb
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Application.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Area.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Area.gif
new file mode 100644
index 0000000..9dd025a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Area.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_CompositePart.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_CompositePart.gif
new file mode 100644
index 0000000..9073955
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_CompositePart.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Dialog.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Dialog.gif
new file mode 100644
index 0000000..d70b2d9
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Dialog.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_DirectMenuItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_DirectMenuItem.gif
new file mode 100644
index 0000000..775ec09
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_DirectMenuItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_DirectToolItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_DirectToolItem.gif
new file mode 100644
index 0000000..3cee5b6
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_DirectToolItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_DynamicMenuContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_DynamicMenuContribution.gif
new file mode 100644
index 0000000..daddc87
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_DynamicMenuContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_HandledMenuItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_HandledMenuItem.gif
new file mode 100644
index 0000000..1f8189a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_HandledMenuItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_HandledToolItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_HandledToolItem.gif
new file mode 100644
index 0000000..6b4e432
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_HandledToolItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_InputPart.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_InputPart.gif
new file mode 100644
index 0000000..f9be6da
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_InputPart.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Menu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Menu.gif
new file mode 100644
index 0000000..af07ba1
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Menu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_MenuContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_MenuContribution.gif
new file mode 100644
index 0000000..84df4c1
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_MenuContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_MenuSeparator.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_MenuSeparator.gif
new file mode 100644
index 0000000..b25c629
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_MenuSeparator.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Part.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Part.gif
new file mode 100644
index 0000000..5d9762d
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Part.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PartSashContainer.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PartSashContainer.gif
new file mode 100644
index 0000000..d70b2d9
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PartSashContainer.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PartStack.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PartStack.gif
new file mode 100644
index 0000000..daddc87
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PartStack.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Perspective.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Perspective.gif
new file mode 100644
index 0000000..56fcea5
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Perspective.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PerspectiveStack.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PerspectiveStack.gif
new file mode 100644
index 0000000..f00122b
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PerspectiveStack.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Placeholder.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Placeholder.gif
new file mode 100644
index 0000000..0855183
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Placeholder.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PopupMenu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PopupMenu.gif
new file mode 100644
index 0000000..0855183
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_PopupMenu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolBar.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolBar.gif
new file mode 100644
index 0000000..9c7efc4
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolBar.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolBarContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolBarContribution.gif
new file mode 100644
index 0000000..fc34e45
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolBarContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolBarSeparator.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolBarSeparator.gif
new file mode 100644
index 0000000..4ce1821
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolBarSeparator.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolControl.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolControl.gif
new file mode 100644
index 0000000..c05a418
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_ToolControl.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_TrimBar.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_TrimBar.gif
new file mode 100644
index 0000000..d203b1d
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_TrimBar.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_TrimContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_TrimContribution.gif
new file mode 100644
index 0000000..fc34e45
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_TrimContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_TrimmedWindow.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_TrimmedWindow.gif
new file mode 100644
index 0000000..9073955
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_TrimmedWindow.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Window.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Window.gif
new file mode 100644
index 0000000..883ce93
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_Window.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_WizardDialog.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_WizardDialog.gif
new file mode 100644
index 0000000..9c7efc4
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_sharedElements_WizardDialog.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_Dialog.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_Dialog.gif
new file mode 100644
index 0000000..d70b2d9
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_Dialog.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_TrimmedWindow.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_TrimmedWindow.gif
new file mode 100644
index 0000000..9073955
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_TrimmedWindow.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_Window.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_Window.gif
new file mode 100644
index 0000000..883ce93
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_Window.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_WizardDialog.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_WizardDialog.gif
new file mode 100644
index 0000000..9c7efc4
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/ctool16/CreateWindow_windows_WizardDialog.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Addon.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Addon.png
new file mode 100644
index 0000000..3262767
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Addon.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Application.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Application.png
new file mode 100644
index 0000000..3bc0bd3
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Application.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ApplicationElement.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ApplicationElement.gif
new file mode 100644
index 0000000..05dc74a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ApplicationElement.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Area.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Area.gif
new file mode 100644
index 0000000..bbbdd55
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Area.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Area_vertical.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Area_vertical.gif
new file mode 100644
index 0000000..013e818
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Area_vertical.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/BindingContext.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/BindingContext.gif
new file mode 100644
index 0000000..50445d9
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/BindingContext.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/BindingTable.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/BindingTable.png
new file mode 100644
index 0000000..decac8a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/BindingTable.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Category.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Category.png
new file mode 100644
index 0000000..d04dd7f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Category.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Command.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Command.png
new file mode 100644
index 0000000..b89bb34
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Command.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/CommandParameter.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/CommandParameter.png
new file mode 100644
index 0000000..9757fc6
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/CommandParameter.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/CompositePart.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/CompositePart.gif
new file mode 100644
index 0000000..c3370c7
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/CompositePart.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/CoreExpression.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/CoreExpression.png
new file mode 100644
index 0000000..0c76bd1
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/CoreExpression.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Dialog.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Dialog.gif
new file mode 100644
index 0000000..5a9bc75
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Dialog.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DirectMenuItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DirectMenuItem.gif
new file mode 100644
index 0000000..30dbf6b
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DirectMenuItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DirectToolItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DirectToolItem.gif
new file mode 100644
index 0000000..b225cd5
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DirectToolItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DynamicMenuContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DynamicMenuContribution.gif
new file mode 100644
index 0000000..498364f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DynamicMenuContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledItem.gif
new file mode 100644
index 0000000..136e3b2
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledMenuItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledMenuItem.gif
new file mode 100644
index 0000000..710188a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledMenuItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledToolItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledToolItem.gif
new file mode 100644
index 0000000..ac4ff21
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledToolItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Handler.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Handler.png
new file mode 100644
index 0000000..b8c64af
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Handler.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/InputPart.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/InputPart.gif
new file mode 100644
index 0000000..a26660e
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/InputPart.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Item.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Item.gif
new file mode 100644
index 0000000..1e5345f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Item.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/KeyBinding.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/KeyBinding.png
new file mode 100644
index 0000000..25eacb7
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/KeyBinding.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Menu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Menu.gif
new file mode 100644
index 0000000..6417328
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Menu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuContribution.gif
new file mode 100644
index 0000000..2b69256
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuItem.gif
new file mode 100644
index 0000000..b7c3c56
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuSeparator.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuSeparator.gif
new file mode 100644
index 0000000..16d63ff
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuSeparator.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ModelFragments.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ModelFragments.png
new file mode 100644
index 0000000..6187b15
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ModelFragments.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Parameter.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Parameter.png
new file mode 100644
index 0000000..9757fc6
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Parameter.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Part.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Part.gif
new file mode 100644
index 0000000..610f584
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Part.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartDescriptor.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartDescriptor.gif
new file mode 100644
index 0000000..7a31c50
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartDescriptor.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartSashContainer.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartSashContainer.gif
new file mode 100644
index 0000000..bbbdd55
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartSashContainer.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartSashContainer_vertical.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartSashContainer_vertical.gif
new file mode 100644
index 0000000..013e818
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartSashContainer_vertical.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartStack.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartStack.gif
new file mode 100644
index 0000000..edd6060
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartStack.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Perspective.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Perspective.gif
new file mode 100644
index 0000000..ba1a199
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Perspective.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PerspectiveStack.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PerspectiveStack.gif
new file mode 100644
index 0000000..0624021
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PerspectiveStack.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Placeholder.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Placeholder.gif
new file mode 100644
index 0000000..25c66a1
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Placeholder.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PopupMenu.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PopupMenu.gif
new file mode 100644
index 0000000..7c2aaac
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PopupMenu.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/StringModelFragment.png b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/StringModelFragment.png
new file mode 100644
index 0000000..b6cb0ec
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/StringModelFragment.png
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/StringToObjectMap.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/StringToObjectMap.gif
new file mode 100644
index 0000000..d92f34c
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/StringToObjectMap.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/StringToStringMap.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/StringToStringMap.gif
new file mode 100644
index 0000000..35ef84e
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/StringToStringMap.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolBar.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolBar.gif
new file mode 100644
index 0000000..6417328
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolBar.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolBarContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolBarContribution.gif
new file mode 100644
index 0000000..5915591
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolBarContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolBarSeparator.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolBarSeparator.gif
new file mode 100644
index 0000000..81d54f3
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolBarSeparator.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolControl.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolControl.gif
new file mode 100644
index 0000000..3e53cbd
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolControl.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolItem.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolItem.gif
new file mode 100644
index 0000000..d92f34c
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolItem.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/TrimBar.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/TrimBar.gif
new file mode 100644
index 0000000..a17dc7d
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/TrimBar.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/TrimContribution.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/TrimContribution.gif
new file mode 100644
index 0000000..5915591
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/TrimContribution.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/TrimmedWindow.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/TrimmedWindow.gif
new file mode 100644
index 0000000..37aad78
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/TrimmedWindow.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Window.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Window.gif
new file mode 100644
index 0000000..37aad78
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Window.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/WindowTrim.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/WindowTrim.gif
new file mode 100644
index 0000000..37aad78
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/WindowTrim.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/WizardDialog.gif b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/WizardDialog.gif
new file mode 100644
index 0000000..35ef84e
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/WizardDialog.gif
Binary files differ
diff --git a/org.eclipse.e4.ui.model.workbench.edit/license.html b/org.eclipse.e4.ui.model.workbench.edit/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.e4.ui.model.workbench.edit/plugin.properties b/org.eclipse.e4.ui.model.workbench.edit/plugin.properties
new file mode 100644
index 0000000..e3386ba
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/plugin.properties
@@ -0,0 +1,224 @@
+# Copyright (c) 2008, 2013 IBM Corporation and others.
+# 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:
+# IBM Corporation - initial API and implementation
+
+pluginName = UIElements Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_StringToStringMap_type = String To String Map
+_UI_Application_type = Application
+_UI_ApplicationElement_type = Element
+_UI_Contribution_type = Contribution
+_UI_Addon_type = Addon
+_UI_StringToObjectMap_type = String To Object Map
+_UI_BindingTableContainer_type = Binding Table Container
+_UI_Bindings_type = Bindings
+_UI_BindingContext_type = Binding Context
+_UI_BindingTable_type = Binding Table
+_UI_Command_type = Command
+_UI_CommandParameter_type = Command Parameter
+_UI_Handler_type = Handler
+_UI_HandlerContainer_type = Handler Container
+_UI_KeyBinding_type = Key Binding
+_UI_KeySequence_type = Key Sequence
+_UI_Parameter_type = Parameter
+_UI_Category_type = Category
+_UI_Context_type = Context
+_UI_Dirtyable_type = Dirtyable
+_UI_Input_type = Input
+_UI_UIElement_type = UI Element
+_UI_ElementContainer_type = Element Container
+_UI_UILabel_type = UI Label
+_UI_GenericStack_type = Generic Stack
+_UI_GenericTile_type = Generic Tile
+_UI_GenericTrimContainer_type = Generic Trim Container
+_UI_Expression_type = Expression
+_UI_CoreExpression_type = Core Expression
+_UI_SnippetContainer_type = Snippet Container
+_UI_Localizable_type = Localizable
+_UI_Item_type = Item
+_UI_HandledItem_type = Handled Item
+_UI_MenuElement_type = Element
+_UI_MenuItem_type = Item
+_UI_MenuSeparator_type = Separator
+_UI_Menu_type = Menu
+_UI_MenuContribution_type = Contribution
+_UI_PopupMenu_type = Popup Menu
+_UI_DirectMenuItem_type = Direct Menu Item
+_UI_HandledMenuItem_type = Handled Menu Item
+_UI_ToolItem_type = Tool Item
+_UI_ToolBar_type = Tool Bar
+_UI_ToolBarElement_type = Tool Bar Element
+_UI_ToolControl_type = Tool Control
+_UI_HandledToolItem_type = Handled Tool Item
+_UI_DirectToolItem_type = Direct Tool Item
+_UI_ToolBarSeparator_type = Tool Bar Separator
+_UI_MenuContributions_type = Contributions
+_UI_ToolBarContribution_type = Tool Bar Contribution
+_UI_ToolBarContributions_type = Tool Bar Contributions
+_UI_TrimContribution_type = Trim Contribution
+_UI_TrimContributions_type = Trim Contributions
+_UI_DynamicMenuContribution_type = Dynamic Menu Contribution
+_UI_Part_type = Part
+_UI_CompositePart_type = Composite Part
+_UI_InputPart_type = Input Part
+_UI_PartStack_type = Part Stack
+_UI_PartSashContainer_type = Part Sash Container
+_UI_Window_type = Window
+_UI_TrimmedWindow_type = Trimmed Window
+_UI_TrimElement_type = Trim Element
+_UI_PartSashContainerElement_type = Part Sash Container Element
+_UI_WindowElement_type = Window Element
+_UI_TrimBar_type = Trim Bar
+_UI_StackElement_type = Stack Element
+_UI_Dialog_type = Dialog
+_UI_WizardDialog_type = Wizard Dialog
+_UI_Placeholder_type = Placeholder
+_UI_Perspective_type = Perspective
+_UI_PerspectiveStack_type = Perspective Stack
+_UI_Area_type = Area
+_UI_PartDescriptor_type = Part Descriptor
+_UI_PartDescriptorContainer_type = Part Descriptor Container
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_StringToStringMap_key_feature = Key
+_UI_StringToStringMap_value_feature = Value
+_UI_Application_commands_feature = Commands
+_UI_Application_addons_feature = Addons
+_UI_Application_categories_feature = Categories
+_UI_Application_dialogs_feature = Dialogs
+_UI_ApplicationElement_elementId_feature = Element Id
+_UI_ApplicationElement_persistedState_feature = Persisted State
+_UI_ApplicationElement_tags_feature = Tags
+_UI_ApplicationElement_contributorURI_feature = Contributor URI
+_UI_ApplicationElement_transientData_feature = Transient Data
+_UI_Contribution_contributionURI_feature = Contribution URI
+_UI_Contribution_object_feature = Object
+_UI_StringToObjectMap_key_feature = Key
+_UI_StringToObjectMap_value_feature = Value
+_UI_BindingTableContainer_bindingTables_feature = Binding Tables
+_UI_BindingTableContainer_rootContext_feature = Root Context
+_UI_Bindings_bindingContexts_feature = Binding Contexts
+_UI_BindingContext_name_feature = Name
+_UI_BindingContext_description_feature = Description
+_UI_BindingContext_children_feature = Children
+_UI_BindingTable_bindings_feature = Bindings
+_UI_BindingTable_bindingContext_feature = Binding Context
+_UI_Command_commandName_feature = Command Name
+_UI_Command_description_feature = Description
+_UI_Command_parameters_feature = Parameters
+_UI_Command_category_feature = Category
+_UI_Command_localizedCommandName_feature = Localized Command Name
+_UI_Command_localizedDescription_feature = Localized Description
+_UI_CommandParameter_name_feature = Name
+_UI_CommandParameter_typeId_feature = Type Id
+_UI_CommandParameter_optional_feature = Optional
+_UI_Handler_command_feature = Command
+_UI_HandlerContainer_handlers_feature = Handlers
+_UI_KeyBinding_command_feature = Command
+_UI_KeyBinding_parameters_feature = Parameters
+_UI_KeySequence_keySequence_feature = Key Sequence
+_UI_Parameter_name_feature = Name
+_UI_Parameter_value_feature = Value
+_UI_Category_name_feature = Name
+_UI_Category_description_feature = Description
+_UI_Category_localizedName_feature = Localized Name
+_UI_Category_localizedDescription_feature = Localized Description
+_UI_Context_context_feature = Context
+_UI_Context_variables_feature = Variables
+_UI_Context_properties_feature = Properties
+_UI_Dirtyable_dirty_feature = Dirty
+_UI_Input_inputURI_feature = Input URI
+_UI_UIElement_widget_feature = Widget
+_UI_UIElement_renderer_feature = Renderer
+_UI_UIElement_toBeRendered_feature = To Be Rendered
+_UI_UIElement_onTop_feature = On Top
+_UI_UIElement_visible_feature = Visible
+_UI_UIElement_parent_feature = Parent
+_UI_UIElement_containerData_feature = Container Data
+_UI_UIElement_curSharedRef_feature = Cur Shared Ref
+_UI_UIElement_visibleWhen_feature = Visible When
+_UI_UIElement_accessibilityPhrase_feature = Accessibility Phrase
+_UI_UIElement_localizedAccessibilityPhrase_feature = Localized Accessibility Phrase
+_UI_ElementContainer_children_feature = Children
+_UI_ElementContainer_selectedElement_feature = Selected Element
+_UI_UILabel_label_feature = Label
+_UI_UILabel_iconURI_feature = Icon URI
+_UI_UILabel_tooltip_feature = Tooltip
+_UI_UILabel_localizedLabel_feature = Localized Label
+_UI_UILabel_localizedTooltip_feature = Localized Tooltip
+_UI_GenericTile_horizontal_feature = Horizontal
+_UI_GenericTrimContainer_side_feature = Side
+_UI_CoreExpression_coreExpressionId_feature = Core Expression Id
+_UI_CoreExpression_coreExpression_feature = Core Expression
+_UI_SnippetContainer_snippets_feature = Snippets
+_UI_Item_enabled_feature = Enabled
+_UI_Item_selected_feature = Selected
+_UI_Item_type_feature = Type
+_UI_HandledItem_command_feature = Command
+_UI_HandledItem_wbCommand_feature = Wb Command
+_UI_HandledItem_parameters_feature = Parameters
+_UI_MenuElement_mnemonics_feature = Mnemonics
+_UI_Menu_enabled_feature = Enabled
+_UI_MenuContribution_positionInParent_feature = Position In Parent
+_UI_MenuContribution_parentId_feature = Parent Id
+_UI_ToolItem_menu_feature = Menu
+_UI_MenuContributions_menuContributions_feature = Menu Contributions
+_UI_ToolBarContribution_parentId_feature = Parent Id
+_UI_ToolBarContribution_positionInParent_feature = Position In Parent
+_UI_ToolBarContributions_toolBarContributions_feature = Tool Bar Contributions
+_UI_TrimContribution_parentId_feature = Parent Id
+_UI_TrimContribution_positionInParent_feature = Position In Parent
+_UI_TrimContributions_trimContributions_feature = Trim Contributions
+_UI_Part_menus_feature = Menus
+_UI_Part_toolbar_feature = Toolbar
+_UI_Part_closeable_feature = Closeable
+_UI_Part_description_feature = Description
+_UI_Part_localizedDescription_feature = Localized Description
+_UI_Window_mainMenu_feature = Main Menu
+_UI_Window_x_feature = X
+_UI_Window_y_feature = Y
+_UI_Window_width_feature = Width
+_UI_Window_height_feature = Height
+_UI_Window_windows_feature = Windows
+_UI_Window_sharedElements_feature = Shared Elements
+_UI_TrimmedWindow_trimBars_feature = Trim Bars
+_UI_TrimBar_pendingCleanup_feature = Pending Cleanup
+_UI_Placeholder_ref_feature = Ref
+_UI_Placeholder_closeable_feature = Closeable
+_UI_Perspective_windows_feature = Windows
+_UI_PartDescriptor_allowMultiple_feature = Allow Multiple
+_UI_PartDescriptor_category_feature = Category
+_UI_PartDescriptor_menus_feature = Menus
+_UI_PartDescriptor_toolbar_feature = Toolbar
+_UI_PartDescriptor_closeable_feature = Closeable
+_UI_PartDescriptor_dirtyable_feature = Dirtyable
+_UI_PartDescriptor_contributionURI_feature = Contribution URI
+_UI_PartDescriptor_description_feature = Description
+_UI_PartDescriptor_localizedDescription_feature = Localized Description
+_UI_PartDescriptorContainer_descriptors_feature = Descriptors
+_UI_Unknown_feature = Unspecified
+
+_UI_SideValue_Top_literal = Top
+_UI_SideValue_Bottom_literal = Bottom
+_UI_SideValue_Left_literal = Left
+_UI_SideValue_Right_literal = Right
+_UI_ItemType_Push_literal = Push
+_UI_ItemType_Check_literal = Check
+_UI_ItemType_Radio_literal = Radio
diff --git a/org.eclipse.e4.ui.model.workbench.edit/plugin.xml b/org.eclipse.e4.ui.model.workbench.edit/plugin.xml
new file mode 100644
index 0000000..c5bc74b
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/plugin.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2008, 2013 IBM Corporation and others.
+ 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:
+ IBM Corporation - initial API and implementation
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+ <!-- @generated UIElements -->
+ <factory
+ uri="http://www.eclipse.org/ui/2010/UIModel/application"
+ class="org.eclipse.e4.ui.model.application.provider.ApplicationItemProviderAdapterFactory"
+ supportedTypes=
+ "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+ org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+ org.eclipse.emf.edit.provider.ITreeItemContentProvider
+ org.eclipse.emf.edit.provider.IItemLabelProvider
+ org.eclipse.emf.edit.provider.IItemPropertySource"/>
+ </extension>
+
+ <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+ <!-- @generated UIElements -->
+ <factory
+ uri="http://www.eclipse.org/ui/2010/UIModel/application/commands"
+ class="org.eclipse.e4.ui.model.application.commands.provider.CommandsItemProviderAdapterFactory"
+ supportedTypes=
+ "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+ org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+ org.eclipse.emf.edit.provider.ITreeItemContentProvider
+ org.eclipse.emf.edit.provider.IItemLabelProvider
+ org.eclipse.emf.edit.provider.IItemPropertySource"/>
+ </extension>
+
+ <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+ <!-- @generated UIElements -->
+ <factory
+ uri="http://www.eclipse.org/ui/2010/UIModel/application/ui"
+ class="org.eclipse.e4.ui.model.application.ui.provider.UiItemProviderAdapterFactory"
+ supportedTypes=
+ "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+ org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+ org.eclipse.emf.edit.provider.ITreeItemContentProvider
+ org.eclipse.emf.edit.provider.IItemLabelProvider
+ org.eclipse.emf.edit.provider.IItemPropertySource"/>
+ </extension>
+
+ <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+ <!-- @generated UIElements -->
+ <factory
+ uri="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu"
+ class="org.eclipse.e4.ui.model.application.ui.menu.provider.MenuItemProviderAdapterFactory"
+ supportedTypes=
+ "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+ org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+ org.eclipse.emf.edit.provider.ITreeItemContentProvider
+ org.eclipse.emf.edit.provider.IItemLabelProvider
+ org.eclipse.emf.edit.provider.IItemPropertySource"/>
+ </extension>
+
+ <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+ <!-- @generated UIElements -->
+ <factory
+ uri="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic"
+ class="org.eclipse.e4.ui.model.application.ui.basic.provider.BasicItemProviderAdapterFactory"
+ supportedTypes=
+ "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+ org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+ org.eclipse.emf.edit.provider.ITreeItemContentProvider
+ org.eclipse.emf.edit.provider.IItemLabelProvider
+ org.eclipse.emf.edit.provider.IItemPropertySource"/>
+ </extension>
+
+ <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+ <!-- @generated UIElements -->
+ <factory
+ uri="http://www.eclipse.org/ui/2010/UIModel/application/ui/advanced"
+ class="org.eclipse.e4.ui.model.application.ui.advanced.provider.AdvancedItemProviderAdapterFactory"
+ supportedTypes=
+ "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+ org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+ org.eclipse.emf.edit.provider.ITreeItemContentProvider
+ org.eclipse.emf.edit.provider.IItemLabelProvider
+ org.eclipse.emf.edit.provider.IItemPropertySource"/>
+ </extension>
+
+ <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+ <!-- @generated UIElements -->
+ <factory
+ uri="http://www.eclipse.org/ui/2010/UIModel/application/descriptor/basic"
+ class="org.eclipse.e4.ui.model.application.descriptor.basic.provider.BasicItemProviderAdapterFactory"
+ supportedTypes=
+ "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+ org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+ org.eclipse.emf.edit.provider.ITreeItemContentProvider
+ org.eclipse.emf.edit.provider.IItemLabelProvider
+ org.eclipse.emf.edit.provider.IItemPropertySource"/>
+ </extension>
+
+</plugin>
diff --git a/org.eclipse.e4.ui.model.workbench.edit/pom.xml b/org.eclipse.e4.ui.model.workbench.edit/pom.xml
new file mode 100644
index 0000000..f3b287b
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.e4.ui.model.workbench.edit</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+</project>
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/BindingContextItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/BindingContextItemProvider.java
new file mode 100644
index 0000000..84d9a3a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/BindingContextItemProvider.java
@@ -0,0 +1,222 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.commands.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MBindingContext;
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.ApplicationElementItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.commands.MBindingContext} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BindingContextItemProvider extends ApplicationElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BindingContextItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addNamePropertyDescriptor(object);
+ addDescriptionPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_BindingContext_name_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_BindingContext_name_feature", "_UI_BindingContext_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.BINDING_CONTEXT__NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Description feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDescriptionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_BindingContext_description_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_BindingContext_description_feature", "_UI_BindingContext_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.BINDING_CONTEXT__DESCRIPTION,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(CommandsPackageImpl.Literals.BINDING_CONTEXT__CHILDREN);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns BindingContext.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/BindingContext")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MBindingContext)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_BindingContext_type") : //$NON-NLS-1$
+ getString("_UI_BindingContext_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MBindingContext.class)) {
+ case CommandsPackageImpl.BINDING_CONTEXT__NAME:
+ case CommandsPackageImpl.BINDING_CONTEXT__DESCRIPTION:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case CommandsPackageImpl.BINDING_CONTEXT__CHILDREN:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (CommandsPackageImpl.Literals.BINDING_CONTEXT__CHILDREN,
+ MCommandsFactory.INSTANCE.createBindingContext()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/BindingTableItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/BindingTableItemProvider.java
new file mode 100644
index 0000000..093ad5f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/BindingTableItemProvider.java
@@ -0,0 +1,194 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.commands.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MBindingTable;
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.ApplicationElementItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.commands.MBindingTable} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BindingTableItemProvider extends ApplicationElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BindingTableItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addBindingContextPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Binding Context feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addBindingContextPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_BindingTable_bindingContext_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_BindingTable_bindingContext_feature", "_UI_BindingTable_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.BINDING_TABLE__BINDING_CONTEXT,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(CommandsPackageImpl.Literals.BINDING_TABLE__BINDINGS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns BindingTable.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/BindingTable.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MBindingTable)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_BindingTable_type") : //$NON-NLS-1$
+ getString("_UI_BindingTable_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MBindingTable.class)) {
+ case CommandsPackageImpl.BINDING_TABLE__BINDINGS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (CommandsPackageImpl.Literals.BINDING_TABLE__BINDINGS,
+ MCommandsFactory.INSTANCE.createKeyBinding()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CategoryItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CategoryItemProvider.java
new file mode 100644
index 0000000..c88c2cb
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CategoryItemProvider.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.commands.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MCategory;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.ApplicationElementItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.commands.MCategory} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CategoryItemProvider extends ApplicationElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CategoryItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addNamePropertyDescriptor(object);
+ addDescriptionPropertyDescriptor(object);
+ addLocalizedNamePropertyDescriptor(object);
+ addLocalizedDescriptionPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Category_name_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Category_name_feature", "_UI_Category_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.CATEGORY__NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Description feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDescriptionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Category_description_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Category_description_feature", "_UI_Category_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.CATEGORY__DESCRIPTION,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Localized Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLocalizedNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Category_localizedName_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Category_localizedName_feature", "_UI_Category_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.CATEGORY__LOCALIZED_NAME,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Localized Description feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLocalizedDescriptionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Category_localizedDescription_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Category_localizedDescription_feature", "_UI_Category_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.CATEGORY__LOCALIZED_DESCRIPTION,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns Category.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Category.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MCategory)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Category_type") : //$NON-NLS-1$
+ getString("_UI_Category_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MCategory.class)) {
+ case CommandsPackageImpl.CATEGORY__NAME:
+ case CommandsPackageImpl.CATEGORY__DESCRIPTION:
+ case CommandsPackageImpl.CATEGORY__LOCALIZED_NAME:
+ case CommandsPackageImpl.CATEGORY__LOCALIZED_DESCRIPTION:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CommandItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CommandItemProvider.java
new file mode 100644
index 0000000..440a448
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CommandItemProvider.java
@@ -0,0 +1,293 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.commands.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MCommand;
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.ApplicationElementItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.commands.MCommand} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CommandItemProvider extends ApplicationElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CommandItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addCommandNamePropertyDescriptor(object);
+ addDescriptionPropertyDescriptor(object);
+ addCategoryPropertyDescriptor(object);
+ addLocalizedCommandNamePropertyDescriptor(object);
+ addLocalizedDescriptionPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Command Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCommandNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Command_commandName_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Command_commandName_feature", "_UI_Command_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.COMMAND__COMMAND_NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Description feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDescriptionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Command_description_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Command_description_feature", "_UI_Command_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.COMMAND__DESCRIPTION,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Category feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCategoryPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Command_category_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Command_category_feature", "_UI_Command_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.COMMAND__CATEGORY,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Localized Command Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLocalizedCommandNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Command_localizedCommandName_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Command_localizedCommandName_feature", "_UI_Command_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.COMMAND__LOCALIZED_COMMAND_NAME,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Localized Description feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLocalizedDescriptionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Command_localizedDescription_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Command_localizedDescription_feature", "_UI_Command_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.COMMAND__LOCALIZED_DESCRIPTION,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(CommandsPackageImpl.Literals.COMMAND__PARAMETERS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Command.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Command.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MCommand)object).getCommandName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Command_type") : //$NON-NLS-1$
+ getString("_UI_Command_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MCommand.class)) {
+ case CommandsPackageImpl.COMMAND__COMMAND_NAME:
+ case CommandsPackageImpl.COMMAND__DESCRIPTION:
+ case CommandsPackageImpl.COMMAND__LOCALIZED_COMMAND_NAME:
+ case CommandsPackageImpl.COMMAND__LOCALIZED_DESCRIPTION:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case CommandsPackageImpl.COMMAND__PARAMETERS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (CommandsPackageImpl.Literals.COMMAND__PARAMETERS,
+ MCommandsFactory.INSTANCE.createCommandParameter()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CommandParameterItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CommandParameterItemProvider.java
new file mode 100644
index 0000000..9a6d939
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CommandParameterItemProvider.java
@@ -0,0 +1,204 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.commands.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MCommandParameter;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.ApplicationElementItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.commands.MCommandParameter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CommandParameterItemProvider extends ApplicationElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CommandParameterItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addNamePropertyDescriptor(object);
+ addTypeIdPropertyDescriptor(object);
+ addOptionalPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_CommandParameter_name_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_CommandParameter_name_feature", "_UI_CommandParameter_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.COMMAND_PARAMETER__NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Type Id feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTypeIdPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_CommandParameter_typeId_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_CommandParameter_typeId_feature", "_UI_CommandParameter_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.COMMAND_PARAMETER__TYPE_ID,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Optional feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addOptionalPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_CommandParameter_optional_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_CommandParameter_optional_feature", "_UI_CommandParameter_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.COMMAND_PARAMETER__OPTIONAL,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns CommandParameter.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/CommandParameter.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MCommandParameter)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_CommandParameter_type") : //$NON-NLS-1$
+ getString("_UI_CommandParameter_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MCommandParameter.class)) {
+ case CommandsPackageImpl.COMMAND_PARAMETER__NAME:
+ case CommandsPackageImpl.COMMAND_PARAMETER__TYPE_ID:
+ case CommandsPackageImpl.COMMAND_PARAMETER__OPTIONAL:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CommandsItemProviderAdapterFactory.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CommandsItemProviderAdapterFactory.java
new file mode 100644
index 0000000..3fd208f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/CommandsItemProviderAdapterFactory.java
@@ -0,0 +1,375 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.commands.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.commands.util.CommandsAdapterFactory;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CommandsItemProviderAdapterFactory extends CommandsAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CommandsItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.commands.MBindingContext} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BindingContextItemProvider bindingContextItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.commands.MBindingContext}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createBindingContextAdapter() {
+ if (bindingContextItemProvider == null) {
+ bindingContextItemProvider = new BindingContextItemProvider(this);
+ }
+
+ return bindingContextItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.commands.MBindingTable} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BindingTableItemProvider bindingTableItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.commands.MBindingTable}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createBindingTableAdapter() {
+ if (bindingTableItemProvider == null) {
+ bindingTableItemProvider = new BindingTableItemProvider(this);
+ }
+
+ return bindingTableItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.commands.MCommand} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CommandItemProvider commandItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.commands.MCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createCommandAdapter() {
+ if (commandItemProvider == null) {
+ commandItemProvider = new CommandItemProvider(this);
+ }
+
+ return commandItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.commands.MCommandParameter} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CommandParameterItemProvider commandParameterItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.commands.MCommandParameter}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createCommandParameterAdapter() {
+ if (commandParameterItemProvider == null) {
+ commandParameterItemProvider = new CommandParameterItemProvider(this);
+ }
+
+ return commandParameterItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.commands.MHandler} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected HandlerItemProvider handlerItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.commands.MHandler}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createHandlerAdapter() {
+ if (handlerItemProvider == null) {
+ handlerItemProvider = new HandlerItemProvider(this);
+ }
+
+ return handlerItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.commands.MKeyBinding} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected KeyBindingItemProvider keyBindingItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.commands.MKeyBinding}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createKeyBindingAdapter() {
+ if (keyBindingItemProvider == null) {
+ keyBindingItemProvider = new KeyBindingItemProvider(this);
+ }
+
+ return keyBindingItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.commands.MParameter} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ParameterItemProvider parameterItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.commands.MParameter}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createParameterAdapter() {
+ if (parameterItemProvider == null) {
+ parameterItemProvider = new ParameterItemProvider(this);
+ }
+
+ return parameterItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.commands.MCategory} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CategoryItemProvider categoryItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.commands.MCategory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createCategoryAdapter() {
+ if (categoryItemProvider == null) {
+ categoryItemProvider = new CategoryItemProvider(this);
+ }
+
+ return categoryItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ if (bindingContextItemProvider != null) bindingContextItemProvider.dispose();
+ if (bindingTableItemProvider != null) bindingTableItemProvider.dispose();
+ if (commandItemProvider != null) commandItemProvider.dispose();
+ if (commandParameterItemProvider != null) commandParameterItemProvider.dispose();
+ if (handlerItemProvider != null) handlerItemProvider.dispose();
+ if (keyBindingItemProvider != null) keyBindingItemProvider.dispose();
+ if (parameterItemProvider != null) parameterItemProvider.dispose();
+ if (categoryItemProvider != null) categoryItemProvider.dispose();
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/HandlerItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/HandlerItemProvider.java
new file mode 100644
index 0000000..f11a4b9
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/HandlerItemProvider.java
@@ -0,0 +1,148 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.commands.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MHandler;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.ContributionItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.commands.MHandler} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class HandlerItemProvider extends ContributionItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public HandlerItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addCommandPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Command feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCommandPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Handler_command_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Handler_command_feature", "_UI_Handler_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.HANDLER__COMMAND,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This returns Handler.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Handler.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MHandler)object).getContributionURI();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Handler_type") : //$NON-NLS-1$
+ getString("_UI_Handler_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/KeyBindingItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/KeyBindingItemProvider.java
new file mode 100644
index 0000000..55ed379
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/KeyBindingItemProvider.java
@@ -0,0 +1,220 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.commands.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+import org.eclipse.e4.ui.model.application.commands.MKeyBinding;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.ApplicationElementItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.commands.MKeyBinding} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class KeyBindingItemProvider extends ApplicationElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public KeyBindingItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addKeySequencePropertyDescriptor(object);
+ addCommandPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Key Sequence feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addKeySequencePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_KeySequence_keySequence_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_KeySequence_keySequence_feature", "_UI_KeySequence_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.KEY_SEQUENCE__KEY_SEQUENCE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Command feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCommandPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_KeyBinding_command_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_KeyBinding_command_feature", "_UI_KeyBinding_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.KEY_BINDING__COMMAND,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(CommandsPackageImpl.Literals.KEY_BINDING__PARAMETERS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns KeyBinding.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/KeyBinding.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MKeyBinding)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_KeyBinding_type") : //$NON-NLS-1$
+ getString("_UI_KeyBinding_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MKeyBinding.class)) {
+ case CommandsPackageImpl.KEY_BINDING__KEY_SEQUENCE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case CommandsPackageImpl.KEY_BINDING__PARAMETERS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (CommandsPackageImpl.Literals.KEY_BINDING__PARAMETERS,
+ MCommandsFactory.INSTANCE.createParameter()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/ParameterItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/ParameterItemProvider.java
new file mode 100644
index 0000000..4a04767
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/commands/provider/ParameterItemProvider.java
@@ -0,0 +1,180 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.commands.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MParameter;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.ApplicationElementItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.commands.MParameter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ParameterItemProvider extends ApplicationElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ParameterItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addNamePropertyDescriptor(object);
+ addValuePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Parameter_name_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Parameter_name_feature", "_UI_Parameter_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.PARAMETER__NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Parameter_value_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Parameter_value_feature", "_UI_Parameter_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.PARAMETER__VALUE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns Parameter.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Parameter.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MParameter)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Parameter_type") : //$NON-NLS-1$
+ getString("_UI_Parameter_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MParameter.class)) {
+ case CommandsPackageImpl.PARAMETER__NAME:
+ case CommandsPackageImpl.PARAMETER__VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/descriptor/basic/provider/BasicItemProviderAdapterFactory.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/descriptor/basic/provider/BasicItemProviderAdapterFactory.java
new file mode 100644
index 0000000..40d2e49
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/descriptor/basic/provider/BasicItemProviderAdapterFactory.java
@@ -0,0 +1,207 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.descriptor.basic.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.util.BasicAdapterFactory;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BasicItemProviderAdapterFactory extends BasicAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BasicItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PartDescriptorItemProvider partDescriptorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createPartDescriptorAdapter() {
+ if (partDescriptorItemProvider == null) {
+ partDescriptorItemProvider = new PartDescriptorItemProvider(this);
+ }
+
+ return partDescriptorItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ if (partDescriptorItemProvider != null) partDescriptorItemProvider.dispose();
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/descriptor/basic/provider/PartDescriptorItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/descriptor/basic/provider/PartDescriptorItemProvider.java
new file mode 100644
index 0000000..de459a9
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/descriptor/basic/provider/PartDescriptorItemProvider.java
@@ -0,0 +1,512 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.descriptor.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.ApplicationElementItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PartDescriptorItemProvider extends ApplicationElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PartDescriptorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addLabelPropertyDescriptor(object);
+ addIconURIPropertyDescriptor(object);
+ addTooltipPropertyDescriptor(object);
+ addLocalizedLabelPropertyDescriptor(object);
+ addLocalizedTooltipPropertyDescriptor(object);
+ addBindingContextsPropertyDescriptor(object);
+ addAllowMultiplePropertyDescriptor(object);
+ addCategoryPropertyDescriptor(object);
+ addCloseablePropertyDescriptor(object);
+ addDirtyablePropertyDescriptor(object);
+ addContributionURIPropertyDescriptor(object);
+ addDescriptionPropertyDescriptor(object);
+ addLocalizedDescriptionPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Label feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLabelPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_label_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_label_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__LABEL,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Icon URI feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIconURIPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_iconURI_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_iconURI_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__ICON_URI,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Tooltip feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTooltipPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_tooltip_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_tooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__TOOLTIP,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Localized Label feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLocalizedLabelPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_localizedLabel_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedLabel_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__LOCALIZED_LABEL,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Localized Tooltip feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLocalizedTooltipPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_localizedTooltip_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedTooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__LOCALIZED_TOOLTIP,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Binding Contexts feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addBindingContextsPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Bindings_bindingContexts_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Bindings_bindingContexts_feature", "_UI_Bindings_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.BINDINGS__BINDING_CONTEXTS,
+ true,
+ false,
+ false,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Allow Multiple feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addAllowMultiplePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_PartDescriptor_allowMultiple_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_PartDescriptor_allowMultiple_feature", "_UI_PartDescriptor_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ BasicPackageImpl.Literals.PART_DESCRIPTOR__ALLOW_MULTIPLE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Category feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCategoryPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_PartDescriptor_category_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_PartDescriptor_category_feature", "_UI_PartDescriptor_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ BasicPackageImpl.Literals.PART_DESCRIPTOR__CATEGORY,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Closeable feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCloseablePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_PartDescriptor_closeable_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_PartDescriptor_closeable_feature", "_UI_PartDescriptor_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ BasicPackageImpl.Literals.PART_DESCRIPTOR__CLOSEABLE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Dirtyable feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDirtyablePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_PartDescriptor_dirtyable_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_PartDescriptor_dirtyable_feature", "_UI_PartDescriptor_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ BasicPackageImpl.Literals.PART_DESCRIPTOR__DIRTYABLE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Contribution URI feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addContributionURIPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_PartDescriptor_contributionURI_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_PartDescriptor_contributionURI_feature", "_UI_PartDescriptor_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ BasicPackageImpl.Literals.PART_DESCRIPTOR__CONTRIBUTION_URI,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Description feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDescriptionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_PartDescriptor_description_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_PartDescriptor_description_feature", "_UI_PartDescriptor_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ BasicPackageImpl.Literals.PART_DESCRIPTOR__DESCRIPTION,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Localized Description feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLocalizedDescriptionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_PartDescriptor_localizedDescription_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_PartDescriptor_localizedDescription_feature", "_UI_PartDescriptor_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ BasicPackageImpl.Literals.PART_DESCRIPTOR__LOCALIZED_DESCRIPTION,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS);
+ childrenFeatures.add(BasicPackageImpl.Literals.PART_DESCRIPTOR__MENUS);
+ childrenFeatures.add(BasicPackageImpl.Literals.PART_DESCRIPTOR__TOOLBAR);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns PartDescriptor.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/PartDescriptor")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MPartDescriptor)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_PartDescriptor_type") : //$NON-NLS-1$
+ getString("_UI_PartDescriptor_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MPartDescriptor.class)) {
+ case BasicPackageImpl.PART_DESCRIPTOR__LABEL:
+ case BasicPackageImpl.PART_DESCRIPTOR__ICON_URI:
+ case BasicPackageImpl.PART_DESCRIPTOR__TOOLTIP:
+ case BasicPackageImpl.PART_DESCRIPTOR__LOCALIZED_LABEL:
+ case BasicPackageImpl.PART_DESCRIPTOR__LOCALIZED_TOOLTIP:
+ case BasicPackageImpl.PART_DESCRIPTOR__BINDING_CONTEXTS:
+ case BasicPackageImpl.PART_DESCRIPTOR__ALLOW_MULTIPLE:
+ case BasicPackageImpl.PART_DESCRIPTOR__CATEGORY:
+ case BasicPackageImpl.PART_DESCRIPTOR__CLOSEABLE:
+ case BasicPackageImpl.PART_DESCRIPTOR__DIRTYABLE:
+ case BasicPackageImpl.PART_DESCRIPTOR__CONTRIBUTION_URI:
+ case BasicPackageImpl.PART_DESCRIPTOR__DESCRIPTION:
+ case BasicPackageImpl.PART_DESCRIPTOR__LOCALIZED_DESCRIPTION:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case BasicPackageImpl.PART_DESCRIPTOR__HANDLERS:
+ case BasicPackageImpl.PART_DESCRIPTOR__MENUS:
+ case BasicPackageImpl.PART_DESCRIPTOR__TOOLBAR:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS,
+ MCommandsFactory.INSTANCE.createHandler()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.PART_DESCRIPTOR__MENUS,
+ MMenuFactory.INSTANCE.createMenu()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.PART_DESCRIPTOR__MENUS,
+ MMenuFactory.INSTANCE.createPopupMenu()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.PART_DESCRIPTOR__TOOLBAR,
+ MMenuFactory.INSTANCE.createToolBar()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/AddonItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/AddonItemProvider.java
new file mode 100644
index 0000000..3f0b1c3
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/AddonItemProvider.java
@@ -0,0 +1,107 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MAddon;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.MAddon} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AddonItemProvider extends ContributionItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AddonItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns Addon.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Addon.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MAddon)object).getContributionURI();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Addon_type") : //$NON-NLS-1$
+ getString("_UI_Addon_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationElementItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationElementItemProvider.java
new file mode 100644
index 0000000..4740cd4
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationElementItemProvider.java
@@ -0,0 +1,281 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplicationElement;
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.MApplicationElement} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ApplicationElementItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ApplicationElementItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addElementIdPropertyDescriptor(object);
+ addTagsPropertyDescriptor(object);
+ addContributorURIPropertyDescriptor(object);
+ addTransientDataPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Element Id feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addElementIdPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_ApplicationElement_elementId_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_ApplicationElement_elementId_feature", "_UI_ApplicationElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Tags feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTagsPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_ApplicationElement_tags_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_ApplicationElement_tags_feature", "_UI_ApplicationElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__TAGS,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Contributor URI feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addContributorURIPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_ApplicationElement_contributorURI_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_ApplicationElement_contributorURI_feature", "_UI_ApplicationElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__CONTRIBUTOR_URI,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Transient Data feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTransientDataPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_ApplicationElement_transientData_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_ApplicationElement_transientData_feature", "_UI_ApplicationElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__TRANSIENT_DATA,
+ true,
+ false,
+ false,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns ApplicationElement.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/ApplicationElement")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MApplicationElement)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_ApplicationElement_type") : //$NON-NLS-1$
+ getString("_UI_ApplicationElement_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MApplicationElement.class)) {
+ case ApplicationPackageImpl.APPLICATION_ELEMENT__ELEMENT_ID:
+ case ApplicationPackageImpl.APPLICATION_ELEMENT__TAGS:
+ case ApplicationPackageImpl.APPLICATION_ELEMENT__CONTRIBUTOR_URI:
+ case ApplicationPackageImpl.APPLICATION_ELEMENT__TRANSIENT_DATA:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case ApplicationPackageImpl.APPLICATION_ELEMENT__PERSISTED_STATE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE,
+ ((EFactory)MApplicationFactory.INSTANCE).create(ApplicationPackageImpl.Literals.STRING_TO_STRING_MAP)));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProvider.java
new file mode 100644
index 0000000..028b82e
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProvider.java
@@ -0,0 +1,530 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.MBasicFactory;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.MAdvancedFactory;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.provider.ElementContainerItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.MApplication} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ApplicationItemProvider extends ElementContainerItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ApplicationItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addContextPropertyDescriptor(object);
+ addVariablesPropertyDescriptor(object);
+ addBindingContextsPropertyDescriptor(object);
+ addDialogsPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Context feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addContextPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Context_context_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Context_context_feature", "_UI_Context_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.CONTEXT__CONTEXT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Variables feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addVariablesPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Context_variables_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Context_variables_feature", "_UI_Context_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.CONTEXT__VARIABLES,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Binding Contexts feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addBindingContextsPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Bindings_bindingContexts_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Bindings_bindingContexts_feature", "_UI_Bindings_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.BINDINGS__BINDING_CONTEXTS,
+ true,
+ false,
+ false,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Dialogs feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDialogsPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Application_dialogs_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Application_dialogs_feature", "_UI_Application_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ApplicationPackageImpl.Literals.APPLICATION__DIALOGS,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(UiPackageImpl.Literals.CONTEXT__PROPERTIES);
+ childrenFeatures.add(CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS);
+ childrenFeatures.add(CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__BINDING_TABLES);
+ childrenFeatures.add(CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__ROOT_CONTEXT);
+ childrenFeatures.add(BasicPackageImpl.Literals.PART_DESCRIPTOR_CONTAINER__DESCRIPTORS);
+ childrenFeatures.add(MenuPackageImpl.Literals.MENU_CONTRIBUTIONS__MENU_CONTRIBUTIONS);
+ childrenFeatures.add(MenuPackageImpl.Literals.TOOL_BAR_CONTRIBUTIONS__TOOL_BAR_CONTRIBUTIONS);
+ childrenFeatures.add(MenuPackageImpl.Literals.TRIM_CONTRIBUTIONS__TRIM_CONTRIBUTIONS);
+ childrenFeatures.add(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS);
+ childrenFeatures.add(ApplicationPackageImpl.Literals.APPLICATION__COMMANDS);
+ childrenFeatures.add(ApplicationPackageImpl.Literals.APPLICATION__ADDONS);
+ childrenFeatures.add(ApplicationPackageImpl.Literals.APPLICATION__CATEGORIES);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Application.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Application.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MApplication)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Application_type") : //$NON-NLS-1$
+ getString("_UI_Application_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MApplication.class)) {
+ case ApplicationPackageImpl.APPLICATION__CONTEXT:
+ case ApplicationPackageImpl.APPLICATION__VARIABLES:
+ case ApplicationPackageImpl.APPLICATION__BINDING_CONTEXTS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case ApplicationPackageImpl.APPLICATION__PROPERTIES:
+ case ApplicationPackageImpl.APPLICATION__HANDLERS:
+ case ApplicationPackageImpl.APPLICATION__BINDING_TABLES:
+ case ApplicationPackageImpl.APPLICATION__ROOT_CONTEXT:
+ case ApplicationPackageImpl.APPLICATION__DESCRIPTORS:
+ case ApplicationPackageImpl.APPLICATION__MENU_CONTRIBUTIONS:
+ case ApplicationPackageImpl.APPLICATION__TOOL_BAR_CONTRIBUTIONS:
+ case ApplicationPackageImpl.APPLICATION__TRIM_CONTRIBUTIONS:
+ case ApplicationPackageImpl.APPLICATION__SNIPPETS:
+ case ApplicationPackageImpl.APPLICATION__COMMANDS:
+ case ApplicationPackageImpl.APPLICATION__ADDONS:
+ case ApplicationPackageImpl.APPLICATION__CATEGORIES:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.CONTEXT__PROPERTIES,
+ ((EFactory)MApplicationFactory.INSTANCE).create(ApplicationPackageImpl.Literals.STRING_TO_STRING_MAP)));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS,
+ MCommandsFactory.INSTANCE.createHandler()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__BINDING_TABLES,
+ MCommandsFactory.INSTANCE.createBindingTable()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__ROOT_CONTEXT,
+ MCommandsFactory.INSTANCE.createBindingContext()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.PART_DESCRIPTOR_CONTAINER__DESCRIPTORS,
+ MBasicFactory.INSTANCE.createPartDescriptor()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (MenuPackageImpl.Literals.MENU_CONTRIBUTIONS__MENU_CONTRIBUTIONS,
+ MMenuFactory.INSTANCE.createMenuContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (MenuPackageImpl.Literals.TOOL_BAR_CONTRIBUTIONS__TOOL_BAR_CONTRIBUTIONS,
+ MMenuFactory.INSTANCE.createToolBarContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (MenuPackageImpl.Literals.TRIM_CONTRIBUTIONS__TRIM_CONTRIBUTIONS,
+ MMenuFactory.INSTANCE.createTrimContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MApplicationFactory.INSTANCE.createApplication()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createMenuSeparator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createMenu()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createMenuContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createPopupMenu()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createDirectMenuItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createHandledMenuItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createToolBar()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createToolControl()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createHandledToolItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createDirectToolItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createToolBarSeparator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createToolBarContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createTrimContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createDynamicMenuContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory.INSTANCE.createPart()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory.INSTANCE.createCompositePart()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory.INSTANCE.createInputPart()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory.INSTANCE.createPartStack()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory.INSTANCE.createPartSashContainer()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory.INSTANCE.createWindow()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory.INSTANCE.createTrimmedWindow()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory.INSTANCE.createTrimBar()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory.INSTANCE.createDialog()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory.INSTANCE.createWizardDialog()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MAdvancedFactory.INSTANCE.createPlaceholder()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MAdvancedFactory.INSTANCE.createPerspective()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MAdvancedFactory.INSTANCE.createPerspectiveStack()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MAdvancedFactory.INSTANCE.createArea()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (ApplicationPackageImpl.Literals.APPLICATION__COMMANDS,
+ MCommandsFactory.INSTANCE.createCommand()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (ApplicationPackageImpl.Literals.APPLICATION__ADDONS,
+ MApplicationFactory.INSTANCE.createAddon()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (ApplicationPackageImpl.Literals.APPLICATION__CATEGORIES,
+ MCommandsFactory.INSTANCE.createCategory()));
+ }
+
+ /**
+ * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+ Object childFeature = feature;
+ Object childObject = child;
+
+ boolean qualify =
+ childFeature == ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE ||
+ childFeature == UiPackageImpl.Literals.CONTEXT__PROPERTIES ||
+ childFeature == UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN ||
+ childFeature == UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS ||
+ childFeature == MenuPackageImpl.Literals.MENU_CONTRIBUTIONS__MENU_CONTRIBUTIONS ||
+ childFeature == MenuPackageImpl.Literals.TOOL_BAR_CONTRIBUTIONS__TOOL_BAR_CONTRIBUTIONS ||
+ childFeature == MenuPackageImpl.Literals.TRIM_CONTRIBUTIONS__TRIM_CONTRIBUTIONS;
+
+ if (qualify) {
+ return getString
+ ("_UI_CreateChild_text2", //$NON-NLS-1$
+ new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+ }
+ return super.getCreateChildText(owner, feature, child, selection);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProviderAdapterFactory.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProviderAdapterFactory.java
new file mode 100644
index 0000000..ef6112b
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProviderAdapterFactory.java
@@ -0,0 +1,279 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.util.ApplicationAdapterFactory;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ApplicationItemProviderAdapterFactory extends ApplicationAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ApplicationItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link java.util.Map.Entry} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringToStringMapItemProvider stringToStringMapItemProvider;
+
+ /**
+ * This creates an adapter for a {@link java.util.Map.Entry}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createStringToStringMapAdapter() {
+ if (stringToStringMapItemProvider == null) {
+ stringToStringMapItemProvider = new StringToStringMapItemProvider(this);
+ }
+
+ return stringToStringMapItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.MApplication} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ApplicationItemProvider applicationItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.MApplication}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createApplicationAdapter() {
+ if (applicationItemProvider == null) {
+ applicationItemProvider = new ApplicationItemProvider(this);
+ }
+
+ return applicationItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.MAddon} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AddonItemProvider addonItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.MAddon}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createAddonAdapter() {
+ if (addonItemProvider == null) {
+ addonItemProvider = new AddonItemProvider(this);
+ }
+
+ return addonItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link java.util.Map.Entry} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringToObjectMapItemProvider stringToObjectMapItemProvider;
+
+ /**
+ * This creates an adapter for a {@link java.util.Map.Entry}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createStringToObjectMapAdapter() {
+ if (stringToObjectMapItemProvider == null) {
+ stringToObjectMapItemProvider = new StringToObjectMapItemProvider(this);
+ }
+
+ return stringToObjectMapItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ if (stringToStringMapItemProvider != null) stringToStringMapItemProvider.dispose();
+ if (applicationItemProvider != null) applicationItemProvider.dispose();
+ if (addonItemProvider != null) addonItemProvider.dispose();
+ if (stringToObjectMapItemProvider != null) stringToObjectMapItemProvider.dispose();
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ContributionItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ContributionItemProvider.java
new file mode 100644
index 0000000..753e205
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ContributionItemProvider.java
@@ -0,0 +1,154 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.MContribution} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ContributionItemProvider extends ApplicationElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ContributionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addContributionURIPropertyDescriptor(object);
+ addObjectPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Contribution URI feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addContributionURIPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Contribution_contributionURI_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Contribution_contributionURI_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ApplicationPackageImpl.Literals.CONTRIBUTION__CONTRIBUTION_URI,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Object feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addObjectPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Contribution_object_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Contribution_object_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ApplicationPackageImpl.Literals.CONTRIBUTION__OBJECT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MContribution)object).getContributionURI();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Contribution_type") : //$NON-NLS-1$
+ getString("_UI_Contribution_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MContribution.class)) {
+ case ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI:
+ case ApplicationPackageImpl.CONTRIBUTION__OBJECT:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/StringToObjectMapItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/StringToObjectMapItemProvider.java
new file mode 100644
index 0000000..9f23417
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/StringToObjectMapItemProvider.java
@@ -0,0 +1,188 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link java.util.Map.Entry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StringToObjectMapItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringToObjectMapItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addKeyPropertyDescriptor(object);
+ addValuePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Key feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addKeyPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_StringToObjectMap_key_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_StringToObjectMap_key_feature", "_UI_StringToObjectMap_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ApplicationPackageImpl.Literals.STRING_TO_OBJECT_MAP__KEY,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_StringToObjectMap_value_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_StringToObjectMap_value_feature", "_UI_StringToObjectMap_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ApplicationPackageImpl.Literals.STRING_TO_OBJECT_MAP__VALUE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns StringToObjectMap.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/StringToObjectMap")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ Map.Entry<?, ?> stringToObjectMap = (Map.Entry<?, ?>)object;
+ return "" + stringToObjectMap.getKey() + " -> " + stringToObjectMap.getValue(); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Map.Entry.class)) {
+ case ApplicationPackageImpl.STRING_TO_OBJECT_MAP__KEY:
+ case ApplicationPackageImpl.STRING_TO_OBJECT_MAP__VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/StringToStringMapItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/StringToStringMapItemProvider.java
new file mode 100644
index 0000000..1c289d2
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/StringToStringMapItemProvider.java
@@ -0,0 +1,188 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link java.util.Map.Entry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StringToStringMapItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringToStringMapItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addKeyPropertyDescriptor(object);
+ addValuePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Key feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addKeyPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_StringToStringMap_key_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_StringToStringMap_key_feature", "_UI_StringToStringMap_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ApplicationPackageImpl.Literals.STRING_TO_STRING_MAP__KEY,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_StringToStringMap_value_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_StringToStringMap_value_feature", "_UI_StringToStringMap_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ApplicationPackageImpl.Literals.STRING_TO_STRING_MAP__VALUE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns StringToStringMap.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/StringToStringMap")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ Map.Entry<?, ?> stringToStringMap = (Map.Entry<?, ?>)object;
+ return "" + stringToStringMap.getKey() + " -> " + stringToStringMap.getValue(); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Map.Entry.class)) {
+ case ApplicationPackageImpl.STRING_TO_STRING_MAP__KEY:
+ case ApplicationPackageImpl.STRING_TO_STRING_MAP__VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/UIElementsEditPlugin.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/UIElementsEditPlugin.java
new file mode 100644
index 0000000..7b7a9c1
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/UIElementsEditPlugin.java
@@ -0,0 +1,97 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the UIElements edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class UIElementsEditPlugin extends EMFPlugin {
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final UIElementsEditPlugin INSTANCE = new UIElementsEditPlugin();
+
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static Implementation plugin;
+
+ /**
+ * Create the instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public UIElementsEditPlugin() {
+ super
+ (new ResourceLocator [] {
+ });
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator() {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ public static Implementation getPlugin() {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static class Implementation extends EclipsePlugin {
+ /**
+ * Creates an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Implementation() {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/AdvancedItemProviderAdapterFactory.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/AdvancedItemProviderAdapterFactory.java
new file mode 100644
index 0000000..0d5ad0e
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/AdvancedItemProviderAdapterFactory.java
@@ -0,0 +1,279 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.advanced.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.util.AdvancedAdapterFactory;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AdvancedItemProviderAdapterFactory extends AdvancedAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AdvancedItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PlaceholderItemProvider placeholderItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createPlaceholderAdapter() {
+ if (placeholderItemProvider == null) {
+ placeholderItemProvider = new PlaceholderItemProvider(this);
+ }
+
+ return placeholderItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.advanced.MPerspective} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PerspectiveItemProvider perspectiveItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.advanced.MPerspective}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createPerspectiveAdapter() {
+ if (perspectiveItemProvider == null) {
+ perspectiveItemProvider = new PerspectiveItemProvider(this);
+ }
+
+ return perspectiveItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PerspectiveStackItemProvider perspectiveStackItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createPerspectiveStackAdapter() {
+ if (perspectiveStackItemProvider == null) {
+ perspectiveStackItemProvider = new PerspectiveStackItemProvider(this);
+ }
+
+ return perspectiveStackItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.advanced.MArea} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AreaItemProvider areaItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.advanced.MArea}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createAreaAdapter() {
+ if (areaItemProvider == null) {
+ areaItemProvider = new AreaItemProvider(this);
+ }
+
+ return areaItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ if (placeholderItemProvider != null) placeholderItemProvider.dispose();
+ if (perspectiveItemProvider != null) perspectiveItemProvider.dispose();
+ if (perspectiveStackItemProvider != null) perspectiveStackItemProvider.dispose();
+ if (areaItemProvider != null) areaItemProvider.dispose();
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/AreaItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/AreaItemProvider.java
new file mode 100644
index 0000000..39d0e6e
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/AreaItemProvider.java
@@ -0,0 +1,256 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.advanced.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.MArea;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.impl.AdvancedPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.basic.provider.PartSashContainerItemProvider;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.advanced.MArea} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AreaItemProvider extends PartSashContainerItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AreaItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addLabelPropertyDescriptor(object);
+ addIconURIPropertyDescriptor(object);
+ addTooltipPropertyDescriptor(object);
+ addLocalizedLabelPropertyDescriptor(object);
+ addLocalizedTooltipPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Label feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLabelPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_label_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_label_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__LABEL,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Icon URI feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIconURIPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_iconURI_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_iconURI_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__ICON_URI,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Tooltip feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTooltipPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_tooltip_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_tooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__TOOLTIP,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Localized Label feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLocalizedLabelPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_localizedLabel_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedLabel_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__LOCALIZED_LABEL,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Localized Tooltip feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLocalizedTooltipPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_localizedTooltip_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedTooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__LOCALIZED_TOOLTIP,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns Area.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Area")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MArea)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Area_type") : //$NON-NLS-1$
+ getString("_UI_Area_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MArea.class)) {
+ case AdvancedPackageImpl.AREA__LABEL:
+ case AdvancedPackageImpl.AREA__ICON_URI:
+ case AdvancedPackageImpl.AREA__TOOLTIP:
+ case AdvancedPackageImpl.AREA__LOCALIZED_LABEL:
+ case AdvancedPackageImpl.AREA__LOCALIZED_TOOLTIP:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PerspectiveItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PerspectiveItemProvider.java
new file mode 100644
index 0000000..9dbd0de
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PerspectiveItemProvider.java
@@ -0,0 +1,398 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.advanced.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.impl.AdvancedPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.provider.ElementContainerItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.advanced.MPerspective} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PerspectiveItemProvider extends ElementContainerItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PerspectiveItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addLabelPropertyDescriptor(object);
+ addIconURIPropertyDescriptor(object);
+ addTooltipPropertyDescriptor(object);
+ addLocalizedLabelPropertyDescriptor(object);
+ addLocalizedTooltipPropertyDescriptor(object);
+ addContextPropertyDescriptor(object);
+ addVariablesPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Label feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLabelPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_label_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_label_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__LABEL,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Icon URI feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIconURIPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_iconURI_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_iconURI_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__ICON_URI,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Tooltip feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTooltipPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_tooltip_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_tooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__TOOLTIP,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Localized Label feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLocalizedLabelPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_localizedLabel_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedLabel_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__LOCALIZED_LABEL,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Localized Tooltip feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLocalizedTooltipPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_localizedTooltip_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedTooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__LOCALIZED_TOOLTIP,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Context feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addContextPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Context_context_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Context_context_feature", "_UI_Context_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.CONTEXT__CONTEXT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Variables feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addVariablesPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Context_variables_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Context_variables_feature", "_UI_Context_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.CONTEXT__VARIABLES,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(UiPackageImpl.Literals.CONTEXT__PROPERTIES);
+ childrenFeatures.add(AdvancedPackageImpl.Literals.PERSPECTIVE__WINDOWS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Perspective.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Perspective")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MPerspective)object).getLabel();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Perspective_type") : //$NON-NLS-1$
+ getString("_UI_Perspective_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MPerspective.class)) {
+ case AdvancedPackageImpl.PERSPECTIVE__LABEL:
+ case AdvancedPackageImpl.PERSPECTIVE__ICON_URI:
+ case AdvancedPackageImpl.PERSPECTIVE__TOOLTIP:
+ case AdvancedPackageImpl.PERSPECTIVE__LOCALIZED_LABEL:
+ case AdvancedPackageImpl.PERSPECTIVE__LOCALIZED_TOOLTIP:
+ case AdvancedPackageImpl.PERSPECTIVE__CONTEXT:
+ case AdvancedPackageImpl.PERSPECTIVE__VARIABLES:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case AdvancedPackageImpl.PERSPECTIVE__PROPERTIES:
+ case AdvancedPackageImpl.PERSPECTIVE__WINDOWS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.CONTEXT__PROPERTIES,
+ ((EFactory)MApplicationFactory.INSTANCE).create(ApplicationPackageImpl.Literals.STRING_TO_STRING_MAP)));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (AdvancedPackageImpl.Literals.PERSPECTIVE__WINDOWS,
+ MBasicFactory.INSTANCE.createWindow()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (AdvancedPackageImpl.Literals.PERSPECTIVE__WINDOWS,
+ MBasicFactory.INSTANCE.createTrimmedWindow()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (AdvancedPackageImpl.Literals.PERSPECTIVE__WINDOWS,
+ MBasicFactory.INSTANCE.createDialog()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (AdvancedPackageImpl.Literals.PERSPECTIVE__WINDOWS,
+ MBasicFactory.INSTANCE.createWizardDialog()));
+ }
+
+ /**
+ * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+ Object childFeature = feature;
+ Object childObject = child;
+
+ boolean qualify =
+ childFeature == ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE ||
+ childFeature == UiPackageImpl.Literals.CONTEXT__PROPERTIES ||
+ childFeature == UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN ||
+ childFeature == AdvancedPackageImpl.Literals.PERSPECTIVE__WINDOWS;
+
+ if (qualify) {
+ return getString
+ ("_UI_CreateChild_text2", //$NON-NLS-1$
+ new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+ }
+ return super.getCreateChildText(owner, feature, child, selection);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PerspectiveStackItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PerspectiveStackItemProvider.java
new file mode 100644
index 0000000..d063e91
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PerspectiveStackItemProvider.java
@@ -0,0 +1,343 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.advanced.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.MAdvancedFactory;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.impl.AdvancedPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
+
+import org.eclipse.e4.ui.model.application.ui.provider.UIElementItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PerspectiveStackItemProvider extends UIElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PerspectiveStackItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addSelectedElementPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Selected Element feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addSelectedElementPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_ElementContainer_selectedElement_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_ElementContainer_selectedElement_feature", "_UI_ElementContainer_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.ELEMENT_CONTAINER__SELECTED_ELEMENT,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns PerspectiveStack.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/PerspectiveStack")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MPerspectiveStack)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_PerspectiveStack_type") : //$NON-NLS-1$
+ getString("_UI_PerspectiveStack_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MPerspectiveStack.class)) {
+ case AdvancedPackageImpl.PERSPECTIVE_STACK__CHILDREN:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MAdvancedFactory.INSTANCE.createPlaceholder()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MAdvancedFactory.INSTANCE.createPerspective()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MAdvancedFactory.INSTANCE.createPerspectiveStack()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MAdvancedFactory.INSTANCE.createArea()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MApplicationFactory.INSTANCE.createApplication()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createMenuSeparator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createMenu()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createMenuContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createPopupMenu()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createDirectMenuItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createHandledMenuItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createToolBar()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createToolControl()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createHandledToolItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createDirectToolItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createToolBarSeparator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createToolBarContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createTrimContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createDynamicMenuContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createPart()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createCompositePart()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createInputPart()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createPartStack()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createPartSashContainer()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createWindow()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createTrimmedWindow()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createTrimBar()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createDialog()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createWizardDialog()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PlaceholderItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PlaceholderItemProvider.java
new file mode 100644
index 0000000..dc88602
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/advanced/provider/PlaceholderItemProvider.java
@@ -0,0 +1,181 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.advanced.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.impl.AdvancedPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.provider.UIElementItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PlaceholderItemProvider extends UIElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PlaceholderItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addRefPropertyDescriptor(object);
+ addCloseablePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Ref feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addRefPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Placeholder_ref_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Placeholder_ref_feature", "_UI_Placeholder_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ AdvancedPackageImpl.Literals.PLACEHOLDER__REF,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Closeable feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCloseablePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Placeholder_closeable_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Placeholder_closeable_feature", "_UI_Placeholder_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ AdvancedPackageImpl.Literals.PLACEHOLDER__CLOSEABLE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns Placeholder.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Placeholder")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MPlaceholder)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Placeholder_type") : //$NON-NLS-1$
+ getString("_UI_Placeholder_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MPlaceholder.class)) {
+ case AdvancedPackageImpl.PLACEHOLDER__CLOSEABLE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/BasicItemProviderAdapterFactory.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/BasicItemProviderAdapterFactory.java
new file mode 100644
index 0000000..267373f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/BasicItemProviderAdapterFactory.java
@@ -0,0 +1,423 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.ui.basic.util.BasicAdapterFactory;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BasicItemProviderAdapterFactory extends BasicAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BasicItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MPart} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PartItemProvider partItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MPart}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createPartAdapter() {
+ if (partItemProvider == null) {
+ partItemProvider = new PartItemProvider(this);
+ }
+
+ return partItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MCompositePart} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CompositePartItemProvider compositePartItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MCompositePart}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createCompositePartAdapter() {
+ if (compositePartItemProvider == null) {
+ compositePartItemProvider = new CompositePartItemProvider(this);
+ }
+
+ return compositePartItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MInputPart} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected InputPartItemProvider inputPartItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MInputPart}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createInputPartAdapter() {
+ if (inputPartItemProvider == null) {
+ inputPartItemProvider = new InputPartItemProvider(this);
+ }
+
+ return inputPartItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MPartStack} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PartStackItemProvider partStackItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MPartStack}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createPartStackAdapter() {
+ if (partStackItemProvider == null) {
+ partStackItemProvider = new PartStackItemProvider(this);
+ }
+
+ return partStackItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PartSashContainerItemProvider partSashContainerItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createPartSashContainerAdapter() {
+ if (partSashContainerItemProvider == null) {
+ partSashContainerItemProvider = new PartSashContainerItemProvider(this);
+ }
+
+ return partSashContainerItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MWindow} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected WindowItemProvider windowItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MWindow}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createWindowAdapter() {
+ if (windowItemProvider == null) {
+ windowItemProvider = new WindowItemProvider(this);
+ }
+
+ return windowItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TrimmedWindowItemProvider trimmedWindowItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createTrimmedWindowAdapter() {
+ if (trimmedWindowItemProvider == null) {
+ trimmedWindowItemProvider = new TrimmedWindowItemProvider(this);
+ }
+
+ return trimmedWindowItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MTrimBar} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TrimBarItemProvider trimBarItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MTrimBar}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createTrimBarAdapter() {
+ if (trimBarItemProvider == null) {
+ trimBarItemProvider = new TrimBarItemProvider(this);
+ }
+
+ return trimBarItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MDialog} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DialogItemProvider dialogItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MDialog}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createDialogAdapter() {
+ if (dialogItemProvider == null) {
+ dialogItemProvider = new DialogItemProvider(this);
+ }
+
+ return dialogItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MWizardDialog} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected WizardDialogItemProvider wizardDialogItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MWizardDialog}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createWizardDialogAdapter() {
+ if (wizardDialogItemProvider == null) {
+ wizardDialogItemProvider = new WizardDialogItemProvider(this);
+ }
+
+ return wizardDialogItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ if (partItemProvider != null) partItemProvider.dispose();
+ if (compositePartItemProvider != null) compositePartItemProvider.dispose();
+ if (inputPartItemProvider != null) inputPartItemProvider.dispose();
+ if (partStackItemProvider != null) partStackItemProvider.dispose();
+ if (partSashContainerItemProvider != null) partSashContainerItemProvider.dispose();
+ if (windowItemProvider != null) windowItemProvider.dispose();
+ if (trimmedWindowItemProvider != null) trimmedWindowItemProvider.dispose();
+ if (trimBarItemProvider != null) trimBarItemProvider.dispose();
+ if (dialogItemProvider != null) dialogItemProvider.dispose();
+ if (wizardDialogItemProvider != null) wizardDialogItemProvider.dispose();
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/CompositePartItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/CompositePartItemProvider.java
new file mode 100644
index 0000000..f4d4229
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/CompositePartItemProvider.java
@@ -0,0 +1,381 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.MAdvancedFactory;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
+import org.eclipse.e4.ui.model.application.ui.basic.MCompositePart;
+
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MCompositePart} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CompositePartItemProvider extends PartItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CompositePartItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addSelectedElementPropertyDescriptor(object);
+ addHorizontalPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Selected Element feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addSelectedElementPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_ElementContainer_selectedElement_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_ElementContainer_selectedElement_feature", "_UI_ElementContainer_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.ELEMENT_CONTAINER__SELECTED_ELEMENT,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Horizontal feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addHorizontalPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_GenericTile_horizontal_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_GenericTile_horizontal_feature", "_UI_GenericTile_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.GENERIC_TILE__HORIZONTAL,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns CompositePart.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/CompositePart")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MCompositePart)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_CompositePart_type") : //$NON-NLS-1$
+ getString("_UI_CompositePart_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MCompositePart.class)) {
+ case BasicPackageImpl.COMPOSITE_PART__HORIZONTAL:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case BasicPackageImpl.COMPOSITE_PART__CHILDREN:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createPart()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createCompositePart()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createInputPart()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createPartStack()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createPartSashContainer()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createWindow()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createTrimmedWindow()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createTrimBar()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createDialog()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createWizardDialog()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MApplicationFactory.INSTANCE.createApplication()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createMenuSeparator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createMenu()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createMenuContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createPopupMenu()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createDirectMenuItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createHandledMenuItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createToolBar()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createToolControl()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createHandledToolItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createDirectToolItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createToolBarSeparator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createToolBarContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createTrimContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createDynamicMenuContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MAdvancedFactory.INSTANCE.createPlaceholder()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MAdvancedFactory.INSTANCE.createPerspective()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MAdvancedFactory.INSTANCE.createPerspectiveStack()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MAdvancedFactory.INSTANCE.createArea()));
+ }
+
+ /**
+ * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+ Object childFeature = feature;
+ Object childObject = child;
+
+ boolean qualify =
+ childFeature == ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE ||
+ childFeature == UiPackageImpl.Literals.CONTEXT__PROPERTIES ||
+ childFeature == BasicPackageImpl.Literals.PART__MENUS ||
+ childFeature == UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN ||
+ childFeature == BasicPackageImpl.Literals.PART__TOOLBAR;
+
+ if (qualify) {
+ return getString
+ ("_UI_CreateChild_text2", //$NON-NLS-1$
+ new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+ }
+ return super.getCreateChildText(owner, feature, child, selection);
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/DialogItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/DialogItemProvider.java
new file mode 100644
index 0000000..6e7edcb
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/DialogItemProvider.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MDialog;
+
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MDialog} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DialogItemProvider extends WindowItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DialogItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns Dialog.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Dialog")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MDialog)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Dialog_type") : //$NON-NLS-1$
+ getString("_UI_Dialog_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+ Object childFeature = feature;
+ Object childObject = child;
+
+ boolean qualify =
+ childFeature == ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE ||
+ childFeature == UiPackageImpl.Literals.CONTEXT__PROPERTIES ||
+ childFeature == UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN ||
+ childFeature == UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS ||
+ childFeature == BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS ||
+ childFeature == BasicPackageImpl.Literals.WINDOW__WINDOWS ||
+ childFeature == BasicPackageImpl.Literals.WINDOW__MAIN_MENU;
+
+ if (qualify) {
+ return getString
+ ("_UI_CreateChild_text2", //$NON-NLS-1$
+ new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+ }
+ return super.getCreateChildText(owner, feature, child, selection);
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/InputPartItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/InputPartItemProvider.java
new file mode 100644
index 0000000..777bce0
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/InputPartItemProvider.java
@@ -0,0 +1,168 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MInputPart;
+
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MInputPart} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class InputPartItemProvider extends PartItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InputPartItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addInputURIPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Input URI feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addInputURIPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Input_inputURI_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Input_inputURI_feature", "_UI_Input_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.INPUT__INPUT_URI,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns InputPart.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/InputPart")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MInputPart)object).getContributionURI();
+ return label == null || label.length() == 0 ?
+ getString("_UI_InputPart_type") : //$NON-NLS-1$
+ getString("_UI_InputPart_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MInputPart.class)) {
+ case BasicPackageImpl.INPUT_PART__INPUT_URI:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+ Object childFeature = feature;
+ Object childObject = child;
+
+ boolean qualify =
+ childFeature == ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE ||
+ childFeature == UiPackageImpl.Literals.CONTEXT__PROPERTIES;
+
+ if (qualify) {
+ return getString
+ ("_UI_CreateChild_text2", //$NON-NLS-1$
+ new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+ }
+ return super.getCreateChildText(owner, feature, child, selection);
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/PartItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/PartItemProvider.java
new file mode 100644
index 0000000..4f5d5dd
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/PartItemProvider.java
@@ -0,0 +1,572 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
+
+import org.eclipse.e4.ui.model.application.ui.provider.UIElementItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MPart} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PartItemProvider extends UIElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PartItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addContributionURIPropertyDescriptor(object);
+ addObjectPropertyDescriptor(object);
+ addContextPropertyDescriptor(object);
+ addVariablesPropertyDescriptor(object);
+ addLabelPropertyDescriptor(object);
+ addIconURIPropertyDescriptor(object);
+ addTooltipPropertyDescriptor(object);
+ addLocalizedLabelPropertyDescriptor(object);
+ addLocalizedTooltipPropertyDescriptor(object);
+ addDirtyPropertyDescriptor(object);
+ addBindingContextsPropertyDescriptor(object);
+ addCloseablePropertyDescriptor(object);
+ addDescriptionPropertyDescriptor(object);
+ addLocalizedDescriptionPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Contribution URI feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addContributionURIPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Contribution_contributionURI_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Contribution_contributionURI_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ApplicationPackageImpl.Literals.CONTRIBUTION__CONTRIBUTION_URI,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Object feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addObjectPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Contribution_object_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Contribution_object_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ApplicationPackageImpl.Literals.CONTRIBUTION__OBJECT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Context feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addContextPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Context_context_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Context_context_feature", "_UI_Context_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.CONTEXT__CONTEXT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Variables feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addVariablesPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Context_variables_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Context_variables_feature", "_UI_Context_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.CONTEXT__VARIABLES,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Label feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLabelPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_label_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_label_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__LABEL,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Icon URI feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIconURIPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_iconURI_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_iconURI_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__ICON_URI,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Tooltip feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTooltipPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_tooltip_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_tooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__TOOLTIP,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Localized Label feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLocalizedLabelPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_localizedLabel_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedLabel_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__LOCALIZED_LABEL,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Localized Tooltip feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLocalizedTooltipPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_localizedTooltip_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedTooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__LOCALIZED_TOOLTIP,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Dirty feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDirtyPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Dirtyable_dirty_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Dirtyable_dirty_feature", "_UI_Dirtyable_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.DIRTYABLE__DIRTY,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Binding Contexts feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addBindingContextsPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Bindings_bindingContexts_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Bindings_bindingContexts_feature", "_UI_Bindings_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.BINDINGS__BINDING_CONTEXTS,
+ true,
+ false,
+ false,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Closeable feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCloseablePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Part_closeable_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Part_closeable_feature", "_UI_Part_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ BasicPackageImpl.Literals.PART__CLOSEABLE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Description feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDescriptionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Part_description_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Part_description_feature", "_UI_Part_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ BasicPackageImpl.Literals.PART__DESCRIPTION,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Localized Description feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLocalizedDescriptionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Part_localizedDescription_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Part_localizedDescription_feature", "_UI_Part_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ BasicPackageImpl.Literals.PART__LOCALIZED_DESCRIPTION,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(UiPackageImpl.Literals.CONTEXT__PROPERTIES);
+ childrenFeatures.add(CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS);
+ childrenFeatures.add(BasicPackageImpl.Literals.PART__MENUS);
+ childrenFeatures.add(BasicPackageImpl.Literals.PART__TOOLBAR);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Part.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Part")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MPart)object).getContributionURI();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Part_type") : //$NON-NLS-1$
+ getString("_UI_Part_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MPart.class)) {
+ case BasicPackageImpl.PART__CONTRIBUTION_URI:
+ case BasicPackageImpl.PART__OBJECT:
+ case BasicPackageImpl.PART__CONTEXT:
+ case BasicPackageImpl.PART__VARIABLES:
+ case BasicPackageImpl.PART__LABEL:
+ case BasicPackageImpl.PART__ICON_URI:
+ case BasicPackageImpl.PART__TOOLTIP:
+ case BasicPackageImpl.PART__LOCALIZED_LABEL:
+ case BasicPackageImpl.PART__LOCALIZED_TOOLTIP:
+ case BasicPackageImpl.PART__DIRTY:
+ case BasicPackageImpl.PART__BINDING_CONTEXTS:
+ case BasicPackageImpl.PART__CLOSEABLE:
+ case BasicPackageImpl.PART__DESCRIPTION:
+ case BasicPackageImpl.PART__LOCALIZED_DESCRIPTION:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case BasicPackageImpl.PART__PROPERTIES:
+ case BasicPackageImpl.PART__HANDLERS:
+ case BasicPackageImpl.PART__MENUS:
+ case BasicPackageImpl.PART__TOOLBAR:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.CONTEXT__PROPERTIES,
+ ((EFactory)MApplicationFactory.INSTANCE).create(ApplicationPackageImpl.Literals.STRING_TO_STRING_MAP)));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS,
+ MCommandsFactory.INSTANCE.createHandler()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.PART__MENUS,
+ MMenuFactory.INSTANCE.createMenu()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.PART__MENUS,
+ MMenuFactory.INSTANCE.createPopupMenu()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.PART__TOOLBAR,
+ MMenuFactory.INSTANCE.createToolBar()));
+ }
+
+ /**
+ * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+ Object childFeature = feature;
+ Object childObject = child;
+
+ boolean qualify =
+ childFeature == ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE ||
+ childFeature == UiPackageImpl.Literals.CONTEXT__PROPERTIES;
+
+ if (qualify) {
+ return getString
+ ("_UI_CreateChild_text2", //$NON-NLS-1$
+ new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+ }
+ return super.getCreateChildText(owner, feature, child, selection);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/PartSashContainerItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/PartSashContainerItemProvider.java
new file mode 100644
index 0000000..4a8f78a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/PartSashContainerItemProvider.java
@@ -0,0 +1,124 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
+
+import org.eclipse.e4.ui.model.application.ui.provider.GenericTileItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PartSashContainerItemProvider extends GenericTileItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PartSashContainerItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns PartSashContainer.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/PartSashContainer")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MPartSashContainer)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_PartSashContainer_type") : //$NON-NLS-1$
+ getString("_UI_PartSashContainer_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/PartStackItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/PartStackItemProvider.java
new file mode 100644
index 0000000..8aba86e
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/PartStackItemProvider.java
@@ -0,0 +1,124 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+
+import org.eclipse.e4.ui.model.application.ui.provider.GenericStackItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MPartStack} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PartStackItemProvider extends GenericStackItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PartStackItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns PartStack.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/PartStack")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MPartStack)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_PartStack_type") : //$NON-NLS-1$
+ getString("_UI_PartStack_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/TrimBarItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/TrimBarItemProvider.java
new file mode 100644
index 0000000..faf87f7
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/TrimBarItemProvider.java
@@ -0,0 +1,150 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.provider.GenericTrimContainerItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MTrimBar} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TrimBarItemProvider extends GenericTrimContainerItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TrimBarItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addPendingCleanupPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Pending Cleanup feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addPendingCleanupPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_TrimBar_pendingCleanup_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_TrimBar_pendingCleanup_feature", "_UI_TrimBar_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ BasicPackageImpl.Literals.TRIM_BAR__PENDING_CLEANUP,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This returns TrimBar.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/TrimBar")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MTrimBar)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_TrimBar_type") : //$NON-NLS-1$
+ getString("_UI_TrimBar_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/TrimmedWindowItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/TrimmedWindowItemProvider.java
new file mode 100644
index 0000000..74a4941
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/TrimmedWindowItemProvider.java
@@ -0,0 +1,187 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow;
+
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TrimmedWindowItemProvider extends WindowItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TrimmedWindowItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(BasicPackageImpl.Literals.TRIMMED_WINDOW__TRIM_BARS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns TrimmedWindow.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/TrimmedWindow")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MTrimmedWindow)object).getLabel();
+ return label == null || label.length() == 0 ?
+ getString("_UI_TrimmedWindow_type") : //$NON-NLS-1$
+ getString("_UI_TrimmedWindow_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MTrimmedWindow.class)) {
+ case BasicPackageImpl.TRIMMED_WINDOW__TRIM_BARS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.TRIMMED_WINDOW__TRIM_BARS,
+ MBasicFactory.INSTANCE.createTrimBar()));
+ }
+
+ /**
+ * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+ Object childFeature = feature;
+ Object childObject = child;
+
+ boolean qualify =
+ childFeature == ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE ||
+ childFeature == UiPackageImpl.Literals.CONTEXT__PROPERTIES ||
+ childFeature == UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN ||
+ childFeature == UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS ||
+ childFeature == BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS ||
+ childFeature == BasicPackageImpl.Literals.WINDOW__WINDOWS ||
+ childFeature == BasicPackageImpl.Literals.TRIMMED_WINDOW__TRIM_BARS ||
+ childFeature == BasicPackageImpl.Literals.WINDOW__MAIN_MENU;
+
+ if (qualify) {
+ return getString
+ ("_UI_CreateChild_text2", //$NON-NLS-1$
+ new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+ }
+ return super.getCreateChildText(owner, feature, child, selection);
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/WindowItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/WindowItemProvider.java
new file mode 100644
index 0000000..b56accb
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/WindowItemProvider.java
@@ -0,0 +1,864 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.MAdvancedFactory;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
+
+import org.eclipse.e4.ui.model.application.ui.provider.ElementContainerItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MWindow} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class WindowItemProvider extends ElementContainerItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public WindowItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addLabelPropertyDescriptor(object);
+ addIconURIPropertyDescriptor(object);
+ addTooltipPropertyDescriptor(object);
+ addLocalizedLabelPropertyDescriptor(object);
+ addLocalizedTooltipPropertyDescriptor(object);
+ addContextPropertyDescriptor(object);
+ addVariablesPropertyDescriptor(object);
+ addBindingContextsPropertyDescriptor(object);
+ addXPropertyDescriptor(object);
+ addYPropertyDescriptor(object);
+ addWidthPropertyDescriptor(object);
+ addHeightPropertyDescriptor(object);
+ addSharedElementsPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Label feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLabelPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_label_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_label_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__LABEL,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Icon URI feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIconURIPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_iconURI_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_iconURI_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__ICON_URI,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Tooltip feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTooltipPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_tooltip_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_tooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__TOOLTIP,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Localized Label feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLocalizedLabelPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_localizedLabel_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedLabel_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__LOCALIZED_LABEL,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Localized Tooltip feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLocalizedTooltipPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_localizedTooltip_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedTooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__LOCALIZED_TOOLTIP,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Context feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addContextPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Context_context_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Context_context_feature", "_UI_Context_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.CONTEXT__CONTEXT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Variables feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addVariablesPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Context_variables_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Context_variables_feature", "_UI_Context_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.CONTEXT__VARIABLES,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Binding Contexts feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addBindingContextsPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Bindings_bindingContexts_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Bindings_bindingContexts_feature", "_UI_Bindings_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommandsPackageImpl.Literals.BINDINGS__BINDING_CONTEXTS,
+ true,
+ false,
+ false,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the X feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addXPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Window_x_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Window_x_feature", "_UI_Window_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ BasicPackageImpl.Literals.WINDOW__X,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Y feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addYPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Window_y_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Window_y_feature", "_UI_Window_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ BasicPackageImpl.Literals.WINDOW__Y,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Width feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addWidthPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Window_width_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Window_width_feature", "_UI_Window_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ BasicPackageImpl.Literals.WINDOW__WIDTH,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Height feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addHeightPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Window_height_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Window_height_feature", "_UI_Window_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ BasicPackageImpl.Literals.WINDOW__HEIGHT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Shared Elements feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addSharedElementsPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Window_sharedElements_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Window_sharedElements_feature", "_UI_Window_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ true,
+ false,
+ false,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(UiPackageImpl.Literals.CONTEXT__PROPERTIES);
+ childrenFeatures.add(CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS);
+ childrenFeatures.add(UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS);
+ childrenFeatures.add(BasicPackageImpl.Literals.WINDOW__MAIN_MENU);
+ childrenFeatures.add(BasicPackageImpl.Literals.WINDOW__WINDOWS);
+ childrenFeatures.add(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Window.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Window")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MWindow)object).getLabel();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Window_type") : //$NON-NLS-1$
+ getString("_UI_Window_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MWindow.class)) {
+ case BasicPackageImpl.WINDOW__LABEL:
+ case BasicPackageImpl.WINDOW__ICON_URI:
+ case BasicPackageImpl.WINDOW__TOOLTIP:
+ case BasicPackageImpl.WINDOW__LOCALIZED_LABEL:
+ case BasicPackageImpl.WINDOW__LOCALIZED_TOOLTIP:
+ case BasicPackageImpl.WINDOW__CONTEXT:
+ case BasicPackageImpl.WINDOW__VARIABLES:
+ case BasicPackageImpl.WINDOW__BINDING_CONTEXTS:
+ case BasicPackageImpl.WINDOW__X:
+ case BasicPackageImpl.WINDOW__Y:
+ case BasicPackageImpl.WINDOW__WIDTH:
+ case BasicPackageImpl.WINDOW__HEIGHT:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case BasicPackageImpl.WINDOW__PROPERTIES:
+ case BasicPackageImpl.WINDOW__HANDLERS:
+ case BasicPackageImpl.WINDOW__SNIPPETS:
+ case BasicPackageImpl.WINDOW__MAIN_MENU:
+ case BasicPackageImpl.WINDOW__WINDOWS:
+ case BasicPackageImpl.WINDOW__SHARED_ELEMENTS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.CONTEXT__PROPERTIES,
+ ((EFactory)MApplicationFactory.INSTANCE).create(ApplicationPackageImpl.Literals.STRING_TO_STRING_MAP)));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS,
+ MCommandsFactory.INSTANCE.createHandler()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MBasicFactory.INSTANCE.createPart()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MBasicFactory.INSTANCE.createCompositePart()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MBasicFactory.INSTANCE.createInputPart()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MBasicFactory.INSTANCE.createPartStack()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MBasicFactory.INSTANCE.createPartSashContainer()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MBasicFactory.INSTANCE.createWindow()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MBasicFactory.INSTANCE.createTrimmedWindow()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MBasicFactory.INSTANCE.createTrimBar()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MBasicFactory.INSTANCE.createDialog()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MBasicFactory.INSTANCE.createWizardDialog()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MApplicationFactory.INSTANCE.createApplication()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createMenuSeparator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createMenu()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createMenuContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createPopupMenu()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createDirectMenuItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createHandledMenuItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createToolBar()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createToolControl()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createHandledToolItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createDirectToolItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createToolBarSeparator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createToolBarContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createTrimContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MMenuFactory.INSTANCE.createDynamicMenuContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MAdvancedFactory.INSTANCE.createPlaceholder()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MAdvancedFactory.INSTANCE.createPerspective()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MAdvancedFactory.INSTANCE.createPerspectiveStack()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS,
+ MAdvancedFactory.INSTANCE.createArea()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__MAIN_MENU,
+ MMenuFactory.INSTANCE.createMenu()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__MAIN_MENU,
+ MMenuFactory.INSTANCE.createPopupMenu()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__WINDOWS,
+ MBasicFactory.INSTANCE.createWindow()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__WINDOWS,
+ MBasicFactory.INSTANCE.createTrimmedWindow()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__WINDOWS,
+ MBasicFactory.INSTANCE.createDialog()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__WINDOWS,
+ MBasicFactory.INSTANCE.createWizardDialog()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MBasicFactory.INSTANCE.createPart()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MBasicFactory.INSTANCE.createCompositePart()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MBasicFactory.INSTANCE.createInputPart()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MBasicFactory.INSTANCE.createPartStack()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MBasicFactory.INSTANCE.createPartSashContainer()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MBasicFactory.INSTANCE.createWindow()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MBasicFactory.INSTANCE.createTrimmedWindow()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MBasicFactory.INSTANCE.createTrimBar()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MBasicFactory.INSTANCE.createDialog()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MBasicFactory.INSTANCE.createWizardDialog()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MApplicationFactory.INSTANCE.createApplication()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MMenuFactory.INSTANCE.createMenuSeparator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MMenuFactory.INSTANCE.createMenu()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MMenuFactory.INSTANCE.createMenuContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MMenuFactory.INSTANCE.createPopupMenu()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MMenuFactory.INSTANCE.createDirectMenuItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MMenuFactory.INSTANCE.createHandledMenuItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MMenuFactory.INSTANCE.createToolBar()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MMenuFactory.INSTANCE.createToolControl()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MMenuFactory.INSTANCE.createHandledToolItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MMenuFactory.INSTANCE.createDirectToolItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MMenuFactory.INSTANCE.createToolBarSeparator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MMenuFactory.INSTANCE.createToolBarContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MMenuFactory.INSTANCE.createTrimContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MMenuFactory.INSTANCE.createDynamicMenuContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MAdvancedFactory.INSTANCE.createPlaceholder()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MAdvancedFactory.INSTANCE.createPerspective()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MAdvancedFactory.INSTANCE.createPerspectiveStack()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS,
+ MAdvancedFactory.INSTANCE.createArea()));
+ }
+
+ /**
+ * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+ Object childFeature = feature;
+ Object childObject = child;
+
+ boolean qualify =
+ childFeature == ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE ||
+ childFeature == UiPackageImpl.Literals.CONTEXT__PROPERTIES ||
+ childFeature == UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN ||
+ childFeature == UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS ||
+ childFeature == BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS ||
+ childFeature == BasicPackageImpl.Literals.WINDOW__WINDOWS ||
+ childFeature == BasicPackageImpl.Literals.WINDOW__MAIN_MENU;
+
+ if (qualify) {
+ return getString
+ ("_UI_CreateChild_text2", //$NON-NLS-1$
+ new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+ }
+ return super.getCreateChildText(owner, feature, child, selection);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/WizardDialogItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/WizardDialogItemProvider.java
new file mode 100644
index 0000000..0a7ca76
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/basic/provider/WizardDialogItemProvider.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.basic.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MWizardDialog;
+
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MWizardDialog} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class WizardDialogItemProvider extends DialogItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public WizardDialogItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns WizardDialog.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/WizardDialog")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MWizardDialog)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_WizardDialog_type") : //$NON-NLS-1$
+ getString("_UI_WizardDialog_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+ Object childFeature = feature;
+ Object childObject = child;
+
+ boolean qualify =
+ childFeature == ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE ||
+ childFeature == UiPackageImpl.Literals.CONTEXT__PROPERTIES ||
+ childFeature == UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN ||
+ childFeature == UiPackageImpl.Literals.SNIPPET_CONTAINER__SNIPPETS ||
+ childFeature == BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS ||
+ childFeature == BasicPackageImpl.Literals.WINDOW__WINDOWS ||
+ childFeature == BasicPackageImpl.Literals.WINDOW__MAIN_MENU;
+
+ if (qualify) {
+ return getString
+ ("_UI_CreateChild_text2", //$NON-NLS-1$
+ new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+ }
+ return super.getCreateChildText(owner, feature, child, selection);
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/DirectMenuItemItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/DirectMenuItemItemProvider.java
new file mode 100644
index 0000000..3296214
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/DirectMenuItemItemProvider.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MDirectMenuItem;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MDirectMenuItem} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DirectMenuItemItemProvider extends MenuItemItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DirectMenuItemItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addContributionURIPropertyDescriptor(object);
+ addObjectPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Contribution URI feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addContributionURIPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Contribution_contributionURI_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Contribution_contributionURI_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ApplicationPackageImpl.Literals.CONTRIBUTION__CONTRIBUTION_URI,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Object feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addObjectPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Contribution_object_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Contribution_object_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ApplicationPackageImpl.Literals.CONTRIBUTION__OBJECT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns DirectMenuItem.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/DirectMenuItem")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MDirectMenuItem)object).getLabel();
+ return label == null || label.length() == 0 ?
+ getString("_UI_DirectMenuItem_type") : //$NON-NLS-1$
+ getString("_UI_DirectMenuItem_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MDirectMenuItem.class)) {
+ case MenuPackageImpl.DIRECT_MENU_ITEM__CONTRIBUTION_URI:
+ case MenuPackageImpl.DIRECT_MENU_ITEM__OBJECT:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/DirectToolItemItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/DirectToolItemItemProvider.java
new file mode 100644
index 0000000..d592ecc
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/DirectToolItemItemProvider.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DirectToolItemItemProvider extends ToolItemItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DirectToolItemItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addContributionURIPropertyDescriptor(object);
+ addObjectPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Contribution URI feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addContributionURIPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Contribution_contributionURI_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Contribution_contributionURI_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ApplicationPackageImpl.Literals.CONTRIBUTION__CONTRIBUTION_URI,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Object feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addObjectPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Contribution_object_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Contribution_object_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ApplicationPackageImpl.Literals.CONTRIBUTION__OBJECT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns DirectToolItem.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/DirectToolItem")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MDirectToolItem)object).getLabel();
+ return label == null || label.length() == 0 ?
+ getString("_UI_DirectToolItem_type") : //$NON-NLS-1$
+ getString("_UI_DirectToolItem_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MDirectToolItem.class)) {
+ case MenuPackageImpl.DIRECT_TOOL_ITEM__CONTRIBUTION_URI:
+ case MenuPackageImpl.DIRECT_TOOL_ITEM__OBJECT:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/DynamicMenuContributionItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/DynamicMenuContributionItemProvider.java
new file mode 100644
index 0000000..cbf1da7
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/DynamicMenuContributionItemProvider.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MDynamicMenuContribution;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MDynamicMenuContribution} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DynamicMenuContributionItemProvider extends MenuItemItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DynamicMenuContributionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addContributionURIPropertyDescriptor(object);
+ addObjectPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Contribution URI feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addContributionURIPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Contribution_contributionURI_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Contribution_contributionURI_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ApplicationPackageImpl.Literals.CONTRIBUTION__CONTRIBUTION_URI,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Object feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addObjectPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Contribution_object_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Contribution_object_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ApplicationPackageImpl.Literals.CONTRIBUTION__OBJECT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns DynamicMenuContribution.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/DynamicMenuContribution")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MDynamicMenuContribution)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_DynamicMenuContribution_type") : //$NON-NLS-1$
+ getString("_UI_DynamicMenuContribution_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MDynamicMenuContribution.class)) {
+ case MenuPackageImpl.DYNAMIC_MENU_CONTRIBUTION__CONTRIBUTION_URI:
+ case MenuPackageImpl.DYNAMIC_MENU_CONTRIBUTION__OBJECT:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/HandledItemItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/HandledItemItemProvider.java
new file mode 100644
index 0000000..3fcf31c
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/HandledItemItemProvider.java
@@ -0,0 +1,206 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledItem;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MHandledItem} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class HandledItemItemProvider extends ItemItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public HandledItemItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addCommandPropertyDescriptor(object);
+ addWbCommandPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Command feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCommandPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_HandledItem_command_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_HandledItem_command_feature", "_UI_HandledItem_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MenuPackageImpl.Literals.HANDLED_ITEM__COMMAND,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Wb Command feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addWbCommandPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_HandledItem_wbCommand_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_HandledItem_wbCommand_feature", "_UI_HandledItem_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MenuPackageImpl.Literals.HANDLED_ITEM__WB_COMMAND,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(MenuPackageImpl.Literals.HANDLED_ITEM__PARAMETERS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns HandledItem.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/HandledItem")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MHandledItem)object).getLabel();
+ return label == null || label.length() == 0 ?
+ getString("_UI_HandledItem_type") : //$NON-NLS-1$
+ getString("_UI_HandledItem_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MHandledItem.class)) {
+ case MenuPackageImpl.HANDLED_ITEM__WB_COMMAND:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case MenuPackageImpl.HANDLED_ITEM__PARAMETERS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (MenuPackageImpl.Literals.HANDLED_ITEM__PARAMETERS,
+ MCommandsFactory.INSTANCE.createParameter()));
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/HandledMenuItemItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/HandledMenuItemItemProvider.java
new file mode 100644
index 0000000..0182c9a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/HandledMenuItemItemProvider.java
@@ -0,0 +1,206 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class HandledMenuItemItemProvider extends MenuItemItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public HandledMenuItemItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addCommandPropertyDescriptor(object);
+ addWbCommandPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Command feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCommandPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_HandledItem_command_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_HandledItem_command_feature", "_UI_HandledItem_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MenuPackageImpl.Literals.HANDLED_ITEM__COMMAND,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Wb Command feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addWbCommandPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_HandledItem_wbCommand_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_HandledItem_wbCommand_feature", "_UI_HandledItem_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MenuPackageImpl.Literals.HANDLED_ITEM__WB_COMMAND,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(MenuPackageImpl.Literals.HANDLED_ITEM__PARAMETERS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns HandledMenuItem.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/HandledMenuItem")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MHandledMenuItem)object).getLabel();
+ return label == null || label.length() == 0 ?
+ getString("_UI_HandledMenuItem_type") : //$NON-NLS-1$
+ getString("_UI_HandledMenuItem_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MHandledMenuItem.class)) {
+ case MenuPackageImpl.HANDLED_MENU_ITEM__WB_COMMAND:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case MenuPackageImpl.HANDLED_MENU_ITEM__PARAMETERS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (MenuPackageImpl.Literals.HANDLED_ITEM__PARAMETERS,
+ MCommandsFactory.INSTANCE.createParameter()));
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/HandledToolItemItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/HandledToolItemItemProvider.java
new file mode 100644
index 0000000..b547573
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/HandledToolItemItemProvider.java
@@ -0,0 +1,206 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class HandledToolItemItemProvider extends ToolItemItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public HandledToolItemItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addCommandPropertyDescriptor(object);
+ addWbCommandPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Command feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCommandPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_HandledItem_command_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_HandledItem_command_feature", "_UI_HandledItem_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MenuPackageImpl.Literals.HANDLED_ITEM__COMMAND,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Wb Command feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addWbCommandPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_HandledItem_wbCommand_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_HandledItem_wbCommand_feature", "_UI_HandledItem_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MenuPackageImpl.Literals.HANDLED_ITEM__WB_COMMAND,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(MenuPackageImpl.Literals.HANDLED_ITEM__PARAMETERS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns HandledToolItem.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/HandledToolItem")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MHandledToolItem)object).getLabel();
+ return label == null || label.length() == 0 ?
+ getString("_UI_HandledToolItem_type") : //$NON-NLS-1$
+ getString("_UI_HandledToolItem_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MHandledToolItem.class)) {
+ case MenuPackageImpl.HANDLED_TOOL_ITEM__WB_COMMAND:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case MenuPackageImpl.HANDLED_TOOL_ITEM__PARAMETERS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (MenuPackageImpl.Literals.HANDLED_ITEM__PARAMETERS,
+ MCommandsFactory.INSTANCE.createParameter()));
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ItemItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ItemItemProvider.java
new file mode 100644
index 0000000..3820d6f
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ItemItemProvider.java
@@ -0,0 +1,328 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MItem;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.provider.UIElementItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MItem} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ItemItemProvider extends UIElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ItemItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addLabelPropertyDescriptor(object);
+ addIconURIPropertyDescriptor(object);
+ addTooltipPropertyDescriptor(object);
+ addLocalizedLabelPropertyDescriptor(object);
+ addLocalizedTooltipPropertyDescriptor(object);
+ addEnabledPropertyDescriptor(object);
+ addSelectedPropertyDescriptor(object);
+ addTypePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Label feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLabelPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_label_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_label_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__LABEL,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Icon URI feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIconURIPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_iconURI_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_iconURI_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__ICON_URI,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Tooltip feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTooltipPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_tooltip_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_tooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__TOOLTIP,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Localized Label feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLocalizedLabelPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_localizedLabel_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedLabel_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__LOCALIZED_LABEL,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Localized Tooltip feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLocalizedTooltipPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_localizedTooltip_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedTooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__LOCALIZED_TOOLTIP,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Enabled feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addEnabledPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Item_enabled_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Item_enabled_feature", "_UI_Item_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MenuPackageImpl.Literals.ITEM__ENABLED,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Selected feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addSelectedPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Item_selected_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Item_selected_feature", "_UI_Item_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MenuPackageImpl.Literals.ITEM__SELECTED,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Type feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTypePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Item_type_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Item_type_feature", "_UI_Item_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MenuPackageImpl.Literals.ITEM__TYPE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns Item.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Item")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MItem)object).getLabel();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Item_type") : //$NON-NLS-1$
+ getString("_UI_Item_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MItem.class)) {
+ case MenuPackageImpl.ITEM__LABEL:
+ case MenuPackageImpl.ITEM__ICON_URI:
+ case MenuPackageImpl.ITEM__TOOLTIP:
+ case MenuPackageImpl.ITEM__LOCALIZED_LABEL:
+ case MenuPackageImpl.ITEM__LOCALIZED_TOOLTIP:
+ case MenuPackageImpl.ITEM__ENABLED:
+ case MenuPackageImpl.ITEM__SELECTED:
+ case MenuPackageImpl.ITEM__TYPE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuContributionItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuContributionItemProvider.java
new file mode 100644
index 0000000..6a0ea51
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuContributionItemProvider.java
@@ -0,0 +1,182 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuContribution;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.provider.ElementContainerItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MMenuContribution} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MenuContributionItemProvider extends ElementContainerItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MenuContributionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addPositionInParentPropertyDescriptor(object);
+ addParentIdPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Position In Parent feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addPositionInParentPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_MenuContribution_positionInParent_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_MenuContribution_positionInParent_feature", "_UI_MenuContribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MenuPackageImpl.Literals.MENU_CONTRIBUTION__POSITION_IN_PARENT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Parent Id feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addParentIdPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_MenuContribution_parentId_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_MenuContribution_parentId_feature", "_UI_MenuContribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MenuPackageImpl.Literals.MENU_CONTRIBUTION__PARENT_ID,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns MenuContribution.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/MenuContribution")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MMenuContribution)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_MenuContribution_type") : //$NON-NLS-1$
+ getString("_UI_MenuContribution_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MMenuContribution.class)) {
+ case MenuPackageImpl.MENU_CONTRIBUTION__POSITION_IN_PARENT:
+ case MenuPackageImpl.MENU_CONTRIBUTION__PARENT_ID:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuElementItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuElementItemProvider.java
new file mode 100644
index 0000000..856e209
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuElementItemProvider.java
@@ -0,0 +1,269 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuElement;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.provider.UIElementItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MMenuElement} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MenuElementItemProvider extends UIElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MenuElementItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addLabelPropertyDescriptor(object);
+ addIconURIPropertyDescriptor(object);
+ addTooltipPropertyDescriptor(object);
+ addLocalizedLabelPropertyDescriptor(object);
+ addLocalizedTooltipPropertyDescriptor(object);
+ addMnemonicsPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Label feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLabelPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_label_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_label_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__LABEL,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Icon URI feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIconURIPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_iconURI_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_iconURI_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__ICON_URI,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Tooltip feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTooltipPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_tooltip_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_tooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__TOOLTIP,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Localized Label feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLocalizedLabelPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_localizedLabel_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedLabel_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__LOCALIZED_LABEL,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Localized Tooltip feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLocalizedTooltipPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UILabel_localizedTooltip_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UILabel_localizedTooltip_feature", "_UI_UILabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_LABEL__LOCALIZED_TOOLTIP,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Mnemonics feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addMnemonicsPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_MenuElement_mnemonics_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_MenuElement_mnemonics_feature", "_UI_MenuElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MenuPackageImpl.Literals.MENU_ELEMENT__MNEMONICS,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MMenuElement)object).getLabel();
+ return label == null || label.length() == 0 ?
+ getString("_UI_MenuElement_type") : //$NON-NLS-1$
+ getString("_UI_MenuElement_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MMenuElement.class)) {
+ case MenuPackageImpl.MENU_ELEMENT__LABEL:
+ case MenuPackageImpl.MENU_ELEMENT__ICON_URI:
+ case MenuPackageImpl.MENU_ELEMENT__TOOLTIP:
+ case MenuPackageImpl.MENU_ELEMENT__LOCALIZED_LABEL:
+ case MenuPackageImpl.MENU_ELEMENT__LOCALIZED_TOOLTIP:
+ case MenuPackageImpl.MENU_ELEMENT__MNEMONICS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemItemProvider.java
new file mode 100644
index 0000000..3d886b3
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemItemProvider.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuItem;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MMenuItem} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MenuItemItemProvider extends ItemItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MenuItemItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addMnemonicsPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Mnemonics feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addMnemonicsPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_MenuElement_mnemonics_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_MenuElement_mnemonics_feature", "_UI_MenuElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MenuPackageImpl.Literals.MENU_ELEMENT__MNEMONICS,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns MenuItem.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/MenuItem")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MMenuItem)object).getLabel();
+ return label == null || label.length() == 0 ?
+ getString("_UI_MenuItem_type") : //$NON-NLS-1$
+ getString("_UI_MenuItem_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MMenuItem.class)) {
+ case MenuPackageImpl.MENU_ITEM__MNEMONICS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemProvider.java
new file mode 100644
index 0000000..b3d4859
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemProvider.java
@@ -0,0 +1,353 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.MAdvancedFactory;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenu;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MMenu} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MenuItemProvider extends MenuElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MenuItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addSelectedElementPropertyDescriptor(object);
+ addEnabledPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Selected Element feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addSelectedElementPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_ElementContainer_selectedElement_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_ElementContainer_selectedElement_feature", "_UI_ElementContainer_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.ELEMENT_CONTAINER__SELECTED_ELEMENT,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Enabled feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addEnabledPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Menu_enabled_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Menu_enabled_feature", "_UI_Menu_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MenuPackageImpl.Literals.MENU__ENABLED,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Menu.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Menu")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MMenu)object).getLabel();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Menu_type") : //$NON-NLS-1$
+ getString("_UI_Menu_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MMenu.class)) {
+ case MenuPackageImpl.MENU__ENABLED:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case MenuPackageImpl.MENU__CHILDREN:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createMenuSeparator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createMenu()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createMenuContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createPopupMenu()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createDirectMenuItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createHandledMenuItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createToolBar()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createToolControl()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createHandledToolItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createDirectToolItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createToolBarSeparator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createToolBarContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createTrimContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createDynamicMenuContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MApplicationFactory.INSTANCE.createApplication()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createPart()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createCompositePart()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createInputPart()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createPartStack()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createPartSashContainer()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createWindow()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createTrimmedWindow()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createTrimBar()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createDialog()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createWizardDialog()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MAdvancedFactory.INSTANCE.createPlaceholder()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MAdvancedFactory.INSTANCE.createPerspective()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MAdvancedFactory.INSTANCE.createPerspectiveStack()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MAdvancedFactory.INSTANCE.createArea()));
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemProviderAdapterFactory.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemProviderAdapterFactory.java
new file mode 100644
index 0000000..574b9af
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuItemProviderAdapterFactory.java
@@ -0,0 +1,519 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.ui.menu.util.MenuAdapterFactory;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MenuItemProviderAdapterFactory extends MenuAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MenuItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MMenuSeparator} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MenuSeparatorItemProvider menuSeparatorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MMenuSeparator}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createMenuSeparatorAdapter() {
+ if (menuSeparatorItemProvider == null) {
+ menuSeparatorItemProvider = new MenuSeparatorItemProvider(this);
+ }
+
+ return menuSeparatorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MMenu} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MenuItemProvider menuItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MMenu}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createMenuAdapter() {
+ if (menuItemProvider == null) {
+ menuItemProvider = new MenuItemProvider(this);
+ }
+
+ return menuItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MMenuContribution} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MenuContributionItemProvider menuContributionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MMenuContribution}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createMenuContributionAdapter() {
+ if (menuContributionItemProvider == null) {
+ menuContributionItemProvider = new MenuContributionItemProvider(this);
+ }
+
+ return menuContributionItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MPopupMenu} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PopupMenuItemProvider popupMenuItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MPopupMenu}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createPopupMenuAdapter() {
+ if (popupMenuItemProvider == null) {
+ popupMenuItemProvider = new PopupMenuItemProvider(this);
+ }
+
+ return popupMenuItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MDirectMenuItem} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DirectMenuItemItemProvider directMenuItemItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MDirectMenuItem}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createDirectMenuItemAdapter() {
+ if (directMenuItemItemProvider == null) {
+ directMenuItemItemProvider = new DirectMenuItemItemProvider(this);
+ }
+
+ return directMenuItemItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected HandledMenuItemItemProvider handledMenuItemItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createHandledMenuItemAdapter() {
+ if (handledMenuItemItemProvider == null) {
+ handledMenuItemItemProvider = new HandledMenuItemItemProvider(this);
+ }
+
+ return handledMenuItemItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBar} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ToolBarItemProvider toolBarItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBar}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createToolBarAdapter() {
+ if (toolBarItemProvider == null) {
+ toolBarItemProvider = new ToolBarItemProvider(this);
+ }
+
+ return toolBarItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MToolControl} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ToolControlItemProvider toolControlItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MToolControl}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createToolControlAdapter() {
+ if (toolControlItemProvider == null) {
+ toolControlItemProvider = new ToolControlItemProvider(this);
+ }
+
+ return toolControlItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected HandledToolItemItemProvider handledToolItemItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createHandledToolItemAdapter() {
+ if (handledToolItemItemProvider == null) {
+ handledToolItemItemProvider = new HandledToolItemItemProvider(this);
+ }
+
+ return handledToolItemItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DirectToolItemItemProvider directToolItemItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createDirectToolItemAdapter() {
+ if (directToolItemItemProvider == null) {
+ directToolItemItemProvider = new DirectToolItemItemProvider(this);
+ }
+
+ return directToolItemItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ToolBarSeparatorItemProvider toolBarSeparatorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createToolBarSeparatorAdapter() {
+ if (toolBarSeparatorItemProvider == null) {
+ toolBarSeparatorItemProvider = new ToolBarSeparatorItemProvider(this);
+ }
+
+ return toolBarSeparatorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBarContribution} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ToolBarContributionItemProvider toolBarContributionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBarContribution}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createToolBarContributionAdapter() {
+ if (toolBarContributionItemProvider == null) {
+ toolBarContributionItemProvider = new ToolBarContributionItemProvider(this);
+ }
+
+ return toolBarContributionItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MTrimContribution} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TrimContributionItemProvider trimContributionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MTrimContribution}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createTrimContributionAdapter() {
+ if (trimContributionItemProvider == null) {
+ trimContributionItemProvider = new TrimContributionItemProvider(this);
+ }
+
+ return trimContributionItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.menu.MDynamicMenuContribution} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DynamicMenuContributionItemProvider dynamicMenuContributionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MDynamicMenuContribution}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createDynamicMenuContributionAdapter() {
+ if (dynamicMenuContributionItemProvider == null) {
+ dynamicMenuContributionItemProvider = new DynamicMenuContributionItemProvider(this);
+ }
+
+ return dynamicMenuContributionItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ if (menuSeparatorItemProvider != null) menuSeparatorItemProvider.dispose();
+ if (menuItemProvider != null) menuItemProvider.dispose();
+ if (menuContributionItemProvider != null) menuContributionItemProvider.dispose();
+ if (popupMenuItemProvider != null) popupMenuItemProvider.dispose();
+ if (directMenuItemItemProvider != null) directMenuItemItemProvider.dispose();
+ if (handledMenuItemItemProvider != null) handledMenuItemItemProvider.dispose();
+ if (toolBarItemProvider != null) toolBarItemProvider.dispose();
+ if (toolControlItemProvider != null) toolControlItemProvider.dispose();
+ if (handledToolItemItemProvider != null) handledToolItemItemProvider.dispose();
+ if (directToolItemItemProvider != null) directToolItemItemProvider.dispose();
+ if (toolBarSeparatorItemProvider != null) toolBarSeparatorItemProvider.dispose();
+ if (toolBarContributionItemProvider != null) toolBarContributionItemProvider.dispose();
+ if (trimContributionItemProvider != null) trimContributionItemProvider.dispose();
+ if (dynamicMenuContributionItemProvider != null) dynamicMenuContributionItemProvider.dispose();
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuSeparatorItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuSeparatorItemProvider.java
new file mode 100644
index 0000000..712a02a
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/MenuSeparatorItemProvider.java
@@ -0,0 +1,107 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuSeparator;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MMenuSeparator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MenuSeparatorItemProvider extends MenuElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MenuSeparatorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns MenuSeparator.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/MenuSeparator")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MMenuSeparator)object).getLabel();
+ return label == null || label.length() == 0 ?
+ getString("_UI_MenuSeparator_type") : //$NON-NLS-1$
+ getString("_UI_MenuSeparator_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/PopupMenuItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/PopupMenuItemProvider.java
new file mode 100644
index 0000000..f7afcc7
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/PopupMenuItemProvider.java
@@ -0,0 +1,235 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MPopupMenu;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MPopupMenu} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PopupMenuItemProvider extends MenuItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PopupMenuItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addContextPropertyDescriptor(object);
+ addVariablesPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Context feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addContextPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Context_context_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Context_context_feature", "_UI_Context_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.CONTEXT__CONTEXT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Variables feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addVariablesPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Context_variables_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Context_variables_feature", "_UI_Context_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.CONTEXT__VARIABLES,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(UiPackageImpl.Literals.CONTEXT__PROPERTIES);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns PopupMenu.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/PopupMenu")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MPopupMenu)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_PopupMenu_type") : //$NON-NLS-1$
+ getString("_UI_PopupMenu_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MPopupMenu.class)) {
+ case MenuPackageImpl.POPUP_MENU__CONTEXT:
+ case MenuPackageImpl.POPUP_MENU__VARIABLES:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case MenuPackageImpl.POPUP_MENU__PROPERTIES:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.CONTEXT__PROPERTIES,
+ ((EFactory)MApplicationFactory.INSTANCE).create(ApplicationPackageImpl.Literals.STRING_TO_STRING_MAP)));
+ }
+
+ /**
+ * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+ Object childFeature = feature;
+ Object childObject = child;
+
+ boolean qualify =
+ childFeature == ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE ||
+ childFeature == UiPackageImpl.Literals.CONTEXT__PROPERTIES;
+
+ if (qualify) {
+ return getString
+ ("_UI_CreateChild_text2", //$NON-NLS-1$
+ new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+ }
+ return super.getCreateChildText(owner, feature, child, selection);
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarContributionItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarContributionItemProvider.java
new file mode 100644
index 0000000..32eacd2
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarContributionItemProvider.java
@@ -0,0 +1,182 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarContribution;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.provider.ElementContainerItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBarContribution} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ToolBarContributionItemProvider extends ElementContainerItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ToolBarContributionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addParentIdPropertyDescriptor(object);
+ addPositionInParentPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Parent Id feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addParentIdPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_ToolBarContribution_parentId_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_ToolBarContribution_parentId_feature", "_UI_ToolBarContribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MenuPackageImpl.Literals.TOOL_BAR_CONTRIBUTION__PARENT_ID,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Position In Parent feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addPositionInParentPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_ToolBarContribution_positionInParent_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_ToolBarContribution_positionInParent_feature", "_UI_ToolBarContribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MenuPackageImpl.Literals.TOOL_BAR_CONTRIBUTION__POSITION_IN_PARENT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns ToolBarContribution.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/ToolBarContribution")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MToolBarContribution)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_ToolBarContribution_type") : //$NON-NLS-1$
+ getString("_UI_ToolBarContribution_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MToolBarContribution.class)) {
+ case MenuPackageImpl.TOOL_BAR_CONTRIBUTION__PARENT_ID:
+ case MenuPackageImpl.TOOL_BAR_CONTRIBUTION__POSITION_IN_PARENT:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarElementItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarElementItemProvider.java
new file mode 100644
index 0000000..2908a25
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarElementItemProvider.java
@@ -0,0 +1,113 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarElement;
+
+import org.eclipse.e4.ui.model.application.ui.provider.UIElementItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBarElement} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ToolBarElementItemProvider extends UIElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ToolBarElementItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MToolBarElement)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_ToolBarElement_type") : //$NON-NLS-1$
+ getString("_UI_ToolBarElement_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarItemProvider.java
new file mode 100644
index 0000000..753c05c
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarItemProvider.java
@@ -0,0 +1,124 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+
+import org.eclipse.e4.ui.model.application.ui.provider.ElementContainerItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBar} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ToolBarItemProvider extends ElementContainerItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ToolBarItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns ToolBar.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/ToolBar")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MToolBar)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_ToolBar_type") : //$NON-NLS-1$
+ getString("_UI_ToolBar_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarSeparatorItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarSeparatorItemProvider.java
new file mode 100644
index 0000000..94fbc5c
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolBarSeparatorItemProvider.java
@@ -0,0 +1,107 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ToolBarSeparatorItemProvider extends ToolBarElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ToolBarSeparatorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns ToolBarSeparator.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/ToolBarSeparator")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MToolBarSeparator)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_ToolBarSeparator_type") : //$NON-NLS-1$
+ getString("_UI_ToolBarSeparator_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolControlItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolControlItemProvider.java
new file mode 100644
index 0000000..b14dee4
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolControlItemProvider.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MToolControl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MToolControl} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ToolControlItemProvider extends ToolBarElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ToolControlItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addContributionURIPropertyDescriptor(object);
+ addObjectPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Contribution URI feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addContributionURIPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Contribution_contributionURI_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Contribution_contributionURI_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ApplicationPackageImpl.Literals.CONTRIBUTION__CONTRIBUTION_URI,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Object feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addObjectPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Contribution_object_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Contribution_object_feature", "_UI_Contribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ApplicationPackageImpl.Literals.CONTRIBUTION__OBJECT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns ToolControl.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/ToolControl")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MToolControl)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_ToolControl_type") : //$NON-NLS-1$
+ getString("_UI_ToolControl_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MToolControl.class)) {
+ case MenuPackageImpl.TOOL_CONTROL__CONTRIBUTION_URI:
+ case MenuPackageImpl.TOOL_CONTROL__OBJECT:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolItemItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolItemItemProvider.java
new file mode 100644
index 0000000..cd79bfa
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/ToolItemItemProvider.java
@@ -0,0 +1,159 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolItem;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MToolItem} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ToolItemItemProvider extends ItemItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ToolItemItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(MenuPackageImpl.Literals.TOOL_ITEM__MENU);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns ToolItem.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/ToolItem")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MToolItem)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_ToolItem_type") : //$NON-NLS-1$
+ getString("_UI_ToolItem_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MToolItem.class)) {
+ case MenuPackageImpl.TOOL_ITEM__MENU:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (MenuPackageImpl.Literals.TOOL_ITEM__MENU,
+ MMenuFactory.INSTANCE.createMenu()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (MenuPackageImpl.Literals.TOOL_ITEM__MENU,
+ MMenuFactory.INSTANCE.createPopupMenu()));
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/TrimContributionItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/TrimContributionItemProvider.java
new file mode 100644
index 0000000..9762fc8
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/menu/provider/TrimContributionItemProvider.java
@@ -0,0 +1,182 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.menu.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MTrimContribution;
+
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.provider.ElementContainerItemProvider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.menu.MTrimContribution} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TrimContributionItemProvider extends ElementContainerItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TrimContributionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addParentIdPropertyDescriptor(object);
+ addPositionInParentPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Parent Id feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addParentIdPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_TrimContribution_parentId_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_TrimContribution_parentId_feature", "_UI_TrimContribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MenuPackageImpl.Literals.TRIM_CONTRIBUTION__PARENT_ID,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Position In Parent feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addPositionInParentPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_TrimContribution_positionInParent_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_TrimContribution_positionInParent_feature", "_UI_TrimContribution_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MenuPackageImpl.Literals.TRIM_CONTRIBUTION__POSITION_IN_PARENT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns TrimContribution.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/TrimContribution")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MTrimContribution)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_TrimContribution_type") : //$NON-NLS-1$
+ getString("_UI_TrimContribution_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MTrimContribution.class)) {
+ case MenuPackageImpl.TRIM_CONTRIBUTION__PARENT_ID:
+ case MenuPackageImpl.TRIM_CONTRIBUTION__POSITION_IN_PARENT:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/CoreExpressionItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/CoreExpressionItemProvider.java
new file mode 100644
index 0000000..7943a40
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/CoreExpressionItemProvider.java
@@ -0,0 +1,164 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.ui.MCoreExpression;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.MCoreExpression} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CoreExpressionItemProvider extends ExpressionItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CoreExpressionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addCoreExpressionIdPropertyDescriptor(object);
+ addCoreExpressionPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Core Expression Id feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCoreExpressionIdPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_CoreExpression_coreExpressionId_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_CoreExpression_coreExpressionId_feature", "_UI_CoreExpression_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.CORE_EXPRESSION__CORE_EXPRESSION_ID,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Core Expression feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCoreExpressionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_CoreExpression_coreExpression_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_CoreExpression_coreExpression_feature", "_UI_CoreExpression_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.CORE_EXPRESSION__CORE_EXPRESSION,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns CoreExpression.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/CoreExpression.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MCoreExpression)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_CoreExpression_type") : //$NON-NLS-1$
+ getString("_UI_CoreExpression_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MCoreExpression.class)) {
+ case UiPackageImpl.CORE_EXPRESSION__CORE_EXPRESSION_ID:
+ case UiPackageImpl.CORE_EXPRESSION__CORE_EXPRESSION:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/ElementContainerItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/ElementContainerItemProvider.java
new file mode 100644
index 0000000..77740ed
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/ElementContainerItemProvider.java
@@ -0,0 +1,314 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.MAdvancedFactory;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.MElementContainer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ElementContainerItemProvider extends UIElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ElementContainerItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addSelectedElementPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Selected Element feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addSelectedElementPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_ElementContainer_selectedElement_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_ElementContainer_selectedElement_feature", "_UI_ElementContainer_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.ELEMENT_CONTAINER__SELECTED_ELEMENT,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MElementContainer<?>)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_ElementContainer_type") : //$NON-NLS-1$
+ getString("_UI_ElementContainer_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MElementContainer.class)) {
+ case UiPackageImpl.ELEMENT_CONTAINER__CHILDREN:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MApplicationFactory.INSTANCE.createApplication()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createMenuSeparator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createMenu()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createMenuContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createPopupMenu()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createDirectMenuItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createHandledMenuItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createToolBar()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createToolControl()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createHandledToolItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createDirectToolItem()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createToolBarSeparator()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createToolBarContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createTrimContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MMenuFactory.INSTANCE.createDynamicMenuContribution()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createPart()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createCompositePart()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createInputPart()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createPartStack()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createPartSashContainer()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createWindow()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createTrimmedWindow()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createTrimBar()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createDialog()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MBasicFactory.INSTANCE.createWizardDialog()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MAdvancedFactory.INSTANCE.createPlaceholder()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MAdvancedFactory.INSTANCE.createPerspective()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MAdvancedFactory.INSTANCE.createPerspectiveStack()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN,
+ MAdvancedFactory.INSTANCE.createArea()));
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/ExpressionItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/ExpressionItemProvider.java
new file mode 100644
index 0000000..1c1947e
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/ExpressionItemProvider.java
@@ -0,0 +1,112 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.ApplicationElementItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.MExpression;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.MExpression} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExpressionItemProvider extends ApplicationElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExpressionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MExpression)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Expression_type") : //$NON-NLS-1$
+ getString("_UI_Expression_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/GenericStackItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/GenericStackItemProvider.java
new file mode 100644
index 0000000..3041057
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/GenericStackItemProvider.java
@@ -0,0 +1,96 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.ui.MGenericStack;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.MGenericStack} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class GenericStackItemProvider extends ElementContainerItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public GenericStackItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MGenericStack<?>)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_GenericStack_type") : //$NON-NLS-1$
+ getString("_UI_GenericStack_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/GenericTileItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/GenericTileItemProvider.java
new file mode 100644
index 0000000..7e937de
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/GenericTileItemProvider.java
@@ -0,0 +1,130 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.ui.MGenericTile;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.MGenericTile} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class GenericTileItemProvider extends ElementContainerItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public GenericTileItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addHorizontalPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Horizontal feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addHorizontalPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_GenericTile_horizontal_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_GenericTile_horizontal_feature", "_UI_GenericTile_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.GENERIC_TILE__HORIZONTAL,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MGenericTile<?>)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_GenericTile_type") : //$NON-NLS-1$
+ getString("_UI_GenericTile_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MGenericTile.class)) {
+ case UiPackageImpl.GENERIC_TILE__HORIZONTAL:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/GenericTrimContainerItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/GenericTrimContainerItemProvider.java
new file mode 100644
index 0000000..d6cd7e2
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/GenericTrimContainerItemProvider.java
@@ -0,0 +1,130 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.ui.MGenericTrimContainer;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.MGenericTrimContainer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class GenericTrimContainerItemProvider extends ElementContainerItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public GenericTrimContainerItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addSidePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Side feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addSidePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_GenericTrimContainer_side_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_GenericTrimContainer_side_feature", "_UI_GenericTrimContainer_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.GENERIC_TRIM_CONTAINER__SIDE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MGenericTrimContainer<?>)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_GenericTrimContainer_type") : //$NON-NLS-1$
+ getString("_UI_GenericTrimContainer_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MGenericTrimContainer.class)) {
+ case UiPackageImpl.GENERIC_TRIM_CONTAINER__SIDE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/UIElementItemProvider.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/UIElementItemProvider.java
new file mode 100644
index 0000000..e86831c
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/UIElementItemProvider.java
@@ -0,0 +1,332 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.provider.ApplicationElementItemProvider;
+import org.eclipse.e4.ui.model.application.provider.UIElementsEditPlugin;
+
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.MUiFactory;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.ui.MUIElement} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class UIElementItemProvider extends ApplicationElementItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public UIElementItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addToBeRenderedPropertyDescriptor(object);
+ addOnTopPropertyDescriptor(object);
+ addVisiblePropertyDescriptor(object);
+ addContainerDataPropertyDescriptor(object);
+ addCurSharedRefPropertyDescriptor(object);
+ addAccessibilityPhrasePropertyDescriptor(object);
+ addLocalizedAccessibilityPhrasePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the To Be Rendered feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addToBeRenderedPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UIElement_toBeRendered_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UIElement_toBeRendered_feature", "_UI_UIElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_ELEMENT__TO_BE_RENDERED,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the On Top feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addOnTopPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UIElement_onTop_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UIElement_onTop_feature", "_UI_UIElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_ELEMENT__ON_TOP,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Visible feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addVisiblePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UIElement_visible_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UIElement_visible_feature", "_UI_UIElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_ELEMENT__VISIBLE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Container Data feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addContainerDataPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UIElement_containerData_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UIElement_containerData_feature", "_UI_UIElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_ELEMENT__CONTAINER_DATA,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Cur Shared Ref feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCurSharedRefPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UIElement_curSharedRef_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UIElement_curSharedRef_feature", "_UI_UIElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_ELEMENT__CUR_SHARED_REF,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Accessibility Phrase feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addAccessibilityPhrasePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UIElement_accessibilityPhrase_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UIElement_accessibilityPhrase_feature", "_UI_UIElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_ELEMENT__ACCESSIBILITY_PHRASE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Localized Accessibility Phrase feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLocalizedAccessibilityPhrasePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UIElement_localizedAccessibilityPhrase_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_UIElement_localizedAccessibilityPhrase_feature", "_UI_UIElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ UiPackageImpl.Literals.UI_ELEMENT__LOCALIZED_ACCESSIBILITY_PHRASE,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(UiPackageImpl.Literals.UI_ELEMENT__VISIBLE_WHEN);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MUIElement)object).getElementId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_UIElement_type") : //$NON-NLS-1$
+ getString("_UI_UIElement_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MUIElement.class)) {
+ case UiPackageImpl.UI_ELEMENT__WIDGET:
+ case UiPackageImpl.UI_ELEMENT__RENDERER:
+ case UiPackageImpl.UI_ELEMENT__TO_BE_RENDERED:
+ case UiPackageImpl.UI_ELEMENT__ON_TOP:
+ case UiPackageImpl.UI_ELEMENT__VISIBLE:
+ case UiPackageImpl.UI_ELEMENT__CONTAINER_DATA:
+ case UiPackageImpl.UI_ELEMENT__ACCESSIBILITY_PHRASE:
+ case UiPackageImpl.UI_ELEMENT__LOCALIZED_ACCESSIBILITY_PHRASE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case UiPackageImpl.UI_ELEMENT__VISIBLE_WHEN:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (UiPackageImpl.Literals.UI_ELEMENT__VISIBLE_WHEN,
+ MUiFactory.INSTANCE.createCoreExpression()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return UIElementsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/UiItemProviderAdapterFactory.java b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/UiItemProviderAdapterFactory.java
new file mode 100644
index 0000000..1d6ad9c
--- /dev/null
+++ b/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/ui/provider/UiItemProviderAdapterFactory.java
@@ -0,0 +1,207 @@
+/**
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.ui.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.ui.util.UiAdapterFactory;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class UiItemProviderAdapterFactory extends UiAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public UiItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.MCoreExpression} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CoreExpressionItemProvider coreExpressionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.MCoreExpression}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createCoreExpressionAdapter() {
+ if (coreExpressionItemProvider == null) {
+ coreExpressionItemProvider = new CoreExpressionItemProvider(this);
+ }
+
+ return coreExpressionItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ if (coreExpressionItemProvider != null) coreExpressionItemProvider.dispose();
+ }
+
+}
diff --git a/org.eclipse.osbp.commons/.project b/org.eclipse.osbp.commons/.project
new file mode 100644
index 0000000..73e4ab4
--- /dev/null
+++ b/org.eclipse.osbp.commons/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.commons</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.commons/META-INF/MANIFEST.MF b/org.eclipse.osbp.commons/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..652665c
--- /dev/null
+++ b/org.eclipse.osbp.commons/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.commons
+Bundle-SymbolicName: org.eclipse.osbp.commons
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.osbp.commons.general;version="0.9.0",
+ org.eclipse.osbp.commons.geom;version="0.9.0"
diff --git a/org.eclipse.osbp.commons/about.html b/org.eclipse.osbp.commons/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.commons/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.commons/about.ini b/org.eclipse.osbp.commons/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.commons/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.commons/about.mappings b/org.eclipse.osbp.commons/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.commons/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.commons/about.properties b/org.eclipse.osbp.commons/about.properties
new file mode 100644
index 0000000..bb83df7
--- /dev/null
+++ b/org.eclipse.osbp.commons/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.commons
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.commons/build.properties b/org.eclipse.osbp.commons/build.properties
new file mode 100644
index 0000000..a138bbd
--- /dev/null
+++ b/org.eclipse.osbp.commons/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ epl-v10.html,\
+ license.html
+src.includes = about.properties, about.mappings, about.ini, about.html, epl-v10.html,\
+ license.html
diff --git a/org.eclipse.osbp.commons/epl-v10.html b/org.eclipse.osbp.commons/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.commons/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.commons/license.html b/org.eclipse.osbp.commons/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.commons/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.commons/pom.xml b/org.eclipse.osbp.commons/pom.xml
new file mode 100644
index 0000000..0222f9c
--- /dev/null
+++ b/org.eclipse.osbp.commons/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.osbp.commons</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+</project>
diff --git a/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/general/Condition.java b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/general/Condition.java
new file mode 100644
index 0000000..810e3ea
--- /dev/null
+++ b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/general/Condition.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.commons.general;
+
+/**
+ * @author rushan
+ *
+ */
+public interface Condition<T> {
+ boolean check(T object);
+}
diff --git a/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Bounds.java b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Bounds.java
new file mode 100644
index 0000000..a92c54d
--- /dev/null
+++ b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Bounds.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.commons.geom;
+
+/**
+ * @author rushan
+ *
+ */
+public class Bounds {
+ public double x, y, w, h;
+
+ public Bounds(double x, double y, double w, double h) {
+ this.x = x;
+ this.y = y;
+ this.w = w;
+ this.h = h;
+ }
+}
diff --git a/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/GeomUtils.java b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/GeomUtils.java
new file mode 100644
index 0000000..71b9d0c
--- /dev/null
+++ b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/GeomUtils.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.commons.geom;
+
+/**
+ * @author rushan
+ *
+ */
+public class GeomUtils {
+
+ public static Integer findDockSide(int x0, int y0, int dx, int dy,
+ double docX, double docY, Vector mousePos) {
+ if (GeometryHelper.containsInRectangle(
+ Vector.valueOf(x0 + docX, y0 + docY),
+ Vector.valueOf(dx - 2 * docX, dy - 2 * docY), mousePos))
+ return Side.CENTER;
+ else if (GeometryHelper.containsInRectangle(
+ Vector.valueOf(x0 + docX, y0 + dy - docY),
+ Vector.valueOf(dx - 2 * docX, docY), mousePos)
+ || GeometryHelper.containsInRightTriangle(
+ Vector.valueOf(x0 + docX, y0 + dy), -docX, -docY,
+ mousePos)
+ || GeometryHelper.containsInRightTriangle(
+ Vector.valueOf(x0 + dx - docX, y0 + dy), docX, -docY,
+ mousePos)) {
+ return Side.BOTTOM;
+ } else if (GeometryHelper.containsInRectangle(
+ Vector.valueOf(x0, y0 + docY), new Vector(docX, dy - 2 * docY),
+ mousePos)
+ || GeometryHelper.containsInRightTriangle(
+ Vector.valueOf(x0, y0 + docY), docX, -docY, mousePos)
+ || GeometryHelper.containsInRightTriangle(
+ Vector.valueOf(x0, y0 + dy - docY), docX, docY,
+ mousePos)) {
+ return Side.LEFT;
+ } else if (GeometryHelper.containsInRectangle(
+ Vector.valueOf(x0 + dx - docX, y0 + docY), new Vector(docX, dy
+ - 2 * docY), mousePos)
+ || GeometryHelper.containsInRightTriangle(
+ Vector.valueOf(x0 + dx, y0 + docY), -docX, -docY,
+ mousePos)
+ || GeometryHelper.containsInRightTriangle(
+ Vector.valueOf(x0 + dx, y0 + dy - docY), -docX, docY,
+ mousePos)) {
+ return Side.RIGHT;
+ } else if (GeometryHelper.containsInRectangle(
+ Vector.valueOf(x0 + docX, y0), new Vector(dy - 2 * docY, docY),
+ mousePos)
+ || GeometryHelper.containsInRightTriangle(
+ Vector.valueOf(x0 + docX, y0), -docX, docY, mousePos)
+ || GeometryHelper.containsInRightTriangle(
+ Vector.valueOf(x0 + dx - docX, y0), docX, docY,
+ mousePos)) {
+ return Side.TOP;
+ } else
+ return null;
+ }
+
+}
diff --git a/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/GeometryHelper.java b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/GeometryHelper.java
new file mode 100644
index 0000000..20cc620
--- /dev/null
+++ b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/GeometryHelper.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.commons.geom;
+
+/**
+ * @author rushan
+ *
+ */
+public class GeometryHelper {
+ // public static boolean containsInRectangle(Rectangle rect, Vector point)
+ // {
+ // return point.getX() >= rect.getCorner1().getX() && point.getX() <=
+ // rect.getCorner4().getX() &&
+ // point.getY() >= rect.getCorner1().getY() && point.getX() <=
+ // rect.getCorner2().getY();
+ // }
+
+ public static boolean containsInRectangle(Vector start, Vector sides,
+ Vector point) {
+ // return containsInRectangle(new Rectangle(start, sides), point);
+ return point.getX() >= start.getX()
+ && point.getX() <= start.getX() + sides.getX()
+ && point.getY() >= start.getY()
+ && point.getY() <= start.getY() + sides.getY();
+ }
+
+ public static boolean containsInRightTriangle(Vector triangleRigthAngle,
+ double catetX, double catetY, Vector point) {
+ if (catetX < 0) {
+ // coordinate translation
+ catetX = -catetX;
+ triangleRigthAngle = new Vector(-triangleRigthAngle.getX(),
+ triangleRigthAngle.getY());
+ point = new Vector(-point.getX(), point.getY());
+ }
+
+ if (catetY < 0) {
+ // coordinate translation
+ catetY = -catetY;
+ triangleRigthAngle = new Vector(triangleRigthAngle.getX(),
+ -triangleRigthAngle.getY());
+ point = new Vector(point.getX(), -point.getY());
+ }
+
+ return point.getX() >= triangleRigthAngle.getX()
+ && point.getX() <= triangleRigthAngle.getX() + catetX
+ && Math.abs(triangleRigthAngle.getY() - point.getY()) <= (catetY / catetX)
+ * Math.abs(triangleRigthAngle.getX() + catetX
+ - point.getX());
+ }
+}
diff --git a/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Rectangle.java b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Rectangle.java
new file mode 100644
index 0000000..a1c02c8
--- /dev/null
+++ b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Rectangle.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.commons.geom;
+
+/**
+ * @author rushan
+ *
+ */
+public class Rectangle {
+ private Vector start, sides;
+
+ public Rectangle(double x, double y, double w, double h) {
+ this.start = new Vector(x, y);
+ this.sides = new Vector(w, h);
+ }
+
+ public Vector getStart() {
+ return start;
+ }
+
+ public Vector getSides() {
+ return sides;
+ }
+
+ public Vector getCorner1() {
+ return start;
+ }
+
+ public Vector getCorner2() {
+ return start.plus(sides.getYProectionVector());
+ }
+
+ public Vector getCorner3() {
+ return start.plus(sides);
+ }
+
+ public Vector getCorner4() {
+ return start.plus(sides.getXProectionVector());
+ }
+}
diff --git a/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Side.java b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Side.java
new file mode 100644
index 0000000..c716bfe
--- /dev/null
+++ b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Side.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.commons.geom;
+
+/**
+ * Side values from eclipse model's SideValue for using in client and server
+ *
+ * @author rushan
+ *
+ */
+public class Side {
+ public static final Integer TOP = 0;
+
+ public static final Integer BOTTOM = 1;
+
+ public static final Integer LEFT = 2;
+
+ public static final Integer RIGHT = 3;
+
+ public static final Integer CENTER = 100;
+}
diff --git a/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Vector.java b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Vector.java
new file mode 100644
index 0000000..dc0c8bb
--- /dev/null
+++ b/org.eclipse.osbp.commons/src/org/eclipse/osbp/commons/geom/Vector.java
@@ -0,0 +1,194 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.commons.geom;
+
+/**
+ * @author rushan
+ *
+ */
+public class Vector {
+ private double x;
+ private double y;
+
+ public static Vector ortX = new Vector(1, 0);
+ public static Vector ortY = new Vector(0, 1);
+ public static Vector ZERO = new Vector(0, 0);
+
+ public static Vector vectorX(double x) {
+ return new Vector(x, 0);
+ }
+
+ public static Vector vectorY(double y) {
+ return new Vector(0, y);
+ }
+
+ /**
+ * shortcut for vectorX
+ */
+ public static Vector vX(double x) {
+ return vectorX(x);
+ }
+
+ /**
+ * shortcut for vectorY
+ */
+ public static Vector vY(double y) {
+ return vectorY(y);
+ }
+
+ public Vector(double x, double y) {
+ this.x = x;
+ this.y = y;
+ }
+
+ public static Vector valueOf(double x, double y) {
+ return new Vector(x, y);
+ }
+
+ public double getX() {
+ return x;
+ }
+
+ public void setX(double x) {
+ this.x = x;
+ }
+
+ public double getY() {
+ return y;
+ }
+
+ public void setY(double y) {
+ this.y = y;
+ }
+
+ public void setXY(double x, double y) {
+ setX(x);
+ setY(y);
+ }
+
+ public Vector getXProectionVector() {
+ return Vector.vectorX(this.x);
+ }
+
+ public Vector getYProectionVector() {
+ return Vector.vectorY(this.y);
+ }
+
+ public double getLength() {
+ return Math.sqrt(getX() * getX() + getY() * getY());
+ }
+
+ public Vector opposite() {
+ return new Vector(-this.getX(), -this.getY());
+ }
+
+ public Vector normalize() {
+ double len = getLength();
+ return new Vector(getX() / len, getY() / len);
+ }
+
+ public boolean isNull() {
+ return getX() == 0.0 && getY() == 0.0;
+ }
+
+ public Vector scale(double n) {
+ return new Vector(this.getX() * n, this.getY() * n);
+ }
+
+ public Vector div(double n) {
+ return scale(1 / n);
+ }
+
+ public Vector scaleX(double n) {
+ return new Vector(this.getX() * n, this.getY());
+ }
+
+ public Vector scaleY(double n) {
+ return new Vector(this.getX(), this.getY() * n);
+ }
+
+ public Vector plus(Vector v) {
+ return new Vector(this.getX() + v.getX(), this.getY() + v.getY());
+ }
+
+ public Vector minus(Vector v) {
+ return new Vector(this.getX() - v.getX(), this.getY() - v.getY());
+ }
+
+ public static double dotProduct(Vector v1, Vector v2) {
+ return v1.getX() * v2.getX() + v1.getY() * v2.getY();
+ }
+
+ public static double getAngle(Vector v1, Vector v2) {
+ // косинус угла между векторами
+ double cos = dotProduct(v1, v2) / (v1.getLength() * v2.getLength());
+ return Math.acos(cos);
+ }
+
+ public static Vector[] getOrtogonalOrts(Vector v) {
+ double len = v.getLength();
+ Vector ort1 = new Vector(v.getY() / len, -v.getX() / len);
+ Vector ort2 = new Vector(-v.getY() / len, v.getX() / len);
+ return new Vector[] { ort1, ort2 };
+ }
+
+ @Override
+ public String toString() {
+ return String.format("(%s, %s)", this.getX(), this.getY());
+ }
+
+ private static boolean sameSign(double val1, double val2) {
+ if (val1 == 0 && val2 == 0)
+ return true;
+ if (val1 == 0 && val2 != 0 || val2 == 0 && val1 != 0)
+ return false;
+ return (val1 > 0 && val2 > 0) || (val1 < 0 && val2 < 0);
+ }
+
+ public static boolean isEqual(Vector v1, Vector v2, double E) {
+ return Math.abs(v1.getX() - v2.getX()) < E
+ && Math.abs(v1.getY() - v2.getY()) < E;
+ }
+
+ public static boolean isEqual(Vector v1, Vector v2) {
+ return v1.getX() == v2.getX() && v1.getY() == v2.getY();
+ }
+
+ public static boolean isSameDirection(Vector v1, Vector v2, double E) {
+ if (v1.isNull() || v2.isNull())
+ return false;
+
+ double s = v2.getX() != 0 ? v1.getX() / v2.getX() : v1.getY()
+ / v2.getY();
+ Vector test2 = v2.scale(s);
+ if (isEqual(v1, test2, E)) {
+ // Проверка, что вектора направлены в одну и ту же сторону
+ return sameSign(v1.getX(), v2.getX())
+ && sameSign(v1.getY(), v2.getY());
+ } else
+ return false;
+ }
+
+ public static boolean nonStrictCompare(Vector v1, Vector v2, double E) {
+ if (Math.abs(v1.getX() - v2.getX()) < E)
+ if (Math.abs(v1.getY() - v2.getY()) < E)
+ return true;
+ return false;
+ }
+
+ public static Vector maximum(Vector v1, Vector v2) {
+ return v1.getLength() > v2.getLength() ? v1.getCopy() : v2.getCopy();
+ }
+
+ public Vector getCopy() {
+ return new Vector(getX(), getY());
+ }
+}
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/.project b/org.eclipse.osbp.e4.injector.objectsuppliers/.project
new file mode 100644
index 0000000..52e21db
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.e4.injector.objectsuppliers</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/META-INF/MANIFEST.MF b/org.eclipse.osbp.e4.injector.objectsuppliers/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1cf6bdd
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.e4.injector.objectsuppliers
+Bundle-SymbolicName: org.eclipse.osbp.e4.injector.objectsuppliers;singleton:=true
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Import-Package: javax.annotation;version="1.1.0",
+ javax.inject;version="1.0.0"
+Require-Bundle: org.eclipse.e4.ui.di;bundle-version="0.10.1",
+ org.eclipse.e4.core.di.extensions;bundle-version="0.11.0",
+ org.eclipse.e4.core.di;bundle-version="1.1.0",
+ org.eclipse.core.runtime;bundle-version="3.8.0",
+ org.eclipse.e4.ui.services;bundle-version="0.10.2",
+ org.eclipse.e4.core.services;bundle-version="1.0.0",
+ org.eclipse.e4.core.contexts;bundle-version="1.1.0",
+ org.eclipse.osgi.services;bundle-version="3.3.100"
+Bundle-ActivationPolicy: lazy
+Service-Component: OSGI-INF/componentUI.xml,
+ OSGI-INF/component.xml
+
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/OSGI-INF/component.xml b/org.eclipse.osbp.e4.injector.objectsuppliers/OSGI-INF/component.xml
new file mode 100644
index 0000000..488447c
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/OSGI-INF/component.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.e4.injector.objectsuppliers">
+ <implementation class="org.eclipse.osbp.e4.injector.objectsuppliers.CustomEventObjectSupplier"/>
+ <property name="dependency.injection.annotation" type="String" value="org.eclipse.e4.core.di.extensions.EventTopic"/>
+ <property name="service.ranking" type="Integer" value="10"/>
+ <service>
+ <provide interface="org.eclipse.e4.core.di.suppliers.ExtendedObjectSupplier"/>
+ </service>
+</scr:component>
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/OSGI-INF/componentUI.xml b/org.eclipse.osbp.e4.injector.objectsuppliers/OSGI-INF/componentUI.xml
new file mode 100644
index 0000000..a34ab2d
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/OSGI-INF/componentUI.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.e4.injector.objectsuppliers.UI">
+ <implementation class="org.eclipse.osbp.e4.injector.objectsuppliers.CustomUIEventObjectSupplier"/>
+ <property name="dependency.injection.annotation" type="String" value="org.eclipse.e4.ui.di.UIEventTopic"/>
+ <property name="service.ranking" type="Integer" value="10"/>
+ <service>
+ <provide interface="org.eclipse.e4.core.di.suppliers.ExtendedObjectSupplier"/>
+ </service>
+</scr:component>
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/about.html b/org.eclipse.osbp.e4.injector.objectsuppliers/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/about.ini b/org.eclipse.osbp.e4.injector.objectsuppliers/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/about.mappings b/org.eclipse.osbp.e4.injector.objectsuppliers/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/about.properties b/org.eclipse.osbp.e4.injector.objectsuppliers/about.properties
new file mode 100644
index 0000000..acb5df6
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.e4.injector.objectsuppliers
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/build.properties b/org.eclipse.osbp.e4.injector.objectsuppliers/build.properties
new file mode 100644
index 0000000..bcc15d4
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/build.properties
@@ -0,0 +1,9 @@
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ OSGI-INF/,\
+ epl-v10.html,\
+ license.html
+source.. = src/
+src.includes = about.properties, about.mappings, about.ini, about.html, epl-v10.html,\
+ license.html
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/epl-v10.html b/org.eclipse.osbp.e4.injector.objectsuppliers/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/license.html b/org.eclipse.osbp.e4.injector.objectsuppliers/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.e4.injector.objectsuppliers/pom.xml b/org.eclipse.osbp.e4.injector.objectsuppliers/pom.xml
new file mode 100644
index 0000000..fbd5b96
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.osbp.e4.injector.objectsuppliers</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+</project>
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/src/org/eclipse/osbp/e4/injector/objectsuppliers/CustomEventObjectSupplier.java b/org.eclipse.osbp.e4.injector.objectsuppliers/src/org/eclipse/osbp/e4/injector/objectsuppliers/CustomEventObjectSupplier.java
new file mode 100644
index 0000000..98b7e9f
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/src/org/eclipse/osbp/e4/injector/objectsuppliers/CustomEventObjectSupplier.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.e4.injector.objectsuppliers;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.internal.extensions.EventObjectSupplier;
+import org.eclipse.e4.core.di.suppliers.IObjectDescriptor;
+
+public class CustomEventObjectSupplier extends EventObjectSupplier {
+
+ @Inject
+ @Named("e4ApplicationInstanceId")
+ private String eAI;
+
+ @Override
+ protected String getTopic(IObjectDescriptor descriptor) {
+ String topic = super.getTopic(descriptor);
+ return eAI == null ? topic : eAI + "/" + topic;
+ }
+
+}
diff --git a/org.eclipse.osbp.e4.injector.objectsuppliers/src/org/eclipse/osbp/e4/injector/objectsuppliers/CustomUIEventObjectSupplier.java b/org.eclipse.osbp.e4.injector.objectsuppliers/src/org/eclipse/osbp/e4/injector/objectsuppliers/CustomUIEventObjectSupplier.java
new file mode 100644
index 0000000..5307918
--- /dev/null
+++ b/org.eclipse.osbp.e4.injector.objectsuppliers/src/org/eclipse/osbp/e4/injector/objectsuppliers/CustomUIEventObjectSupplier.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.e4.injector.objectsuppliers;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.suppliers.IObjectDescriptor;
+import org.eclipse.e4.ui.internal.di.UIEventObjectSupplier;
+
+public class CustomUIEventObjectSupplier extends UIEventObjectSupplier {
+
+ @Inject
+ @Named("e4ApplicationInstanceId")
+ private String eAI;
+
+ @Override
+ protected String getTopic(IObjectDescriptor descriptor) {
+ String topic = super.getTopic(descriptor);
+ return eAI == null ? topic : eAI + "/" + topic;
+ }
+
+}
diff --git a/org.eclipse.osbp.e4extension/.project b/org.eclipse.osbp.e4extension/.project
new file mode 100644
index 0000000..8d7fd3d
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.e4extension</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.e4extension/META-INF/MANIFEST.MF b/org.eclipse.osbp.e4extension/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..61a3d40
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/META-INF/MANIFEST.MF
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.e4extension
+Bundle-SymbolicName: org.eclipse.osbp.e4extension;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.e4.ui.model.workbench;bundle-version="0.10.1",
+ org.eclipse.e4.core.di;bundle-version="1.1.0",
+ org.eclipse.e4.core.contexts;bundle-version="1.1.0",
+ org.eclipse.e4.ui.services;bundle-version="0.10.1",
+ org.eclipse.e4.core.services;bundle-version="1.0.0",
+ org.eclipse.e4.ui.workbench;bundle-version="0.10.2",
+ org.eclipse.osbp.e4modelextension;bundle-version="[0.9.0,0.10.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.osbp.e4extension.service;version="0.9.0",
+ org.eclipse.osbp.e4extension.shared;version="0.9.0"
+Import-Package: javax.inject;version="1.0.0",
+ javax.annotation
diff --git a/org.eclipse.osbp.e4extension/about.html b/org.eclipse.osbp.e4extension/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.e4extension/about.ini b/org.eclipse.osbp.e4extension/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.e4extension/about.mappings b/org.eclipse.osbp.e4extension/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.e4extension/about.properties b/org.eclipse.osbp.e4extension/about.properties
new file mode 100644
index 0000000..b4a097a
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.e4extension
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.e4extension/build.properties b/org.eclipse.osbp.e4extension/build.properties
new file mode 100644
index 0000000..3efd545
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, plugin.xml,\
+ META-INF/,\
+ .,\
+ icons/,\
+ epl-v10.html,\
+ license.html
+src.includes = about.properties, about.mappings, about.ini, about.html, epl-v10.html,\
+ license.html
diff --git a/org.eclipse.osbp.e4extension/epl-v10.html b/org.eclipse.osbp.e4extension/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.e4extension/icons/sample.gif b/org.eclipse.osbp.e4extension/icons/sample.gif
new file mode 100644
index 0000000..34fb3c9
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/icons/sample.gif
Binary files differ
diff --git a/org.eclipse.osbp.e4extension/license.html b/org.eclipse.osbp.e4extension/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.e4extension/plugin.xml b/org.eclipse.osbp.e4extension/plugin.xml
new file mode 100644
index 0000000..fcbabd7
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/plugin.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+<extension
+ id="AddonSnippet"
+ name="Addon Snippet"
+ point="org.eclipse.e4.workbench.model">
+ <processor
+ beforefragment="true"
+ class="org.eclipse.osbp.e4extension.StartServiceProcessor">
+ </processor>
+ </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.e4extension/pom.xml b/org.eclipse.osbp.e4extension/pom.xml
new file mode 100644
index 0000000..740b4df
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.osbp.e4extension</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+</project>
diff --git a/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/StartServiceProcessor.java b/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/StartServiceProcessor.java
new file mode 100644
index 0000000..f79b824
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/StartServiceProcessor.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.e4extension;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.osbp.e4extension.impl.PartServiceExtImpl;
+import org.eclipse.osbp.e4extension.service.EPartServiceExt;
+
+/**
+ * @author rushan
+ *
+ */
+public class StartServiceProcessor {
+ @Execute
+ void addMinMaxAddon(MApplication application, IEclipseContext context) {
+
+ PartServiceExtImpl partServiceExt = ContextInjectionFactory.make(
+ PartServiceExtImpl.class, context);
+ context.set(EPartServiceExt.class, partServiceExt);
+ }
+}
diff --git a/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/impl/PartServiceExtImpl.java b/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/impl/PartServiceExtImpl.java
new file mode 100644
index 0000000..ffdc7e8
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/impl/PartServiceExtImpl.java
@@ -0,0 +1,387 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.e4extension.impl;
+
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.inject.Inject;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.services.contributions.IContributionFactory;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MInputPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicFactoryImpl;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.osbp.e4extension.service.EPartServiceExt;
+
+import e4modelextension.EditorPartDescriptor;
+import e4modelextension.VaaclipseApplication;
+
+/**
+ * @author rushan
+ *
+ */
+public class PartServiceExtImpl implements EPartServiceExt {
+ @Inject
+ private IEclipseContext eclipseContext;
+
+ @Inject
+ private MApplication application;
+
+ @Inject
+ EPartService partService;
+
+ @Inject
+ EModelService modelService;
+
+ Map<String, Pattern> patterns = new HashMap<String, Pattern>();
+
+ private EPartService actualServiceImplementation;
+
+ @Override
+ public MInputPart createInputPart(String id) {
+ MPartDescriptor descriptor = findDescriptor(id);
+ return createInputPart(descriptor);
+ }
+
+ private MInputPart createInputPart(MPartDescriptor descriptor) {
+ if (descriptor == null) {
+ return null;
+ }
+
+ MInputPart part = BasicFactoryImpl.eINSTANCE.createInputPart();
+ part.setElementId(descriptor.getElementId());
+ part.getMenus().addAll(EcoreUtil.copyAll(descriptor.getMenus()));
+ if (descriptor.getToolbar() != null) {
+ part.setToolbar((MToolBar) EcoreUtil.copy((EObject) descriptor
+ .getToolbar()));
+ }
+ part.setContributorURI(descriptor.getContributorURI());
+ // part.setCloseable(descriptor.isCloseable());
+ part.setCloseable(true); // closable
+ part.setContributionURI(descriptor.getContributionURI());
+ part.setLabel(descriptor.getLabel());
+ part.setIconURI(descriptor.getIconURI());
+ part.setTooltip(descriptor.getTooltip());
+ part.getHandlers().addAll(EcoreUtil.copyAll(descriptor.getHandlers()));
+ part.getTags().addAll(descriptor.getTags());
+ part.getBindingContexts().addAll(descriptor.getBindingContexts());
+ part.getTags().add(EPartService.REMOVE_ON_HIDE_TAG);
+ return part;
+ }
+
+ @Override
+ public MPartDescriptor findDescriptor(String id) {
+ for (MPartDescriptor descriptor : application.getDescriptors()) {
+ if (descriptor.getElementId().equals(id)) {
+ return descriptor;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public EditorPartDescriptor findEditorPartDescriptorUsingId(String id) {
+ for (EditorPartDescriptor descriptor : ((VaaclipseApplication) application)
+ .getEditorDescriptors()) {
+ if (descriptor.getElementId().equals(id)) {
+ return descriptor;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public EditorPartDescriptor findEditorPartDescriptor(String inputUri) {
+ for (EditorPartDescriptor d : ((VaaclipseApplication) application)
+ .getEditorDescriptors()) {
+ if (d.getUriFilter() != null) {
+ String filter = d.getUriFilter().trim();
+ if (!filter.isEmpty()) {
+ if (!patterns.containsKey(filter)) {
+ patterns.put(filter, Pattern.compile(filter));
+ }
+ Pattern pattern = patterns.get(filter);
+ Matcher matcher = pattern.matcher(inputUri);
+ if (matcher.matches()) {
+ return d;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public MInputPart openUri(MElementContainer<?> area, String inputUri) {
+ EditorPartDescriptor editorPartDescriptor = findEditorPartDescriptor(inputUri);
+ return openUri(inputUri, editorPartDescriptor, area);
+ }
+
+ @Override
+ public MInputPart openUri(String inputUri,
+ EditorPartDescriptor editorPartDescriptor, MElementContainer<?> area) {
+ MInputPart part = ensurePartAdded(getWindow(), area,
+ editorPartDescriptor, inputUri);
+
+ // ATTENTION!!! We should use the EPartService showPart method ONLY if
+ // all contexts are crated (i.e. model is rendered)
+ // But this method (openURI) should be usable when model is not
+ // rendered. So we check the context and if it is created we use
+ // servive methods.
+ if (application.getContext() != null)
+ partService.showPart(part, PartState.ACTIVATE);
+ else // otherwise just select it in its container
+ {
+ MPlaceholder partPh = modelService.findPlaceholderFor(getWindow(),
+ part);
+ if (partPh != null) {
+ MElementContainer<MUIElement> parent = partPh.getParent();
+ parent.setSelectedElement(partPh);
+ } else {
+ MElementContainer<MUIElement> parent = part.getParent();
+ parent.setSelectedElement(part);
+ }
+ }
+ return part;
+ }
+
+ @Override
+ public MInputPart openUri(String inputUri) {
+ return this.openUri((MElementContainer<?>) null, inputUri);
+ }
+
+ @Override
+ public MInputPart openUri(String inputUri, EditorPartDescriptor descriptor) {
+ return this.openUri(inputUri, descriptor, null);
+ }
+
+ @Override
+ public MInputPart openUri(String inputUri, String editorDescriptorId) {
+ EditorPartDescriptor d = findEditorPartDescriptorUsingId(editorDescriptorId);
+ if (d != null) {
+ return openUri(inputUri, d);
+ } else
+ return null;
+ }
+
+ @Override
+ public void closeUri(String inputUri, boolean saveBeforeClose) {
+ MInputPart part = findPart(getWindow(), inputUri);
+
+ if (part == null)
+ return;
+
+ if (saveBeforeClose) {
+ IEclipseContext partContext = part.getContext();
+ if (partContext == null)
+ partContext = modelService.getContainingContext(part);
+
+ // Allow closes to be 'canceled'
+ EPartService partService = (EPartService) partContext
+ .get(EPartService.class.getName());
+ if (partService.savePart(part, true)) {
+ partService.hidePart(part, true);
+ }
+ } else {
+ partService.hidePart(part, true);
+ }
+ }
+
+ private MInputPart ensurePartAdded(MWindow window,
+ MElementContainer<?> area,
+ EditorPartDescriptor editorPartDescriptor, String inputUri) {
+ MInputPart part = findPart(window, inputUri);
+
+ if (part == null) {// else we create new part and add it with specified
+ // logic
+
+ // create part
+ part = addInputPart(window, area, editorPartDescriptor, inputUri);
+
+ // now part is added to window, so we all work is done
+ }
+
+ return part;
+ }
+
+ private MInputPart addInputPart(MWindow window, MElementContainer<?> area,
+ EditorPartDescriptor editorPartDescriptor, String inputUri) {
+ MInputPart part;
+ part = createInputPart(editorPartDescriptor);
+ part.setInputURI(inputUri);
+
+ // create context for add logic and set context info
+ IEclipseContext localContext = eclipseContext.createChild();
+ localContext.set(MPart.class, part);
+ localContext.set(MElementContainer.class, area);
+ localContext.set(MInputPart.class, part);
+ localContext.set(MWindow.class, window);
+
+ // obtain adding logic
+ IContributionFactory contributionFactory = (IContributionFactory) localContext
+ .get(IContributionFactory.class.getName());
+ Object addLogic = contributionFactory.create(
+ editorPartDescriptor.getPartAddingLogicUri(), localContext);
+
+ // execute adding logic
+ ContextInjectionFactory.invoke(addLogic, Execute.class, localContext);
+ return part;
+ }
+
+ @Override
+ public MInputPart openNewEditor(EditorPartDescriptor descriptor) {
+ return addInputPart(getWindow(), null, descriptor, null);
+ }
+
+ @Override
+ public MInputPart openNewEditor(String descriptorId) {
+ EditorPartDescriptor d = findEditorPartDescriptorUsingId(descriptorId);
+ if (d == null)
+ return null;
+ return openNewEditor(d);
+ }
+
+ private MInputPart findPart(MWindow window, String inputUri) {
+ MPerspectiveStack stack = null;
+ for (MUIElement e : window.getChildren()) {
+ if (e instanceof MPerspectiveStack) {
+ stack = (MPerspectiveStack) e;
+ break;
+ }
+ }
+
+ MPerspective persp = stack != null ? stack.getSelectedElement() : null;
+
+ MElementContainer<?> container = persp != null ? persp : window;
+
+ List<MPart> parts = modelService.findElements(container, null,
+ MPart.class, null, EModelService.OUTSIDE_PERSPECTIVE
+ | EModelService.IN_ACTIVE_PERSPECTIVE
+ | EModelService.IN_SHARED_AREA);
+
+ MInputPart part = null;
+ for (MPart p : parts) {
+ if (p instanceof MInputPart) {
+ String _inputUri = ((MInputPart) p).getInputURI();
+ if (inputUri.equals(_inputUri)) {
+ part = (MInputPart) p;
+ break;
+ }
+ }
+ }
+ return part;
+ }
+
+ private MWindow getWindow() {
+ if (application.getSelectedElement() != null)
+ return application.getSelectedElement();
+ List<MWindow> windows = application.getChildren();
+ if (windows.size() != 0)
+ return windows.get(0);
+ return null;
+ }
+
+ private EPartService getActualServiceImplementation() {
+ if (actualServiceImplementation != null)
+ return actualServiceImplementation;
+
+ try {
+ Method getActiveWindowService = partService.getClass()
+ .getDeclaredMethod("getActiveWindowService");
+ getActiveWindowService.setAccessible(true);
+ actualServiceImplementation = (EPartService) getActiveWindowService
+ .invoke(partService);
+ return actualServiceImplementation;
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ public MPart showPart(String id, PartState partState) {
+ Assert.isNotNull(id);
+ Assert.isNotNull(partState);
+
+ MPart part = partService.findPart(id);
+ if (part == null) {
+ MPartDescriptor descriptor = findDescriptor(id);
+
+ try {
+ EPartService actualServiceImplementation = getActualServiceImplementation();
+ Method createPart = actualServiceImplementation.getClass()
+ .getDeclaredMethod("createPart", MPartDescriptor.class);
+ createPart.setAccessible(true);
+ part = (MPart) createPart.invoke(actualServiceImplementation,
+ descriptor);
+ } catch (Exception ex) {
+ return null;
+ }
+
+ if (part == null) {
+ return null;
+ }
+ }
+
+ // TODO - seems to work better that way!
+ return partService.showPart(part, partState);
+ }
+
+ public MPart addPart(MPart part) {
+ Assert.isNotNull(part);
+ MPart localPart = findPart(part.getElementId());
+
+ try {
+ EPartService actualServiceImplementation = getActualServiceImplementation();
+ Method addPart = actualServiceImplementation.getClass()
+ .getDeclaredMethod("addPart", MPart.class, MPart.class);
+ addPart.setAccessible(true);
+ return (MPart) addPart.invoke(actualServiceImplementation, part,
+ localPart == null ? part : localPart);
+ } catch (Exception ex) {
+ return null;
+ }
+
+ // return addPart(part, localPart == null ? part : localPart);
+ }
+
+ public MPart findPart(String id) {
+ List<MPart> parts = getParts(MPart.class, id);
+ return parts.size() > 0 ? parts.get(0) : null;
+ }
+
+ private <T> List<T> getParts(Class<T> cls, String id) {
+ return modelService.findElements(getWindow(), id, cls, null,
+ EModelService.OUTSIDE_PERSPECTIVE
+ | EModelService.IN_ANY_PERSPECTIVE
+ | EModelService.IN_SHARED_AREA);
+ }
+}
diff --git a/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/service/EPartServiceExt.java b/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/service/EPartServiceExt.java
new file mode 100644
index 0000000..f5c6f4c
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/service/EPartServiceExt.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.e4extension.service;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MInputPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
+
+import e4modelextension.EditorPartDescriptor;
+
+/**
+ * @author rushan
+ *
+ */
+public interface EPartServiceExt {
+ public static interface PartAddLogic {
+ void addMPart(MPart mpart);
+ }
+
+ /**
+ * Creates a new input part of the given id.
+ *
+ * @param id
+ * the identifier of the part, must not be <code>null</code>
+ * @return a new part of the given id, or <code>null</code> if no part
+ * descriptors can be found that match the specified id
+ */
+ MInputPart createInputPart(String id);
+
+ MPartDescriptor findDescriptor(String id);
+
+ EditorPartDescriptor findEditorPartDescriptorUsingId(String id);
+
+ EditorPartDescriptor findEditorPartDescriptor(String inputUri);
+
+ /**
+ * Open the given uri in area with id = org.eclipse.ui.editorss (eclipse
+ * conditions)
+ *
+ * @param inputUri
+ * given uri
+ * @return part that was opened or finded with this uri
+ */
+ MInputPart openUri(String inputUri);
+
+ /**
+ * Open the given uri in area with id = org.eclipse.ui.editorss (eclipse
+ * conditions) in editor with given descriptor
+ */
+ MInputPart openUri(String inputUri, EditorPartDescriptor descriptor);
+
+ MInputPart openUri(String inputUri, String editorDescriptorId);
+
+ /**
+ * Open given uri in given are
+ *
+ * @param area
+ * @param inputUri
+ * @return
+ */
+ MInputPart openUri(MElementContainer<?> area, String inputUri);
+
+ MInputPart openUri(String inputUri,
+ EditorPartDescriptor editorPartDescriptor, MElementContainer<?> area);
+
+ void closeUri(String inputUri, boolean saveBeforeClose);
+
+ MInputPart openNewEditor(EditorPartDescriptor descriptor);
+
+ MInputPart openNewEditor(String descriptorId);
+
+ /**
+ * Fixed method EPartService.showPart. Current method search any opened
+ * shared part and if allowMultiples == false (default) it create
+ * placeholder on this part rather creating new. The differences from
+ * original showPart is that it search shared part in any perspective, the
+ * original showPart search shared part in active perspective. I can not say
+ * is this bug or general contract of this method...
+ *
+ * @param id
+ * @param partState
+ * @return
+ */
+ MPart showPart(String id, PartState partState);
+}
diff --git a/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/shared/DefaultPartAddingLogic.java b/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/shared/DefaultPartAddingLogic.java
new file mode 100644
index 0000000..d0a36a2
--- /dev/null
+++ b/org.eclipse.osbp.e4extension/src/org/eclipse/osbp/e4extension/shared/DefaultPartAddingLogic.java
@@ -0,0 +1,142 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.e4extension.shared;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MArea;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+
+public class DefaultPartAddingLogic {
+ @Inject
+ MApplication application;
+
+ @Inject
+ EModelService modelService;
+
+ @Execute
+ public void execute(MWindow window, @Optional MElementContainer<?> area,
+ MPart part, EModelService modelService) {
+ if (area != null) {
+ addLogic1(area, part, modelService);
+ } else {// add using part logic copied from eclipse e4 service
+ // epartservice implementation - partservicesimpl
+ addLogic2(window, part, modelService);
+ }
+ }
+
+ private void addLogic1(MElementContainer<?> area, MPart part,
+ EModelService modelService) {
+ MPartStack stack = null;
+ List<MPartStack> partStacks = modelService.findElements(area, null,
+ MPartStack.class, null);
+ if (partStacks.isEmpty()) {
+ if (area instanceof MArea) {
+ MArea marea = (MArea) area;
+ stack = MBasicFactory.INSTANCE.createPartStack();
+ marea.getChildren().add(stack);
+ // engine.createGui(stack);
+ // ((GenericRenderer)marea.getRenderer()).refreshPlatformElement(marea);
+ } else
+ throw new IllegalStateException(String.format(
+ "Can not add the part %s to area %s", part, area));
+ } else {
+ stack = partStacks.get(0);
+ }
+
+ if (stack != null)
+ stack.getChildren().add(part);
+ }
+
+ /**
+ * Add using part logic copied from eclipse e4 service epartservice
+ * implementation - partservicesimpl
+ */
+ private void addLogic2(MWindow window, MPart part,
+ EModelService modelService) {
+ // ------------from epartserviceimpl---
+ MElementContainer<MUIElement> container = getContainer(window);
+ MElementContainer<?> area = (MElementContainer<?>) modelService.find(
+ "org.eclipse.ui.editorss", container); //$NON-NLS-1$
+
+ MPartStack activeStack = null;
+ if (area instanceof MPlaceholder
+ && ((MPlaceholder) area).getRef() instanceof MArea) {
+ // Find the currently 'active' stack in the area
+ MArea a = (MArea) ((MPlaceholder) area).getRef();
+ MUIElement curActive = a.getSelectedElement();
+ while (curActive instanceof MElementContainer<?>) {
+ if (curActive instanceof MPartStack) {
+ activeStack = (MPartStack) curActive;
+ break;
+ }
+ MElementContainer<?> curContainer = (MElementContainer<?>) curActive;
+ curActive = curContainer.getSelectedElement();
+ }
+ }
+
+ if (activeStack != null) {
+ activeStack.getChildren().add(part);
+ } else {
+ // Find the first visible stack in the area
+ List<MPartStack> sharedStacks = modelService.findElements(area,
+ null, MPartStack.class, null);
+ if (sharedStacks.size() > 0) {
+ for (MPartStack stack : sharedStacks) {
+ if (stack.isToBeRendered()) {
+ stack.getChildren().add(part);
+ break;
+ }
+ }
+ } else {
+ addLogic1(area, part, modelService);
+ }
+ }
+ }
+
+ /**
+ * "Container" here is: 1) a selected MPerspective, or, if none available 2)
+ * the MWindow for which this part service is created, or, if not available,
+ * 3) the MApplication.
+ */
+ private MElementContainer<MUIElement> getContainer(MWindow workbenchWindow) {
+ MElementContainer<? extends MUIElement> outerContainer = (workbenchWindow != null) ? workbenchWindow
+ : application;
+
+ // see if we can narrow it down to the active perspective
+ for (MElementContainer<?> container = outerContainer; container != null;) {
+ if (container instanceof MPerspective)
+ return (MElementContainer<MUIElement>) container;
+ Object child = container.getSelectedElement();
+ if (child == null)
+ break;
+ if (child instanceof MElementContainer<?>)
+ container = (MElementContainer<?>) child;
+ else
+ break;
+ }
+ return (MElementContainer<MUIElement>) outerContainer;
+ }
+}
diff --git a/org.eclipse.osbp.e4modelextension/.project b/org.eclipse.osbp.e4modelextension/.project
new file mode 100644
index 0000000..cd9ffad
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.e4modelextension</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.e4modelextension/META-INF/MANIFEST.MF b/org.eclipse.osbp.e4modelextension/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..9e10292
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.e4modelextension
+Bundle-SymbolicName: org.eclipse.osbp.e4modelextension;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: Eclipse OSBP
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.e4.ui.model.workbench;visibility:=reexport,
+ org.eclipse.e4.core.contexts;bundle-version="1.1.0",
+ org.eclipse.osbp.vaaclipse.ui.preferences.model;bundle-version="[0.9.0,0.10.0)";visibility:=reexport
+Bundle-ActivationPolicy: lazy
+Export-Package: e4modelextension;version="0.9.0",
+ e4modelextension.impl;version="0.9.0",
+ e4modelextension.util;version="0.9.0"
+Import-Package: javax.annotation
diff --git a/org.eclipse.osbp.e4modelextension/about.html b/org.eclipse.osbp.e4modelextension/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.e4modelextension/about.ini b/org.eclipse.osbp.e4modelextension/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.e4modelextension/about.mappings b/org.eclipse.osbp.e4modelextension/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.e4modelextension/about.properties b/org.eclipse.osbp.e4modelextension/about.properties
new file mode 100644
index 0000000..f55264a
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.e4modelextension
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.e4modelextension/build.properties b/org.eclipse.osbp.e4modelextension/build.properties
new file mode 100644
index 0000000..da0146c
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/build.properties
@@ -0,0 +1,14 @@
+#
+
+bin.includes = about.properties, about.mappings, about.ini, about.html, .,\
+ model/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties,\
+ license.html,\
+ epl-v10.html
+jars.compile.order = .
+source.. = src/
+output.. = target/classes/
+src.includes = about.properties, about.mappings, about.ini, about.html, epl-v10.html,\
+ license.html
diff --git a/org.eclipse.osbp.e4modelextension/epl-v10.html b/org.eclipse.osbp.e4modelextension/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.e4modelextension/license.html b/org.eclipse.osbp.e4modelextension/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.e4modelextension/model/e4modelextension.ecore b/org.eclipse.osbp.e4modelextension/model/e4modelextension.ecore
new file mode 100644
index 0000000..976228a
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/model/e4modelextension.ecore
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="e4modelextension" nsURI="http://www.semanticsoft.org/ExtensionUI/e4modelextension"
+ nsPrefix="e4modelextension">
+ <eClassifiers xsi:type="ecore:EClass" name="EditorPartDescriptor" eSuperTypes="../../org.eclipse.e4.ui.model.workbench/model/UIElements.ecore#//descriptor/basic/PartDescriptor">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="uriFilter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="partAddingLogicUri" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ defaultValueLiteral="bundleclass://org.eclipse.osbp.e4extension/org.eclipse.osbp.e4extension.shared.DefaultPartAddingLogic"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="VaaclipseApplication" eSuperTypes="../../org.eclipse.e4.ui.model.workbench/model/UIElements.ecore#//Application">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="editorDescriptors" upperBound="-1"
+ eType="#//EditorPartDescriptor" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="preferencesCategories"
+ upperBound="-1" eType="ecore:EClass ../../org.eclipse.osbp.vaaclipse.ui.preferences.model/model/preferences.ecore#//PreferencesCategory"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="preferencesPages" upperBound="-1"
+ eType="ecore:EClass ../../org.eclipse.osbp.vaaclipse.ui.preferences.model/model/preferences.ecore#//PreferencesPage"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/org.eclipse.osbp.e4modelextension/model/e4modelextension.genmodel b/org.eclipse.osbp.e4modelextension/model/e4modelextension.genmodel
new file mode 100644
index 0000000..a7c8197
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/model/e4modelextension.genmodel
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.osbp.e4modelextension/src" modelPluginID="org.eclipse.osbp.e4modelextension"
+ modelName="E4modelextension" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ importerID="org.eclipse.emf.importer.ecore" complianceLevel="7.0" copyrightFields="false"
+ usedGenPackages="../../org.eclipse.osbp.vaaclipse.ui.preferences.model/model/preferences.genmodel#//preferences ../../org.eclipse.e4.ui.model.workbench/model/UIElements.genmodel#//application"
+ importOrganizing="true">
+ <foreignModel>e4modelextension.ecore</foreignModel>
+ <genPackages prefix="E4modelextension" disposableProviderFactory="true" ecorePackage="e4modelextension.ecore#/">
+ <genClasses ecoreClass="e4modelextension.ecore#//EditorPartDescriptor">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute e4modelextension.ecore#//EditorPartDescriptor/uriFilter"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute e4modelextension.ecore#//EditorPartDescriptor/partAddingLogicUri"/>
+ </genClasses>
+ <genClasses ecoreClass="e4modelextension.ecore#//VaaclipseApplication">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference e4modelextension.ecore#//VaaclipseApplication/editorDescriptors"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference e4modelextension.ecore#//VaaclipseApplication/preferencesCategories"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference e4modelextension.ecore#//VaaclipseApplication/preferencesPages"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/org.eclipse.osbp.e4modelextension/plugin.properties b/org.eclipse.osbp.e4modelextension/plugin.properties
new file mode 100644
index 0000000..ebf8ba0
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = E4modelextension Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.e4modelextension/plugin.xml b/org.eclipse.osbp.e4modelextension/plugin.xml
new file mode 100644
index 0000000..4a3670d
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/plugin.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <package
+ uri="http://www.semanticsoft.org/ExtensionUI/e4modelextension"
+ class="e4modelextension.E4modelextensionPackage"
+ genModel="model/e4modelextension.genmodel"/>
+ </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.e4modelextension/pom.xml b/org.eclipse.osbp.e4modelextension/pom.xml
new file mode 100644
index 0000000..eee57ee
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.osbp.e4modelextension</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+</project>
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/E4modelextensionFactory.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/E4modelextensionFactory.java
new file mode 100644
index 0000000..1ddd923
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/E4modelextensionFactory.java
@@ -0,0 +1,49 @@
+package e4modelextension;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc --> The <b>Factory</b> for the model. It provides a
+ * create method for each non-abstract class of the model. <!-- end-user-doc -->
+ *
+ * @see e4modelextension.E4modelextensionPackage
+ * @generated
+ */
+public interface E4modelextensionFactory extends EFactory {
+ /**
+ * The singleton instance of the factory. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ E4modelextensionFactory eINSTANCE = e4modelextension.impl.E4modelextensionFactoryImpl
+ .init();
+
+ /**
+ * Returns a new object of class '<em>Editor Part Descriptor</em>'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Editor Part Descriptor</em>'.
+ * @generated
+ */
+ EditorPartDescriptor createEditorPartDescriptor();
+
+ /**
+ * Returns a new object of class '<em>Vaaclipse Application</em>'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Vaaclipse Application</em>'.
+ * @generated
+ */
+ VaaclipseApplication createVaaclipseApplication();
+
+ /**
+ * Returns the package supported by this factory. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the package supported by this factory.
+ * @generated
+ */
+ E4modelextensionPackage getE4modelextensionPackage();
+
+} // E4modelextensionFactory
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/E4modelextensionPackage.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/E4modelextensionPackage.java
new file mode 100644
index 0000000..c896d03
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/E4modelextensionPackage.java
@@ -0,0 +1,831 @@
+package e4modelextension;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc --> The <b>Package</b> for the model. It contains
+ * accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ *
+ * @see e4modelextension.E4modelextensionFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface E4modelextensionPackage extends EPackage {
+ /**
+ * The package name. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String eNAME = "e4modelextension";
+
+ /**
+ * The package namespace URI. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String eNS_URI = "http://www.semanticsoft.org/ExtensionUI/e4modelextension";
+
+ /**
+ * The package namespace name. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String eNS_PREFIX = "e4modelextension";
+
+ /**
+ * The singleton instance of the package. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ E4modelextensionPackage eINSTANCE = e4modelextension.impl.E4modelextensionPackageImpl
+ .init();
+
+ /**
+ * The meta object id for the '
+ * {@link e4modelextension.impl.EditorPartDescriptorImpl
+ * <em>Editor Part Descriptor</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see e4modelextension.impl.EditorPartDescriptorImpl
+ * @see e4modelextension.impl.E4modelextensionPackageImpl#getEditorPartDescriptor()
+ * @generated
+ */
+ int EDITOR_PART_DESCRIPTOR = 0;
+
+ /**
+ * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__ELEMENT_ID = BasicPackageImpl.PART_DESCRIPTOR__ELEMENT_ID;
+
+ /**
+ * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__PERSISTED_STATE = BasicPackageImpl.PART_DESCRIPTOR__PERSISTED_STATE;
+
+ /**
+ * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__TAGS = BasicPackageImpl.PART_DESCRIPTOR__TAGS;
+
+ /**
+ * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__CONTRIBUTOR_URI = BasicPackageImpl.PART_DESCRIPTOR__CONTRIBUTOR_URI;
+
+ /**
+ * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__TRANSIENT_DATA = BasicPackageImpl.PART_DESCRIPTOR__TRANSIENT_DATA;
+
+ /**
+ * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__LABEL = BasicPackageImpl.PART_DESCRIPTOR__LABEL;
+
+ /**
+ * The feature id for the '<em><b>Icon URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__ICON_URI = BasicPackageImpl.PART_DESCRIPTOR__ICON_URI;
+
+ /**
+ * The feature id for the '<em><b>Tooltip</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__TOOLTIP = BasicPackageImpl.PART_DESCRIPTOR__TOOLTIP;
+
+ /**
+ * The feature id for the '<em><b>Localized Label</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__LOCALIZED_LABEL = BasicPackageImpl.PART_DESCRIPTOR__LOCALIZED_LABEL;
+
+ /**
+ * The feature id for the '<em><b>Localized Tooltip</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__LOCALIZED_TOOLTIP = BasicPackageImpl.PART_DESCRIPTOR__LOCALIZED_TOOLTIP;
+
+ /**
+ * The feature id for the '<em><b>Handlers</b></em>' containment reference
+ * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__HANDLERS = BasicPackageImpl.PART_DESCRIPTOR__HANDLERS;
+
+ /**
+ * The feature id for the '<em><b>Binding Contexts</b></em>' reference list.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__BINDING_CONTEXTS = BasicPackageImpl.PART_DESCRIPTOR__BINDING_CONTEXTS;
+
+ /**
+ * The feature id for the '<em><b>Allow Multiple</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__ALLOW_MULTIPLE = BasicPackageImpl.PART_DESCRIPTOR__ALLOW_MULTIPLE;
+
+ /**
+ * The feature id for the '<em><b>Category</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__CATEGORY = BasicPackageImpl.PART_DESCRIPTOR__CATEGORY;
+
+ /**
+ * The feature id for the '<em><b>Menus</b></em>' containment reference
+ * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__MENUS = BasicPackageImpl.PART_DESCRIPTOR__MENUS;
+
+ /**
+ * The feature id for the '<em><b>Toolbar</b></em>' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__TOOLBAR = BasicPackageImpl.PART_DESCRIPTOR__TOOLBAR;
+
+ /**
+ * The feature id for the '<em><b>Closeable</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__CLOSEABLE = BasicPackageImpl.PART_DESCRIPTOR__CLOSEABLE;
+
+ /**
+ * The feature id for the '<em><b>Dirtyable</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__DIRTYABLE = BasicPackageImpl.PART_DESCRIPTOR__DIRTYABLE;
+
+ /**
+ * The feature id for the '<em><b>Contribution URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__CONTRIBUTION_URI = BasicPackageImpl.PART_DESCRIPTOR__CONTRIBUTION_URI;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__DESCRIPTION = BasicPackageImpl.PART_DESCRIPTOR__DESCRIPTION;
+
+ /**
+ * The feature id for the '<em><b>Localized Description</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__LOCALIZED_DESCRIPTION = BasicPackageImpl.PART_DESCRIPTOR__LOCALIZED_DESCRIPTION;
+
+ /**
+ * The feature id for the '<em><b>Uri Filter</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__URI_FILTER = BasicPackageImpl.PART_DESCRIPTOR_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Part Adding Logic Uri</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR__PART_ADDING_LOGIC_URI = BasicPackageImpl.PART_DESCRIPTOR_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Editor Part Descriptor</em>
+ * ' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int EDITOR_PART_DESCRIPTOR_FEATURE_COUNT = BasicPackageImpl.PART_DESCRIPTOR_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '
+ * {@link e4modelextension.impl.VaaclipseApplicationImpl
+ * <em>Vaaclipse Application</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see e4modelextension.impl.VaaclipseApplicationImpl
+ * @see e4modelextension.impl.E4modelextensionPackageImpl#getVaaclipseApplication()
+ * @generated
+ */
+ int VAACLIPSE_APPLICATION = 1;
+
+ /**
+ * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__ELEMENT_ID = ApplicationPackageImpl.APPLICATION__ELEMENT_ID;
+
+ /**
+ * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__PERSISTED_STATE = ApplicationPackageImpl.APPLICATION__PERSISTED_STATE;
+
+ /**
+ * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__TAGS = ApplicationPackageImpl.APPLICATION__TAGS;
+
+ /**
+ * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__CONTRIBUTOR_URI = ApplicationPackageImpl.APPLICATION__CONTRIBUTOR_URI;
+
+ /**
+ * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__TRANSIENT_DATA = ApplicationPackageImpl.APPLICATION__TRANSIENT_DATA;
+
+ /**
+ * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__WIDGET = ApplicationPackageImpl.APPLICATION__WIDGET;
+
+ /**
+ * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__RENDERER = ApplicationPackageImpl.APPLICATION__RENDERER;
+
+ /**
+ * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__TO_BE_RENDERED = ApplicationPackageImpl.APPLICATION__TO_BE_RENDERED;
+
+ /**
+ * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__ON_TOP = ApplicationPackageImpl.APPLICATION__ON_TOP;
+
+ /**
+ * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__VISIBLE = ApplicationPackageImpl.APPLICATION__VISIBLE;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__PARENT = ApplicationPackageImpl.APPLICATION__PARENT;
+
+ /**
+ * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__CONTAINER_DATA = ApplicationPackageImpl.APPLICATION__CONTAINER_DATA;
+
+ /**
+ * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__CUR_SHARED_REF = ApplicationPackageImpl.APPLICATION__CUR_SHARED_REF;
+
+ /**
+ * The feature id for the '<em><b>Visible When</b></em>' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__VISIBLE_WHEN = ApplicationPackageImpl.APPLICATION__VISIBLE_WHEN;
+
+ /**
+ * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__ACCESSIBILITY_PHRASE = ApplicationPackageImpl.APPLICATION__ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__LOCALIZED_ACCESSIBILITY_PHRASE = ApplicationPackageImpl.APPLICATION__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Children</b></em>' containment reference
+ * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__CHILDREN = ApplicationPackageImpl.APPLICATION__CHILDREN;
+
+ /**
+ * The feature id for the '<em><b>Selected Element</b></em>' reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__SELECTED_ELEMENT = ApplicationPackageImpl.APPLICATION__SELECTED_ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Context</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__CONTEXT = ApplicationPackageImpl.APPLICATION__CONTEXT;
+
+ /**
+ * The feature id for the '<em><b>Variables</b></em>' attribute list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__VARIABLES = ApplicationPackageImpl.APPLICATION__VARIABLES;
+
+ /**
+ * The feature id for the '<em><b>Properties</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__PROPERTIES = ApplicationPackageImpl.APPLICATION__PROPERTIES;
+
+ /**
+ * The feature id for the '<em><b>Handlers</b></em>' containment reference
+ * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__HANDLERS = ApplicationPackageImpl.APPLICATION__HANDLERS;
+
+ /**
+ * The feature id for the '<em><b>Binding Tables</b></em>' containment
+ * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__BINDING_TABLES = ApplicationPackageImpl.APPLICATION__BINDING_TABLES;
+
+ /**
+ * The feature id for the '<em><b>Root Context</b></em>' containment
+ * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__ROOT_CONTEXT = ApplicationPackageImpl.APPLICATION__ROOT_CONTEXT;
+
+ /**
+ * The feature id for the '<em><b>Descriptors</b></em>' containment
+ * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__DESCRIPTORS = ApplicationPackageImpl.APPLICATION__DESCRIPTORS;
+
+ /**
+ * The feature id for the '<em><b>Binding Contexts</b></em>' reference list.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__BINDING_CONTEXTS = ApplicationPackageImpl.APPLICATION__BINDING_CONTEXTS;
+
+ /**
+ * The feature id for the '<em><b>Menu Contributions</b></em>' containment
+ * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__MENU_CONTRIBUTIONS = ApplicationPackageImpl.APPLICATION__MENU_CONTRIBUTIONS;
+
+ /**
+ * The feature id for the '<em><b>Tool Bar Contributions</b></em>'
+ * containment reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__TOOL_BAR_CONTRIBUTIONS = ApplicationPackageImpl.APPLICATION__TOOL_BAR_CONTRIBUTIONS;
+
+ /**
+ * The feature id for the '<em><b>Trim Contributions</b></em>' containment
+ * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__TRIM_CONTRIBUTIONS = ApplicationPackageImpl.APPLICATION__TRIM_CONTRIBUTIONS;
+
+ /**
+ * The feature id for the '<em><b>Snippets</b></em>' containment reference
+ * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__SNIPPETS = ApplicationPackageImpl.APPLICATION__SNIPPETS;
+
+ /**
+ * The feature id for the '<em><b>Commands</b></em>' containment reference
+ * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__COMMANDS = ApplicationPackageImpl.APPLICATION__COMMANDS;
+
+ /**
+ * The feature id for the '<em><b>Addons</b></em>' containment reference
+ * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__ADDONS = ApplicationPackageImpl.APPLICATION__ADDONS;
+
+ /**
+ * The feature id for the '<em><b>Categories</b></em>' containment reference
+ * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__CATEGORIES = ApplicationPackageImpl.APPLICATION__CATEGORIES;
+
+ /**
+ * The feature id for the '<em><b>Dialogs</b></em>' reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__DIALOGS = ApplicationPackageImpl.APPLICATION__DIALOGS;
+
+ /**
+ * The feature id for the '<em><b>Editor Descriptors</b></em>' containment
+ * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS = ApplicationPackageImpl.APPLICATION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Preferences Categories</b></em>' reference
+ * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__PREFERENCES_CATEGORIES = ApplicationPackageImpl.APPLICATION_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Preferences Pages</b></em>' reference
+ * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION__PREFERENCES_PAGES = ApplicationPackageImpl.APPLICATION_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Vaaclipse Application</em>'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int VAACLIPSE_APPLICATION_FEATURE_COUNT = ApplicationPackageImpl.APPLICATION_FEATURE_COUNT + 3;
+
+ /**
+ * Returns the meta object for class '
+ * {@link e4modelextension.EditorPartDescriptor
+ * <em>Editor Part Descriptor</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for class '<em>Editor Part Descriptor</em>'.
+ * @see e4modelextension.EditorPartDescriptor
+ * @generated
+ */
+ EClass getEditorPartDescriptor();
+
+ /**
+ * Returns the meta object for the attribute '
+ * {@link e4modelextension.EditorPartDescriptor#getUriFilter
+ * <em>Uri Filter</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Uri Filter</em>'.
+ * @see e4modelextension.EditorPartDescriptor#getUriFilter()
+ * @see #getEditorPartDescriptor()
+ * @generated
+ */
+ EAttribute getEditorPartDescriptor_UriFilter();
+
+ /**
+ * Returns the meta object for the attribute '
+ * {@link e4modelextension.EditorPartDescriptor#getPartAddingLogicUri
+ * <em>Part Adding Logic Uri</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Part Adding Logic Uri</em>
+ * '.
+ * @see e4modelextension.EditorPartDescriptor#getPartAddingLogicUri()
+ * @see #getEditorPartDescriptor()
+ * @generated
+ */
+ EAttribute getEditorPartDescriptor_PartAddingLogicUri();
+
+ /**
+ * Returns the meta object for class '
+ * {@link e4modelextension.VaaclipseApplication
+ * <em>Vaaclipse Application</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for class '<em>Vaaclipse Application</em>'.
+ * @see e4modelextension.VaaclipseApplication
+ * @generated
+ */
+ EClass getVaaclipseApplication();
+
+ /**
+ * Returns the meta object for the containment reference list '
+ * {@link e4modelextension.VaaclipseApplication#getEditorDescriptors
+ * <em>Editor Descriptors</em>}'. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @return the meta object for the containment reference list '
+ * <em>Editor Descriptors</em>'.
+ * @see e4modelextension.VaaclipseApplication#getEditorDescriptors()
+ * @see #getVaaclipseApplication()
+ * @generated
+ */
+ EReference getVaaclipseApplication_EditorDescriptors();
+
+ /**
+ * Returns the meta object for the reference list '
+ * {@link e4modelextension.VaaclipseApplication#getPreferencesCategories
+ * <em>Preferences Categories</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for the reference list '
+ * <em>Preferences Categories</em>'.
+ * @see e4modelextension.VaaclipseApplication#getPreferencesCategories()
+ * @see #getVaaclipseApplication()
+ * @generated
+ */
+ EReference getVaaclipseApplication_PreferencesCategories();
+
+ /**
+ * Returns the meta object for the reference list '
+ * {@link e4modelextension.VaaclipseApplication#getPreferencesPages
+ * <em>Preferences Pages</em>}'. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @return the meta object for the reference list '
+ * <em>Preferences Pages</em>'.
+ * @see e4modelextension.VaaclipseApplication#getPreferencesPages()
+ * @see #getVaaclipseApplication()
+ * @generated
+ */
+ EReference getVaaclipseApplication_PreferencesPages();
+
+ /**
+ * Returns the factory that creates the instances of the model. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ E4modelextensionFactory getE4modelextensionFactory();
+
+ /**
+ * <!-- begin-user-doc --> Defines literals for the meta objects that
+ * represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '
+ * {@link e4modelextension.impl.EditorPartDescriptorImpl
+ * <em>Editor Part Descriptor</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see e4modelextension.impl.EditorPartDescriptorImpl
+ * @see e4modelextension.impl.E4modelextensionPackageImpl#getEditorPartDescriptor()
+ * @generated
+ */
+ EClass EDITOR_PART_DESCRIPTOR = eINSTANCE.getEditorPartDescriptor();
+
+ /**
+ * The meta object literal for the '<em><b>Uri Filter</b></em>'
+ * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute EDITOR_PART_DESCRIPTOR__URI_FILTER = eINSTANCE
+ .getEditorPartDescriptor_UriFilter();
+
+ /**
+ * The meta object literal for the '
+ * <em><b>Part Adding Logic Uri</b></em>' attribute feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute EDITOR_PART_DESCRIPTOR__PART_ADDING_LOGIC_URI = eINSTANCE
+ .getEditorPartDescriptor_PartAddingLogicUri();
+
+ /**
+ * The meta object literal for the '
+ * {@link e4modelextension.impl.VaaclipseApplicationImpl
+ * <em>Vaaclipse Application</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see e4modelextension.impl.VaaclipseApplicationImpl
+ * @see e4modelextension.impl.E4modelextensionPackageImpl#getVaaclipseApplication()
+ * @generated
+ */
+ EClass VAACLIPSE_APPLICATION = eINSTANCE.getVaaclipseApplication();
+
+ /**
+ * The meta object literal for the '<em><b>Editor Descriptors</b></em>'
+ * containment reference list feature. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ EReference VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS = eINSTANCE
+ .getVaaclipseApplication_EditorDescriptors();
+
+ /**
+ * The meta object literal for the '
+ * <em><b>Preferences Categories</b></em>' reference list feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference VAACLIPSE_APPLICATION__PREFERENCES_CATEGORIES = eINSTANCE
+ .getVaaclipseApplication_PreferencesCategories();
+
+ /**
+ * The meta object literal for the '<em><b>Preferences Pages</b></em>'
+ * reference list feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference VAACLIPSE_APPLICATION__PREFERENCES_PAGES = eINSTANCE
+ .getVaaclipseApplication_PreferencesPages();
+
+ }
+
+} // E4modelextensionPackage
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/EditorPartDescriptor.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/EditorPartDescriptor.java
new file mode 100644
index 0000000..4843781
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/EditorPartDescriptor.java
@@ -0,0 +1,90 @@
+package e4modelextension;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Editor Part Descriptor</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link e4modelextension.EditorPartDescriptor#getUriFilter <em>Uri Filter
+ * </em>}</li>
+ * <li>{@link e4modelextension.EditorPartDescriptor#getPartAddingLogicUri <em>
+ * Part Adding Logic Uri</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see e4modelextension.E4modelextensionPackage#getEditorPartDescriptor()
+ * @model
+ * @generated
+ */
+public interface EditorPartDescriptor extends EObject, MPartDescriptor {
+ /**
+ * Returns the value of the '<em><b>Uri Filter</b></em>' attribute. <!--
+ * begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Uri Filter</em>' attribute isn't clear, there
+ * really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Uri Filter</em>' attribute.
+ * @see #setUriFilter(String)
+ * @see e4modelextension.E4modelextensionPackage#getEditorPartDescriptor_UriFilter()
+ * @model
+ * @generated
+ */
+ String getUriFilter();
+
+ /**
+ * Sets the value of the '
+ * {@link e4modelextension.EditorPartDescriptor#getUriFilter
+ * <em>Uri Filter</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Uri Filter</em>' attribute.
+ * @see #getUriFilter()
+ * @generated
+ */
+ void setUriFilter(String value);
+
+ /**
+ * Returns the value of the '<em><b>Part Adding Logic Uri</b></em>'
+ * attribute. The default value is
+ * <code>"bundleclass://org.eclipse.osbp.e4extension/org.eclipse.osbp.e4extension.shared.DefaultPartAddingLogic"</code>
+ * . <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Part Adding Logic Uri</em>' attribute isn't
+ * clear, there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Part Adding Logic Uri</em>' attribute.
+ * @see #setPartAddingLogicUri(String)
+ * @see e4modelextension.E4modelextensionPackage#getEditorPartDescriptor_PartAddingLogicUri()
+ * @model default=
+ * "bundleclass://org.eclipse.osbp.e4extension/org.eclipse.osbp.e4extension.shared.DefaultPartAddingLogic"
+ * @generated
+ */
+ String getPartAddingLogicUri();
+
+ /**
+ * Sets the value of the '
+ * {@link e4modelextension.EditorPartDescriptor#getPartAddingLogicUri
+ * <em>Part Adding Logic Uri</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Part Adding Logic Uri</em>'
+ * attribute.
+ * @see #getPartAddingLogicUri()
+ * @generated
+ */
+ void setPartAddingLogicUri(String value);
+
+} // EditorPartDescriptor
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/VaaclipseApplication.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/VaaclipseApplication.java
new file mode 100644
index 0000000..6f04f09
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/VaaclipseApplication.java
@@ -0,0 +1,88 @@
+package e4modelextension;
+
+import org.eclipse.e4.ui.model.application.MApplication;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Vaaclipse Application</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link e4modelextension.VaaclipseApplication#getEditorDescriptors <em>
+ * Editor Descriptors</em>}</li>
+ * <li>{@link e4modelextension.VaaclipseApplication#getPreferencesCategories
+ * <em>Preferences Categories</em>}</li>
+ * <li>{@link e4modelextension.VaaclipseApplication#getPreferencesPages <em>
+ * Preferences Pages</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see e4modelextension.E4modelextensionPackage#getVaaclipseApplication()
+ * @model
+ * @generated
+ */
+public interface VaaclipseApplication extends EObject, MApplication {
+ /**
+ * Returns the value of the '<em><b>Editor Descriptors</b></em>' containment
+ * reference list. The list contents are of type
+ * {@link e4modelextension.EditorPartDescriptor}. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Editor Descriptors</em>' containment reference
+ * list isn't clear, there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Editor Descriptors</em>' containment
+ * reference list.
+ * @see e4modelextension.E4modelextensionPackage#getVaaclipseApplication_EditorDescriptors()
+ * @model containment="true"
+ * @generated
+ */
+ EList<EditorPartDescriptor> getEditorDescriptors();
+
+ /**
+ * Returns the value of the '<em><b>Preferences Categories</b></em>'
+ * reference list. The list contents are of type
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Preferences Categories</em>' reference list
+ * isn't clear, there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Preferences Categories</em>' reference
+ * list.
+ * @see e4modelextension.E4modelextensionPackage#getVaaclipseApplication_PreferencesCategories()
+ * @model
+ * @generated
+ */
+ EList<PreferencesCategory> getPreferencesCategories();
+
+ /**
+ * Returns the value of the '<em><b>Preferences Pages</b></em>' reference
+ * list. The list contents are of type
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage}. <!--
+ * begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Preferences Pages</em>' reference list isn't
+ * clear, there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Preferences Pages</em>' reference list.
+ * @see e4modelextension.E4modelextensionPackage#getVaaclipseApplication_PreferencesPages()
+ * @model
+ * @generated
+ */
+ EList<PreferencesPage> getPreferencesPages();
+
+} // VaaclipseApplication
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/E4modelextensionFactoryImpl.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/E4modelextensionFactoryImpl.java
new file mode 100644
index 0000000..29595ea
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/E4modelextensionFactoryImpl.java
@@ -0,0 +1,108 @@
+package e4modelextension.impl;
+
+import e4modelextension.*;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Factory</b>. <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+public class E4modelextensionFactoryImpl extends EFactoryImpl implements
+ E4modelextensionFactory {
+ /**
+ * Creates the default factory implementation. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ public static E4modelextensionFactory init() {
+ try {
+ E4modelextensionFactory theE4modelextensionFactory = (E4modelextensionFactory) EPackage.Registry.INSTANCE
+ .getEFactory(E4modelextensionPackage.eNS_URI);
+ if (theE4modelextensionFactory != null) {
+ return theE4modelextensionFactory;
+ }
+ } catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new E4modelextensionFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ public E4modelextensionFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case E4modelextensionPackage.EDITOR_PART_DESCRIPTOR:
+ return createEditorPartDescriptor();
+ case E4modelextensionPackage.VAACLIPSE_APPLICATION:
+ return createVaaclipseApplication();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName()
+ + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EditorPartDescriptor createEditorPartDescriptor() {
+ EditorPartDescriptorImpl editorPartDescriptor = new EditorPartDescriptorImpl();
+ return editorPartDescriptor;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public VaaclipseApplication createVaaclipseApplication() {
+ VaaclipseApplicationImpl vaaclipseApplication = new VaaclipseApplicationImpl();
+ return vaaclipseApplication;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public E4modelextensionPackage getE4modelextensionPackage() {
+ return (E4modelextensionPackage) getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static E4modelextensionPackage getPackage() {
+ return E4modelextensionPackage.eINSTANCE;
+ }
+
+} // E4modelextensionFactoryImpl
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/E4modelextensionPackageImpl.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/E4modelextensionPackageImpl.java
new file mode 100644
index 0000000..9d968a9
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/E4modelextensionPackageImpl.java
@@ -0,0 +1,312 @@
+package e4modelextension.impl;
+
+import e4modelextension.E4modelextensionFactory;
+import e4modelextension.E4modelextensionPackage;
+import e4modelextension.EditorPartDescriptor;
+import e4modelextension.VaaclipseApplication;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.impl.BasicPackageImpl;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Package</b>. <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+public class E4modelextensionPackageImpl extends EPackageImpl implements
+ E4modelextensionPackage {
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass editorPartDescriptorEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass vaaclipseApplicationEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the
+ * package package URI value.
+ * <p>
+ * Note: the correct way to create the package is via the static factory
+ * method {@link #init init()}, which also performs initialization of the
+ * package, or returns the registered package, if one already exists. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see e4modelextension.E4modelextensionPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private E4modelextensionPackageImpl() {
+ super(eNS_URI, E4modelextensionFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model,
+ * and for any others upon which it depends.
+ *
+ * <p>
+ * This method is used to initialize
+ * {@link E4modelextensionPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access
+ * that field to obtain the package. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static E4modelextensionPackage init() {
+ if (isInited)
+ return (E4modelextensionPackage) EPackage.Registry.INSTANCE
+ .getEPackage(E4modelextensionPackage.eNS_URI);
+
+ // Obtain or create and register package
+ E4modelextensionPackageImpl theE4modelextensionPackage = (E4modelextensionPackageImpl) (EPackage.Registry.INSTANCE
+ .get(eNS_URI) instanceof E4modelextensionPackageImpl ? EPackage.Registry.INSTANCE
+ .get(eNS_URI) : new E4modelextensionPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ PreferencesPackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theE4modelextensionPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theE4modelextensionPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theE4modelextensionPackage.freeze();
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(E4modelextensionPackage.eNS_URI,
+ theE4modelextensionPackage);
+ return theE4modelextensionPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getEditorPartDescriptor() {
+ return editorPartDescriptorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getEditorPartDescriptor_UriFilter() {
+ return (EAttribute) editorPartDescriptorEClass.getEStructuralFeatures()
+ .get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getEditorPartDescriptor_PartAddingLogicUri() {
+ return (EAttribute) editorPartDescriptorEClass.getEStructuralFeatures()
+ .get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getVaaclipseApplication() {
+ return vaaclipseApplicationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getVaaclipseApplication_EditorDescriptors() {
+ return (EReference) vaaclipseApplicationEClass.getEStructuralFeatures()
+ .get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getVaaclipseApplication_PreferencesCategories() {
+ return (EReference) vaaclipseApplicationEClass.getEStructuralFeatures()
+ .get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getVaaclipseApplication_PreferencesPages() {
+ return (EReference) vaaclipseApplicationEClass.getEStructuralFeatures()
+ .get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public E4modelextensionFactory getE4modelextensionFactory() {
+ return (E4modelextensionFactory) getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is guarded to
+ * have no affect on any invocation but its first. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated)
+ return;
+ isCreated = true;
+
+ // Create classes and their features
+ editorPartDescriptorEClass = createEClass(EDITOR_PART_DESCRIPTOR);
+ createEAttribute(editorPartDescriptorEClass,
+ EDITOR_PART_DESCRIPTOR__URI_FILTER);
+ createEAttribute(editorPartDescriptorEClass,
+ EDITOR_PART_DESCRIPTOR__PART_ADDING_LOGIC_URI);
+
+ vaaclipseApplicationEClass = createEClass(VAACLIPSE_APPLICATION);
+ createEReference(vaaclipseApplicationEClass,
+ VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS);
+ createEReference(vaaclipseApplicationEClass,
+ VAACLIPSE_APPLICATION__PREFERENCES_CATEGORIES);
+ createEReference(vaaclipseApplicationEClass,
+ VAACLIPSE_APPLICATION__PREFERENCES_PAGES);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized)
+ return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ BasicPackageImpl theBasicPackage = (BasicPackageImpl) EPackage.Registry.INSTANCE
+ .getEPackage(BasicPackageImpl.eNS_URI);
+ ApplicationPackageImpl theApplicationPackage = (ApplicationPackageImpl) EPackage.Registry.INSTANCE
+ .getEPackage(ApplicationPackageImpl.eNS_URI);
+ PreferencesPackage thePreferencesPackage = (PreferencesPackage) EPackage.Registry.INSTANCE
+ .getEPackage(PreferencesPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ editorPartDescriptorEClass.getESuperTypes().add(
+ theBasicPackage.getPartDescriptor());
+ vaaclipseApplicationEClass.getESuperTypes().add(
+ theApplicationPackage.getApplication());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(editorPartDescriptorEClass, EditorPartDescriptor.class,
+ "EditorPartDescriptor", !IS_ABSTRACT, !IS_INTERFACE,
+ IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getEditorPartDescriptor_UriFilter(),
+ ecorePackage.getEString(), "uriFilter", null, 0, 1,
+ EditorPartDescriptor.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+ initEAttribute(
+ getEditorPartDescriptor_PartAddingLogicUri(),
+ ecorePackage.getEString(),
+ "partAddingLogicUri",
+ "bundleclass://org.eclipse.osbp.e4extension/org.eclipse.osbp.e4extension.shared.DefaultPartAddingLogic",
+ 0, 1, EditorPartDescriptor.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+
+ initEClass(vaaclipseApplicationEClass, VaaclipseApplication.class,
+ "VaaclipseApplication", !IS_ABSTRACT, !IS_INTERFACE,
+ IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getVaaclipseApplication_EditorDescriptors(),
+ this.getEditorPartDescriptor(), null, "editorDescriptors",
+ null, 0, -1, VaaclipseApplication.class, !IS_TRANSIENT,
+ !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getVaaclipseApplication_PreferencesCategories(),
+ thePreferencesPackage.getPreferencesCategory(), null,
+ "preferencesCategories", null, 0, -1,
+ VaaclipseApplication.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getVaaclipseApplication_PreferencesPages(),
+ thePreferencesPackage.getPreferencesPage(), null,
+ "preferencesPages", null, 0, -1, VaaclipseApplication.class,
+ !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+ IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} // E4modelextensionPackageImpl
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/EditorPartDescriptorImpl.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/EditorPartDescriptorImpl.java
new file mode 100644
index 0000000..68a1c18
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/EditorPartDescriptorImpl.java
@@ -0,0 +1,231 @@
+package e4modelextension.impl;
+
+import e4modelextension.E4modelextensionPackage;
+import e4modelextension.EditorPartDescriptor;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.impl.PartDescriptorImpl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Editor Part Descriptor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link e4modelextension.impl.EditorPartDescriptorImpl#getUriFilter <em>
+ * Uri Filter</em>}</li>
+ * <li>
+ * {@link e4modelextension.impl.EditorPartDescriptorImpl#getPartAddingLogicUri
+ * <em>Part Adding Logic Uri</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class EditorPartDescriptorImpl extends PartDescriptorImpl implements
+ EditorPartDescriptor {
+ /**
+ * The default value of the '{@link #getUriFilter() <em>Uri Filter</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getUriFilter()
+ * @generated
+ * @ordered
+ */
+ protected static final String URI_FILTER_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getUriFilter() <em>Uri Filter</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getUriFilter()
+ * @generated
+ * @ordered
+ */
+ protected String uriFilter = URI_FILTER_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getPartAddingLogicUri()
+ * <em>Part Adding Logic Uri</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getPartAddingLogicUri()
+ * @generated
+ * @ordered
+ */
+ protected static final String PART_ADDING_LOGIC_URI_EDEFAULT = "bundleclass://org.eclipse.osbp.e4extension/org.eclipse.osbp.e4extension.shared.DefaultPartAddingLogic";
+
+ /**
+ * The cached value of the '{@link #getPartAddingLogicUri()
+ * <em>Part Adding Logic Uri</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getPartAddingLogicUri()
+ * @generated
+ * @ordered
+ */
+ protected String partAddingLogicUri = PART_ADDING_LOGIC_URI_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected EditorPartDescriptorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return E4modelextensionPackage.Literals.EDITOR_PART_DESCRIPTOR;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getUriFilter() {
+ return uriFilter;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setUriFilter(String newUriFilter) {
+ String oldUriFilter = uriFilter;
+ uriFilter = newUriFilter;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ E4modelextensionPackage.EDITOR_PART_DESCRIPTOR__URI_FILTER,
+ oldUriFilter, uriFilter));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getPartAddingLogicUri() {
+ return partAddingLogicUri;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setPartAddingLogicUri(String newPartAddingLogicUri) {
+ String oldPartAddingLogicUri = partAddingLogicUri;
+ partAddingLogicUri = newPartAddingLogicUri;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(
+ this,
+ Notification.SET,
+ E4modelextensionPackage.EDITOR_PART_DESCRIPTOR__PART_ADDING_LOGIC_URI,
+ oldPartAddingLogicUri, partAddingLogicUri));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case E4modelextensionPackage.EDITOR_PART_DESCRIPTOR__URI_FILTER:
+ return getUriFilter();
+ case E4modelextensionPackage.EDITOR_PART_DESCRIPTOR__PART_ADDING_LOGIC_URI:
+ return getPartAddingLogicUri();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case E4modelextensionPackage.EDITOR_PART_DESCRIPTOR__URI_FILTER:
+ setUriFilter((String) newValue);
+ return;
+ case E4modelextensionPackage.EDITOR_PART_DESCRIPTOR__PART_ADDING_LOGIC_URI:
+ setPartAddingLogicUri((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case E4modelextensionPackage.EDITOR_PART_DESCRIPTOR__URI_FILTER:
+ setUriFilter(URI_FILTER_EDEFAULT);
+ return;
+ case E4modelextensionPackage.EDITOR_PART_DESCRIPTOR__PART_ADDING_LOGIC_URI:
+ setPartAddingLogicUri(PART_ADDING_LOGIC_URI_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case E4modelextensionPackage.EDITOR_PART_DESCRIPTOR__URI_FILTER:
+ return URI_FILTER_EDEFAULT == null ? uriFilter != null
+ : !URI_FILTER_EDEFAULT.equals(uriFilter);
+ case E4modelextensionPackage.EDITOR_PART_DESCRIPTOR__PART_ADDING_LOGIC_URI:
+ return PART_ADDING_LOGIC_URI_EDEFAULT == null ? partAddingLogicUri != null
+ : !PART_ADDING_LOGIC_URI_EDEFAULT
+ .equals(partAddingLogicUri);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (uriFilter: ");
+ result.append(uriFilter);
+ result.append(", partAddingLogicUri: ");
+ result.append(partAddingLogicUri);
+ result.append(')');
+ return result.toString();
+ }
+
+} // EditorPartDescriptorImpl
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/VaaclipseApplicationImpl.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/VaaclipseApplicationImpl.java
new file mode 100644
index 0000000..c5d6afa
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/impl/VaaclipseApplicationImpl.java
@@ -0,0 +1,246 @@
+package e4modelextension.impl;
+
+import e4modelextension.E4modelextensionPackage;
+import e4modelextension.EditorPartDescriptor;
+import e4modelextension.VaaclipseApplication;
+
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationImpl;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Vaaclipse Application</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link e4modelextension.impl.VaaclipseApplicationImpl#getEditorDescriptors
+ * <em>Editor Descriptors</em>}</li>
+ * <li>
+ * {@link e4modelextension.impl.VaaclipseApplicationImpl#getPreferencesCategories
+ * <em>Preferences Categories</em>}</li>
+ * <li>
+ * {@link e4modelextension.impl.VaaclipseApplicationImpl#getPreferencesPages
+ * <em>Preferences Pages</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class VaaclipseApplicationImpl extends ApplicationImpl implements
+ VaaclipseApplication {
+ /**
+ * The cached value of the '{@link #getEditorDescriptors()
+ * <em>Editor Descriptors</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEditorDescriptors()
+ * @generated
+ * @ordered
+ */
+ protected EList<EditorPartDescriptor> editorDescriptors;
+
+ /**
+ * The cached value of the '{@link #getPreferencesCategories()
+ * <em>Preferences Categories</em>}' reference list. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #getPreferencesCategories()
+ * @generated
+ * @ordered
+ */
+ protected EList<PreferencesCategory> preferencesCategories;
+
+ /**
+ * The cached value of the '{@link #getPreferencesPages()
+ * <em>Preferences Pages</em>}' reference list. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getPreferencesPages()
+ * @generated
+ * @ordered
+ */
+ protected EList<PreferencesPage> preferencesPages;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected VaaclipseApplicationImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return E4modelextensionPackage.Literals.VAACLIPSE_APPLICATION;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<EditorPartDescriptor> getEditorDescriptors() {
+ if (editorDescriptors == null) {
+ editorDescriptors = new EObjectContainmentEList<EditorPartDescriptor>(
+ EditorPartDescriptor.class,
+ this,
+ E4modelextensionPackage.VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS);
+ }
+ return editorDescriptors;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<PreferencesCategory> getPreferencesCategories() {
+ if (preferencesCategories == null) {
+ preferencesCategories = new EObjectResolvingEList<PreferencesCategory>(
+ PreferencesCategory.class,
+ this,
+ E4modelextensionPackage.VAACLIPSE_APPLICATION__PREFERENCES_CATEGORIES);
+ }
+ return preferencesCategories;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<PreferencesPage> getPreferencesPages() {
+ if (preferencesPages == null) {
+ preferencesPages = new EObjectResolvingEList<PreferencesPage>(
+ PreferencesPage.class,
+ this,
+ E4modelextensionPackage.VAACLIPSE_APPLICATION__PREFERENCES_PAGES);
+ }
+ return preferencesPages;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd,
+ int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case E4modelextensionPackage.VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS:
+ return ((InternalEList<?>) getEditorDescriptors()).basicRemove(
+ otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case E4modelextensionPackage.VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS:
+ return getEditorDescriptors();
+ case E4modelextensionPackage.VAACLIPSE_APPLICATION__PREFERENCES_CATEGORIES:
+ return getPreferencesCategories();
+ case E4modelextensionPackage.VAACLIPSE_APPLICATION__PREFERENCES_PAGES:
+ return getPreferencesPages();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case E4modelextensionPackage.VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS:
+ getEditorDescriptors().clear();
+ getEditorDescriptors().addAll(
+ (Collection<? extends EditorPartDescriptor>) newValue);
+ return;
+ case E4modelextensionPackage.VAACLIPSE_APPLICATION__PREFERENCES_CATEGORIES:
+ getPreferencesCategories().clear();
+ getPreferencesCategories().addAll(
+ (Collection<? extends PreferencesCategory>) newValue);
+ return;
+ case E4modelextensionPackage.VAACLIPSE_APPLICATION__PREFERENCES_PAGES:
+ getPreferencesPages().clear();
+ getPreferencesPages().addAll(
+ (Collection<? extends PreferencesPage>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case E4modelextensionPackage.VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS:
+ getEditorDescriptors().clear();
+ return;
+ case E4modelextensionPackage.VAACLIPSE_APPLICATION__PREFERENCES_CATEGORIES:
+ getPreferencesCategories().clear();
+ return;
+ case E4modelextensionPackage.VAACLIPSE_APPLICATION__PREFERENCES_PAGES:
+ getPreferencesPages().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case E4modelextensionPackage.VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS:
+ return editorDescriptors != null && !editorDescriptors.isEmpty();
+ case E4modelextensionPackage.VAACLIPSE_APPLICATION__PREFERENCES_CATEGORIES:
+ return preferencesCategories != null
+ && !preferencesCategories.isEmpty();
+ case E4modelextensionPackage.VAACLIPSE_APPLICATION__PREFERENCES_PAGES:
+ return preferencesPages != null && !preferencesPages.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // VaaclipseApplicationImpl
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/util/E4modelextensionAdapterFactory.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/util/E4modelextensionAdapterFactory.java
new file mode 100644
index 0000000..5897239
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/util/E4modelextensionAdapterFactory.java
@@ -0,0 +1,497 @@
+package e4modelextension.util;
+
+import e4modelextension.*;
+
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.MApplicationElement;
+
+import org.eclipse.e4.ui.model.application.commands.MBindingTableContainer;
+import org.eclipse.e4.ui.model.application.commands.MBindings;
+import org.eclipse.e4.ui.model.application.commands.MHandlerContainer;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptorContainer;
+
+import org.eclipse.e4.ui.model.application.ui.MContext;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MLocalizable;
+import org.eclipse.e4.ui.model.application.ui.MSnippetContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.MUILabel;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuContributions;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarContributions;
+import org.eclipse.e4.ui.model.application.ui.menu.MTrimContributions;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> The <b>Adapter Factory</b> for the model. It provides
+ * an adapter <code>createXXX</code> method for each class of the model. <!--
+ * end-user-doc -->
+ *
+ * @see e4modelextension.E4modelextensionPackage
+ * @generated
+ */
+public class E4modelextensionAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected static E4modelextensionPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ public E4modelextensionAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = E4modelextensionPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc --> This implementation returns <code>true</code> if
+ * the object is either the model's package or is an instance object of the
+ * model. <!-- end-user-doc -->
+ *
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject) object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected E4modelextensionSwitch<Adapter> modelSwitch = new E4modelextensionSwitch<Adapter>() {
+ @Override
+ public Adapter caseEditorPartDescriptor(EditorPartDescriptor object) {
+ return createEditorPartDescriptorAdapter();
+ }
+
+ @Override
+ public Adapter caseVaaclipseApplication(VaaclipseApplication object) {
+ return createVaaclipseApplicationAdapter();
+ }
+
+ @Override
+ public Adapter caseApplicationElement(MApplicationElement object) {
+ return createApplicationElementAdapter();
+ }
+
+ @Override
+ public Adapter caseLocalizable(MLocalizable object) {
+ return createLocalizableAdapter();
+ }
+
+ @Override
+ public Adapter caseUILabel(MUILabel object) {
+ return createUILabelAdapter();
+ }
+
+ @Override
+ public Adapter caseHandlerContainer(MHandlerContainer object) {
+ return createHandlerContainerAdapter();
+ }
+
+ @Override
+ public Adapter caseBindings(MBindings object) {
+ return createBindingsAdapter();
+ }
+
+ @Override
+ public Adapter casePartDescriptor(MPartDescriptor object) {
+ return createPartDescriptorAdapter();
+ }
+
+ @Override
+ public Adapter caseUIElement(MUIElement object) {
+ return createUIElementAdapter();
+ }
+
+ @Override
+ public <T extends MUIElement> Adapter caseElementContainer(
+ MElementContainer<T> object) {
+ return createElementContainerAdapter();
+ }
+
+ @Override
+ public Adapter caseContext(MContext object) {
+ return createContextAdapter();
+ }
+
+ @Override
+ public Adapter caseBindingTableContainer(MBindingTableContainer object) {
+ return createBindingTableContainerAdapter();
+ }
+
+ @Override
+ public Adapter casePartDescriptorContainer(
+ MPartDescriptorContainer object) {
+ return createPartDescriptorContainerAdapter();
+ }
+
+ @Override
+ public Adapter caseMenuContributions(MMenuContributions object) {
+ return createMenuContributionsAdapter();
+ }
+
+ @Override
+ public Adapter caseToolBarContributions(MToolBarContributions object) {
+ return createToolBarContributionsAdapter();
+ }
+
+ @Override
+ public Adapter caseTrimContributions(MTrimContributions object) {
+ return createTrimContributionsAdapter();
+ }
+
+ @Override
+ public Adapter caseSnippetContainer(MSnippetContainer object) {
+ return createSnippetContainerAdapter();
+ }
+
+ @Override
+ public Adapter caseApplication(MApplication object) {
+ return createApplicationAdapter();
+ }
+
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param target
+ * the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject) target);
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link e4modelextension.EditorPartDescriptor
+ * <em>Editor Part Descriptor</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see e4modelextension.EditorPartDescriptor
+ * @generated
+ */
+ public Adapter createEditorPartDescriptorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link e4modelextension.VaaclipseApplication
+ * <em>Vaaclipse Application</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see e4modelextension.VaaclipseApplication
+ * @generated
+ */
+ public Adapter createVaaclipseApplicationAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.e4.ui.model.application.MApplicationElement
+ * <em>Element</em>}'. <!-- begin-user-doc --> This default implementation
+ * returns null so that we can easily ignore cases; it's useful to ignore a
+ * case when inheritance will catch all the cases anyway. <!-- end-user-doc
+ * -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.MApplicationElement
+ * @generated
+ */
+ public Adapter createApplicationElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.e4.ui.model.application.ui.MLocalizable
+ * <em>Localizable</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.ui.MLocalizable
+ * @generated
+ */
+ public Adapter createLocalizableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.e4.ui.model.application.ui.MUILabel <em>UI Label</em>}
+ * '. <!-- begin-user-doc --> This default implementation returns null so
+ * that we can easily ignore cases; it's useful to ignore a case when
+ * inheritance will catch all the cases anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.ui.MUILabel
+ * @generated
+ */
+ public Adapter createUILabelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.e4.ui.model.application.commands.MHandlerContainer
+ * <em>Handler Container</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.commands.MHandlerContainer
+ * @generated
+ */
+ public Adapter createHandlerContainerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.e4.ui.model.application.commands.MBindings
+ * <em>Bindings</em>}'. <!-- begin-user-doc --> This default implementation
+ * returns null so that we can easily ignore cases; it's useful to ignore a
+ * case when inheritance will catch all the cases anyway. <!-- end-user-doc
+ * -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.commands.MBindings
+ * @generated
+ */
+ public Adapter createBindingsAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor
+ * <em>Part Descriptor</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor
+ * @generated
+ */
+ public Adapter createPartDescriptorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.e4.ui.model.application.ui.MUIElement
+ * <em>UI Element</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.ui.MUIElement
+ * @generated
+ */
+ public Adapter createUIElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.e4.ui.model.application.ui.MElementContainer
+ * <em>Element Container</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.ui.MElementContainer
+ * @generated
+ */
+ public Adapter createElementContainerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.e4.ui.model.application.ui.MContext <em>Context</em>}
+ * '. <!-- begin-user-doc --> This default implementation returns null so
+ * that we can easily ignore cases; it's useful to ignore a case when
+ * inheritance will catch all the cases anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.ui.MContext
+ * @generated
+ */
+ public Adapter createContextAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.e4.ui.model.application.commands.MBindingTableContainer
+ * <em>Binding Table Container</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.commands.MBindingTableContainer
+ * @generated
+ */
+ public Adapter createBindingTableContainerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptorContainer
+ * <em>Part Descriptor Container</em>}'. <!-- begin-user-doc --> This
+ * default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases
+ * anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptorContainer
+ * @generated
+ */
+ public Adapter createPartDescriptorContainerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.e4.ui.model.application.ui.menu.MMenuContributions
+ * <em>Contributions</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.ui.menu.MMenuContributions
+ * @generated
+ */
+ public Adapter createMenuContributionsAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.e4.ui.model.application.ui.menu.MToolBarContributions
+ * <em>Tool Bar Contributions</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.ui.menu.MToolBarContributions
+ * @generated
+ */
+ public Adapter createToolBarContributionsAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.e4.ui.model.application.ui.menu.MTrimContributions
+ * <em>Trim Contributions</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.ui.menu.MTrimContributions
+ * @generated
+ */
+ public Adapter createTrimContributionsAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.e4.ui.model.application.ui.MSnippetContainer
+ * <em>Snippet Container</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.ui.MSnippetContainer
+ * @generated
+ */
+ public Adapter createSnippetContainerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.e4.ui.model.application.MApplication
+ * <em>Application</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.MApplication
+ * @generated
+ */
+ public Adapter createApplicationAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case. <!-- begin-user-doc --> This
+ * default implementation returns null. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} // E4modelextensionAdapterFactory
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/util/E4modelextensionSwitch.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/util/E4modelextensionSwitch.java
new file mode 100644
index 0000000..cf2e28b
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/util/E4modelextensionSwitch.java
@@ -0,0 +1,471 @@
+package e4modelextension.util;
+
+import e4modelextension.*;
+
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.MApplicationElement;
+
+import org.eclipse.e4.ui.model.application.commands.MBindingTableContainer;
+import org.eclipse.e4.ui.model.application.commands.MBindings;
+import org.eclipse.e4.ui.model.application.commands.MHandlerContainer;
+
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptorContainer;
+
+import org.eclipse.e4.ui.model.application.ui.MContext;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MLocalizable;
+import org.eclipse.e4.ui.model.application.ui.MSnippetContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.MUILabel;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuContributions;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarContributions;
+import org.eclipse.e4.ui.model.application.ui.menu.MTrimContributions;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+/**
+ * <!-- begin-user-doc --> The <b>Switch</b> for the model's inheritance
+ * hierarchy. It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object and proceeding up the
+ * inheritance hierarchy until a non-null result is returned, which is the
+ * result of the switch. <!-- end-user-doc -->
+ *
+ * @see e4modelextension.E4modelextensionPackage
+ * @generated
+ */
+public class E4modelextensionSwitch<T1> extends Switch<T1> {
+ /**
+ * The cached model package <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected static E4modelextensionPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ public E4modelextensionSwitch() {
+ if (modelPackage == null) {
+ modelPackage = E4modelextensionPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @parameter ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns
+ * a non null result; it yields that result. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the first non-null result returned by a <code>caseXXX</code>
+ * call.
+ * @generated
+ */
+ @Override
+ protected T1 doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case E4modelextensionPackage.EDITOR_PART_DESCRIPTOR: {
+ EditorPartDescriptor editorPartDescriptor = (EditorPartDescriptor) theEObject;
+ T1 result = caseEditorPartDescriptor(editorPartDescriptor);
+ if (result == null)
+ result = casePartDescriptor(editorPartDescriptor);
+ if (result == null)
+ result = caseApplicationElement(editorPartDescriptor);
+ if (result == null)
+ result = caseUILabel(editorPartDescriptor);
+ if (result == null)
+ result = caseHandlerContainer(editorPartDescriptor);
+ if (result == null)
+ result = caseBindings(editorPartDescriptor);
+ if (result == null)
+ result = caseLocalizable(editorPartDescriptor);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case E4modelextensionPackage.VAACLIPSE_APPLICATION: {
+ VaaclipseApplication vaaclipseApplication = (VaaclipseApplication) theEObject;
+ T1 result = caseVaaclipseApplication(vaaclipseApplication);
+ if (result == null)
+ result = caseApplication(vaaclipseApplication);
+ if (result == null)
+ result = caseElementContainer(vaaclipseApplication);
+ if (result == null)
+ result = caseContext(vaaclipseApplication);
+ if (result == null)
+ result = caseHandlerContainer(vaaclipseApplication);
+ if (result == null)
+ result = caseBindingTableContainer(vaaclipseApplication);
+ if (result == null)
+ result = casePartDescriptorContainer(vaaclipseApplication);
+ if (result == null)
+ result = caseBindings(vaaclipseApplication);
+ if (result == null)
+ result = caseMenuContributions(vaaclipseApplication);
+ if (result == null)
+ result = caseToolBarContributions(vaaclipseApplication);
+ if (result == null)
+ result = caseTrimContributions(vaaclipseApplication);
+ if (result == null)
+ result = caseSnippetContainer(vaaclipseApplication);
+ if (result == null)
+ result = caseUIElement(vaaclipseApplication);
+ if (result == null)
+ result = caseApplicationElement(vaaclipseApplication);
+ if (result == null)
+ result = caseLocalizable(vaaclipseApplication);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ default:
+ return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Editor Part Descriptor</em>'. <!-- begin-user-doc --> This
+ * implementation returns null; returning a non-null result will terminate
+ * the switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Editor Part Descriptor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseEditorPartDescriptor(EditorPartDescriptor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Vaaclipse Application</em>'. <!-- begin-user-doc --> This
+ * implementation returns null; returning a non-null result will terminate
+ * the switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Vaaclipse Application</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseVaaclipseApplication(VaaclipseApplication object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Element</em>'. <!-- begin-user-doc --> This implementation returns
+ * null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseApplicationElement(MApplicationElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Localizable</em>'. <!-- begin-user-doc --> This implementation
+ * returns null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Localizable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseLocalizable(MLocalizable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>UI Label</em>'. <!-- begin-user-doc --> This implementation returns
+ * null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>UI Label</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseUILabel(MUILabel object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Handler Container</em>'. <!-- begin-user-doc --> This implementation
+ * returns null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Handler Container</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseHandlerContainer(MHandlerContainer object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Bindings</em>'. <!-- begin-user-doc --> This implementation returns
+ * null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Bindings</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseBindings(MBindings object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Part Descriptor</em>'. <!-- begin-user-doc --> This implementation
+ * returns null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Part Descriptor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 casePartDescriptor(MPartDescriptor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>UI Element</em>'. <!-- begin-user-doc --> This implementation returns
+ * null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>UI Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseUIElement(MUIElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Element Container</em>'. <!-- begin-user-doc --> This implementation
+ * returns null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Element Container</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public <T extends MUIElement> T1 caseElementContainer(
+ MElementContainer<T> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Context</em>'. <!-- begin-user-doc --> This implementation returns
+ * null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Context</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseContext(MContext object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Binding Table Container</em>'. <!-- begin-user-doc --> This
+ * implementation returns null; returning a non-null result will terminate
+ * the switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Binding Table Container</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseBindingTableContainer(MBindingTableContainer object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Part Descriptor Container</em>'. <!-- begin-user-doc --> This
+ * implementation returns null; returning a non-null result will terminate
+ * the switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Part Descriptor Container</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 casePartDescriptorContainer(MPartDescriptorContainer object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Contributions</em>'. <!-- begin-user-doc --> This implementation
+ * returns null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Contributions</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseMenuContributions(MMenuContributions object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Tool Bar Contributions</em>'. <!-- begin-user-doc --> This
+ * implementation returns null; returning a non-null result will terminate
+ * the switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Tool Bar Contributions</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseToolBarContributions(MToolBarContributions object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Trim Contributions</em>'. <!-- begin-user-doc --> This implementation
+ * returns null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Trim Contributions</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseTrimContributions(MTrimContributions object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Snippet Container</em>'. <!-- begin-user-doc --> This implementation
+ * returns null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Snippet Container</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSnippetContainer(MSnippetContainer object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Application</em>'. <!-- begin-user-doc --> This implementation
+ * returns null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Application</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseApplication(MApplication object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>EObject</em>'. <!-- begin-user-doc --> This implementation returns
+ * null; returning a non-null result will terminate the switch, but this is
+ * the last case anyway. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T1 defaultCase(EObject object) {
+ return null;
+ }
+
+} // E4modelextensionSwitch
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/validation/EditorPartDescriptorValidator.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/validation/EditorPartDescriptorValidator.java
new file mode 100644
index 0000000..ed97b1c
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/validation/EditorPartDescriptorValidator.java
@@ -0,0 +1,17 @@
+package e4modelextension.validation;
+
+/**
+ * A sample validator interface for
+ * {@link e4modelextension.EditorPartDescriptor}. This doesn't really do
+ * anything, and it's not a real EMF artifact. It was generated by the
+ * org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's
+ * code generator can be extended. This can be disabled with -vmargs
+ * -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface EditorPartDescriptorValidator {
+ boolean validate();
+
+ boolean validateUriFilter(String value);
+
+ boolean validatePartAddingLogicUri(String value);
+}
diff --git a/org.eclipse.osbp.e4modelextension/src/e4modelextension/validation/VaaclipseApplicationValidator.java b/org.eclipse.osbp.e4modelextension/src/e4modelextension/validation/VaaclipseApplicationValidator.java
new file mode 100644
index 0000000..3411c4d
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/src/e4modelextension/validation/VaaclipseApplicationValidator.java
@@ -0,0 +1,26 @@
+package e4modelextension.validation;
+
+import e4modelextension.EditorPartDescriptor;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+
+/**
+ * A sample validator interface for
+ * {@link e4modelextension.VaaclipseApplication}. This doesn't really do
+ * anything, and it's not a real EMF artifact. It was generated by the
+ * org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's
+ * code generator can be extended. This can be disabled with -vmargs
+ * -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface VaaclipseApplicationValidator {
+ boolean validate();
+
+ boolean validateEditorDescriptors(EList<EditorPartDescriptor> value);
+
+ boolean validatePreferencesCategories(EList<PreferencesCategory> value);
+
+ boolean validatePreferencesPages(EList<PreferencesPage> value);
+}
diff --git a/org.eclipse.osbp.e4modelextension/text/description.txt b/org.eclipse.osbp.e4modelextension/text/description.txt
new file mode 100644
index 0000000..44422a5
--- /dev/null
+++ b/org.eclipse.osbp.e4modelextension/text/description.txt
@@ -0,0 +1,17 @@
+Model E4modelextension
+
+This model description is not a real EMF artifact. It was generated by the
+org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's
+code generator can be extended.
+This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+
+Package e4modelextension <http://www.semanticsoft.org/ExtensionUI/e4modelextension>
+
+ Class EditorPartDescriptor -> PartDescriptor
+ Attribute uriFilter : EString
+ Attribute partAddingLogicUri : EString
+
+ Class VaaclipseApplication -> Application
+ Reference editorDescriptors : EditorPartDescriptor<<0..*>>
+ Reference preferencesCategories : PreferencesCategory<<0..*>>
+ Reference preferencesPages : PreferencesPage<<0..*>>
diff --git a/org.eclipse.osbp.vaaclipse.additions/.project b/org.eclipse.osbp.vaaclipse.additions/.project
new file mode 100644
index 0000000..68bdc2f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse.additions</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.vaadin.integration.eclipse.addonStylesBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.additions/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.additions/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..442297d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.additions
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.additions
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.osbp.vaaclipse.additions.view;version="0.9.0"
+Import-Package: javax.annotation;version="1.1.0",
+ javax.inject;version="1.0.0"
+Require-Bundle: org.eclipse.e4.core.di;bundle-version="1.1.0",
+ org.eclipse.e4.ui.model.workbench;bundle-version="0.10.1",
+ org.eclipse.e4.core.contexts;bundle-version="1.1.0",
+ org.eclipse.osbp.vaadin;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.e4.ui.workbench;bundle-version="0.10.3",
+ org.eclipse.osbp.vaaclipse.publicapi;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.e4extension;bundle-version="[0.9.0,0.10.0)",
+ com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.shared;bundle-version="[7.5.7,7.7.0)"
diff --git a/org.eclipse.osbp.vaaclipse.additions/about.html b/org.eclipse.osbp.vaaclipse.additions/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.additions/about.ini b/org.eclipse.osbp.vaaclipse.additions/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.additions/about.mappings b/org.eclipse.osbp.vaaclipse.additions/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.additions/about.properties b/org.eclipse.osbp.vaaclipse.additions/about.properties
new file mode 100644
index 0000000..5651842
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.additions
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.additions/build.properties b/org.eclipse.osbp.vaaclipse.additions/build.properties
new file mode 100644
index 0000000..a138bbd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ epl-v10.html,\
+ license.html
+src.includes = about.properties, about.mappings, about.ini, about.html, epl-v10.html,\
+ license.html
diff --git a/org.eclipse.osbp.vaaclipse.additions/epl-v10.html b/org.eclipse.osbp.vaaclipse.additions/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.additions/license.html b/org.eclipse.osbp.vaaclipse.additions/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.vaaclipse.additions/pom.xml b/org.eclipse.osbp.vaaclipse.additions/pom.xml
new file mode 100644
index 0000000..f5200be
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.osbp.vaaclipse.additions</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.additions/src/org/eclipse/osbp/vaaclipse/additions/view/ShowViewDialogContent.java b/org.eclipse.osbp.vaaclipse.additions/src/org/eclipse/osbp/vaaclipse/additions/view/ShowViewDialogContent.java
new file mode 100644
index 0000000..83d1f0e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/src/org/eclipse/osbp/vaaclipse/additions/view/ShowViewDialogContent.java
@@ -0,0 +1,238 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.additions.view;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
+import org.eclipse.osbp.e4extension.service.EPartServiceExt;
+import org.eclipse.osbp.vaaclipse.publicapi.resources.BundleResource;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog.ComponentProvider;
+
+import com.vaadin.data.Container.Filter;
+import com.vaadin.data.Container.Filterable;
+import com.vaadin.data.Item;
+import com.vaadin.data.util.HierarchicalContainer;
+import com.vaadin.data.util.filter.SimpleStringFilter;
+import com.vaadin.event.FieldEvents.TextChangeListener;
+import com.vaadin.event.ItemClickEvent;
+import com.vaadin.event.FieldEvents.TextChangeEvent;
+import com.vaadin.server.Sizeable.Unit;
+import com.vaadin.server.ThemeResource;
+import com.vaadin.shared.MouseEventDetails.MouseButton;
+import com.vaadin.shared.ui.MarginInfo;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.Tree;
+import com.vaadin.ui.Tree.TreeDragMode;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * @author rushan
+ *
+ */
+class ShowViewDialogContent implements ComponentProvider {
+ private static final String NAME_PROP = "name";
+ private static final String ICON_PROP = "icon";
+ private static final String OBJECT_PROP = "object";
+
+ final private static String CATEGORY_TAG = "categoryTag:";
+ final private static int CATEGORY_TAG_LENGTH = CATEGORY_TAG.length();
+
+ private Tree tree;
+ private Panel panel;
+ private HierarchicalContainer container;
+ private OptionDialog optionDialog;
+
+ @Inject
+ private EPartService partService;
+
+ @Inject
+ private EPartServiceExt partServiceExt;
+
+ @Inject
+ private MApplication application;
+
+ @Inject
+ IEclipseContext context;
+ private VerticalLayout content;
+ private TextField searchField;
+
+ @Override
+ public Component getComponent(OptionDialog optionDialog) {
+ this.optionDialog = optionDialog;
+ return this.content;
+ }
+
+ @PostConstruct
+ public void init() {
+ content = new VerticalLayout();
+ content.setSpacing(true);
+ content.setMargin(new MarginInfo(true, true, false, true));
+ searchField = new TextField();
+ searchField.focus();
+ searchField.setWidth(100, Unit.PERCENTAGE);
+ searchField.addTextChangeListener(new TextChangeListener() {
+ SimpleStringFilter filter = null;
+
+ @Override
+ public void textChange(TextChangeEvent event) {
+ Filterable f = (Filterable) tree.getContainerDataSource();
+
+ // Remove old filter
+ if (filter != null)
+ f.removeContainerFilter(filter);
+
+ // Set new filter for the "caption" property
+ filter = new SimpleStringFilter(NAME_PROP, event.getText(),
+ true, false);
+ f.addContainerFilter(filter);
+ }
+ });
+ content.addComponent(searchField);
+ panel = new Panel();
+ panel.setSizeFull();
+ content.addComponent(panel);
+ createTree();
+ content.setExpandRatio(searchField, 0);
+ content.setExpandRatio(panel, 1);
+ }
+
+ @Override
+ public void optionSelected(OptionDialog optionDialog, int optionId) {
+ if (optionId == 0) {
+ Object selected = tree.getValue();
+ if (selected instanceof MPartDescriptor) {
+ optionDialog.close();
+
+ MPartDescriptor descriptor = (MPartDescriptor) selected;
+ showView(descriptor);
+ }
+ } else if (optionId == 1)
+ optionDialog.close();
+ }
+
+ public void showView(MPartDescriptor... descriptors) {
+ for (MPartDescriptor descriptor : descriptors) {
+ partServiceExt.showPart(descriptor.getElementId(),
+ PartState.ACTIVATE);
+ }
+ }
+
+ @Override
+ public void setMessage(String message) {
+ }
+
+ private void createTree() {
+ tree = new Tree();
+ tree.setDragMode(TreeDragMode.NODE);
+ tree.setSizeFull();
+ tree.setImmediate(true);
+ panel.setContent(tree);
+
+ container = createDataSource();
+ tree.setContainerDataSource(container);
+
+ // Set tree to show the 'name' property as caption for items
+ tree.setItemCaptionPropertyId(NAME_PROP);
+ tree.setItemIconPropertyId(ICON_PROP);
+
+ tree.addItemClickListener(new ItemClickEvent.ItemClickListener() {
+
+ private static final long serialVersionUID = 1L;
+
+ public void itemClick(final ItemClickEvent event) {
+ if (event.getButton() == MouseButton.LEFT) {
+ Item item = event.getItem();
+ Object object = item.getItemProperty(OBJECT_PROP)
+ .getValue();
+ optionDialog.setOptionEnabled(0,
+ object instanceof MPartDescriptor);
+ }
+ }
+ });
+ }
+
+ private void setupCategoryItem(Item categoryItem, String category) {
+ categoryItem.getItemProperty(NAME_PROP).setValue(category);
+ categoryItem
+ .getItemProperty(ICON_PROP)
+ .setValue(
+ BundleResource
+ .valueOf("platform:/plugin/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/folder.png"));
+ categoryItem.getItemProperty(OBJECT_PROP).setValue(category);
+ }
+
+ private void setupDescriptorItem(Item descriptorItem,
+ MPartDescriptor descriptor) {
+ descriptorItem.getItemProperty(NAME_PROP).setValue(
+ descriptor.getLabel());
+ if (descriptor.getIconURI() != null
+ && descriptor.getIconURI().trim().length() > 0)
+ descriptorItem.getItemProperty(ICON_PROP).setValue(
+ BundleResource.valueOf(descriptor.getIconURI()));
+ descriptorItem.getItemProperty(OBJECT_PROP).setValue(descriptor);
+ }
+
+ private HierarchicalContainer createDataSource() {
+ HierarchicalContainer data = new HierarchicalContainer();
+ data.addContainerProperty(NAME_PROP, String.class, "No Name");
+ data.addContainerProperty(ICON_PROP, ThemeResource.class, null);
+ data.addContainerProperty(OBJECT_PROP, Object.class, null);
+
+ List<MPartDescriptor> descriptors = application.getDescriptors();
+ Set<String> categoryTags = new HashSet<String>();
+
+ for (MPartDescriptor descriptor : descriptors) {
+ List<String> tags = descriptor.getTags();
+ String category = null;
+ boolean isView = false;
+ for (String tag : tags) {
+ if (tag.equals("View"))
+ isView = true;
+ else if (tag.startsWith(CATEGORY_TAG)) {
+ category = tag.substring(CATEGORY_TAG_LENGTH);
+ }
+ }
+ if (isView) {
+ Item descriptorItem = data.addItem(descriptor);
+ data.setChildrenAllowed(descriptor, false);
+ setupDescriptorItem(descriptorItem, descriptor);
+
+ if (category != null) {
+ category = category.trim();
+ if (!category.isEmpty()) {
+ if (!categoryTags.contains(category)) {
+ categoryTags.add(category);
+ Item categoryItem = data.addItem(category);
+ setupCategoryItem(categoryItem, category);
+ }
+
+ data.setParent(descriptor, category);
+ }
+ }
+ }
+ }
+
+ return data;
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.additions/src/org/eclipse/osbp/vaaclipse/additions/view/ShowViewHandler.java b/org.eclipse.osbp.vaaclipse.additions/src/org/eclipse/osbp/vaaclipse/additions/view/ShowViewHandler.java
new file mode 100644
index 0000000..e8901e6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.additions/src/org/eclipse/osbp/vaaclipse/additions/view/ShowViewHandler.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.additions.view;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog.OptionsAlign;
+
+import com.vaadin.server.ThemeResource;
+import com.vaadin.server.Sizeable.Unit;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.Window;
+
+/**
+ * @author rushan
+ *
+ */
+public class ShowViewHandler {
+ public static final String VIEWS_SHOW_VIEW_PARM_ID = "org.eclipse.ui.views.showView.viewId"; //$NON-NLS-1$
+
+ @Execute
+ public void execute(UI ui, MApplication application,
+ EPartService partService, IEclipseContext context,
+ @Optional @Named(VIEWS_SHOW_VIEW_PARM_ID) String viewId) {
+ if (viewId != null) {
+ partService.showPart(viewId, PartState.ACTIVATE);
+ return;
+ }
+
+ OptionDialog dlg = new OptionDialog();
+ dlg.setOptionButtonsAlignment(OptionsAlign.RIGHT);
+ dlg.setOptionButtonsWidth(80, Unit.PIXELS);
+ dlg.setWidth("350px");
+ dlg.setHeight("500px");
+ dlg.setModal(true);
+ dlg.setCaption("Show View");
+ // static resource will process this, so we set application header icon
+ // without using ResourceInfoProvider service as for Open Perspective
+ // Dialog
+ dlg.setIcon(new ThemeResource("../base/favicon.ico"));
+ ShowViewDialogContent componentProvider = ContextInjectionFactory.make(
+ ShowViewDialogContent.class, context);
+ dlg.setComponentProvider(componentProvider);
+
+ dlg.addOption(0, "OK");
+ dlg.addOption(1, "Cancel");
+
+ ui.addWindow(dlg);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.api/.project b/org.eclipse.osbp.vaaclipse.api/.project
new file mode 100644
index 0000000..bc843fa
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse.api</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.api/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.api/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..5ca5cda
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.api
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.api
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.osbp.vaaclipse.api;version="0.9.0"
+Require-Bundle: org.eclipse.e4.ui.model.workbench;bundle-version="0.10.1",
+ org.eclipse.osbp.commons;bundle-version="[0.9.0,0.10.0)"
diff --git a/org.eclipse.osbp.vaaclipse.api/about.html b/org.eclipse.osbp.vaaclipse.api/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.api/about.ini b/org.eclipse.osbp.vaaclipse.api/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.api/about.mappings b/org.eclipse.osbp.vaaclipse.api/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.api/about.properties b/org.eclipse.osbp.vaaclipse.api/about.properties
new file mode 100644
index 0000000..3d1fed7
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.api
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.api/build.properties b/org.eclipse.osbp.vaaclipse.api/build.properties
new file mode 100644
index 0000000..a138bbd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ epl-v10.html,\
+ license.html
+src.includes = about.properties, about.mappings, about.ini, about.html, epl-v10.html,\
+ license.html
diff --git a/org.eclipse.osbp.vaaclipse.api/epl-v10.html b/org.eclipse.osbp.vaaclipse.api/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.api/license.html b/org.eclipse.osbp.vaaclipse.api/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.vaaclipse.api/pom.xml b/org.eclipse.osbp.vaaclipse.api/pom.xml
new file mode 100644
index 0000000..8a1acaf
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse.api</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/Behaviour.java b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/Behaviour.java
new file mode 100644
index 0000000..2b58cad
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/Behaviour.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.api;
+
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+
+/**
+ * @author rushan
+ *
+ */
+public interface Behaviour {
+ MTrimBar getTrimBarForMinimizedElement(MUIElement minimizedElement);
+
+ MToolBar getToolBarForMinimizedElement(MUIElement minimizedElement);
+
+ MUIElement getMinimizedParentForPart(MPart part);
+}
diff --git a/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/Events.java b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/Events.java
new file mode 100644
index 0000000..4422606
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/Events.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.api;
+
+/**
+ * @author rushan
+ *
+ */
+public class Events {
+ public static class MinMaxEvents {
+ public static final String EVENT_MAXIMIZE_ELEMENT = "EVENT_MAXIMIZE_ELEMENT";
+ public static final String EVENT_MINIMIZE_ELEMENT = "EVENT_MINIMIZE_ELEMENT";
+ public static final String EVENT_RESTORE_ELEMENT = "EVENT_RESTORE_ELEMENT";
+
+ public static final String PARAMETER_ELEMENT = "PARAMETER_ELEMENT";
+ public static final String PARAMETER_TRIMBAR = "PARAMETER_TRIMBAR";
+ public static final String PARAMETER_TOOLBAR = "PARAMETER_TOOLBAR";
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/FastViewListener.java b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/FastViewListener.java
new file mode 100644
index 0000000..62e15b0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/FastViewListener.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.api;
+
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+
+/**
+ * @author rushan
+ *
+ */
+public interface FastViewListener {
+ void showFastView(MTrimBar trimBar, MUIElement element);
+}
diff --git a/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/MenuContributionService.java b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/MenuContributionService.java
new file mode 100644
index 0000000..c0e6c35
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/MenuContributionService.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.api;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MMenu;
+
+/**
+ * @author rushan
+ *
+ */
+public interface MenuContributionService {
+ void addContributions(MMenu menu);
+
+ void removeContributions(MMenu menu);
+}
diff --git a/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/ResourceInfoProvider.java b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/ResourceInfoProvider.java
new file mode 100644
index 0000000..ddc19d3
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/ResourceInfoProvider.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.api;
+
+/**
+ * @author rushan
+ *
+ */
+public interface ResourceInfoProvider {
+ String getCssTheme();
+
+ String getApplicationtWidgetset();
+
+ String getApplicationtWidgetsetName();
+
+ String getApplicationHeaderIcon();
+}
diff --git a/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/ResourceSystem.java b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/ResourceSystem.java
new file mode 100644
index 0000000..73ee821
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/ResourceSystem.java
@@ -0,0 +1,15 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.api;
+
+public interface ResourceSystem {
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/VaadinExecutorService.java b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/VaadinExecutorService.java
new file mode 100644
index 0000000..adff9b1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/VaadinExecutorService.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.api;
+
+/**
+ * @author rushan
+ *
+ */
+public interface VaadinExecutorService {
+ void invokeLater(Runnable runnable);
+
+ void invokeLater(Object key, Runnable runnable);
+
+ void removeAllInvokeLater();
+
+ boolean containsKey(Object key);
+
+ void invokeLaterAlways(Runnable runnable);
+
+ void removeAlwaysRunnable(Runnable runnable);
+
+ void removeAllAlwaysRunnables();
+
+ void dispose();
+}
diff --git a/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/WidgetInfo.java b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/WidgetInfo.java
new file mode 100644
index 0000000..e81af1c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.api/src/org/eclipse/osbp/vaaclipse/api/WidgetInfo.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.api;
+
+/**
+ * @author rushan
+ *
+ */
+public interface WidgetInfo {
+ // Bounds getBounds(MWindow window);
+ //
+ // Bounds getBounds(MWindow window, MUIElement element);
+
+ // void invalidateBounds(MWindow window);
+
+ Object getParent(Object widget);
+}
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/.project b/org.eclipse.osbp.vaaclipse.behaviour/.project
new file mode 100644
index 0000000..e8f41ad
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse.behaviour</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.behaviour/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..62eaff6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.behaviour
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.behaviour;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Require-Bundle: org.eclipse.e4.core.di;bundle-version="1.1.0",
+ org.eclipse.e4.core.commands;bundle-version="0.10.1",
+ org.eclipse.core.runtime;bundle-version="3.8.0",
+ org.eclipse.e4.ui.model.workbench;bundle-version="0.10.1",
+ org.eclipse.e4.ui.workbench;bundle-version="0.10.2",
+ org.eclipse.e4.core.services;bundle-version="1.0.0",
+ org.eclipse.e4.core.contexts;bundle-version="1.1.0",
+ org.eclipse.osgi.services;bundle-version="3.3.100",
+ org.eclipse.osbp.vaaclipse.presentation;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.vaaclipse.api;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.commons;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.emf.ecore;bundle-version="2.9.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.osbp.vaaclipse.behaviour;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.behaviour.cleanup;version="0.9.0"
+Bundle-Vendor: Eclipse OSBP
+Service-Component: OSGI-INF/org.eclipse.osbp.vaaclipse.behaviour.xml
+Import-Package: javax.annotation;version="1.1.0",
+ javax.inject;version="1.0.0"
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/about.html b/org.eclipse.osbp.vaaclipse.behaviour/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/about.ini b/org.eclipse.osbp.vaaclipse.behaviour/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/about.mappings b/org.eclipse.osbp.vaaclipse.behaviour/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/about.properties b/org.eclipse.osbp.vaaclipse.behaviour/about.properties
new file mode 100644
index 0000000..2f3806d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.behaviour
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/build.properties b/org.eclipse.osbp.vaaclipse.behaviour/build.properties
new file mode 100644
index 0000000..f0c3547
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/build.properties
@@ -0,0 +1,10 @@
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, plugin.xml,\
+ META-INF/,\
+ .,\
+ icons/,\
+ license.html,\
+ epl-v10.html
+source.. = src/
+src.includes = about.properties, about.mappings, about.ini, about.html, epl-v10.html,\
+ license.html
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/epl-v10.html b/org.eclipse.osbp.vaaclipse.behaviour/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/icons/sample.gif b/org.eclipse.osbp.vaaclipse.behaviour/icons/sample.gif
new file mode 100644
index 0000000..34fb3c9
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/icons/sample.gif
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/license.html b/org.eclipse.osbp.vaaclipse.behaviour/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.vaaclipse.behaviour/plugin.xml b/org.eclipse.osbp.vaaclipse.behaviour/plugin.xml
new file mode 100644
index 0000000..a40d7f3
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/plugin.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ id="AddonSnippet"
+ name="Addon Snippet"
+ point="org.eclipse.e4.workbench.model">
+ <processor
+ beforefragment="true"
+ class="org.eclipse.osbp.vaaclipse.behaviour.MinMaxProcessor">
+ </processor>
+ <processor
+ beforefragment="true"
+ class="org.eclipse.osbp.vaaclipse.behaviour.cleanup.CleanupProcessor">
+ </processor>
+ <processor
+ beforefragment="true"
+ class="org.eclipse.osbp.vaaclipse.behaviour.idgenerator.ElementIdGeneratorProcessor">
+ </processor>
+ <processor
+ beforefragment="true"
+ class="org.eclipse.osbp.vaaclipse.behaviour.BehaviourProcessor">
+ </processor>
+ </extension>
+</plugin>
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/pom.xml b/org.eclipse.osbp.vaaclipse.behaviour/pom.xml
new file mode 100644
index 0000000..f7b227f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.osbp.vaaclipse.behaviour</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/BehaviourProcessor.java b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/BehaviourProcessor.java
new file mode 100644
index 0000000..6c37849
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/BehaviourProcessor.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.behaviour;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.osbp.vaaclipse.api.Behaviour;
+
+public class BehaviourProcessor implements Behaviour {
+ @Execute
+ void execute(IEclipseContext context) {
+
+ context.set(Behaviour.class, this);
+ }
+
+ @Override
+ public MTrimBar getTrimBarForMinimizedElement(MUIElement minimizedElement) {
+ throw new RuntimeException("Not implemented yet");
+ }
+
+ @Override
+ public MToolBar getToolBarForMinimizedElement(MUIElement minimizedElement) {
+ throw new RuntimeException("Not implemented yet");
+ }
+
+ @Override
+ public MUIElement getMinimizedParentForPart(MPart part) {
+ throw new RuntimeException("Not implemented yet");
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/FastViewHandler.java b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/FastViewHandler.java
new file mode 100644
index 0000000..5a55eee
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/FastViewHandler.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.behaviour;
+
+import java.util.List;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.MAddon;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.menu.MItem;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+
+@SuppressWarnings("restriction")
+public class FastViewHandler {
+ @Execute
+ public void showFastView(MItem item, EModelService modelService,
+ EPartService partService, MApplication application) {
+
+ List<MAddon> addons = application.getAddons();
+ for (MAddon addon : addons) {
+ if (addon.getContributionURI().equals(
+ MinMaxProcessor.MIN_MAX_CONTRIBUTION_URI)) {
+ if (addon.getObject() instanceof MinMaxAddon) {
+ MinMaxAddon minMaxAddon = (MinMaxAddon) addon.getObject();
+ MPart part = minMaxAddon.item2Element.get(item);
+ partService.activate(part);
+ }
+ }
+ }
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/HierarchyUtils.java b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/HierarchyUtils.java
new file mode 100644
index 0000000..9c94cff
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/HierarchyUtils.java
@@ -0,0 +1,153 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.behaviour;
+
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.SideValue;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+
+/**
+ * @author rushan
+ *
+ */
+class HierarchyUtils {
+ private static class TabSheetMatchPredicate implements Predicate {
+ MUIElement tabSheet;
+
+ public TabSheetMatchPredicate(MUIElement tabSheet) {
+ this.tabSheet = tabSheet;
+ }
+
+ public boolean predicate(MUIElement component) {
+ return component == tabSheet;
+ }
+ }
+
+ private static class HorizontalSplitPaneMatchPredicate implements Predicate {
+ MUIElement tabSheet;
+
+ public HorizontalSplitPaneMatchPredicate(MUIElement tabSheet) {
+ this.tabSheet = tabSheet;
+ }
+
+ public boolean predicate(MUIElement component) {
+ return component == tabSheet
+ || (component instanceof MPartSashContainer && ((MPartSashContainer) component)
+ .isHorizontal());
+ }
+ }
+
+ private static class VerticalSplitPaneMatchPredicate implements Predicate {
+ MUIElement tabSheet;
+
+ public VerticalSplitPaneMatchPredicate(MUIElement tabSheet) {
+ this.tabSheet = tabSheet;
+ }
+
+ public boolean predicate(MUIElement component) {
+ return component == tabSheet
+ || (component instanceof MPartSashContainer && !((MPartSashContainer) component)
+ .isHorizontal());
+ }
+ }
+
+ public static SideValue findNearestSide(MWindow pageComponent,
+ MUIElement component) {
+ if (pageComponent.getChildren().isEmpty()
+ || !(pageComponent.getChildren().get(0) instanceof MElementContainer<?>))
+ return SideValue.LEFT;
+
+ MElementContainer<?> rootComponent = (MElementContainer<?>) pageComponent
+ .getChildren().get(0);
+ if (rootComponent instanceof MPartSashContainer
+ && ((MPartSashContainer) rootComponent).isHorizontal()) {
+ MPartSashContainer hsp = (MPartSashContainer) rootComponent;
+ if (findInTree(hsp.getChildren().get(0),
+ new TabSheetMatchPredicate(component)) != null)
+ return SideValue.LEFT;
+ else {
+ MUIElement comp = findInTree(hsp.getChildren().get(1),
+ new VerticalSplitPaneMatchPredicate(component));
+ if (comp instanceof MPartStack)
+ return SideValue.RIGHT;
+ else if (comp instanceof MPartSashContainer
+ && !((MPartSashContainer) comp).isHorizontal()) {
+ if (findInTree(((MPartSashContainer) comp).getChildren()
+ .get(0), new TabSheetMatchPredicate(component)) != null)
+ return SideValue.RIGHT;
+ else if (findInTree(((MPartSashContainer) comp)
+ .getChildren().get(1), new TabSheetMatchPredicate(
+ component)) != null)
+ return SideValue.BOTTOM;
+ }
+ }
+ } else if (rootComponent instanceof MPartSashContainer
+ && !((MPartSashContainer) rootComponent).isHorizontal()) {
+ MPartSashContainer vsp = (MPartSashContainer) rootComponent;
+ if (findInTree(vsp.getChildren().get(1),
+ new TabSheetMatchPredicate(component)) != null) {
+ return SideValue.BOTTOM;
+ } else {
+ MUIElement comp = findInTree(vsp.getChildren().get(0),
+ new HorizontalSplitPaneMatchPredicate(component));
+ if (comp instanceof MPartStack)
+ return SideValue.RIGHT;
+ else if (comp instanceof MPartSashContainer
+ && ((MPartSashContainer) comp).isHorizontal()) {
+ if (findInTree(((MPartSashContainer) comp).getChildren()
+ .get(0), new TabSheetMatchPredicate(component)) != null)
+ return SideValue.LEFT;
+ else if (findInTree(((MPartSashContainer) comp)
+ .getChildren().get(1), new TabSheetMatchPredicate(
+ component)) != null)
+ return SideValue.RIGHT;
+ }
+ }
+ } else if (rootComponent == component)
+ return SideValue.RIGHT;
+
+ return null;
+ }
+
+ private static MUIElement findInTree(MUIElement parent, Predicate predicate) {
+ if (parent instanceof MPartSashContainer) {
+ if (predicate.predicate(parent))
+ return parent;
+ else {
+ MPartSashContainer splitPanel = (MPartSashContainer) parent;
+ MUIElement findedComponent = findInTree(
+ (MElementContainer<MUIElement>) splitPanel
+ .getChildren().get(0), predicate);
+ if (findedComponent != null)
+ return findedComponent;
+ else
+ return findInTree(
+ (MElementContainer<MUIElement>) splitPanel
+ .getChildren().get(1), predicate);
+ }
+ } else if (parent instanceof MElementContainer<?>) {
+ if (predicate.predicate(parent))
+ return parent;
+ else
+ return null;
+ }
+
+ return null;
+ }
+
+ private static interface Predicate {
+ boolean predicate(MUIElement component);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/MinMaxAddon.java b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/MinMaxAddon.java
new file mode 100644
index 0000000..3632a09
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/MinMaxAddon.java
@@ -0,0 +1,749 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2012 Kai Toedter, Rushan R. Gilmullin and others.
+ * 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:
+ * Kai Toedter - initial API and implementation
+ * Rushan R. Gilmullin - completion
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.behaviour;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.commands.EHandlerService;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.MUILabel;
+import org.eclipse.e4.ui.model.application.ui.SideValue;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainerElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolItem;
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuFactoryImpl;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.UIEvents.EventTags;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+import org.eclipse.osbp.commons.geom.Bounds;
+import org.eclipse.osbp.vaaclipse.api.Events;
+import org.eclipse.osbp.vaaclipse.api.WidgetInfo;
+import org.eclipse.osbp.vaaclipse.presentation.engine.PresentationEngine;
+import org.eclipse.osbp.vaaclipse.presentation.renderers.GenericRenderer;
+
+@SuppressWarnings("restriction")
+public class MinMaxAddon {
+ public static final String ADDONS_MINMAX_TRIM_STACK_ID = "org.eclipse.osbp.vaaclipse.behaviour.trimStackId";
+
+ static final String ID_SUFFIX = "(minimized)"; //$NON-NLS-1$
+
+ // tags representing the min/max state
+ public static final String MINIMIZED = IPresentationEngine.MINIMIZED;
+ public static final String MAXIMIZED = IPresentationEngine.MAXIMIZED;
+ public static final String MINIMIZED_BY_ZOOM = IPresentationEngine.MINIMIZED_BY_ZOOM;
+
+ private final IEventBroker eventBroker;
+ private final EModelService modelService;
+ protected boolean ignoreTagChanges;
+
+ @Inject
+ private IEclipseContext context;
+
+ @Inject
+ EPartService partService;
+
+ @Inject
+ private EHandlerService handlerService;
+
+ @Inject
+ private WidgetInfo widgetInfo;
+
+ private Map<MToolBar, MPerspective> barPerspectiveInfo = new HashMap<MToolBar, MPerspective>();
+ private Set<MUIElement> minimizedElements = new HashSet<MUIElement>();
+
+ // TODO: dispose elements of this map
+ public Map<MToolItem, MPart> item2Element = new HashMap<MToolItem, MPart>();
+ public Map<MPart, MUIElement> part2element = new HashMap<MPart, MUIElement>();
+
+ @Inject
+ public MinMaxAddon(IEventBroker eventBroker, EModelService modelService,
+ MApplication application) {
+ this.eventBroker = eventBroker;
+ this.modelService = modelService;
+ }
+
+ private EventHandler widgetHandler = new EventHandler() {
+ public void handleEvent(org.osgi.service.event.Event event) {
+ Object changedObj = event.getProperty(UIEvents.EventTags.ELEMENT);
+ if (!minimizedElements.contains(changedObj))
+ return;
+ MUIElement minimizedElement = (MUIElement) changedObj;
+ if (minimizedElement.getWidget() != null) {
+ MToolBar toolBar = getToolBarForMinimizedElement(minimizedElement);
+ updateToolBar(minimizedElement, toolBar);
+ }
+ }
+ };
+
+ private EventHandler toBeRenderedHandler = new EventHandler() {
+ public void handleEvent(org.osgi.service.event.Event event) {
+ MUIElement changedElement = (MUIElement) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+
+ // if one of the kids changes state, re-scrape the CTF
+ MUIElement parentElement = changedElement.getParent();
+ if (minimizedElements.contains(parentElement)) {
+ updateToolBar(parentElement,
+ getToolBarForMinimizedElement(parentElement));
+ }
+ }
+ };
+
+ private EventHandler childrenHandler = new EventHandler() {
+ public void handleEvent(org.osgi.service.event.Event event) {
+ Object changedObj = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+ // if a child has been added or removed, re-scape the CTF
+ if (minimizedElements.contains(changedObj)) {
+ updateToolBar((MUIElement) changedObj,
+ getToolBarForMinimizedElement((MUIElement) changedObj));
+ }
+ }
+ };
+
+ @PostConstruct
+ void postConstruct() {
+ eventBroker.subscribe(UIEvents.ApplicationElement.TOPIC_TAGS,
+ tagListener);
+ eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_SELECTEDELEMENT,
+ selectPerspectiveHandler);
+ eventBroker.subscribe(UIEvents.UIElement.TOPIC_VISIBLE,
+ visibilityHandler);
+ eventBroker.subscribe(UIEvents.UIElement.TOPIC_WIDGET, widgetHandler);
+ eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+ childrenHandler);
+ eventBroker.subscribe(UIEvents.UIElement.TOPIC_TOBERENDERED,
+ toBeRenderedHandler);
+
+ // context.set(Behaviour.class, this);
+ }
+
+ @PreDestroy
+ void preDestroy() {
+ eventBroker.unsubscribe(tagListener);
+ eventBroker.unsubscribe(selectPerspectiveHandler);
+ eventBroker.unsubscribe(visibilityHandler);
+ eventBroker.unsubscribe(widgetHandler);
+ eventBroker.unsubscribe(childrenHandler);
+ eventBroker.unsubscribe(toBeRenderedHandler);
+ }
+
+ private final EventHandler tagListener = new EventHandler() {
+ @Override
+ public void handleEvent(Event event) {
+ if (ignoreTagChanges) {
+ return;
+ }
+
+ Object changedObj = event.getProperty(EventTags.ELEMENT);
+ String eventType = (String) event
+ .getProperty(UIEvents.EventTags.TYPE);
+ String tag = (String) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+ String oldVal = (String) event
+ .getProperty(UIEvents.EventTags.OLD_VALUE);
+
+ if (!(changedObj instanceof MUIElement)) {
+ return;
+ }
+
+ final MUIElement changedElement = (MUIElement) changedObj;
+
+ if (UIEvents.EventTypes.ADD.equals(eventType)) {
+ if (MINIMIZED.equals(tag)) {
+ minimize(changedElement);
+ } else if (MAXIMIZED.equals(tag)) {
+ maximize(changedElement);
+ }
+ } else if (UIEvents.EventTypes.REMOVE.equals(eventType)) {
+ if (MINIMIZED.equals(oldVal)) {
+ restore(changedElement);
+ } else if (MAXIMIZED.equals(oldVal)) {
+ unzoom(changedElement);
+ }
+ }
+ }
+ };
+
+ private EventHandler selectPerspectiveHandler = new EventHandler() {
+ public void handleEvent(Event event) {
+ Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+ if (!(element instanceof MPerspectiveStack))
+ return;
+
+ MPerspectiveStack stack = (MPerspectiveStack) element;
+
+ // Gather up the elements that are being 'hidden' by this change
+ MUIElement oldSel = (MUIElement) event
+ .getProperty(UIEvents.EventTags.OLD_VALUE);
+
+ if (oldSel != null) {
+ for (Map.Entry<MToolBar, MPerspective> entry : barPerspectiveInfo
+ .entrySet()) {
+ if (oldSel == entry.getValue()) {
+ MToolBar toolBar = entry.getKey();
+ if (toolBar.isVisible()) {
+ toolBar.setVisible(false);
+ }
+ }
+ }
+ }
+
+ if (stack.getSelectedElement() != null) {
+ for (Map.Entry<MToolBar, MPerspective> entry : barPerspectiveInfo
+ .entrySet()) {
+ if (stack.getSelectedElement() == entry.getValue()) {
+ MToolBar toolBar = entry.getKey();
+ if (!toolBar.isVisible()) {
+ toolBar.setVisible(true);
+ MTrimBar parentTrimBar = (MTrimBar) (MElementContainer<?>) toolBar
+ .getParent();
+ if (!parentTrimBar.isVisible())
+ parentTrimBar.setVisible(true);
+ }
+ }
+ }
+ }
+ }
+ };
+
+ private final EventHandler visibilityHandler = new EventHandler() {
+ @Override
+ public void handleEvent(Event event) {
+ MUIElement changedElement = (MUIElement) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+
+ if (changedElement instanceof MTrimElement) {
+ MTrimBar parentTrimBar = (MTrimBar) (MElementContainer<?>) changedElement
+ .getParent();
+ if (!parentTrimBar.isVisible())
+ return;
+
+ boolean hasVisibleChilds = false;
+ for (MTrimElement trimElelement : parentTrimBar.getChildren()) {
+ if (trimElelement.isVisible()) {
+ hasVisibleChilds = true;
+ break;
+ }
+ }
+
+ if (!hasVisibleChilds)
+ parentTrimBar.setVisible(false);
+ }
+ }
+ };
+
+ protected void minimize(MUIElement element) {
+ if (!element.isToBeRendered()) {
+ return;
+ }
+ MToolBar toolBar = createTrim(element);
+ element.setVisible(false);
+ minimizedElements.add(element);
+ // Activate a part other than the trimStack so that if the tool item is
+ // pressed
+ // immediately it will still open the stack.
+ partService.requestActivation();
+
+ // send the minimize event
+ Map<String, Object> parameters = new HashMap<String, Object>();
+ parameters.put(Events.MinMaxEvents.PARAMETER_ELEMENT, element);
+ parameters.put(Events.MinMaxEvents.PARAMETER_TOOLBAR, toolBar);
+ parameters.put(Events.MinMaxEvents.PARAMETER_TRIMBAR,
+ toolBar.getParent());
+ eventBroker
+ .send(Events.MinMaxEvents.EVENT_MINIMIZE_ELEMENT, parameters);
+ }
+
+ protected void unzoom(MUIElement element) {
+ MWindow win = modelService.getTopLevelWindowFor(element);
+
+ List<MPartStack> stacks = modelService.findElements(win, null,
+ MPartStack.class, null, EModelService.PRESENTATION);
+ for (MPartStack theStack : stacks) {
+ if (theStack.getWidget() != null
+ && theStack.getTags().contains(MINIMIZED)
+ && theStack.getTags().contains(MINIMIZED_BY_ZOOM)) {
+ theStack.getTags().remove(MINIMIZED);
+ }
+ }
+
+ List<MPlaceholder> placeholders = modelService.findElements(win, null,
+ MPlaceholder.class, null, EModelService.PRESENTATION);
+ for (MPlaceholder ph : placeholders) {
+ if (ph.getWidget() != null && ph.getTags().contains(MINIMIZED)
+ && ph.getTags().contains(MINIMIZED_BY_ZOOM)) {
+ ph.getTags().remove(MINIMIZED);
+ }
+ }
+ }
+
+ public void resetWindows(MUIElement element) {
+ ignoreTagChanges = true;
+ MWindow window = modelService.getTopLevelWindowFor(element);
+
+ List<MPartStack> stacks = modelService.findElements(window, null,
+ MPartStack.class, null, EModelService.PRESENTATION);
+ for (MPartStack partStack : stacks) {
+ if (partStack.getWidget() != null) {
+ if (partStack.getTags().contains(MINIMIZED)) {
+ partStack.getTags().remove(MINIMIZED);
+ }
+ if (partStack.getTags().contains(MAXIMIZED)) {
+ partStack.getTags().remove(MAXIMIZED);
+ }
+ if (partStack.getTags().contains(MINIMIZED_BY_ZOOM)) {
+ partStack.getTags().remove(MINIMIZED_BY_ZOOM);
+ }
+ }
+ partStack.setVisible(true);
+ }
+ ignoreTagChanges = false;
+
+ if (window instanceof MTrimmedWindow) {
+ MTrimmedWindow trimmedWindow = (MTrimmedWindow) window;
+ List<MTrimBar> trimBars = trimmedWindow.getTrimBars();
+ for (MTrimBar trimBar : trimBars) {
+ if (trimBar.getSide() == SideValue.LEFT
+ || trimBar.getSide() == SideValue.RIGHT) {
+ trimBar.getChildren().clear();
+ trimBar.setVisible(false);
+ }
+ }
+ }
+ }
+
+ protected void restore(MUIElement element) {
+
+ // if the element is minimized, then the widget of this element maybe
+ // (but not fact) detached from its real parent
+ // and attached to popup window and the widget's visible property is
+ // true. We must undo this changes
+ // before start the restore operation
+ Object currentParent = widgetInfo.getParent(element.getWidget());
+ Object realParent = element.getParent().getWidget();
+ if (currentParent != realParent) // if the current parent is not equal
+ // (or null) the real parent,
+ {// then reattach the widget to real parent
+ ((GenericRenderer) element.getParent().getRenderer())
+ .processContents(element.getParent());
+ }
+
+ element.getTags().remove(MINIMIZED_BY_ZOOM);
+ element.getTags().remove(MINIMIZED);
+ element.setVisible(true);
+ minimizedElements.remove(element);
+
+ MTrimBar trimBar = getTrimBarForMinimizedElement(element);
+ MToolBar toolBar = getToolBarForMinimizedElement(element);
+
+ if (trimBar != null || toolBar != null) {
+
+ barPerspectiveInfo.remove(toolBar);
+
+ toolBar.setToBeRendered(false);
+ trimBar.getChildren().remove(toolBar);
+ if (trimBar.getChildren().size() == 0) {
+ trimBar.setVisible(false);
+ }
+ }
+
+ Map<String, Object> parameters = new HashMap<String, Object>();
+ parameters.put(Events.MinMaxEvents.PARAMETER_ELEMENT, element);
+ eventBroker.send(Events.MinMaxEvents.EVENT_RESTORE_ELEMENT, parameters);
+ }
+
+ protected void maximize(MUIElement element) {
+ if (!element.isToBeRendered()) {
+ return;
+ }
+
+ MWindow mWindow = getWindowFor(element);
+ MPerspective persp = modelService.getActivePerspective(mWindow);
+
+ List<String> maxTag = new ArrayList<String>();
+ maxTag.add(MAXIMIZED);
+ List<MUIElement> curMax = modelService
+ .findElements(persp == null ? mWindow : persp, null,
+ MUIElement.class, maxTag);
+ if (curMax.size() > 0) {
+ for (MUIElement maxElement : curMax) {
+ if (maxElement == element) {
+ continue;
+ }
+ ignoreTagChanges = true;
+ try {
+ maxElement.getTags().remove(MAXIMIZED);
+ } finally {
+ ignoreTagChanges = false;
+ }
+ }
+ }
+
+ // Stacks
+ List<MPartStack> stacks = modelService.findElements(
+ persp == null ? mWindow : persp, null, MPartStack.class, null,
+ EModelService.PRESENTATION);
+ for (MPartStack theStack : stacks) {
+ if (theStack == element || !theStack.isToBeRendered()) {
+ continue;
+ }
+
+ // Exclude stacks in DW's
+ // if (getWindowFor(theStack) != mWindow) {
+ // continue;
+ // }
+
+ int location = modelService.getElementLocation(theStack);
+ if (location != EModelService.IN_SHARED_AREA
+ && theStack.getWidget() != null
+ && !theStack.getTags().contains(MINIMIZED)) {
+ theStack.getTags().add(MINIMIZED_BY_ZOOM);
+ theStack.getTags().add(MINIMIZED);
+ }
+ }
+
+ // Placeholders
+ List<MPlaceholder> placeholders = modelService.findElements(
+ persp == null ? mWindow : persp, null, MPlaceholder.class,
+ null, EModelService.PRESENTATION);
+ for (MPlaceholder thePlaceholder : placeholders) {
+ if (thePlaceholder == element
+ || !thePlaceholder.isToBeRendered()
+ || !(thePlaceholder.getRef() instanceof MElementContainer<?>)) {
+ continue;
+ }
+
+ // Exclude stacks in DW's
+ // if (getWindowFor(thePlaceholder) != mWindow) {
+ // continue;
+ // }
+
+ int location = modelService.getElementLocation(thePlaceholder);
+ if (location != EModelService.IN_SHARED_AREA
+ && thePlaceholder.getWidget() != null
+ && !thePlaceholder.getTags().contains(MINIMIZED)) {
+ thePlaceholder.getTags().add(MINIMIZED_BY_ZOOM);
+ thePlaceholder.getTags().add(MINIMIZED);
+ }
+ }
+ }
+
+ private MWindow getWindowFor(MUIElement element) {
+ MUIElement parent = element.getParent();
+
+ // We rely here on the fact that a DW's 'getParent' will return
+ // null since it's not in the 'children' hierarchy
+ while (parent != null && !(parent instanceof MWindow)) {
+ parent = parent.getParent();
+ }
+
+ // A detached window will end up with getParent() == null
+ return (MWindow) parent;
+ }
+
+ private MToolBar createTrim(MUIElement element) {
+ MTrimmedWindow window = (MTrimmedWindow) getWindowFor(element);
+ MPerspective activePerspective = modelService
+ .getActivePerspective(window);
+
+ if (element.getElementId() == null)
+ element.setElementId(UUID.randomUUID().toString());
+
+ // Is there already a TrimControl there ?
+ String trimId = element.getElementId()
+ + getMinimizedElementSuffix(element);
+ MToolBar toolBar = (MToolBar) modelService.find(trimId, window);
+
+ if (toolBar == null) {
+ toolBar = MenuFactoryImpl.eINSTANCE.createToolBar();
+ toolBar.setElementId(trimId);
+
+ // Check if we have a cached location
+ MTrimBar bar = getBarForElement(element, window);
+ bar.getChildren().add(toolBar);
+ bar.setVisible(true);
+
+ // get the parent trim bar, see bug 320756
+ PresentationEngine presentationEngine = (PresentationEngine) context
+ .get(IPresentationEngine.class);
+
+ updateToolBar(element, toolBar);
+
+ if (bar.getWidget() == null) {
+ // ask it to be rendered
+ bar.setToBeRendered(true);
+
+ // create the widget
+ presentationEngine.createGui(bar);
+ } else {
+ toolBar.setToBeRendered(true);
+ presentationEngine.createGui(toolBar);
+ }
+ } else {
+ // get the parent trim bar, see bug 320756
+ MUIElement parent = toolBar.getParent();
+ parent.setVisible(true);
+ if (parent.getWidget() == null) {
+ // ask it to be rendered
+ parent.setToBeRendered(true);
+ // create the widget
+ PresentationEngine presentationEngine = (PresentationEngine) context
+ .get(IPresentationEngine.class);
+ presentationEngine.createGui(parent);
+ }
+
+ updateToolBar(element, toolBar);
+
+ toolBar.setToBeRendered(true);
+ }
+
+ barPerspectiveInfo.put(toolBar, activePerspective);
+ return toolBar;
+ }
+
+ private void updateToolBar(MUIElement element, MToolBar toolBar) {
+ toolBar.getChildren().clear();
+
+ MDirectToolItem toolItem = MenuFactoryImpl.eINSTANCE
+ .createDirectToolItem();
+ toolItem.setIconURI("platform:/plugin/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/restore1.png");
+ toolItem.setContributionURI("bundleclass://org.eclipse.osbp.vaaclipse.behaviour/org.eclipse.osbp.vaaclipse.behaviour.RestoreHandler");
+ // toolItem.getTransientData().put("minimizedStack", element);
+ toolItem.setContainerData(element.getElementId());
+ toolBar.getChildren().add(toolItem);
+
+ if (element instanceof MPlaceholder) {
+ MDirectToolItem partItem = MenuFactoryImpl.eINSTANCE
+ .createDirectToolItem();
+ partItem.setElementId(UUID.randomUUID().toString());
+ partItem.setContributionURI("bundleclass://org.eclipse.osbp.vaaclipse.behaviour/org.eclipse.osbp.vaaclipse.behaviour.FastViewHandler");
+
+ MUILabel labelElement = getLabelElement(element);
+ if (labelElement != null) {
+ if (labelElement.getIconURI() != null
+ && labelElement.getIconURI().trim().length() > 0)
+ partItem.setIconURI(labelElement.getIconURI());
+ else
+ partItem.setIconURI("platform:/plugin/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/editor_area.png");
+ toolBar.getChildren().add(partItem);
+ MPart part = getLeafPart(element);
+ item2Element.put(partItem, part);
+ part2element.put(part, element);
+ }
+ } else {
+ @SuppressWarnings("unchecked")
+ MElementContainer<MUIElement> partStack = (MElementContainer<MUIElement>) element;
+ for (MUIElement stackElement : partStack.getChildren()) {
+ if (!stackElement.isToBeRendered()) {
+ continue;
+ }
+
+ MUIElement el = stackElement instanceof MPlaceholder ? ((MPlaceholder) stackElement)
+ .getRef() : stackElement;
+ if (el instanceof MPart) {
+ MDirectToolItem partItem = MenuFactoryImpl.eINSTANCE
+ .createDirectToolItem();
+ partItem.setContributionURI("bundleclass://org.eclipse.osbp.vaaclipse.behaviour/org.eclipse.osbp.vaaclipse.behaviour.FastViewHandler");
+
+ MUILabel labelElement = getLabelElement(stackElement);
+ String iconURI = labelElement.getIconURI();
+ if (iconURI == null || iconURI.trim().isEmpty())
+ iconURI = "platform:/plugin/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/blank_part_label.png";
+ partItem.setIconURI(iconURI);
+ toolBar.getChildren().add(partItem);
+
+ item2Element.put(partItem, (MPart) el);
+ part2element.put((MPart) el, element);
+ }
+ }
+ }
+ }
+
+ private MPart getLeafPart(MUIElement element) {
+ if (element instanceof MPlaceholder)
+ return getLeafPart(((MPlaceholder) element).getRef());
+
+ if (element instanceof MElementContainer<?>)
+ return getLeafPart(((MElementContainer<?>) element)
+ .getSelectedElement());
+
+ if (element instanceof MPart)
+ return (MPart) element;
+
+ return null;
+ }
+
+ private MUILabel getLabelElement(MUIElement element) {
+ if (element instanceof MPlaceholder) {
+ element = ((MPlaceholder) element).getRef();
+ }
+
+ return (MUILabel) (element instanceof MUILabel ? element : null);
+ }
+
+ private MTrimBar getBarForElement(MUIElement element, MTrimmedWindow window) {
+ SideValue side = SideValue.LEFT;
+
+ // SideValue side = getCachedBar(element);
+ // if (side == null) {
+
+ Bounds winBounds = new Bounds(0, 0, 1000, 1000);
+ double winCenterX = winBounds.w / 2;
+ Bounds stackBounds = calculateBounds(element, window, winBounds);
+ if (stackBounds != null) {
+ double stackCenterX = stackBounds.x + (stackBounds.w / 2);
+ side = stackCenterX < winCenterX ? SideValue.LEFT : SideValue.RIGHT;
+ }
+ // }
+
+ MTrimBar bar = modelService.getTrim(window, side);
+ return bar;
+ }
+
+ private String getMinimizedElementSuffix(MUIElement element) {
+ String id = ID_SUFFIX;
+ MPerspective persp = modelService.getPerspectiveFor(element);
+ if (persp != null) {
+ id = '(' + persp.getElementId() + ')';
+ }
+ return id;
+ }
+
+ // @Override
+ public MTrimBar getTrimBarForMinimizedElement(MUIElement element) {
+ MToolBar toolBar = getToolBarForMinimizedElement(element);
+ return (MTrimBar) (MElementContainer<?>) toolBar.getParent();
+ }
+
+ // @Override
+ public MToolBar getToolBarForMinimizedElement(MUIElement element) {
+ MTrimmedWindow window = (MTrimmedWindow) getWindowFor(element);
+ String trimId = element.getElementId()
+ + getMinimizedElementSuffix(element);
+ return (MToolBar) modelService.find(trimId, window);
+ }
+
+ // @Override
+ public MUIElement getMinimizedParentForPart(MPart part) {
+ return part2element.get(part);
+ }
+
+ private double parseContainerData(String containerData) {
+ if (containerData == null)
+ return 0.0d;
+
+ containerData = containerData.trim();
+
+ try {
+ return Double.parseDouble(containerData);
+ } catch (NumberFormatException e) {
+ return 0.0d;
+ }
+ }
+
+ private Bounds calculateBounds(MUIElement element, MUIElement container,
+ Bounds currentBounds) {
+ if (container == element) {
+ return currentBounds;
+ } else if (container instanceof MPartSashContainer) {
+ MPartSashContainer sash = (MPartSashContainer) container;
+
+ Map<MPartSashContainerElement, Double> weights = new HashMap<MPartSashContainerElement, Double>();
+ double total_weight = 0;
+ for (MPartSashContainerElement children : sash.getChildren()) {
+ if (children.isToBeRendered() && children.isVisible()
+ && children.getWidget() != null /*
+ * element can be
+ * renderable but has no
+ * widget when removeGui
+ * called for element
+ */) {
+ String data = children.getContainerData();
+ double weight = parseContainerData(data);
+
+ weights.put(children, weight);
+ total_weight += weight;
+ }
+ }
+
+ if (total_weight == 0.0) // all child elements has zero weight
+ total_weight = 1.0;
+
+ double sumWeightPrcnt = 0;
+ for (MPartSashContainerElement children : sash.getChildren()) {
+ Double w = weights.get(children);
+ if (w != null) {
+ double wPrcnt = w / total_weight;
+ Bounds newBounds;
+ if (sash.isHorizontal()) {
+ newBounds = new Bounds(currentBounds.x
+ + currentBounds.w * sumWeightPrcnt,
+ currentBounds.y, currentBounds.w * wPrcnt,
+ currentBounds.h);
+ } else {
+ newBounds = new Bounds(currentBounds.x, currentBounds.y
+ + currentBounds.h * sumWeightPrcnt,
+ currentBounds.w, currentBounds.h * wPrcnt);
+ }
+ sumWeightPrcnt += wPrcnt;
+
+ Bounds bounds = calculateBounds(element, children,
+ newBounds);
+ if (bounds != null)
+ return bounds;
+ }
+ }
+ } else if (container instanceof MElementContainer<?>) {
+ MElementContainer<MUIElement> _container = (MElementContainer<MUIElement>) container;
+ for (MUIElement child : _container.getChildren()) {
+ Bounds bounds = calculateBounds(element, child, currentBounds);
+ if (bounds != null)
+ return bounds;
+ }
+ }
+
+ return null;
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/MinMaxProcessor.java b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/MinMaxProcessor.java
new file mode 100644
index 0000000..d5ec483
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/MinMaxProcessor.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.behaviour;
+
+import java.util.List;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.MAddon;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.impl.ApplicationFactoryImpl;
+
+@SuppressWarnings("restriction")
+public class MinMaxProcessor {
+ private static final String BUNDLE_CLASS = "bundleclass://org.eclipse.osbp.vaaclipse.behaviour";
+
+ public static final String MIN_MAX_CONTRIBUTION_URI = BUNDLE_CLASS
+ + "/org.eclipse.osbp.vaaclipse.behaviour.MinMaxAddon";
+
+ @Execute
+ void addMinMaxAddon(MApplication application, IEclipseContext context) {
+ List<MAddon> addons = application.getAddons();
+
+ // Prevent multiple copies
+ for (MAddon addon : addons) {
+ if (addon.getContributionURI().equals(MIN_MAX_CONTRIBUTION_URI)) {
+ return;
+ }
+ }
+
+ MAddon minMaxAddon = ApplicationFactoryImpl.eINSTANCE.createAddon();
+ minMaxAddon.setElementId("MinMaxAddon");
+ minMaxAddon.setContributionURI(MIN_MAX_CONTRIBUTION_URI);
+ application.getAddons().add(minMaxAddon);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/RestoreHandler.java b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/RestoreHandler.java
new file mode 100644
index 0000000..31816ab
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/RestoreHandler.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.behaviour;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.menu.MItem;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+
+public class RestoreHandler {
+ @Execute
+ public void restore(MItem item, EModelService modelService, MWindow window,
+ MApplication application) {
+ String stackId = item.getContainerData();
+ MUIElement element = modelService.find(stackId, window);
+ // MUIElement element = (MUIElement)
+ // item.getTransientData().get("minimizedStack");
+ if (element != null) {
+ element.getTags().remove(IPresentationEngine.MINIMIZED_BY_ZOOM);
+ element.getTags().remove(IPresentationEngine.MINIMIZED);
+ }
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/cleanup/CleanupAddon.java b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/cleanup/CleanupAddon.java
new file mode 100644
index 0000000..cbc85f0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/cleanup/CleanupAddon.java
@@ -0,0 +1,254 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.behaviour.cleanup;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MArea;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuElement;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.emf.ecore.EObject;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
+
+public class CleanupAddon {
+ @Inject
+ IEventBroker eventBroker;
+
+ @Inject
+ EModelService modelService;
+
+ @Inject
+ MApplication app;
+
+ @Inject
+ VaadinExecutorService communicationManager;
+
+ private EventHandler childrenHandler = new EventHandler() {
+
+ private boolean ignoreChildrenChanges = false;
+
+ public void handleEvent(Event event) {
+
+ if (ignoreChildrenChanges)
+ return;
+
+ Object changedObj = event.getProperty(UIEvents.EventTags.ELEMENT);
+ String eventType = (String) event
+ .getProperty(UIEvents.EventTags.TYPE);
+ if (UIEvents.EventTypes.REMOVE.equals(eventType)) {
+ final MElementContainer<?> container = (MElementContainer<?>) changedObj;
+ MUIElement containerParent = container.getParent();
+
+ // Determine the elements that should *not* ever be
+ // auto-destroyed
+ if (container instanceof MApplication
+ || container instanceof MPerspectiveStack
+ || container instanceof MMenuElement
+ || container instanceof MTrimBar
+ || container instanceof MToolBar
+ || container instanceof MArea
+ || container.getTags().contains(
+ IPresentationEngine.NO_AUTO_COLLAPSE)) {
+ return;
+ }
+
+ if (container instanceof MWindow
+ && containerParent instanceof MApplication) {
+ return;
+ }
+
+ // Stall the removal to handle cases where the container is only
+ // transiently empty
+
+ communicationManager.invokeLater(new Runnable() {
+
+ @Override
+ public void run() {
+ // Remove it from the display if no visible children
+ int tbrCount = modelService
+ .toBeRenderedCount(container);
+
+ // Cache the value since setting the TBR may change the
+ // result
+ boolean lastStack = isLastEditorStack(container);
+ if (tbrCount == 0 && !lastStack) {
+ container.setToBeRendered(false);
+ }
+
+ // Remove it from the model if it has no children at all
+ MElementContainer<?> lclContainer = container;
+ if (lclContainer.getChildren().size() == 0) {
+ MElementContainer<MUIElement> parent = container
+ .getParent();
+ if (parent != null && !lastStack) {
+ container.setToBeRendered(false);
+ parent.getChildren().remove(container);
+ } else if (container instanceof MWindow) {
+ // Must be a Detached Window
+ MUIElement eParent = (MUIElement) ((EObject) container)
+ .eContainer();
+ if (eParent instanceof MPerspective) {
+ ((MPerspective) eParent).getWindows()
+ .remove(container);
+ } else if (eParent instanceof MWindow) {
+ ((MWindow) eParent).getWindows().remove(
+ container);
+ }
+ }
+ } else if (container.getChildren().size() == 1
+ && container instanceof MPartSashContainer) {
+ // if a sash container has only one element then
+ // remove it and move
+ // its child up to where it used to be
+ MUIElement theChild = container.getChildren()
+ .get(0);
+ MElementContainer<MUIElement> parentContainer = container
+ .getParent();
+ if (parentContainer != null) {
+ ignoreChildrenChanges = true;
+ int index = parentContainer.getChildren()
+ .indexOf(container);
+ theChild.setContainerData(container
+ .getContainerData());
+ container.getChildren().remove(theChild);
+ parentContainer.getChildren().remove(container);
+ parentContainer.getChildren().add(index,
+ theChild);
+ container.setToBeRendered(false);
+ ignoreChildrenChanges = false;
+ }
+ }
+ }
+ });
+ }
+ }
+ };
+
+ private EventHandler renderingChangeHandler = new EventHandler() {
+
+ public void handleEvent(Event event) {
+ MUIElement changedObj = (MUIElement) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+ MElementContainer<MUIElement> container = null;
+ if (changedObj.getCurSharedRef() != null)
+ container = changedObj.getCurSharedRef().getParent();
+ else
+ container = changedObj.getParent();
+
+ // this can happen for shared parts that aren't attached to any
+ // placeholders
+ if (container == null) {
+ return;
+ }
+
+ // never hide top-level windows
+ MUIElement containerElement = container;
+ if (containerElement instanceof MWindow
+ && containerElement.getParent() != null) {
+ return;
+ }
+
+ // These elements should neither be shown nor hidden based on their
+ // containment state
+ if (isLastEditorStack(containerElement)
+ || containerElement instanceof MPerspective
+ || containerElement instanceof MPerspectiveStack
+ || containerElement instanceof MTrimBar)
+ return;
+
+ Boolean toBeRendered = (Boolean) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+ if (toBeRendered) {
+ // Bring the container back if one of its children goes visible
+ if (!container.isToBeRendered())
+ container.setToBeRendered(true);
+ } else {
+ // Never hide the container marked as no_close
+ if (container.getTags().contains(
+ IPresentationEngine.NO_AUTO_COLLAPSE)) {
+ return;
+ }
+
+ int visCount = modelService.countRenderableChildren(container);
+
+ // Remove stacks with no visible children from the display (but
+ // not the
+ // model)
+ final MElementContainer<MUIElement> theContainer = container;
+ if (visCount == 0) {
+ communicationManager.invokeLater(new Runnable() {
+
+ @Override
+ public void run() {
+ if (!isLastEditorStack(theContainer))
+ theContainer.setToBeRendered(false);
+ }
+ });
+ } else {
+ // if there are rendered elements but none are 'visible' we
+ // should
+ // make the container invisible as well
+ boolean makeInvisible = true;
+
+ // OK, we have rendered children, are they 'visible' ?
+ for (MUIElement kid : container.getChildren()) {
+ if (!kid.isToBeRendered())
+ continue;
+ if (kid.isVisible()) {
+ makeInvisible = false;
+ break;
+ }
+ }
+
+ if (makeInvisible) {
+ container.setVisible(false);
+ }
+ }
+ }
+ }
+ };
+
+ @PostConstruct
+ void init(IEclipseContext context) {
+ eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+ childrenHandler);
+ eventBroker.subscribe(UIEvents.UIElement.TOPIC_TOBERENDERED,
+ renderingChangeHandler);
+ }
+
+ @PreDestroy
+ void removeListeners() {
+ eventBroker.unsubscribe(childrenHandler);
+ eventBroker.unsubscribe(renderingChangeHandler);
+ }
+
+ boolean isLastEditorStack(MUIElement element) {
+ return modelService.isLastEditorStack(element);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/cleanup/CleanupProcessor.java b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/cleanup/CleanupProcessor.java
new file mode 100644
index 0000000..d9a67d0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/cleanup/CleanupProcessor.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.behaviour.cleanup;
+
+import java.util.List;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.MAddon;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.impl.ApplicationFactoryImpl;
+
+public class CleanupProcessor {
+ @Execute
+ void addCleanupAddon(MApplication app) {
+ List<MAddon> addons = app.getAddons();
+
+ // Prevent multiple copies
+ for (MAddon addon : addons) {
+ if (addon.getContributionURI().contains(
+ "org.eclipse.osbp.vaaclipse.behaviour.CleanupAddon"))
+ return;
+ }
+
+ // Insert the addon into the system
+ MAddon cleanupAddon = ApplicationFactoryImpl.eINSTANCE.createAddon();
+ cleanupAddon.setElementId("CleanupAddon"); //$NON-NLS-1$
+ cleanupAddon
+ .setContributionURI("bundleclass://org.eclipse.osbp.vaaclipse.behaviour/org.eclipse.osbp.vaaclipse.behaviour.cleanup.CleanupAddon"); //$NON-NLS-1$
+ app.getAddons().add(cleanupAddon);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/idgenerator/ElementIdGeneratorAddon.java b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/idgenerator/ElementIdGeneratorAddon.java
new file mode 100644
index 0000000..aaaa7f4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/idgenerator/ElementIdGeneratorAddon.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.behaviour.idgenerator;
+
+import java.util.UUID;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+public class ElementIdGeneratorAddon {
+ @Inject
+ IEventBroker eventBroker;
+
+ @Inject
+ MApplication app;
+
+ private EventHandler childrenHandler = new EventHandler() {
+
+ public void handleEvent(Event event) {
+
+ Object changedObj = event.getProperty(UIEvents.EventTags.ELEMENT);
+ if (!(changedObj instanceof MElementContainer<?>))
+ return;
+
+ String eventType = (String) event
+ .getProperty(UIEvents.EventTags.TYPE);
+ if (UIEvents.EventTypes.ADD.equals(eventType)) {
+
+ Object newValue = event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+ if (!(newValue instanceof MUIElement))
+ return;
+
+ MUIElement element = (MUIElement) newValue;
+
+ if (element.getElementId() == null
+ || element.getElementId().trim().isEmpty()) {
+ element.setElementId(UUID.randomUUID().toString());
+ }
+ }
+ }
+ };
+
+ @PostConstruct
+ void init(IEclipseContext context) {
+ eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+ childrenHandler);
+ }
+
+ @PreDestroy
+ void removeListeners() {
+ eventBroker.unsubscribe(childrenHandler);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/idgenerator/ElementIdGeneratorProcessor.java b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/idgenerator/ElementIdGeneratorProcessor.java
new file mode 100644
index 0000000..de9db32
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.behaviour/src/org/eclipse/osbp/vaaclipse/behaviour/idgenerator/ElementIdGeneratorProcessor.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.behaviour.idgenerator;
+
+import java.util.List;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.MAddon;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.impl.ApplicationFactoryImpl;
+
+/**
+ * @author rushan
+ *
+ */
+public class ElementIdGeneratorProcessor {
+
+ @Execute
+ void addCleanupAddon(MApplication app) {
+ List<MAddon> addons = app.getAddons();
+
+ // Prevent multiple copies
+ for (MAddon addon : addons) {
+ if (addon.getContributionURI().contains(
+ "org.eclipse.osbp.vaaclipse.behaviour.idgenerator"))
+ return;
+ }
+
+ // Insert the addon into the system
+ MAddon addon = ApplicationFactoryImpl.eINSTANCE.createAddon();
+ addon.setElementId("ElementIdGeneratorAddon"); //$NON-NLS-1$
+ addon.setContributionURI("bundleclass://org.eclipse.osbp.vaaclipse.behaviour/org.eclipse.osbp.vaaclipse.behaviour.idgenerator.ElementIdGeneratorAddon"); //$NON-NLS-1$
+ app.getAddons().add(addon);
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/.project b/org.eclipse.osbp.vaaclipse.common.ecview.api/.project
new file mode 100644
index 0000000..fb8f695
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse.common.ecview.api</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/LICENSE.txt b/org.eclipse.osbp.vaaclipse.common.ecview.api/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+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.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " 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.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.
+
+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.
+
+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.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+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;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+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.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+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.
+
+4. COMMERCIAL DISTRIBUTION
+
+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
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") 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.
+
+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.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" 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.
+
+6. DISCLAIMER OF LIABILITY
+
+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.
+
+7. GENERAL
+
+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.
+
+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.
+
+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.
+
+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.
+
+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.
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.common.ecview.api/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1c84445
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.common.ecview.api
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.common.ecview.api;singleton:=true
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.vaaclipse.common.ecview.api;version="0.9.0"
+Require-Bundle: org.eclipse.osbp.ecview.core.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.common.model
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/about.html b/org.eclipse.osbp.vaaclipse.common.ecview.api/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/about.ini b/org.eclipse.osbp.vaaclipse.common.ecview.api/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/about.mappings b/org.eclipse.osbp.vaaclipse.common.ecview.api/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/about.properties b/org.eclipse.osbp.vaaclipse.common.ecview.api/about.properties
new file mode 100644
index 0000000..7cc100b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.common.ecview.api
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/build.properties b/org.eclipse.osbp.vaaclipse.common.ecview.api/build.properties
new file mode 100644
index 0000000..051ae17
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ license.html,\
+ LICENSE.txt,\
+ epl-v10.html
+src.includes = about.properties, about.mappings, about.ini, about.html, license.html,\
+ LICENSE.txt,\
+ epl-v10.html
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/epl-v10.html b/org.eclipse.osbp.vaaclipse.common.ecview.api/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/license.html b/org.eclipse.osbp.vaaclipse.common.ecview.api/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.vaaclipse.common.ecview.api/pom.xml b/org.eclipse.osbp.vaaclipse.common.ecview.api/pom.xml
new file mode 100644
index 0000000..6d2f72f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/pom.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+ <artifactId>org.eclipse.osbp.vaaclipse.common.ecview.api</artifactId>
+ <build>
+ <sourceDirectory>src</sourceDirectory>
+ <plugins>
+ </plugins>
+ </build>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/src/org/eclipse/osbp/vaaclipse/common/ecview/api/IECViewContainer.java b/org.eclipse.osbp.vaaclipse.common.ecview.api/src/org/eclipse/osbp/vaaclipse/common/ecview/api/IECViewContainer.java
new file mode 100644
index 0000000..7b173d6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/src/org/eclipse/osbp/vaaclipse/common/ecview/api/IECViewContainer.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.common.ecview.api;
+
+import java.util.List;
+
+import org.eclipse.osbp.ecview.core.common.editpart.IViewEditpart;
+
+/**
+ * Keeps track of active ecview instances.
+ */
+public interface IECViewContainer {
+
+ /**
+ * Returns a list with all ECViews registered with this Vaaclipse session.
+ *
+ * @return
+ */
+ List<IViewEditpart> getECViews();
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.common.ecview.api/src/org/eclipse/osbp/vaaclipse/common/ecview/api/IECViewSessionHelper.java b/org.eclipse.osbp.vaaclipse.common.ecview.api/src/org/eclipse/osbp/vaaclipse/common/ecview/api/IECViewSessionHelper.java
new file mode 100644
index 0000000..389534e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.common.ecview.api/src/org/eclipse/osbp/vaaclipse/common/ecview/api/IECViewSessionHelper.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.common.ecview.api;
+
+import java.util.Map;
+
+/**
+ * Instances of this service need to be created in a Vaaclipse UI scoped manner.
+ * Every vaadin.UI will get its own instance.<br>
+ * So session and UI based information like locale, userName,... are available.
+ *
+ * @NoImplement by clients
+ */
+public interface IECViewSessionHelper {
+
+ /**
+ * Creates the basic properties required to setup a proper IViewContext in
+ * ECView.
+ *
+ * @return
+ */
+ public abstract Map<String, Object> createBasicProperties();
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.contributions/.project b/org.eclipse.osbp.vaaclipse.contributions/.project
new file mode 100644
index 0000000..3535a82
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse.contributions</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.contributions/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.contributions/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..df5e1f5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/META-INF/MANIFEST.MF
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.contributions
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Require-Bundle: org.eclipse.e4.ui.model.workbench;bundle-version="0.10.1",
+ org.eclipse.e4.ui.workbench;bundle-version="0.10.3",
+ org.eclipse.e4.core.di;bundle-version="1.1.0",
+ org.eclipse.e4.core.services;bundle-version="1.0.0",
+ org.eclipse.osgi.services;bundle-version="3.3.100",
+ org.eclipse.e4.core.contexts;bundle-version="1.1.0",
+ org.eclipse.core.expressions;bundle-version="3.4.401",
+ org.eclipse.osbp.vaaclipse.api;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.emf.ecore;bundle-version="2.9.0",
+ org.eclipse.e4.core.commands;bundle-version="0.10.2"
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.contributions;singleton:=true
+Import-Package: javax.inject;version="1.0.0",
+ javax.annotation
+Export-Package: org.eclipse.osbp.vaaclipse.contributions;version="0.9.0"
diff --git a/org.eclipse.osbp.vaaclipse.contributions/about.html b/org.eclipse.osbp.vaaclipse.contributions/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.contributions/about.ini b/org.eclipse.osbp.vaaclipse.contributions/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.contributions/about.mappings b/org.eclipse.osbp.vaaclipse.contributions/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.contributions/about.properties b/org.eclipse.osbp.vaaclipse.contributions/about.properties
new file mode 100644
index 0000000..9b05583
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.contributions
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.contributions/build.properties b/org.eclipse.osbp.vaaclipse.contributions/build.properties
new file mode 100644
index 0000000..4dc6f61
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ plugin.xml,\
+ epl-v10.html,\
+ license.html
+src.includes = about.properties, about.mappings, about.ini, about.html, epl-v10.html,\
+ license.html
diff --git a/org.eclipse.osbp.vaaclipse.contributions/epl-v10.html b/org.eclipse.osbp.vaaclipse.contributions/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.contributions/license.html b/org.eclipse.osbp.vaaclipse.contributions/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.vaaclipse.contributions/plugin.xml b/org.eclipse.osbp.vaaclipse.contributions/plugin.xml
new file mode 100644
index 0000000..b34a5cb
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/plugin.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ id="id1"
+ point="org.eclipse.e4.workbench.model">
+ <processor
+ beforefragment="true"
+ class="org.eclipse.osbp.vaaclipse.contributions.MenuContributionProcessor">
+ </processor>
+ </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.vaaclipse.contributions/pom.xml b/org.eclipse.osbp.vaaclipse.contributions/pom.xml
new file mode 100644
index 0000000..4390da4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.osbp.vaaclipse.contributions</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.contributions/src/org/eclipse/osbp/vaaclipse/contributions/ContributionRecord.java b/org.eclipse.osbp.vaaclipse.contributions/src/org/eclipse/osbp/vaaclipse/contributions/ContributionRecord.java
new file mode 100644
index 0000000..36c7f16
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/src/org/eclipse/osbp/vaaclipse/contributions/ContributionRecord.java
@@ -0,0 +1,339 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.contributions;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.expressions.Expression;
+import org.eclipse.core.expressions.ExpressionInfo;
+import org.eclipse.core.internal.expressions.OrExpression;
+import org.eclipse.e4.core.contexts.EclipseContextFactory;
+import org.eclipse.e4.core.contexts.IContextFunction;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.internal.workbench.ContributionsAnalyzer;
+import org.eclipse.e4.ui.model.application.ui.MCoreExpression;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MExpression;
+import org.eclipse.e4.ui.model.application.ui.impl.UiFactoryImpl;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenu;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuContribution;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuElement;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuSeparator;
+import org.eclipse.e4.core.commands.ExpressionContext;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+public class ContributionRecord {
+ public static final String FACTORY = "ContributionFactory"; //$NON-NLS-1$
+ static final String STATIC_CONTEXT = "ContributionFactoryContext"; //$NON-NLS-1$
+
+ MMenu menuModel;
+ MMenuContribution menuContribution;
+ ArrayList<MMenuElement> generatedElements = new ArrayList<MMenuElement>();
+ HashSet<MMenuElement> sharedElements = new HashSet<MMenuElement>();
+ MenuContributionProcessor renderer;
+ boolean isVisible = true;
+ private IEclipseContext infoContext;
+ private Runnable factoryDispose;
+
+ public ContributionRecord(MMenu menuModel, MMenuContribution contribution,
+ MenuContributionProcessor renderer) {
+ this.menuModel = menuModel;
+ this.menuContribution = contribution;
+ this.renderer = renderer;
+ }
+
+ public MMenuContribution getMenuContribution() {
+ return menuContribution;
+ }
+
+ /**
+ * Access to analyze for tests. For Looking, not touching!
+ *
+ * @return the shared elements collection
+ */
+ public Collection<MMenuElement> getSharedElements() {
+ return sharedElements;
+ }
+
+ /**
+ * Access to analyze for tests. For Looking, not touching!
+ *
+ * @return the generated elements collection
+ */
+ public Collection<MMenuElement> getGeneratedElements() {
+ return generatedElements;
+ }
+
+ /**
+ * @param context
+ */
+ public void updateVisibility(IEclipseContext context) {
+ ExpressionContext exprContext = new ExpressionContext(context);
+ updateIsVisible(exprContext);
+ HashSet<ContributionRecord> recentlyUpdated = new HashSet<ContributionRecord>();
+ recentlyUpdated.add(this);
+ for (MMenuElement item : generatedElements) {
+ boolean currentVisibility = computeVisibility(recentlyUpdated,
+ item, exprContext);
+ if (item.isVisible() != currentVisibility) {
+ item.setVisible(currentVisibility);
+ }
+ }
+ for (MMenuElement item : sharedElements) {
+ boolean currentVisibility = computeVisibility(recentlyUpdated,
+ item, exprContext);
+ if (item.isVisible() != currentVisibility) {
+ item.setVisible(currentVisibility);
+ }
+ }
+ }
+
+ public void collectInfo(ExpressionInfo info) {
+ ContributionsAnalyzer.collectInfo(info,
+ menuContribution.getVisibleWhen());
+ for (MMenuElement item : generatedElements) {
+ ContributionsAnalyzer.collectInfo(info, item.getVisibleWhen());
+ }
+ for (MMenuElement item : sharedElements) {
+ ContributionsAnalyzer.collectInfo(info, item.getVisibleWhen());
+ }
+ }
+
+ public void updateIsVisible(ExpressionContext exprContext) {
+ isVisible = ContributionsAnalyzer.isVisible(menuContribution,
+ exprContext);
+ }
+
+ public boolean computeVisibility(
+ HashSet<ContributionRecord> recentlyUpdated, MMenuElement item,
+ ExpressionContext exprContext) {
+ boolean currentVisibility = isVisible;
+ if (item instanceof MMenu || item instanceof MMenuSeparator) {
+ ArrayList<ContributionRecord> list = renderer.getList(item);
+ if (list != null) {
+ Iterator<ContributionRecord> cr = list.iterator();
+ while (!currentVisibility && cr.hasNext()) {
+ ContributionRecord rec = cr.next();
+ if (!recentlyUpdated.contains(rec)) {
+ rec.updateIsVisible(exprContext);
+ recentlyUpdated.add(rec);
+ }
+ currentVisibility |= rec.isVisible;
+ }
+ }
+ }
+ if (currentVisibility
+ && item.getVisibleWhen() instanceof MCoreExpression) {
+ boolean val = ContributionsAnalyzer.isVisible(
+ (MCoreExpression) item.getVisibleWhen(), exprContext);
+ currentVisibility = val;
+ }
+ return currentVisibility;
+ }
+
+ private Expression getExpression(MExpression expression) {
+ if (expression instanceof MCoreExpression) {
+ Object coreExpression = ((MCoreExpression) expression)
+ .getCoreExpression();
+ return coreExpression instanceof Expression ? (Expression) coreExpression
+ : null;
+ }
+ return null;
+ }
+
+ private MExpression merge(MExpression expressionA, MExpression expressionB) {
+ Expression coreExpressionA = getExpression(expressionA);
+ Expression coreExpressionB = getExpression(expressionB);
+ if (coreExpressionA == null || coreExpressionB == null) {
+ // implied to always be visible
+ return null;
+ }
+
+ // combine the two expressions
+ OrExpression expression = new OrExpression();
+ expression.add(coreExpressionA);
+ expression.add(coreExpressionB);
+
+ MCoreExpression exp = UiFactoryImpl.eINSTANCE.createCoreExpression();
+ exp.setCoreExpressionId("programmatic.value"); //$NON-NLS-1$
+ exp.setCoreExpression(expression);
+ return exp;
+ }
+
+ public boolean mergeIntoModel() {
+ int idx = getIndex(menuModel, menuContribution.getPositionInParent());
+ if (idx == -1) {
+ return false;
+ }
+
+ final List<MMenuElement> copyElements;
+ if (menuContribution.getTransientData().get(FACTORY) != null) {
+ copyElements = mergeFactoryIntoModel();
+ } else {
+ copyElements = new ArrayList<MMenuElement>();
+ for (MMenuElement item : menuContribution.getChildren()) {
+ MMenuElement copy = (MMenuElement) EcoreUtil
+ .copy((EObject) item);
+ copyElements.add(copy);
+ }
+ }
+
+ for (MMenuElement copy : copyElements) {
+ if (copy instanceof MMenu) {
+ MMenu shared = findExistingMenu(copy.getElementId());
+ if (shared == null) {
+ shared = (MMenu) copy;
+ menuModel.getChildren().add(idx++, copy);
+ } else {
+ shared.setVisibleWhen(merge(
+ menuContribution.getVisibleWhen(),
+ shared.getVisibleWhen()));
+ copy = shared;
+ }
+ sharedElements.add(shared);
+ } else if (copy instanceof MMenuSeparator) {
+ MMenuSeparator shared = findExistingSeparator(copy
+ .getElementId());
+ if (shared == null) {
+ shared = (MMenuSeparator) copy;
+ menuModel.getChildren().add(idx++, copy);
+ } else {
+ copy = shared;
+ }
+ sharedElements.add(shared);
+ } else {
+ generatedElements.add(copy);
+ menuModel.getChildren().add(idx++, copy);
+ }
+ if (copy instanceof MMenu || copy instanceof MMenuSeparator) {
+ ArrayList<ContributionRecord> array = renderer.getList(copy);
+ array.add(this);
+ }
+ }
+ return true;
+ }
+
+ /**
+ * @return
+ */
+ private List<MMenuElement> mergeFactoryIntoModel() {
+ Object obj = menuContribution.getTransientData().get(FACTORY);
+ if (!(obj instanceof IContextFunction)) {
+ return Collections.EMPTY_LIST;
+ }
+ IEclipseContext staticContext = getStaticContext();
+ staticContext.remove(List.class);
+ // TODO fp
+ factoryDispose = (Runnable) ((IContextFunction) obj).compute(
+ staticContext, null);
+ return staticContext.get(List.class);
+ }
+
+ private IEclipseContext getStaticContext() {
+ if (infoContext == null) {
+ IEclipseContext parentContext = renderer.getContext(menuModel);
+ if (parentContext != null) {
+ infoContext = parentContext.createChild(STATIC_CONTEXT);
+ } else {
+ infoContext = EclipseContextFactory.create(STATIC_CONTEXT);
+ }
+ ContributionsAnalyzer.populateModelInterfaces(menuModel,
+ infoContext, menuModel.getClass().getInterfaces());
+ infoContext.set(MenuContributionProcessor.class, renderer);
+ }
+ return infoContext;
+ }
+
+ MMenu findExistingMenu(String id) {
+ if (id == null) {
+ return null;
+ }
+ for (MMenuElement item : menuModel.getChildren()) {
+ if (item instanceof MMenu && id.equals(item.getElementId())) {
+ return (MMenu) item;
+ }
+ }
+ return null;
+ }
+
+ MMenuSeparator findExistingSeparator(String id) {
+ if (id == null) {
+ return null;
+ }
+ for (MMenuElement item : menuModel.getChildren()) {
+ if (item instanceof MMenuSeparator
+ && id.equals(item.getElementId())) {
+ return (MMenuSeparator) item;
+ }
+ }
+ return null;
+ }
+
+ public void dispose() {
+ for (MMenuElement copy : generatedElements) {
+ menuModel.getChildren().remove(copy);
+ }
+ for (MMenuElement shared : sharedElements) {
+ ArrayList<ContributionRecord> array = renderer.getList(shared);
+ array.remove(this);
+ if (array.isEmpty()) {
+ menuModel.getChildren().remove(shared);
+ }
+ }
+ if (factoryDispose != null) {
+ factoryDispose.run();
+ factoryDispose = null;
+ }
+ }
+
+ private static int getIndex(MElementContainer<?> menuModel,
+ String positionInParent) {
+ String id = null;
+ String modifier = null;
+ if (positionInParent != null && positionInParent.length() > 0) {
+ String[] array = positionInParent.split("="); //$NON-NLS-1$
+ modifier = array[0];
+ id = array[1];
+ }
+ if (id == null) {
+ return menuModel.getChildren().size();
+ }
+
+ int idx = 0;
+ int size = menuModel.getChildren().size();
+ while (idx < size) {
+ if (id.equals(menuModel.getChildren().get(idx).getElementId())) {
+ if ("after".equals(modifier)) { //$NON-NLS-1$
+ idx++;
+ } else if ("endof".equals(modifier)) { //$NON-NLS-1$
+ // Skip current menu item
+ idx++;
+
+ // Skip all menu items until next MenuSeparator is found
+ while (idx < size
+ && !(menuModel.getChildren().get(idx) instanceof MMenuSeparator && menuModel
+ .getChildren().get(idx).getElementId() != null)) {
+ idx++;
+ }
+ }
+ return idx;
+ }
+ idx++;
+ }
+ return id.equals("additions") ? menuModel.getChildren().size() : -1; //$NON-NLS-1$
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.contributions/src/org/eclipse/osbp/vaaclipse/contributions/MenuContributionProcessor.java b/org.eclipse.osbp.vaaclipse.contributions/src/org/eclipse/osbp/vaaclipse/contributions/MenuContributionProcessor.java
new file mode 100644
index 0000000..4a1e5fc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.contributions/src/org/eclipse/osbp/vaaclipse/contributions/MenuContributionProcessor.java
@@ -0,0 +1,164 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.contributions;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.contexts.RunAndTrack;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.internal.workbench.ContributionsAnalyzer;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MContext;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenu;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuContribution;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuElement;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuSeparator;
+import org.eclipse.e4.ui.model.application.ui.menu.MPopupMenu;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.osbp.vaaclipse.api.MenuContributionService;
+
+/**
+ * @author rushan
+ *
+ */
+public class MenuContributionProcessor implements MenuContributionService {
+ @Inject
+ MApplication application;
+ @Inject
+ EModelService modelService;
+
+ private Map<MMenuElement, ArrayList<ContributionRecord>> sharedElementToRecord = new HashMap<MMenuElement, ArrayList<ContributionRecord>>();
+
+ @Execute
+ public void start(IEclipseContext context) {
+ context.set(MenuContributionService.class, this);
+ }
+
+ @Override
+ public void addContributions(MMenu menu) {
+ processContributions(menu, menu instanceof MPopupMenu);
+ }
+
+ /**
+ * @param menuModel
+ * @param isMenuBar
+ * @param isPopup
+ */
+ private void processContributions(MMenu menuModel, boolean isPopup) {
+ if (menuModel.getElementId() == null) {
+ return;
+ }
+ final ArrayList<MMenuContribution> toContribute = new ArrayList<MMenuContribution>();
+ ContributionsAnalyzer.XXXgatherMenuContributions(menuModel,
+ application.getMenuContributions(), menuModel.getElementId(),
+ toContribute, null, isPopup);
+ generateContributions(menuModel, toContribute);
+ // for (MMenuElement element : menuModel.getChildren()) {
+ // if (element instanceof MMenu) {
+ // processContributions((MMenu) element, isPopup);
+ // }
+ // }
+ }
+
+ /**
+ * @param menuModel
+ * @param toContribute
+ */
+ private void generateContributions(MMenu menuModel,
+ ArrayList<MMenuContribution> toContribute) {
+ HashSet<String> existingMenuIds = new HashSet<String>();
+ HashSet<String> existingSeparatorNames = new HashSet<String>();
+ for (MMenuElement child : menuModel.getChildren()) {
+ String elementId = child.getElementId();
+ if (child instanceof MMenu && elementId != null) {
+ existingMenuIds.add(elementId);
+ } else if (child instanceof MMenuSeparator && elementId != null) {
+ existingSeparatorNames.add(elementId);
+ }
+ }
+
+ boolean done = toContribute.size() == 0;
+ while (!done) {
+ ArrayList<MMenuContribution> curList = new ArrayList<MMenuContribution>(
+ toContribute);
+ int retryCount = toContribute.size();
+ toContribute.clear();
+
+ for (MMenuContribution menuContribution : curList) {
+ if (!processAddition(menuModel, menuContribution,
+ existingMenuIds, existingSeparatorNames)) {
+ toContribute.add(menuContribution);
+ }
+ }
+
+ // We're done if the retryList is now empty (everything done) or
+ // if the list hasn't changed at all (no hope)
+ done = (toContribute.size() == 0)
+ || (toContribute.size() == retryCount);
+ }
+ }
+
+ /**
+ * @param menuModel
+ * @param manager
+ * @param menuContribution
+ * @return true if the menuContribution was processed
+ */
+ private boolean processAddition(MMenu menuModel,
+ MMenuContribution menuContribution,
+ final HashSet<String> existingMenuIds,
+ HashSet<String> existingSeparatorNames) {
+ final ContributionRecord record = new ContributionRecord(menuModel,
+ menuContribution, this);
+ if (!record.mergeIntoModel()) {
+ return false;
+ }
+
+ final IEclipseContext parentContext = modelService
+ .getContainingContext(menuModel);
+ parentContext.runAndTrack(new RunAndTrack() {
+ @Override
+ public boolean changed(IEclipseContext context) {
+ record.updateVisibility(parentContext.getActiveLeaf());
+ return true;
+ }
+ });
+
+ return true;
+ }
+
+ ArrayList<ContributionRecord> getList(MMenuElement item) {
+ ArrayList<ContributionRecord> tmp = sharedElementToRecord.get(item);
+ if (tmp == null) {
+ tmp = new ArrayList<ContributionRecord>();
+ sharedElementToRecord.put(item, tmp);
+ }
+ return tmp;
+ }
+
+ public void removeContributions(MMenu menu) {
+
+ }
+
+ IEclipseContext getContext(MUIElement element) {
+ if (element instanceof MContext) {
+ return ((MContext) element).getContext();
+ }
+ return modelService.getContainingContext(element);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf.addon/.project b/org.eclipse.osbp.vaaclipse.emf.addon/.project
new file mode 100644
index 0000000..8306301
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse.emf.addon</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.emf.addon/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.emf.addon/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..be4be15
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.emf.addon
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.emf.addon
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: javax.annotation;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.osbp.vaadin.emf;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.vaaclipse.emf;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.e4.core.contexts,
+ org.eclipse.e4.core.di;bundle-version="1.4.0",
+ org.eclipse.osbp.vaaclipse.common.ecview.api;bundle-version="[0.9.0,0.10.0)"
+Import-Package: javax.inject,
+ org.slf4j;version="1.7.2"
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.osbp.vaaclipse.addon;version="0.9.0"
diff --git a/org.eclipse.osbp.vaaclipse.emf.addon/about.html b/org.eclipse.osbp.vaaclipse.emf.addon/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.emf.addon/about.ini b/org.eclipse.osbp.vaaclipse.emf.addon/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.emf.addon/about.mappings b/org.eclipse.osbp.vaaclipse.emf.addon/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.emf.addon/about.properties b/org.eclipse.osbp.vaaclipse.emf.addon/about.properties
new file mode 100644
index 0000000..76c4354
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.emf.addon
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.emf.addon/build.properties b/org.eclipse.osbp.vaaclipse.emf.addon/build.properties
new file mode 100644
index 0000000..368929f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ license.html
+src.includes = about.properties, about.mappings, about.ini, about.html, license.html
diff --git a/org.eclipse.osbp.vaaclipse.emf.addon/epl-v10.html b/org.eclipse.osbp.vaaclipse.emf.addon/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.emf.addon/license.html b/org.eclipse.osbp.vaaclipse.emf.addon/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.vaaclipse.emf.addon/pom.xml b/org.eclipse.osbp.vaaclipse.emf.addon/pom.xml
new file mode 100644
index 0000000..0223ae7
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.osbp.vaaclipse.emf.addon</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.emf.addon/src/org/eclipse/osbp/vaaclipse/addon/EMFAddon.java b/org.eclipse.osbp.vaaclipse.emf.addon/src/org/eclipse/osbp/vaaclipse/addon/EMFAddon.java
new file mode 100644
index 0000000..438b781
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.addon/src/org/eclipse/osbp/vaaclipse/addon/EMFAddon.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.addon;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.osbp.vaaclipse.common.ecview.api.IECViewContainer;
+import org.eclipse.osbp.vaaclipse.emf.ModeledUiClickController;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+
+/**
+ * Activates the whole EMF modeling addon and ensures, that require parts are
+ * injected and setup properly.
+ */
+@SuppressWarnings("restriction")
+public class EMFAddon {
+
+ @Inject
+ private IEclipseContext context;
+
+ @PostConstruct
+ protected void setup() {
+
+ context.get(IModelingContext.class);
+ context.get(IECViewContainer.class);
+
+ ModeledUiClickController controller = ContextInjectionFactory.make(
+ ModeledUiClickController.class, context);
+ context.set(ModeledUiClickController.class, controller);
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/.project b/org.eclipse.osbp.vaaclipse.emf.api/.project
new file mode 100644
index 0000000..0a80774
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse.emf.api</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.emf.api/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..9c5b36d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.emf.api
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.emf.api
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.e4.ui.model.workbench,
+ org.eclipse.emf.ecore,
+ org.eclipse.e4.core.contexts,
+ org.eclipse.osbp.vaadin.emf.api;bundle-version="[0.9.0,0.10.0)";visibility:=reexport
+Export-Package: org.eclipse.osbp.vaaclipse.emf.api.dialog;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.emf.api.perspective;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.emf.api.view;version="0.9.0"
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/about.html b/org.eclipse.osbp.vaaclipse.emf.api/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/about.ini b/org.eclipse.osbp.vaaclipse.emf.api/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/about.mappings b/org.eclipse.osbp.vaaclipse.emf.api/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/about.properties b/org.eclipse.osbp.vaaclipse.emf.api/about.properties
new file mode 100644
index 0000000..6fa5802
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.emf.api
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/build.properties b/org.eclipse.osbp.vaaclipse.emf.api/build.properties
new file mode 100644
index 0000000..368929f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ license.html
+src.includes = about.properties, about.mappings, about.ini, about.html, license.html
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/epl-v10.html b/org.eclipse.osbp.vaaclipse.emf.api/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/license.html b/org.eclipse.osbp.vaaclipse.emf.api/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.vaaclipse.emf.api/pom.xml b/org.eclipse.osbp.vaaclipse.emf.api/pom.xml
new file mode 100644
index 0000000..953f799
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.osbp.vaaclipse.emf.api</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/src/org/eclipse/osbp/vaaclipse/emf/api/dialog/IOpenModelEditDialogService.java b/org.eclipse.osbp.vaaclipse.emf.api/src/org/eclipse/osbp/vaaclipse/emf/api/dialog/IOpenModelEditDialogService.java
new file mode 100644
index 0000000..97c1789
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/src/org/eclipse/osbp/vaaclipse/emf/api/dialog/IOpenModelEditDialogService.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.emf.api.dialog;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ *
+ * @NoImplementByClients use {@link Participant}
+ */
+public interface IOpenModelEditDialogService {
+
+ /**
+ * The advanced properties dialog. Also advanced properties are being shown.
+ */
+ public static String TYPE_ADVANCED = "advanced";
+
+ /**
+ * The simple properties dialog. Only few properties are being shown.
+ */
+ public static String TYPE_SIMPLE = "simple";
+
+ /**
+ * Opens an dialog to edit the given modelObjects properties.
+ *
+ * @param modelObject
+ * @param type
+ * the type the dialog to be opened
+ * @param context
+ */
+ void openEditDialog(EObject modelObject, String type,
+ IEclipseContext context);
+
+ interface Participant {
+
+ /**
+ * Opens an dialog to edit the given modelObjects properties.
+ *
+ * @param modelObject
+ * @param type
+ * the type the dialog to be opened
+ * @param context
+ */
+ void openEditDialog(EObject modelObject, String type,
+ IEclipseContext context);
+
+ /**
+ * Returns true, if this instance handles the given modelObject.
+ *
+ * @param modelObject
+ * @param type
+ * the type the dialog to be opened
+ * @param context
+ */
+ boolean isFor(EObject modelObject, String type, IEclipseContext context);
+
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/src/org/eclipse/osbp/vaaclipse/emf/api/perspective/IPerspectiveLayoutProvider.java b/org.eclipse.osbp.vaaclipse.emf.api/src/org/eclipse/osbp/vaaclipse/emf/api/perspective/IPerspectiveLayoutProvider.java
new file mode 100644
index 0000000..54da783
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/src/org/eclipse/osbp/vaaclipse/emf/api/perspective/IPerspectiveLayoutProvider.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.emf.api.perspective;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+
+/**
+ * Provides layouts for a given perspective.
+ */
+public interface IPerspectiveLayoutProvider {
+
+ /**
+ * Returns the description for the provider.
+ *
+ * @return
+ */
+ String getDescription(IEclipseContext context);
+
+ /**
+ * Is called to layout the given perspective. At this point in time, the
+ * perspective is not added to the stack. You do not have to do so. It will
+ * be done automatically if the perspective was added.
+ *
+ * @param context
+ * @param stack
+ * @param perspective
+ */
+ void layout(IEclipseContext context, MPerspective perspective);
+
+ /**
+ * This method is called after the perspective has been added to the stack.
+ *
+ * @param context
+ * @param perspective
+ */
+ void postAdded(IEclipseContext context, MPerspective perspective);
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf.api/src/org/eclipse/osbp/vaaclipse/emf/api/view/IConstants.java b/org.eclipse.osbp.vaaclipse.emf.api/src/org/eclipse/osbp/vaaclipse/emf/api/view/IConstants.java
new file mode 100644
index 0000000..024d276
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf.api/src/org/eclipse/osbp/vaaclipse/emf/api/view/IConstants.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.emf.api.view;
+
+import org.eclipse.osbp.vaadin.emf.api.IModelingConstants;
+
+public interface IConstants extends IModelingConstants {
+
+ /**
+ * This topic is used send an EObject as an input to the tree viewer.
+ */
+ public static String TOPIC__TREE_INPUT_IN = "osbee/vaaclipse/emf/tree/input";
+
+ /**
+ * This topic is used send an EObject that was selected by the tree viewer.
+ */
+ public static String TOPIC__TREE_SELECTION_OUT = "osbee/vaaclipse/emf/tree/selection";
+
+ /**
+ * Tag used to mark all designer parts in the e4 application model.
+ */
+ public static String TAG__DESIGNER_PARTS = "designer:part";
+
+ /**
+ * Tag used to mark designer parts which should only become rendered if the
+ * design mode is active.
+ */
+ public static String TAG__DESIGNER_AUTO_VISIBLE = "designer:autoVisible";
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf/.project b/org.eclipse.osbp.vaaclipse.emf/.project
new file mode 100644
index 0000000..fb45b14
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/.project
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse.emf</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.vaadin.integration.eclipse.addonStylesBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.emf/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.emf/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..7c0ebb7
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/META-INF/MANIFEST.MF
@@ -0,0 +1,34 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.emf
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.emf
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Service-Component: OSGI-INF/org.eclipse.osbp.vaaclipse.emf.ModelingContextContextFunction.xml,
+ OSGI-INF/org.eclipse.osbp.vaaclipse.emf.dialog.OpenModelEditDialog.xml
+Require-Bundle: org.eclipse.osbp.vaaclipse.emf.api;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.eclipse.e4.core.contexts,
+ org.eclipse.osbp.vaaclipse.publicapi;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.e4.core.di,
+ org.eclipse.emf.edit,
+ org.eclipse.e4.ui.workbench,
+ org.eclipse.e4.ui.model.workbench,
+ com.vaadin.server;bundle-version="7.5.7",
+ org.eclipse.e4.core.services,
+ org.eclipse.osbp.vaadin.emf;bundle-version="[0.9.0,0.10.0)",
+ javax.annotation;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.osbp.runtime.web.vaadin.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.xtext.builder.types.bundles;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.runtime.designer.api
+Import-Package: javax.inject,
+ org.osgi.service.component;version="1.2.2",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.osgi.service.event;version="1.3.0",
+ org.slf4j;version="1.7.2"
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.osbp.vaaclipse.emf;x-internal:=true;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.emf.handler;x-internal:=true;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.emf.parts;x-internal:=true;version="0.9.0"
diff --git a/org.eclipse.osbp.vaaclipse.emf/OSGI-INF/org.eclipse.osbp.vaaclipse.emf.ModelingContextContextFunction.xml b/org.eclipse.osbp.vaaclipse.emf/OSGI-INF/org.eclipse.osbp.vaaclipse.emf.ModelingContextContextFunction.xml
new file mode 100644
index 0000000..2aa541f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/OSGI-INF/org.eclipse.osbp.vaaclipse.emf.ModelingContextContextFunction.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.vaaclipse.emf.ModelingContextContextFunction">
+ <property name="service.context.key" value="org.eclipse.osbp.vaadin.emf.api.IModelingContext"/>
+ <service>
+ <provide interface="org.eclipse.e4.core.contexts.IContextFunction"/>
+ </service>
+ <implementation class="org.eclipse.osbp.vaaclipse.emf.ModelingContextContextFunction"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.emf/OSGI-INF/org.eclipse.osbp.vaaclipse.emf.dialog.OpenModelEditDialog.xml b/org.eclipse.osbp.vaaclipse.emf/OSGI-INF/org.eclipse.osbp.vaaclipse.emf.dialog.OpenModelEditDialog.xml
new file mode 100644
index 0000000..e040f4c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/OSGI-INF/org.eclipse.osbp.vaaclipse.emf.dialog.OpenModelEditDialog.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.vaaclipse.emf.dialog.OpenModelEditDialog">
+ <service>
+ <provide interface="org.eclipse.osbp.vaaclipse.emf.api.dialog.IOpenModelEditDialogService"/>
+ </service>
+ <reference bind="addParticipant" cardinality="0..n" interface="org.eclipse.osbp.vaaclipse.emf.api.dialog.IOpenModelEditDialogService$Participant" name="Participant" policy="dynamic" unbind="removeParticipant"/>
+ <implementation class="org.eclipse.osbp.vaaclipse.emf.dialog.OpenModelEditDialog"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.emf/about.html b/org.eclipse.osbp.vaaclipse.emf/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.emf/about.ini b/org.eclipse.osbp.vaaclipse.emf/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.emf/about.mappings b/org.eclipse.osbp.vaaclipse.emf/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.emf/about.properties b/org.eclipse.osbp.vaaclipse.emf/about.properties
new file mode 100644
index 0000000..f4cf447
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.emf
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.emf/build.properties b/org.eclipse.osbp.vaaclipse.emf/build.properties
new file mode 100644
index 0000000..5b0d2fa
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = bin/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ OSGI-INF/org.eclipse.osbp.vaaclipse.emf.ModelingContextContextFunction.xml,\
+ OSGI-INF/org.eclipse.osbp.vaaclipse.emf.dialog.OpenModelEditDialog.xml,\
+ epl-v10.html,\
+ license.html
+src.includes = about.properties, about.mappings, about.ini, about.html, license.html,\
+ epl-v10.html
diff --git a/org.eclipse.osbp.vaaclipse.emf/epl-v10.html b/org.eclipse.osbp.vaaclipse.emf/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.emf/license.html b/org.eclipse.osbp.vaaclipse.emf/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.vaaclipse.emf/pom.xml b/org.eclipse.osbp.vaaclipse.emf/pom.xml
new file mode 100644
index 0000000..14e5ac6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.osbp.vaaclipse.emf</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/ModeledUiClickController.java b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/ModeledUiClickController.java
new file mode 100644
index 0000000..93fffea
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/ModeledUiClickController.java
@@ -0,0 +1,197 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.emf;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.Active;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.vaaclipse.emf.api.view.IConstants;
+import org.eclipse.osbp.vaadin.emf.api.EmfModelElementClickEvent;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+import org.eclipse.osbp.vaaclipse.publicapi.events.IWidgetModelAssociations;
+import org.eclipse.osbp.vaaclipse.publicapi.events.VaaclipseUiEvents;
+
+import com.vaadin.event.LayoutEvents;
+import com.vaadin.ui.AbstractOrderedLayout;
+import com.vaadin.ui.Component;
+
+@SuppressWarnings("serial")
+public class ModeledUiClickController implements
+ LayoutEvents.LayoutClickListener, EventHandler {
+
+ @Inject
+ private IEclipseContext context;
+
+ @Inject
+ private IEventBroker eventBroker;
+
+ private boolean enabled;
+
+ private AbstractOrderedLayout content;
+
+ @PostConstruct
+ protected void setup() {
+ }
+
+ @Inject
+ protected void activate(@Active @Optional MTrimmedWindow window) {
+ if (content != null) {
+ return;
+ }
+
+ if (window != null) {
+ content = (AbstractOrderedLayout) window.getContext().get(
+ "rootLayoutClickNotifier");
+ }
+
+ if (content != null) {
+ setEnabled(true);
+ }
+ }
+
+ public void setEnabled(boolean value) {
+ if (content == null) {
+ return;
+ }
+ this.enabled = value;
+ if (enabled) {
+ content.addLayoutClickListener(this);
+
+ // e4 ui model
+ eventBroker.subscribe(
+ UIEvents.ElementContainer.TOPIC_SELECTEDELEMENT, this);
+ eventBroker.subscribe(UIEvents.Item.TOPIC_SELECTED, this);
+ eventBroker.subscribe(VaaclipseUiEvents.Item.TOPIC_EXECUTED, this);
+
+ } else {
+ if (content != null) {
+ content.removeLayoutClickListener(this);
+ content = null;
+ }
+
+ eventBroker.unsubscribe(this);
+ }
+ }
+
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ @Override
+ public void layoutClick(LayoutEvents.LayoutClickEvent event) {
+ Component clickedUI = event.getClickedComponent();
+ EObject clickedModel = context.get(IWidgetModelAssociations.class)
+ .getElement(clickedUI);
+
+ if (clickedModel == null) {
+ return;
+ }
+
+ // if designer parts where clicked, then do not send event
+ if (!isDesignerPart(clickedModel)) {
+ eventBroker.send(IConstants.TOPIC__ELEMENT_CLICKED,
+ new EmfModelElementClickEvent(clickedUI,
+ (EObject) clickedModel));
+ }
+ }
+
+ @PreDestroy
+ protected void destroy() {
+ if (isEnabled()) {
+ setEnabled(false);
+ }
+ context = null;
+ eventBroker = null;
+ content = null;
+ }
+
+ @Override
+ public void handleEvent(Event event) {
+
+ // if a perspective was selected, we need to send a layoutclick event
+ //
+ if (event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MPerspectiveStack) {
+ // events from e4 application model
+ //
+ String type = (String) event.getProperty(UIEvents.EventTags.TYPE);
+ if (UIEvents.EventTypes.SET.equals(type)
+ && event.getProperty(UIEvents.EventTags.ATTNAME).equals(
+ "selectedElement")) {
+ MUIElement newValue = (MUIElement) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+ // if designer parts where clicked, then do not send event
+ if (!isDesignerPart((EObject) newValue)) {
+ Object widget = context.get(IWidgetModelAssociations.class)
+ .getWidget((EObject) newValue);
+ eventBroker.send(IConstants.TOPIC__ELEMENT_CLICKED,
+ new EmfModelElementClickEvent(widget,
+ (EObject) newValue));
+ }
+ }
+ } else if (event.getTopic().endsWith(
+ VaaclipseUiEvents.Item.TOPIC_EXECUTED)) {
+ // events from e4 application model -> executed items
+ //
+ MUIElement item = (MUIElement) event.getProperty(IEventBroker.DATA);
+ // if designer parts where clicked, then do not send event
+ if (!isDesignerPart((EObject) item)) {
+ Object widget = context.get(IWidgetModelAssociations.class)
+ .getWidget((EObject) item);
+ eventBroker.send(IConstants.TOPIC__ELEMENT_CLICKED,
+ new EmfModelElementClickEvent(widget, (EObject) item));
+ }
+ }
+ }
+
+ /**
+ * Check if the model or its parent up to part or sashContainer have the tag
+ * "designerPart".
+ *
+ * @param element
+ * @return
+ */
+ private boolean isDesignerPart(EObject element) {
+ if (element == null) {
+ return false;
+ }
+
+ if (!(element instanceof MUIElement)) {
+ return false;
+ }
+
+ MUIElement uiElement = (MUIElement) element;
+ if (element instanceof MPart || element instanceof MPartSashContainer) {
+ // do not check parents
+ return uiElement.getTags().contains(IConstants.TAG__DESIGNER_PARTS);
+ }
+ if (uiElement.getTags().contains(IConstants.TAG__DESIGNER_PARTS)) {
+ // it is designer part
+ return false;
+ } else {
+ // check up the parent until part or sashcontainer reached
+ EObject parent = ((EObject) element).eContainer();
+ return isDesignerPart(parent);
+ }
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/ModelingContext.java b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/ModelingContext.java
new file mode 100644
index 0000000..0854c6f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/ModelingContext.java
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.emf;
+
+import java.util.Collections;
+import java.util.List;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.eclipse.osbp.vaaclipse.publicapi.events.IWidgetModelAssociations;
+
+public class ModelingContext implements IModelingContext {
+
+ @Inject
+ private IWidgetModelAssociations uiAssociation;
+
+ @Inject
+ private MApplication application;
+
+ private AdapterFactoryEditingDomain domain;
+
+ private boolean designMode;
+
+ private CustomCommandStack commandStack;
+
+ @PostConstruct
+ protected void setup() {
+ commandStack = new CustomCommandStack();
+ domain = new AdapterFactoryEditingDomain(new ComposedAdapterFactory(
+ ComposedAdapterFactory.Descriptor.Registry.INSTANCE),
+ commandStack);
+
+ // register the domain in the context
+ application.getContext().set(EditingDomain.class, domain);
+ }
+
+ @Override
+ public void loadPerspective(URI uri) {
+ domain.loadResource(uri.toString());
+ }
+
+ @Override
+ public void setPerspective(URI uri) {
+ domain.loadResource(uri.toString());
+ }
+
+ @Override
+ public EditingDomain getEditingDomain() {
+ return domain;
+ }
+
+ @PreDestroy
+ protected void destroy() {
+ // register the domain in the context
+ application.getContext().remove(EditingDomain.class);
+ domain = null;
+ }
+
+ @Override
+ public AdapterFactory getAdapterFactory() {
+ return domain.getAdapterFactory();
+ }
+
+ @Override
+ public CommandStack getCommandStack() {
+ return commandStack;
+ }
+
+ public void persist(URI uri, EObject eObject) {
+
+ }
+
+ public EObject getModelForUi(Object component) {
+ return uiAssociation.getElement(component);
+ }
+
+ @Override
+ public boolean isDesignMode() {
+ return designMode;
+ }
+
+ @Override
+ public void setDesignMode(boolean value) {
+ this.designMode = value;
+ }
+
+ public static class CustomCommandStack extends BasicCommandStack implements
+ IModelingContext.CommandStack {
+ @Override
+ public List<Command> getAllCommands() {
+ return Collections.unmodifiableList(commandList);
+ }
+
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/ModelingContextContextFunction.java b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/ModelingContextContextFunction.java
new file mode 100644
index 0000000..65a7d99
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/ModelingContextContextFunction.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+ package org.eclipse.osbp.vaaclipse.emf;
+
+import org.eclipse.e4.core.contexts.ContextFunction;
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.osgi.service.component.annotations.Component;
+
+@Component(service = org.eclipse.e4.core.contexts.IContextFunction.class, property = { "service.context.key=org.eclipse.osbp.vaadin.emf.api.IModelingContext" })
+public class ModelingContextContextFunction extends ContextFunction {
+
+ @Override
+ public Object compute(IEclipseContext context, String contextKey) {
+ // add the new object to the application context
+ MApplication application = context.get(MApplication.class);
+ IEclipseContext appCtx = application.getContext();
+
+ IModelingContext modelingContext = ContextInjectionFactory.make(
+ ModelingContext.class, appCtx);
+ appCtx.set(IModelingContext.class, modelingContext);
+ return modelingContext;
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/dialog/OpenModelEditDialog.java b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/dialog/OpenModelEditDialog.java
new file mode 100644
index 0000000..eb1d0cb
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/dialog/OpenModelEditDialog.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.emf.dialog;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.vaaclipse.emf.api.dialog.IOpenModelEditDialogService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.ReferencePolicy;
+
+@Component
+public class OpenModelEditDialog implements IOpenModelEditDialogService {
+
+ private Set<Participant> participants = Collections
+ .synchronizedSet(new HashSet<Participant>());
+
+ @Override
+ public void openEditDialog(EObject modelObject, String type,
+ IEclipseContext context) {
+ synchronized (participants) {
+ for (Participant participant : participants) {
+ if (participant.isFor(modelObject, type, context)) {
+ participant.openEditDialog(modelObject, type, context);
+ }
+ }
+ }
+ }
+
+ /**
+ * Called by OSGi-DS
+ *
+ * @param participant
+ */
+ @Reference(cardinality = ReferenceCardinality.MULTIPLE, policy = ReferencePolicy.DYNAMIC)
+ protected void addParticipant(Participant participant) {
+ participants.add(participant);
+ }
+
+ protected void removeParticipant(Participant participant) {
+ participants.remove(participant);
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/handler/EmfTreeViewLockHandler.java b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/handler/EmfTreeViewLockHandler.java
new file mode 100644
index 0000000..8de4161
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/handler/EmfTreeViewLockHandler.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.emf.handler;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.osbp.vaaclipse.emf.parts.EmfModelTreePart;
+
+/**
+ * This handler shows the previous EObject in the tree viewer. Will show
+ * eObject.eContainer().
+ */
+public class EmfTreeViewLockHandler {
+
+ @Execute
+ public void execute(MPart part) {
+ Object object = part.getObject();
+ if (object != null) {
+ IEclipseContext childContext = part.getContext().createChild();
+ childContext.set(EmfModelTreePart.EVENT_TYPE_NAME,
+ EmfModelTreePart.EventType.LOCK);
+ ContextInjectionFactory.invoke(object, Execute.class, childContext);
+ }
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/handler/EmfTreeViewPreviousElementHandler.java b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/handler/EmfTreeViewPreviousElementHandler.java
new file mode 100644
index 0000000..f139920
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/handler/EmfTreeViewPreviousElementHandler.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.emf.handler;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.osbp.vaaclipse.emf.parts.EmfModelTreePart;
+
+/**
+ * This handler shows the previous EObject in the tree viewer. Will show
+ * eObject.eContainer().
+ */
+public class EmfTreeViewPreviousElementHandler {
+
+ @Execute
+ public void execute(MPart part) {
+ Object object = part.getObject();
+ if (object != null) {
+ IEclipseContext childContext = part.getContext().createChild();
+ childContext.set(EmfModelTreePart.EVENT_TYPE_NAME,
+ EmfModelTreePart.EventType.PREVIOUS);
+ ContextInjectionFactory.invoke(object, Execute.class, childContext);
+ }
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/EmfCommandStackPart.java b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/EmfCommandStackPart.java
new file mode 100644
index 0000000..3f3736f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/EmfCommandStackPart.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.emf.parts;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.eclipse.osbp.vaadin.emf.views.EmfCommandStackTableViewer;
+
+import com.vaadin.ui.VerticalLayout;
+
+public class EmfCommandStackPart {
+
+ @Inject
+ private IModelingContext modelingContext;
+
+ @Inject
+ private VerticalLayout parent;
+
+ private EmfCommandStackTableViewer viewer;
+
+ public EmfCommandStackPart() {
+
+ }
+
+ @PostConstruct
+ protected void setup() {
+ viewer = new EmfCommandStackTableViewer(modelingContext);
+ viewer.setSizeFull();
+ parent.addComponent(viewer);
+ }
+
+ // @Execute
+ // protected void execute(@Named(EVENT_TYPE_NAME) EventType type) {
+ // ECViewBindingDialog.open(viewer.getRootElement(), context, null, this);
+ // }
+
+ @PreDestroy
+ protected void destroy() {
+ // clear all caches in the viewer
+ viewer.dispose();
+ viewer = null;
+ }
+
+ public static enum EventType {
+ UNDO, REDO
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/EmfModelTreePart.java b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/EmfModelTreePart.java
new file mode 100644
index 0000000..1ed12be
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/EmfModelTreePart.java
@@ -0,0 +1,187 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.emf.parts;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import org.eclipse.e4.core.contexts.Active;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.runtime.designer.api.IWidgetDesignConfigurator;
+import org.eclipse.osbp.runtime.web.vaadin.common.resource.IResourceProvider;
+import org.eclipse.osbp.vaaclipse.emf.api.view.IConstants;
+import org.eclipse.osbp.vaaclipse.publicapi.events.IWidgetModelAssociations;
+import org.eclipse.osbp.vaadin.emf.actions.EObjectActionHandler;
+import org.eclipse.osbp.vaadin.emf.actions.EObjectActionHandler.EditCallback;
+import org.eclipse.osbp.vaadin.emf.api.EmfModelElementClickEvent;
+import org.eclipse.osbp.vaadin.emf.api.IModelingConstants;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.eclipse.osbp.vaadin.emf.views.EmfModelTreeViewer;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * A tree viewer which can show any EMF Model.
+ */
+public class EmfModelTreePart {
+
+ public final static String EVENT_TYPE_NAME = "eventType";
+
+ @Inject
+ private IModelingContext modelingContext;
+
+ @Inject
+ private IEventBroker eventBroker;
+
+ @Inject
+ private IEclipseContext context;
+
+ @Inject
+ private IResourceProvider resourceProvider;
+
+ @Inject
+ private VerticalLayout parent;
+
+ // @Inject
+ // private IOpenModelEditDialogService dialogOpener;
+
+ @Inject
+ private IWidgetDesignConfigurator dialogOpener;
+
+ @Inject
+ private IWidgetModelAssociations associations;
+
+ private EmfModelTreeViewer viewer;
+
+ private EventHandler selectedEObject;
+
+ /**
+ * Locks selections
+ */
+ private boolean locked = false;
+
+ private EditCallback editCallback;
+
+ public EmfModelTreePart() {
+
+ }
+
+ @PostConstruct
+ protected void setup() {
+ // opens a dialog to edit a model element
+ editCallback = new EObjectActionHandler.EditCallback() {
+ @Override
+ public void edit(EObject model) {
+ // dialogOpener.openEditDialog(model,
+ // context);
+ dialogOpener.openEditDialog(associations.getWidget(model),
+ model);
+ }
+ };
+ viewer = new EmfModelTreeViewer(modelingContext, resourceProvider,
+ editCallback);
+ viewer.setSizeFull();
+ parent.addComponent(viewer);
+
+ viewer.addItemClickListener(e -> {
+ eventBroker.send(IConstants.TOPIC__TREE_SELECTION_OUT,
+ e.getItemId());
+ });
+
+ selectedEObject = new EventHandler() {
+ @Override
+ public void handleEvent(Event event) {
+ if (locked) {
+ return;
+ }
+
+ Object data = event.getProperty(IEventBroker.DATA);
+ if (data instanceof EmfModelElementClickEvent) {
+ EmfModelElementClickEvent clickData = (EmfModelElementClickEvent) data;
+ viewer.setRootElement((EObject) clickData.getModelElement());
+ viewer.expand(viewer.getRootElement());
+ viewer.setSelection(viewer.getRootElement());
+ } else {
+ EObject eObject = (EObject) event
+ .getProperty(IEventBroker.DATA);
+ viewer.setRootElement(eObject);
+ viewer.expand(viewer.getRootElement());
+ viewer.setSelection(viewer.getRootElement());
+ }
+ }
+ };
+
+ eventBroker.subscribe(IModelingConstants.TOPIC__ELEMENT_CLICKED,
+ selectedEObject);
+
+ }
+
+ @Inject
+ protected void activePerspective(@Optional @Active MPerspective mPerspective) {
+ // if (viewer != null) {
+ // EObject root = EcoreUtil
+ // .getRootContainer((EObject) mPerspective);
+ // viewer.setRootElement(root);
+ // viewer.expand(root);
+ // }
+ }
+
+ @Execute
+ protected void executeEvent(@Named(EVENT_TYPE_NAME) EventType type) {
+ if (type == EventType.PREVIOUS) {
+ EObject root = viewer.getRootElement();
+ if (root != null) {
+ EObject newRoot = root.eContainer();
+ if (newRoot != null) {
+ EObject selection = viewer.getSelection();
+ viewer.setRootElement(newRoot);
+ if (selection != null) {
+ viewer.expand(selection);
+ viewer.setSelection(selection);
+ }
+ }
+ }
+ } else if (type == EventType.LOCK) {
+ locked = !locked;
+ }
+ }
+
+ @PreDestroy
+ protected void destroy() {
+ eventBroker.unsubscribe(selectedEObject);
+ selectedEObject = null;
+
+ // clear all caches in the viewer
+ viewer.setRootElement(null);
+ viewer.dispose();
+ viewer = null;
+ }
+
+ public enum EventType {
+ /**
+ * show previous EObject
+ */
+ PREVIOUS,
+ /**
+ * Locks the selection
+ */
+ LOCK
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/EmfPropertiesPart.java b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/EmfPropertiesPart.java
new file mode 100644
index 0000000..bf61057
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/EmfPropertiesPart.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.emf.parts;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.Active;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.osbp.runtime.web.vaadin.common.resource.IResourceProvider;
+import org.eclipse.osbp.vaaclipse.emf.api.view.IConstants;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.eclipse.osbp.vaadin.emf.views.EmfPropertyViewer;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * A properties view which can show the properties of any EObject.
+ */
+public class EmfPropertiesPart {
+
+ @Inject
+ private IModelingContext modelingContext;
+
+ @Inject
+ private IEventBroker eventBroker;
+
+ @Inject
+ private IResourceProvider resourceProvider;
+
+ @Inject
+ private VerticalLayout parent;
+
+ private EmfPropertyViewer viewer;
+
+ private EventHandler selectedEObject;
+
+ public EmfPropertiesPart() {
+
+ }
+
+ @PostConstruct
+ protected void setup() {
+ viewer = new EmfPropertyViewer(modelingContext, resourceProvider);
+ viewer.setSizeFull();
+ parent.addComponent(viewer);
+
+ selectedEObject = new EventHandler() {
+ @Override
+ public void handleEvent(Event event) {
+ EObject eObject = (EObject) event
+ .getProperty(IEventBroker.DATA);
+ viewer.setRootElement(eObject);
+ }
+ };
+
+ eventBroker.subscribe(IConstants.TOPIC__TREE_SELECTION_OUT,
+ selectedEObject);
+
+ }
+
+ @Inject
+ protected void activePerspective(@Optional @Active MPerspective mPerspective) {
+ if (viewer != null) {
+ viewer.setRootElement(EcoreUtil
+ .getRootContainer((EObject) mPerspective));
+ }
+ }
+
+ @PreDestroy
+ protected void destroy() {
+ eventBroker.unsubscribe(selectedEObject);
+ selectedEObject = null;
+
+ // clear all caches in the viewer
+ viewer.setRootElement(null);
+ viewer = null;
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/JvmTypePropertiesTreePart.java b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/JvmTypePropertiesTreePart.java
new file mode 100644
index 0000000..55e7464
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.emf/src/org/eclipse/osbp/vaaclipse/emf/parts/JvmTypePropertiesTreePart.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.emf.parts;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.xtext.common.types.JvmGenericType;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProvider;
+import org.eclipse.osbp.runtime.common.types.IBundleSpace;
+import org.eclipse.osbp.runtime.web.vaadin.common.resource.IResourceProvider;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.eclipse.osbp.vaadin.emf.views.JvmTypePropertiesTreeViewer;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.ui.VerticalLayout;
+
+public class JvmTypePropertiesTreePart {
+
+ public final static String EVENT_TYPE_NAME = "eventType";
+
+ @Inject
+ private IModelingContext modelingContext;
+
+ @Inject
+ private IEclipseContext context;
+
+ @Inject
+ private IEventBroker eventBroker;
+
+ @Inject
+ private IResourceProvider resourceProvider;
+
+ @Inject
+ private VerticalLayout parent;
+
+ private JvmTypePropertiesTreeViewer viewer;
+
+ private EventHandler selectedEObject;
+
+ public JvmTypePropertiesTreePart() {
+
+ }
+
+ @SuppressWarnings("restriction")
+ @PostConstruct
+ protected void setup() {
+
+ BundleSpaceTypeProvider typeProvider = new BundleSpaceTypeProvider(
+ context.get(IBundleSpace.class), modelingContext
+ .getEditingDomain().getResourceSet(), null);
+
+ viewer = new JvmTypePropertiesTreeViewer(modelingContext,
+ resourceProvider, typeProvider);
+ viewer.setSizeFull();
+ parent.addComponent(viewer);
+
+ viewer.setRootElement("com.osbp.myfirstapp.dtos.CompanyDto");
+
+ // selectedEObject = new EventHandler() {
+ // @Override
+ // public void handleEvent(Event event) {
+ // Object data = event.getProperty(IEventBroker.DATA);
+ // if (data instanceof EmfModelElementClickEvent) {
+ // EmfModelElementClickEvent clickData = (EmfModelElementClickEvent)
+ // data;
+ // viewer.setRootElement((EObject) clickData.getModelElement());
+ // viewer.expand(viewer.getRootElement());
+ // viewer.setSelection(viewer.getRootElement());
+ // } else {
+ // EObject eObject = (EObject) event
+ // .getProperty(IEventBroker.DATA);
+ // viewer.setRootElement(eObject);
+ // viewer.expand(viewer.getRootElement());
+ // viewer.setSelection(viewer.getRootElement());
+ // }
+ // }
+ // };
+ }
+
+ @PreDestroy
+ protected void destroy() {
+ // eventBroker.unsubscribe(selectedEObject);
+ selectedEObject = null;
+
+ // clear all caches in the viewer
+ viewer.setRootElement((JvmGenericType) null);
+ viewer.dispose();
+ viewer = null;
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.feature.core/.project b/org.eclipse.osbp.vaaclipse.feature.core/.project
new file mode 100644
index 0000000..8f23e56
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse.feature.runtime.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.feature.core/build.properties b/org.eclipse.osbp.vaaclipse.feature.core/build.properties
new file mode 100644
index 0000000..a1f605d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.core/build.properties
@@ -0,0 +1,6 @@
+bin.includes = feature.xml,\
+ feature.properties,\
+ epl-v10.html,\
+ license.html
+src.includes = license.html,\
+ epl-v10.html
diff --git a/org.eclipse.osbp.vaaclipse.feature.core/epl-v10.html b/org.eclipse.osbp.vaaclipse.feature.core/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.core/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.feature.core/feature.properties b/org.eclipse.osbp.vaaclipse.feature.core/feature.properties
new file mode 100644
index 0000000..3fada88
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.core/feature.properties
@@ -0,0 +1,169 @@
+###############################################################################
+# Copyright (c) 2013 Rushan Gilmullin, Florian Pirchner, Sopot Scela
+# 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:
+# Rushan Gilmullin, Florian Pirchner, Sopot Scela - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName = Vaaclipse core bundles
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=.
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+ - Content may be structured and packaged into modules to facilitate delivering,\n\
+ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+ plug-in fragments ("Fragments"), and features ("Features").\n\
+ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+ in a directory named "plugins".\n\
+ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+ Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+ - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+ - The top-level (root) directory\n\
+ - Plug-in and Fragment directories\n\
+ - Inside Plug-ins and Fragments packaged as JARs\n\
+ - Sub-directories of the directory named "src" of certain Plug-ins\n\
+ - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+ - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+ 1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+ the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+ extending or updating the functionality of an Eclipse-based product.\n\
+ 2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+ Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+ 3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+ govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+ Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+ with the Specification. Such Installable Software Agreement must inform the user of the\n\
+ terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+ the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+ indication of agreement by the user, the provisioning Technology will complete installation\n\
+ of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.vaaclipse.feature.core/feature.xml b/org.eclipse.osbp.vaaclipse.feature.core/feature.xml
new file mode 100644
index 0000000..d782cbc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.core/feature.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+ id="org.eclipse.osbp.vaaclipse.feature.core"
+ label="%featureName"
+ version="0.9.0.qualifier"
+ provider-name="%providerName">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.common.ecview.api"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.theme"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/org.eclipse.osbp.vaaclipse.feature.core/license.html b/org.eclipse.osbp.vaaclipse.feature.core/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.core/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.vaaclipse.feature.core/pom.xml b/org.eclipse.osbp.vaaclipse.feature.core/pom.xml
new file mode 100644
index 0000000..08ceefb
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.core/pom.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>org.eclipse.osbp.vaaclipse.feature.core</artifactId>
+ <packaging>eclipse-feature</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-source-feature-plugin</artifactId>
+ <version>${tychoExtrasVersion}</version>
+ <executions>
+ <execution>
+ <id>source-feature</id>
+ <phase>package</phase>
+ <goals>
+ <goal>source-feature</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <excludes>
+ </excludes>
+ <labelSuffix> (source)</labelSuffix>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <!-- workaround while bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=398250
+ is not fixed -->
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <executions>
+ <execution>
+ <id>attached-p2-metadata</id>
+ <phase>package</phase>
+ <goals>
+ <goal>p2-metadata</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>javadoc-jar</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.feature.core/src/main/javadoc/README.txt b/org.eclipse.osbp.vaaclipse.feature.core/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.core/src/main/javadoc/README.txt
@@ -0,0 +1 @@
+Resource folder for javadoc resources.
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.feature.core/src/overview.html b/org.eclipse.osbp.vaaclipse.feature.core/src/overview.html
new file mode 100644
index 0000000..090b65f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.core/src/overview.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+ <HEAD>
+ <TITLE>OSBP Vaaclipse Core</TITLE>
+ </HEAD>
+ <BODY>
+ The <b>OSBP Vaaclipse Core Feature</b> ...
+
+ </BODY>
+</HTML>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.feature.runtime.core/.project b/org.eclipse.osbp.vaaclipse.feature.runtime.core/.project
new file mode 100644
index 0000000..8f23e56
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.runtime.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse.feature.runtime.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.feature.runtime.core/build.properties b/org.eclipse.osbp.vaaclipse.feature.runtime.core/build.properties
new file mode 100644
index 0000000..a1f605d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.runtime.core/build.properties
@@ -0,0 +1,6 @@
+bin.includes = feature.xml,\
+ feature.properties,\
+ epl-v10.html,\
+ license.html
+src.includes = license.html,\
+ epl-v10.html
diff --git a/org.eclipse.osbp.vaaclipse.feature.runtime.core/epl-v10.html b/org.eclipse.osbp.vaaclipse.feature.runtime.core/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.runtime.core/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.feature.runtime.core/feature.properties b/org.eclipse.osbp.vaaclipse.feature.runtime.core/feature.properties
new file mode 100644
index 0000000..fa97fe0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.runtime.core/feature.properties
@@ -0,0 +1,169 @@
+###############################################################################
+# Copyright (c) 2013 Rushan Gilmullin, Florian Pirchner, Sopot Scela
+# 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:
+# Rushan Gilmullin, Florian Pirchner, Sopot Scela - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName = Vaaclipse core bundles for runtime
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=.
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+ - Content may be structured and packaged into modules to facilitate delivering,\n\
+ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+ plug-in fragments ("Fragments"), and features ("Features").\n\
+ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+ in a directory named "plugins".\n\
+ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+ Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+ - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+ - The top-level (root) directory\n\
+ - Plug-in and Fragment directories\n\
+ - Inside Plug-ins and Fragments packaged as JARs\n\
+ - Sub-directories of the directory named "src" of certain Plug-ins\n\
+ - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+ - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+ 1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+ the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+ extending or updating the functionality of an Eclipse-based product.\n\
+ 2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+ Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+ 3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+ govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+ Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+ with the Specification. Such Installable Software Agreement must inform the user of the\n\
+ terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+ the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+ indication of agreement by the user, the provisioning Technology will complete installation\n\
+ of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.vaaclipse.feature.runtime.core/feature.xml b/org.eclipse.osbp.vaaclipse.feature.runtime.core/feature.xml
new file mode 100644
index 0000000..bdfe27f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.runtime.core/feature.xml
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+ id="org.eclipse.osbp.vaaclipse.feature.runtime.core"
+ label="%featureName"
+ version="0.9.0.qualifier"
+ provider-name="%providerName">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <requires>
+ <import plugin="org.eclipse.e4.core.commands" version="0.10.2" match="equivalent"/>
+ <import plugin="org.eclipse.e4.core.contexts" version="1.3.100" match="equivalent"/>
+ <import plugin="org.eclipse.e4.core.di" version="1.4.0" match="equivalent"/>
+ <import plugin="org.eclipse.e4.core.di.extensions" version="0.12.0" match="equivalent"/>
+ <import plugin="org.eclipse.e4.core.services" version="1.2.0" match="equivalent"/>
+ <import plugin="org.eclipse.e4.ui.model.workbench" version="1.1.0" match="equivalent"/>
+ <import plugin="org.eclipse.e4.ui.css.core" version="0.10.100" match="equivalent"/>
+ <import plugin="org.eclipse.e4.ui.di" version="1.0.0" match="equivalent"/>
+ <import plugin="org.eclipse.e4.ui.services" version="1.1.0" match="equivalent"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.e4.ui.model.workbench.edit"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.commons"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.e4extension"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.e4modelextension"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.additions"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.api"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.behaviour"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.common.ecview.api"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.contributions"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.emf"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.emf.addon"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.emf.api"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.presentation"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.publicapi"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.resources"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ fragment="true"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.theme"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.util"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaadin"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.widgets"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.e4.injector.objectsuppliers"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.widgetset.default"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.ui.preferences.model"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.ui.preferences.addon"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+
+</feature>
diff --git a/org.eclipse.osbp.vaaclipse.feature.runtime.core/license.html b/org.eclipse.osbp.vaaclipse.feature.runtime.core/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.runtime.core/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.vaaclipse.feature.runtime.core/pom.xml b/org.eclipse.osbp.vaaclipse.feature.runtime.core/pom.xml
new file mode 100644
index 0000000..7834577
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.runtime.core/pom.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>org.eclipse.osbp.vaaclipse.feature.runtime.core</artifactId>
+ <packaging>eclipse-feature</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-source-feature-plugin</artifactId>
+ <version>${tychoExtrasVersion}</version>
+ <executions>
+ <execution>
+ <id>source-feature</id>
+ <phase>package</phase>
+ <goals>
+ <goal>source-feature</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <excludes>
+ <plugin id="org.eclipse.e4.core.commands"/>
+ <plugin id="org.eclipse.e4.core.contexts"/>
+ <plugin id="org.eclipse.e4.core.di"/>
+ <plugin id="org.eclipse.e4.core.di.extensions"/>
+ <plugin id="org.eclipse.e4.core.services"/>
+ <plugin id="org.eclipse.e4.ui.model.workbench"/>
+ <plugin id="org.eclipse.e4.ui.css.core"/>
+ <plugin id="org.eclipse.e4.ui.di"/>
+ <plugin id="org.eclipse.e4.ui.services"/>
+ </excludes>
+ <labelSuffix> (source)</labelSuffix>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <!-- workaround while bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=398250
+ is not fixed -->
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <executions>
+ <execution>
+ <id>attached-p2-metadata</id>
+ <phase>package</phase>
+ <goals>
+ <goal>p2-metadata</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>javadoc-jar</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.feature.runtime.core/src/main/javadoc/README.txt b/org.eclipse.osbp.vaaclipse.feature.runtime.core/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.runtime.core/src/main/javadoc/README.txt
@@ -0,0 +1 @@
+Resource folder for javadoc resources.
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.feature.runtime.core/src/overview.html b/org.eclipse.osbp.vaaclipse.feature.runtime.core/src/overview.html
new file mode 100644
index 0000000..fb02672
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.runtime.core/src/overview.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <title>OSBP runtime web vaadin components feature Overview</title>
+</head>
+<body>
+<p>The <b>OSBP feature</b> contains ...</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.vaaclipse.feature.target.core/.project b/org.eclipse.osbp.vaaclipse.feature.target.core/.project
new file mode 100644
index 0000000..8f23e56
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.target.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse.feature.runtime.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.feature.target.core/build.properties b/org.eclipse.osbp.vaaclipse.feature.target.core/build.properties
new file mode 100644
index 0000000..94fb2b8
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.target.core/build.properties
@@ -0,0 +1,6 @@
+bin.includes = feature.xml,\
+ feature.properties,\
+ epl-v10.html,\
+ license.html
+src.includes = epl-v10.html,\
+ license.html
diff --git a/org.eclipse.osbp.vaaclipse.feature.target.core/epl-v10.html b/org.eclipse.osbp.vaaclipse.feature.target.core/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.target.core/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.feature.target.core/feature.properties b/org.eclipse.osbp.vaaclipse.feature.target.core/feature.properties
new file mode 100644
index 0000000..eff52b4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.target.core/feature.properties
@@ -0,0 +1,169 @@
+###############################################################################
+# Copyright (c) 2013 Rushan Gilmullin, Florian Pirchner, Sopot Scela
+# 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:
+# Rushan Gilmullin, Florian Pirchner, Sopot Scela - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName = Vaaclipse core bundles for target platform
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=.
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+ - Content may be structured and packaged into modules to facilitate delivering,\n\
+ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+ plug-in fragments ("Fragments"), and features ("Features").\n\
+ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+ in a directory named "plugins".\n\
+ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+ Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+ - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+ - The top-level (root) directory\n\
+ - Plug-in and Fragment directories\n\
+ - Inside Plug-ins and Fragments packaged as JARs\n\
+ - Sub-directories of the directory named "src" of certain Plug-ins\n\
+ - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+ - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+ 1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+ the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+ extending or updating the functionality of an Eclipse-based product.\n\
+ 2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+ Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+ 3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+ govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+ Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+ with the Specification. Such Installable Software Agreement must inform the user of the\n\
+ terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+ the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+ indication of agreement by the user, the provisioning Technology will complete installation\n\
+ of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.vaaclipse.feature.target.core/feature.xml b/org.eclipse.osbp.vaaclipse.feature.target.core/feature.xml
new file mode 100644
index 0000000..31e25dd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.target.core/feature.xml
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# 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: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+ id="org.eclipse.osbp.vaaclipse.feature.target.core"
+ label="%featureName"
+ version="0.9.0.qualifier"
+ provider-name="%providerName">
+
+ <description>
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <requires>
+ <import plugin="org.eclipse.e4.core.commands" version="0.10.2" match="equivalent"/>
+ <import plugin="org.eclipse.e4.core.contexts" version="1.3.100" match="equivalent"/>
+ <import plugin="org.eclipse.e4.core.di" version="1.4.0" match="equivalent"/>
+ <import plugin="org.eclipse.e4.core.di.extensions" version="0.12.0" match="equivalent"/>
+ <import plugin="org.eclipse.e4.core.services" version="1.2.0" match="equivalent"/>
+ <import plugin="org.eclipse.e4.ui.model.workbench" version="1.1.0" match="equivalent"/>
+ <import plugin="org.eclipse.e4.ui.css.core" version="0.10.100" match="equivalent"/>
+ <import plugin="org.eclipse.e4.ui.di" version="1.0.0" match="equivalent"/>
+ <import plugin="org.eclipse.e4.ui.services" version="1.1.0" match="equivalent"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.e4.ui.model.workbench.edit"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.commons"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.e4extension"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.additions"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.api"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.behaviour"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.contributions"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.emf"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.emf.addon"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.emf.api"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.presentation"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.publicapi"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.resources"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ fragment="true"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.theme"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.util"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaadin"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.widgets"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.e4.injector.objectsuppliers"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osbp.vaaclipse.widgetset.default"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/org.eclipse.osbp.vaaclipse.feature.target.core/license.html b/org.eclipse.osbp.vaaclipse.feature.target.core/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.target.core/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.vaaclipse.feature.target.core/pom.xml b/org.eclipse.osbp.vaaclipse.feature.target.core/pom.xml
new file mode 100644
index 0000000..fab007e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.target.core/pom.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>org.eclipse.osbp.vaaclipse.feature.target.core</artifactId>
+ <packaging>eclipse-feature</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-source-feature-plugin</artifactId>
+ <version>${tychoExtrasVersion}</version>
+ <executions>
+ <execution>
+ <id>source-feature</id>
+ <phase>package</phase>
+ <goals>
+ <goal>source-feature</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <excludes>
+ <plugin id="org.eclipse.e4.core.commands"/>
+ <plugin id="org.eclipse.e4.core.contexts"/>
+ <plugin id="org.eclipse.e4.core.di"/>
+ <plugin id="org.eclipse.e4.core.di.extensions"/>
+ <plugin id="org.eclipse.e4.core.services"/>
+ <plugin id="org.eclipse.e4.ui.model.workbench"/>
+ <plugin id="org.eclipse.e4.ui.css.core"/>
+ <plugin id="org.eclipse.e4.ui.di"/>
+ <plugin id="org.eclipse.e4.ui.services"/>
+ </excludes>
+ <labelSuffix> (source)</labelSuffix>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <!-- workaround while bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=398250
+ is not fixed -->
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <executions>
+ <execution>
+ <id>attached-p2-metadata</id>
+ <phase>package</phase>
+ <goals>
+ <goal>p2-metadata</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>javadoc-jar</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.feature.target.core/src/main/javadoc/README.txt b/org.eclipse.osbp.vaaclipse.feature.target.core/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.target.core/src/main/javadoc/README.txt
@@ -0,0 +1 @@
+Resource folder for javadoc resources.
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.feature.target.core/src/overview.html b/org.eclipse.osbp.vaaclipse.feature.target.core/src/overview.html
new file mode 100644
index 0000000..fb02672
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.feature.target.core/src/overview.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <title>OSBP runtime web vaadin components feature Overview</title>
+</head>
+<body>
+<p>The <b>OSBP feature</b> contains ...</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.vaaclipse.presentation/.project b/org.eclipse.osbp.vaaclipse.presentation/.project
new file mode 100644
index 0000000..c419dca
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/.project
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse.presentation</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.presentation/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.presentation/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..32309f4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/META-INF/MANIFEST.MF
@@ -0,0 +1,40 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.presentation
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.presentation;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.e4.ui.model.workbench;bundle-version="0.10.1",
+ org.eclipse.e4.core.contexts;bundle-version="1.1.0",
+ org.eclipse.e4.ui.workbench;bundle-version="0.10.2",
+ org.eclipse.e4.core.services;bundle-version="1.0.0",
+ org.eclipse.core.runtime;bundle-version="3.8.0",
+ org.eclipse.core.commands;bundle-version="3.6.1",
+ org.eclipse.e4.core.commands;bundle-version="0.10.1",
+ org.eclipse.osgi.services;bundle-version="3.3.100",
+ org.eclipse.e4.ui.services;bundle-version="0.10.1",
+ org.eclipse.osbp.vaaclipse.api;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.e4.ui.di;bundle-version="0.10.1",
+ org.eclipse.osbp.vaadin;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.vaaclipse.publicapi;bundle-version="[0.9.0,0.10.0)",
+ com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.shared;bundle-version="[7.5.7,7.7.0)",
+ org.eclipse.osbp.vaaclipse.widgets;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.commons;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.vaaclipse.widgetset.default;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ org.eclipse.emf.ecore;bundle-version="2.9.0",
+ org.eclipse.e4.core.di;bundle-version="1.3.0",
+ org.jsoup;bundle-version="1.7.2",
+ org.eclipse.emf.edit;bundle-version="2.10.1",
+ org.eclipse.emf.ecore.xmi;bundle-version="2.10.2",
+ org.eclipse.osbp.runtime.designer.api,
+ dragdroplayouts.osgi;bundle-version="1.1.3",
+ contextmenu.osgi;bundle-version="4.6.0"
+Export-Package: org.eclipse.osbp.vaaclipse.presentation.engine;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.presentation.renderers;version="0.9.0"
+Import-Package: javax.annotation;version="1.1.0",
+ javax.inject;version="1.0.0",
+ org.slf4j;version="1.7.2"
+Bundle-Activator: org.eclipse.osbp.vaaclipse.Activator
+Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.osbp.vaaclipse.presentation/about.html b/org.eclipse.osbp.vaaclipse.presentation/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.presentation/about.ini b/org.eclipse.osbp.vaaclipse.presentation/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.presentation/about.mappings b/org.eclipse.osbp.vaaclipse.presentation/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.presentation/about.properties b/org.eclipse.osbp.vaaclipse.presentation/about.properties
new file mode 100644
index 0000000..3d71a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.presentation
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.presentation/build.properties b/org.eclipse.osbp.vaaclipse.presentation/build.properties
new file mode 100644
index 0000000..63bcba4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ plugin.xml,\
+ license.html,\
+ epl-v10.html
+
+src.includes = about.properties, about.mappings, about.ini, about.html, license.html,\
+ epl-v10.html
diff --git a/org.eclipse.osbp.vaaclipse.presentation/epl-v10.html b/org.eclipse.osbp.vaaclipse.presentation/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.presentation/license.html b/org.eclipse.osbp.vaaclipse.presentation/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.vaaclipse.presentation/plugin.xml b/org.eclipse.osbp.vaaclipse.presentation/plugin.xml
new file mode 100644
index 0000000..9d8f81a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/plugin.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ id="id1"
+ point="org.eclipse.e4.workbench.model">
+ <processor
+ beforefragment="true"
+ class="org.eclipse.osbp.vaaclipse.presentation.widgetinfo.WidgetInfoImpl">
+ </processor>
+ </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.vaaclipse.presentation/pom.xml b/org.eclipse.osbp.vaaclipse.presentation/pom.xml
new file mode 100644
index 0000000..ec6b101
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.osbp.vaaclipse.presentation</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/Activator.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/Activator.java
new file mode 100644
index 0000000..4cd8d8f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/Activator.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+/**
+ * @author rushan
+ *
+ */
+public class Activator implements BundleActivator {
+ private static Activator instance;
+
+ private BundleContext context;
+
+ public void start(BundleContext context) throws Exception {
+ instance = this;
+ this.context = context;
+ }
+
+ public BundleContext getContext() {
+ return context;
+ }
+
+ public static Activator getInstance() {
+ return instance;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ // TODO Auto-generated method stub
+
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/dnd/VaadinDropHandler.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/dnd/VaadinDropHandler.java
new file mode 100644
index 0000000..258b0f9
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/dnd/VaadinDropHandler.java
@@ -0,0 +1,282 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.presentation.dnd;
+
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MArea;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainerElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MStackElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicFactoryImpl;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.osbp.commons.geom.GeomUtils;
+import org.eclipse.osbp.commons.geom.Side;
+import org.eclipse.osbp.commons.geom.Vector;
+import org.eclipse.osbp.vaaclipse.publicapi.change.ChangeCommand;
+import org.eclipse.osbp.vaaclipse.widgets.StackWidget;
+
+import com.vaadin.event.dd.DragAndDropEvent;
+import com.vaadin.event.dd.DropHandler;
+import com.vaadin.event.dd.acceptcriteria.AcceptAll;
+import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
+import com.vaadin.shared.ui.dd.HorizontalDropLocation;
+import com.vaadin.ui.AbstractComponent;
+import com.vaadin.ui.TabSheet.Tab;
+
+import fi.jasoft.dragdroplayouts.DDTabSheet.TabSheetTargetDetails;
+import fi.jasoft.dragdroplayouts.events.LayoutBoundTransferable;
+
+/**
+ * @author rushan
+ *
+ */
+public class VaadinDropHandler implements DropHandler {
+ private MPartStack targetPartStack;
+ private StackWidget targetTabSheet;
+
+ @Inject
+ EModelService modelService;
+
+ @Inject
+ MApplication app;
+
+ @Inject
+ @Optional
+ private EditingDomain editingDomain;
+
+ @Inject
+ public VaadinDropHandler(MPartStack targetPartStack) {
+ this.targetPartStack = targetPartStack;
+ targetTabSheet = (StackWidget) targetPartStack.getWidget();
+ }
+
+ public AcceptCriterion getAcceptCriterion() {
+ // Only allow dropping between tabs
+ // return new Not(HorizontalLocationIs.CENTER);
+
+ return AcceptAll.get();
+ }
+
+ public void drop(final DragAndDropEvent event) {
+ if (!(event.getTransferable() instanceof LayoutBoundTransferable))
+ return;
+
+ ChangeCommand command = new ChangeCommand("Drop part", ((EObject) app).eResource()) {
+ @Override
+ protected void doExecute() {
+ doDrop(event);
+ }
+ };
+ editingDomain.getCommandStack().execute(command);
+ }
+
+ protected void doDrop(DragAndDropEvent event) {
+ LayoutBoundTransferable transferable = (LayoutBoundTransferable) event
+ .getTransferable();
+ TabSheetTargetDetails details = (TabSheetTargetDetails) event
+ .getTargetDetails();
+
+ if (transferable.getSourceComponent() instanceof StackWidget) {
+ StackWidget sourceTabSheet = (StackWidget) transferable
+ .getSourceComponent();
+
+ MPartStack targetFolder = targetPartStack;
+ MPartStack sourceFolder = (MPartStack) sourceTabSheet.getData();
+
+ // this component is dragged by user
+ AbstractComponent draggingComponent = (AbstractComponent) transferable
+ .getComponent();
+ // This is model element that match to draggingComponent
+ MStackElement draggingElement = (MStackElement) draggingComponent
+ .getData();
+
+ // draggingElement must be in sourceFolder
+ if (!sourceFolder.getChildren().contains(draggingElement))
+ return;
+
+ String dropType = (String) details.getData("dropType");
+
+ if (dropType.equals("DropToTabsheetBar")) {
+ int idx = details.getOverIndex();
+ HorizontalDropLocation location = details.getDropLocation();
+
+ if (draggingComponent == details.getOverComponent()) {
+ // Dropped on itself
+ return;
+ }
+
+ if (sourceTabSheet == targetTabSheet) {// reordering tabs
+
+ if (sourceFolder != targetFolder)
+ return;
+ int modelOldPos = sourceFolder.getChildren().indexOf(
+ draggingElement);
+
+ Tab tabInNewPos = targetTabSheet.getTab(idx);
+
+ if (tabInNewPos == null)
+ return;
+
+ MUIElement elementInInsertPos = (MUIElement) ((AbstractComponent) tabInNewPos
+ .getComponent()).getData();
+ int modelNewPos = targetPartStack.getChildren().indexOf(
+ elementInInsertPos);
+
+ targetPartStack.getChildren().remove(draggingElement);
+
+ if (location == HorizontalDropLocation.RIGHT) {
+
+ if (modelOldPos > modelNewPos)
+ targetPartStack.getChildren().add(modelNewPos + 1,
+ draggingElement);
+ else
+ targetPartStack.getChildren().add(modelNewPos,
+ draggingElement);
+ } else {// LEFT OR CENTER - processed as LEFT
+ if (modelOldPos > modelNewPos)
+ targetPartStack.getChildren().add(modelNewPos,
+ draggingElement);
+ else
+ targetPartStack.getChildren().add(modelNewPos - 1,
+ draggingElement);
+
+ }
+ } else {// Adding new tab
+ sourceFolder.getChildren().remove(draggingElement);
+
+ if (idx == -1)
+ targetFolder.getChildren().add(draggingElement);
+ else {
+ Tab tabInNewPos = targetTabSheet.getTab(idx);
+ MUIElement elementInNewPos = (MUIElement) ((AbstractComponent) tabInNewPos
+ .getComponent()).getData();
+ int modelNewPos = targetPartStack.getChildren()
+ .indexOf(elementInNewPos);
+
+ int newPos = -1;
+ if (location == HorizontalDropLocation.RIGHT) {
+ targetFolder.getChildren().add(modelNewPos + 1,
+ draggingElement);
+ } else {// LEFT or CENTER - processed both as LEFT
+ targetFolder.getChildren().add(modelNewPos,
+ draggingElement);
+ }
+ }
+ }
+ targetFolder.setSelectedElement(draggingElement);
+ } else if (dropType.equals("DropToTabsheetBody")) {
+ // target widget coordinates:
+ int x0 = (Integer) details.getData("targetWidgetAbsoluteLeft");
+ int y0 = (Integer) details.getData("targetWidgetAbsoluteTop");
+ int dx = (Integer) details.getData("targetWidgetOffsetWidth");
+ int dy = (Integer) details.getData("targetWidgetOffsetHeight");
+
+ int docPrcnt = 30;
+ double docX = dx * docPrcnt / 100;
+ double docY = dy * docPrcnt / 100;
+
+ int mouseX = details.getMouseEvent().getClientX();
+ int mouseY = details.getMouseEvent().getClientY();
+
+ Vector mousePos = Vector.valueOf(mouseX, mouseY);
+
+ Integer side = GeomUtils.findDockSide(x0, y0, dx, dy, docX,
+ docY, mousePos);
+ if (side != null) {
+ targetPartStack.getChildren().remove(draggingElement);
+
+ if (side == Side.CENTER) {// drop in center is equivalent
+ // tab adding at the end of
+ // target folder
+ targetFolder.getChildren().add(draggingElement);
+ targetFolder.setSelectedElement(draggingElement);
+ } else {// if drop to sides, we must different what kind is
+ // target widget - tabsheet or area
+ boolean onEdge = false;
+
+ // Find the root of the targetFolder's sash structure
+ // This root - is area, perspective or window
+ MUIElement outerRelTo = targetFolder.getParent();
+ if (outerRelTo instanceof MPartSashContainer) {
+ while (outerRelTo != null
+ && !(outerRelTo instanceof MArea
+ || outerRelTo instanceof MPerspective || outerRelTo instanceof MWindow))
+ outerRelTo = outerRelTo.getParent();
+ }
+
+ // Outer element can not be null, becouse mpartstack or
+ // his sash structure must be located in one of place:
+ // area, perspective or window
+ if (outerRelTo == null)
+ return;
+
+ if (outerRelTo.getParent() == null
+ && outerRelTo.getCurSharedRef() != null) {
+ outerRelTo = outerRelTo.getCurSharedRef();
+ }
+
+ MPartSashContainerElement relTo = null;
+
+ if (outerRelTo instanceof MArea || onEdge)
+ relTo = (MPartSashContainerElement) outerRelTo;
+ else
+ relTo = targetFolder;
+
+ // store original container data for using after model
+ // operations
+ String containerDataBeforeModelOperations = targetFolder
+ .getContainerData();
+
+ // wrap it in a stack if it's a part
+ MPartStack toInsert;
+ MStackElement stackElement = (MStackElement) draggingElement;
+ toInsert = BasicFactoryImpl.eINSTANCE.createPartStack();
+ toInsert.getChildren().add(stackElement);
+ toInsert.setSelectedElement(stackElement);
+
+ float pct = (float) (onEdge ? 0.15 : 0.3);
+ MUIElement relToParent = relTo.getParent();
+ modelService
+ .insert(toInsert, relTo, convert(side), pct);
+
+ // Force the new sash to have the same weight as the
+ // original element
+ if (relTo.getParent() != relToParent && !onEdge)
+ relTo.getParent().setContainerData(
+ containerDataBeforeModelOperations);
+ }
+ }
+ }
+ }
+ }
+
+ private int convert(Integer side) {
+ if (side == Side.LEFT)
+ return EModelService.LEFT_OF;
+ else if (side == Side.RIGHT)
+ return EModelService.RIGHT_OF;
+ else if (side == Side.BOTTOM)
+ return EModelService.BELOW;
+ else if (side == Side.TOP)
+ return EModelService.ABOVE;
+ else
+ throw new IllegalArgumentException();
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/emf/RecordingCommand.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/emf/RecordingCommand.java
new file mode 100644
index 0000000..3b23412
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/emf/RecordingCommand.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.presentation.emf;
+
+import org.eclipse.emf.common.command.AbstractCommand;
+
+public class RecordingCommand extends AbstractCommand {
+
+ @Override
+ public void execute() {
+
+ }
+
+ @Override
+ public void redo() {
+
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/GenericPresentationEngine.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/GenericPresentationEngine.java
new file mode 100644
index 0000000..ae4ecf0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/GenericPresentationEngine.java
@@ -0,0 +1,592 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Kai Toedter, Rushan R. Gilmullin and others.
+ *
+ * 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:
+ * Kai Toedter - initial API and implementation
+ * Rushan R. Gilmullin - adoption to vaaclipse and other changes
+ ******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.engine;
+
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.log.Logger;
+import org.eclipse.e4.ui.di.PersistState;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.MApplicationElement;
+import org.eclipse.e4.ui.model.application.MContribution;
+import org.eclipse.e4.ui.model.application.ui.MContext;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenu;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.services.internal.events.EventBroker;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.equinox.app.IApplication;
+import org.eclipse.osbp.vaaclipse.presentation.renderers.GenericRenderer;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+/**
+ * This engine was adopted from Kai Toedter's generic renderer project. I place
+ * it in vaaclipse packages temproraly - until the generic renderer will be the
+ * part of eclipse project.
+ *
+ * @author Kai Toedter
+ */
+@SuppressWarnings("restriction")
+public class GenericPresentationEngine implements PresentationEngine {
+
+ protected MApplication theApp;
+
+ @Inject
+ protected Logger logger;
+
+ protected RendererFactory rendererFactory;
+
+ @Inject
+ EModelService modelService;
+
+ @Inject
+ protected EventBroker eventBroker;
+
+ private final EventHandler childrenHandler = new EventHandler() {
+ @Override
+ public void handleEvent(Event event) {
+ Object changedObj = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+ if (!(changedObj instanceof MElementContainer<?>)) {
+ return;
+ }
+
+ @SuppressWarnings("unchecked")
+ MElementContainer<MUIElement> changedElement = (MElementContainer<MUIElement>) changedObj;
+
+ // if changedElement has no GUI, not process adding and removing.
+ // Add will be processed later, in createGui for changedElement -
+ // the child GUI will be created in processContent
+ if (changedElement.getWidget() == null)
+ return;
+
+ GenericRenderer parentRenderer = (GenericRenderer) changedElement
+ .getRenderer();
+
+ if (parentRenderer == null)
+ return;
+
+ String eventType = (String) event
+ .getProperty(UIEvents.EventTags.TYPE);
+ if (UIEvents.EventTypes.ADD.equals(eventType)) {
+ MUIElement added = (MUIElement) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+ GenericRenderer renderer = rendererFactory.getRenderer(added);
+ if (added.getWidget() == null && !renderer.isLazy())
+ createGui(added);
+ if (changedElement.getWidget() != null
+ && added.isToBeRendered())
+ parentRenderer.addChildGui(added, changedElement);
+
+ // If the element being added is a placeholder, check to see
+ // if it's 'globally visible' and, if so, remove all other
+ // 'local' placeholders referencing the same element.
+ int newLocation = modelService.getElementLocation(added);
+ if (newLocation == EModelService.IN_SHARED_AREA
+ || newLocation == EModelService.OUTSIDE_PERSPECTIVE) {
+ MWindow topWin = modelService.getTopLevelWindowFor(added);
+ modelService.hideLocalPlaceholders(topWin, null);
+ }
+ } else if (UIEvents.EventTypes.REMOVE.equals(eventType)) {
+ MUIElement removed = (MUIElement) event
+ .getProperty(UIEvents.EventTags.OLD_VALUE);
+
+ // Ensure that the element about to be removed is not the
+ // selected element
+ if (changedElement.getSelectedElement() == removed)
+ changedElement.setSelectedElement(null);
+
+ if (removed.getWidget() != null
+ && changedElement.getWidget() != null
+ && removed.isToBeRendered())
+ parentRenderer.removeChildGui(removed, changedElement);
+ }
+ }
+ };
+
+ private EventHandler toBeRenderedHandler = new EventHandler() {
+ @SuppressWarnings("unchecked")
+ public void handleEvent(Event event) {
+
+ MUIElement changedElement = (MUIElement) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+ MElementContainer<?> parent = changedElement.getParent();
+
+ if (parent == null)
+ return;
+
+ GenericRenderer parentRenderer = (GenericRenderer) parent
+ .getRenderer();
+
+ if (parentRenderer == null)
+ return;
+
+ // If the parent isn't displayed who cares?
+ if (!(parent instanceof MApplication)
+ && (parent == null || parent.getWidget() == null))
+ return;
+
+ if (changedElement.isToBeRendered()) {
+ GenericRenderer renderer = rendererFactory
+ .getRenderer(changedElement);
+ if (changedElement.getWidget() == null && !renderer.isLazy())
+ createGui(changedElement);
+
+ parentRenderer.addChildGui(changedElement,
+ (MElementContainer<MUIElement>) parent);
+ } else {
+ // Ensure that the element about to be removed is not the
+ // selected element
+ if (parent.getSelectedElement() == changedElement)
+ parent.setSelectedElement(null);
+
+ // Un-maximize the element before tearing it down
+ if (changedElement.getTags().contains(MAXIMIZED))
+ changedElement.getTags().remove(MAXIMIZED);
+
+ removeGui(changedElement);
+ }
+
+ }
+ };
+
+ private final EventHandler visibilityHandler = new EventHandler() {
+ @Override
+ public void handleEvent(Event event) {
+ MUIElement changedElement = (MUIElement) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+
+ GenericRenderer renderer = (GenericRenderer) changedElement
+ .getRenderer();
+ if (renderer == null) {
+ return;
+ }
+
+ renderer.setVisible(changedElement, changedElement.isVisible());
+ }
+ };
+
+ @Override
+ public Object createGui(MUIElement element, Object parentWidget,
+ IEclipseContext parentContext) {
+ System.out
+ .println("GenericPresentationEngine.createGui(): This method should not be used.");
+ return null;
+ }
+
+ @Override
+ public Object createGui(MUIElement element,
+ MElementContainer<MUIElement> parent, IEclipseContext parentContext) {
+ if (!element.isToBeRendered())
+ return null;
+
+ GenericRenderer renderer = rendererFactory.getRenderer(element);
+
+ Object currentWidget = element.getWidget();
+ if (currentWidget != null) {
+
+ // Object control = currentWidget;
+ // Object parentWidget = parent.getWidget();
+ // if (parentWidget instanceof ComponentContainer) {
+ // ComponentContainer currentParent = (ComponentContainer)
+ // control.getParent();
+ // if (currentParent != null && currentParent != parentWidget) {
+ // currentParent.removeComponent(control);
+ // }
+ // }
+
+ // Reparent the context (or the kid's context)
+ if (element instanceof MContext) {
+ IEclipseContext ctxt = ((MContext) element).getContext();
+ if (ctxt != null)
+ ctxt.setParent(parentContext);
+ } else {
+ List<MContext> childContexts = modelService.findElements(
+ element, null, MContext.class, null);
+ for (MContext c : childContexts) {
+ // Ensure that we only reset the context of our direct
+ // children
+ MUIElement kid = (MUIElement) c;
+ MUIElement _parent = kid.getParent();
+ if (_parent == null && kid.getCurSharedRef() != null)
+ _parent = kid.getCurSharedRef().getParent();
+ if (!(element instanceof MPlaceholder)
+ && _parent != element)
+ continue;
+
+ if (c.getContext() != null
+ && c.getContext().getParent() != parentContext) {
+ c.getContext().setParent(parentContext);
+ }
+ }
+ }
+
+ // Now that we have a widget let the parent (if any) know
+ if (element.getParent() instanceof MUIElement) {
+ MElementContainer<MUIElement> parentElement = element
+ .getParent();
+ GenericRenderer parentRenderer = (GenericRenderer) parentElement
+ .getRenderer();
+ if (parentRenderer != null) {
+ // TODO: check is this needed
+ // parentRenderer.refreshPlatformElement(parentElement);
+ // old swt specific code:
+ // parentRenderer.childRendered(parentElement, element);
+ }
+ }
+ return element.getWidget();
+ }
+
+ if (element instanceof MContext) {
+
+ MContext ctxt = (MContext) element;
+
+ // Assert.isTrue(ctxt.getContext() == null,
+ // "Before rendering Context should be null");
+ if (ctxt.getContext() == null) {
+ try {
+ IEclipseContext eclipseContext = getContext(parent)
+ .createChild(getContextName(element));
+ populateModelInterfaces(ctxt, eclipseContext, element
+ .getClass().getInterfaces());
+ ctxt.setContext(eclipseContext);
+
+ // make sure the context knows about these variables that
+ // have
+ // been defined in the model
+ for (String variable : ctxt.getVariables()) {
+ eclipseContext.declareModifiable(variable);
+ }
+
+ Map<String, String> props = ctxt.getProperties();
+ for (String key : props.keySet()) {
+ eclipseContext.set(key, props.get(key));
+ }
+ } catch (Exception e) {
+ // TODO - REMOVE ME AFTER TESTS!
+ e.printStackTrace();
+ }
+
+ // E4Workbench.processHierarchy(element);
+ // eclipseContext.activate();
+ }
+ }
+
+ element.setRenderer(renderer);
+
+ renderer.createWidget(element, parent);
+ if (element.getWidget() != null) {
+ renderer.bindWidget(element);
+ }
+
+ if (element instanceof MElementContainer) {
+
+ // first create the GUI for the children
+ @SuppressWarnings("unchecked")
+ MElementContainer<MUIElement> container = (MElementContainer<MUIElement>) element;
+ for (MUIElement child : container.getChildren()) {
+ if (!renderer.isLazy())
+ createGui(child);
+ }
+
+ // then let the renderer process them
+ renderer.processContents(container);
+ }
+
+ // set element visibility
+ if (element.isToBeRendered() && element.getWidget() != null)
+ renderer.setVisible(element, element.isVisible());
+
+ renderer.hookControllerLogic(element);
+
+ return element.getWidget();
+ }
+
+ private String getContextName(MUIElement element) {
+ StringBuilder builder = new StringBuilder(element.getClass()
+ .getSimpleName());
+ String elementId = element.getElementId();
+ if (elementId != null && elementId.length() != 0) {
+ builder.append(" (").append(elementId).append(") ");
+ }
+ builder.append("Context");
+ return builder.toString();
+ }
+
+ private static void populateModelInterfaces(MContext contextModel,
+ IEclipseContext context, Class<?>[] interfaces) {
+ for (Class<?> intf : interfaces) {
+ context.set(intf.getName(), contextModel);
+ populateModelInterfaces(contextModel, context, intf.getInterfaces());
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Object createGui(final MUIElement element) {
+ // Obtain the necessary parent widget
+ MElementContainer<MUIElement> parent = element.getParent();
+ if (parent == null
+ && ((EObject) element).eContainer() instanceof MElementContainer<?>) {
+ parent = (MElementContainer<MUIElement>) ((EObject) element)
+ .eContainer();
+ }
+
+ // Obtain the necessary parent context
+ IEclipseContext parentContext = null;
+ if (element.getCurSharedRef() != null) {
+ MPlaceholder ph = element.getCurSharedRef();
+ parentContext = getContext(ph.getParent());
+ } else if (parentContext == null && element.getParent() != null) {
+ parentContext = getContext(element.getParent());
+ } else if (parentContext == null && element.getParent() == null) {
+ parentContext = getContext((MUIElement) ((EObject) element)
+ .eContainer());
+ }
+
+ return createGui(element, parent, parentContext);
+ }
+
+ private IEclipseContext getContext(MUIElement parent) {
+ if (parent instanceof MContext) {
+ return ((MContext) parent).getContext();
+ }
+ return modelService.getContainingContext(parent);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void removeGui(MUIElement element) {
+
+ // ((GenericRenderer) element.getRenderer()).removeWidget(element,
+ // null);
+
+ // ((GenericRenderer) element.getRenderer()).disposeWidget(element);
+
+ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+ // We call 'hideChild' *before* checking if the actual element
+ // has been rendered in order to pick up cases of 'lazy loading'
+ MUIElement parent = element.getParent();
+ GenericRenderer parentRenderer = (GenericRenderer) (parent != null ? parent
+ .getRenderer() : null);
+
+ if (parentRenderer != null && parent.getWidget() != null) {
+ parentRenderer.removeChildGui(element,
+ (MElementContainer<MUIElement>) parent);
+ }
+
+ GenericRenderer renderer = (GenericRenderer) element.getRenderer();
+
+ // If the element hasn't been rendered then this is a NO-OP
+ if (renderer != null) {
+
+ if (element instanceof MElementContainer<?>) {
+ MElementContainer<MUIElement> container = (MElementContainer<MUIElement>) element;
+ MUIElement selectedElement = container.getSelectedElement();
+ List<MUIElement> children = container.getChildren();
+ for (MUIElement child : children) {
+ // remove stuff in the "back" first
+ if (child != selectedElement) {
+ removeGui(child);
+ }
+ }
+
+ if (selectedElement != null
+ && children.contains(selectedElement)) {
+ // now remove the selected element
+ removeGui(selectedElement);
+ }
+ } else if (element instanceof MPlaceholder) {
+ MPlaceholder ph = (MPlaceholder) element;
+ MUIElement refElement = ph.getRef();
+
+ int pcount = 0;
+ MWindow window = modelService.getTopLevelWindowFor(element);
+ for (MPlaceholder p : modelService.findElements(window, null,
+ MPlaceholder.class, null)) {
+ if (p.getRef() == refElement)
+ pcount++;
+ }
+
+ assert pcount > 0;
+
+ if (pcount == 1) {
+ removeGui(refElement);
+ }
+ }
+
+ if (element instanceof MPerspective) {
+ MPerspective perspective = (MPerspective) element;
+ for (MWindow subWindow : perspective.getWindows()) {
+ removeGui(subWindow);
+ }
+ } else if (element instanceof MWindow) {
+ MWindow window = (MWindow) element;
+ for (MWindow subWindow : window.getWindows()) {
+ removeGui(subWindow);
+ }
+
+ if (window instanceof MTrimmedWindow) {
+ MTrimmedWindow trimmedWindow = (MTrimmedWindow) window;
+ for (MUIElement trimBar : trimmedWindow.getTrimBars()) {
+ removeGui(trimBar);
+ }
+ }
+ }
+
+ if (element instanceof MContribution) {
+ MContribution contribution = (MContribution) element;
+ Object client = contribution.getObject();
+ IEclipseContext parentContext = renderer.getContext(element);
+ if (parentContext != null && client != null) {
+ try {
+ ContextInjectionFactory.invoke(client,
+ PersistState.class, parentContext, null);
+ } catch (Exception e) {
+ if (logger != null) {
+ logger.error(e);
+ }
+ }
+ }
+ }
+
+ if (element instanceof MPart) {
+ MPart part = (MPart) element;
+ MToolBar toolBar = part.getToolbar();
+ if (toolBar != null) {
+
+ if (toolBar.getWidget() != null) {
+ ((GenericRenderer) (toolBar.getRenderer()))
+ .unbindWidget(toolBar);
+ }
+ }
+
+ for (MMenu menu : part.getMenus()) {
+ removeGui(menu);
+ }
+ }
+
+ renderer.unbindWidget(element);
+ renderer.disposeWidget(element);
+ element.setRenderer(null);
+ element.setWidget(null);
+
+ // unset the client object
+ if (element instanceof MContribution) {
+ MContribution contribution = (MContribution) element;
+ Object client = contribution.getObject();
+ IEclipseContext parentContext = renderer.getContext(element);
+ if (parentContext != null && client != null) {
+ try {
+ ContextInjectionFactory.uninject(client, parentContext);
+ } catch (Exception e) {
+ if (logger != null) {
+ logger.error(e);
+ }
+ }
+ }
+ contribution.setObject(null);
+ }
+
+ // dispose the context
+ if (element instanceof MContext) {
+ clearContext((MContext) element);
+ }
+ }
+ }
+
+ private void clearContext(MContext contextME) {
+ MContext ctxt = (MContext) contextME;
+ IEclipseContext lclContext = ctxt.getContext();
+ if (lclContext != null) {
+ IEclipseContext parentContext = lclContext.getParent();
+ IEclipseContext child = parentContext.getActiveChild();
+ if (child == lclContext) {
+ child.deactivate();
+ }
+
+ ctxt.setContext(null);
+ lclContext.dispose();
+ }
+ }
+
+ @Override
+ public Object run(MApplicationElement uiRoot, IEclipseContext appContext) {
+ appContext.set(IPresentationEngine.class, this);
+ appContext.set(GenericPresentationEngine.class, this);
+ if (uiRoot instanceof MApplication) {
+ theApp = (MApplication) uiRoot;
+ for (MWindow window : theApp.getChildren()) {
+ createGui(window);
+ }
+ }
+ return IApplication.EXIT_OK;
+ }
+
+ @Override
+ public void stop() {
+ if (theApp != null) {
+ for (MWindow window : theApp.getChildren()) {
+ if (window.getWidget() != null) {
+ removeGui(window);
+ }
+ }
+ }
+ }
+
+ public void postConstruct(IEclipseContext context) {
+ // Add the presentation engine to the context
+ context.set(IPresentationEngine.class.getName(), this);
+
+ eventBroker.subscribe(UIEvents.UIElement.TOPIC_TOBERENDERED,
+ toBeRenderedHandler);
+ eventBroker.subscribe(UIEvents.UIElement.TOPIC_VISIBLE,
+ visibilityHandler);
+ eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+ childrenHandler);
+ }
+
+ @PreDestroy
+ public void destroy(IEclipseContext context) {
+ context.remove(IPresentationEngine.class.getName());
+
+ eventBroker.unsubscribe(toBeRenderedHandler);
+ eventBroker.unsubscribe(visibilityHandler);
+ eventBroker.unsubscribe(childrenHandler);
+ }
+
+ // TODO
+ @Override
+ public void focusGui(MUIElement element) {
+
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/GenericRendererFactory.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/GenericRendererFactory.java
new file mode 100644
index 0000000..02a0ac4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/GenericRendererFactory.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Kai Toedter and others.
+ *
+ * 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:
+ * Kai Toedter - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.engine;
+
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.osbp.vaaclipse.presentation.renderers.GenericRenderer;
+import org.eclipse.osbp.vaaclipse.presentation.renderers.VaadinRenderer;
+
+@SuppressWarnings("restriction")
+public class GenericRendererFactory implements RendererFactory {
+
+ VaadinRenderer genericRenderer = new VaadinRenderer();
+
+ @Override
+ public GenericRenderer getRenderer(MUIElement uiElement) {
+ return genericRenderer;
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/PresentationEngine.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/PresentationEngine.java
new file mode 100644
index 0000000..c80279f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/PresentationEngine.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Kai Toedter and others.
+ *
+ * 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:
+ * Kai Toedter - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.engine;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+
+/**
+ * This engine was adopted from Kai Toedter's generic renderer project. I place
+ * it in vaaclipse packages temproraly - until the generic renderer will be the
+ * part of eclipse project.
+ *
+ * @author Kai Toedter
+ */
+@SuppressWarnings("restriction")
+public interface PresentationEngine extends IPresentationEngine {
+ public Object createGui(MUIElement element,
+ MElementContainer<MUIElement> parent, IEclipseContext parentContext);
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/RendererFactory.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/RendererFactory.java
new file mode 100644
index 0000000..9ecfeba
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/RendererFactory.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Kai Toedter and others.
+ *
+ * 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:
+ * Kai Toedter - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.engine;
+
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.osbp.vaaclipse.presentation.renderers.GenericRenderer;
+
+@SuppressWarnings("restriction")
+public interface RendererFactory {
+ public GenericRenderer getRenderer(MUIElement uiElement);
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/VaadinPresentationEngine.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/VaadinPresentationEngine.java
new file mode 100644
index 0000000..2a0edc2
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/engine/VaadinPresentationEngine.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.engine;
+
+import java.net.URI;
+
+import javax.annotation.PostConstruct;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.contributions.IContributionFactory;
+import org.eclipse.e4.ui.model.application.MApplicationElement;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
+import org.eclipse.osbp.vaaclipse.presentation.fastview.FastViewManager;
+import org.eclipse.osbp.vaaclipse.publicapi.events.PublicEvents;
+
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+
+@SuppressWarnings("restriction")
+public class VaadinPresentationEngine extends GenericPresentationEngine {
+
+ public VaadinPresentationEngine() {
+
+ }
+
+ @Override
+ public Object run(final MApplicationElement uiRoot,
+ IEclipseContext appContext) {
+
+ ContextInjectionFactory.make(FastViewManager.class, appContext);
+
+ super.run(uiRoot, appContext);
+
+ return "";
+ }
+
+ @Override
+ @PostConstruct
+ public void postConstruct(IEclipseContext context) {
+ super.postConstruct(context);
+
+ // Add the presentation engine to the context
+ context.set(IPresentationEngine.class.getName(), this);
+
+ // TODO use parameter or registry
+ IContributionFactory contribFactory = context
+ .get(IContributionFactory.class);
+ try {
+ rendererFactory = (RendererFactory) contribFactory
+ .create("bundleclass://org.eclipse.osbp.vaaclipse.presentation/org.eclipse.osbp.vaaclipse.presentation.renderers.VaadinRendererFactory",
+ context);
+ } catch (Exception e) {
+ logger.warn(e, "Could not create rendering factory");
+ }
+ }
+
+ @Override
+ public void stop() {
+ eventBroker.send(PublicEvents.EXIT_WORKBENCH, null);
+
+ super.stop();
+
+ VaadinExecutorService executor = theApp.getContext().get(
+ VaadinExecutorService.class);
+ executor.removeAllAlwaysRunnables();
+
+ final UI ui = theApp.getContext().get(UI.class);
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ ui.setContent(new VerticalLayout());
+ URI appUri = ui.getPage().getLocation();
+ ui.close();
+ ui.getPage().setLocation(appUri);
+ }
+ };
+
+ if (UI.getCurrent() == null) {
+ ui.access(runnable);
+ } else {
+ runnable.run();
+ }
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/fastview/FastViewManager.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/fastview/FastViewManager.java
new file mode 100644
index 0000000..6e6b02e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/fastview/FastViewManager.java
@@ -0,0 +1,160 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.fastview;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.osbp.vaaclipse.api.Events;
+import org.eclipse.osbp.vaaclipse.widgets.StackWidget;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import fi.jasoft.dragdroplayouts.client.ui.LayoutDragMode;
+
+/**
+ * @author rushan
+ *
+ */
+public class FastViewManager {
+ @Inject
+ private IEclipseContext context;
+
+ @Inject
+ private EModelService modelService;
+
+ private Map<MUIElement, SingleElementFastViewManager> element2man = new HashMap<MUIElement, SingleElementFastViewManager>();
+ private Map<StackWidget, LayoutDragMode> layoutDragMode = new HashMap<StackWidget, LayoutDragMode>();
+ private Map<MUIElement, List<MPartStack>> areaStackWidgets = new HashMap<MUIElement, List<MPartStack>>();
+
+ private EventHandler minimizeHandler = new EventHandler() {
+
+ @Override
+ public void handleEvent(Event event) {
+ MUIElement minimizedElement = (MUIElement) event
+ .getProperty(Events.MinMaxEvents.PARAMETER_ELEMENT);
+
+ if (element2man.containsKey(minimizedElement))
+ return;
+
+ // Disable drag mode
+ if (minimizedElement instanceof MPartStack) {
+ disableDrag((MPartStack) minimizedElement);
+ } else if (minimizedElement instanceof MPlaceholder) // area
+ {
+ if (((MPlaceholder) minimizedElement).getRef() != null) {
+ List<MPartStack> stacks = modelService.findElements(
+ ((MPlaceholder) minimizedElement).getRef(), null,
+ MPartStack.class, null);
+
+ for (MPartStack stack : stacks) {
+ if (stack.getWidget() != null) {
+ disableDrag(stack);
+ }
+ }
+ areaStackWidgets.put(minimizedElement, stacks);
+ }
+ }
+
+ // start single element fast view manager for minimizedElement
+ MTrimBar trimBar = (MTrimBar) event
+ .getProperty(Events.MinMaxEvents.PARAMETER_TRIMBAR);
+ MToolBar toolBar = (MToolBar) event
+ .getProperty(Events.MinMaxEvents.PARAMETER_TOOLBAR);
+
+ IEclipseContext manContext = context.createChild();
+ manContext.set(MUIElement.class, minimizedElement);
+ manContext.set(MTrimBar.class, trimBar);
+ manContext.set(MToolBar.class, toolBar);
+
+ SingleElementFastViewManager man = ContextInjectionFactory.make(
+ SingleElementFastViewManager.class, manContext);
+ element2man.put(minimizedElement, man);
+ }
+ };
+
+ private EventHandler restoreHandler = new EventHandler() {
+
+ @Override
+ public void handleEvent(Event event) {
+ MUIElement minimizedElement = (MUIElement) event
+ .getProperty(Events.MinMaxEvents.PARAMETER_ELEMENT);
+
+ if (!element2man.containsKey(minimizedElement))
+ return;
+
+ element2man.remove(minimizedElement).dispose();
+
+ // restore drag mode
+ if (minimizedElement instanceof MPartStack) {
+ restoreDrag((MPartStack) minimizedElement);
+ } else if (minimizedElement instanceof MPlaceholder) // area
+ {
+ MPlaceholder ph = (MPlaceholder) minimizedElement;
+ if (ph.getRef() != null) {
+ List<MPartStack> stacks = areaStackWidgets
+ .remove(minimizedElement);
+ if (stacks != null) {
+ for (MPartStack stack : stacks) {
+ restoreDrag(stack);
+ }
+ }
+ }
+ }
+ }
+ };
+
+ private void disableDrag(MPartStack stack) {
+ StackWidget sw = (StackWidget) stack.getWidget();
+ if (sw != null) {
+ if (sw.getDragMode() != null
+ && !sw.getDragMode().equals(LayoutDragMode.NONE)) {
+ layoutDragMode.put(sw, sw.getDragMode());
+ sw.setDragMode(LayoutDragMode.NONE);
+ }
+ }
+ }
+
+ private void restoreDrag(MPartStack stack) {
+ StackWidget sw = (StackWidget) stack.getWidget();
+ if (sw != null) {
+ LayoutDragMode ldm = layoutDragMode.remove(sw);
+ if (ldm != null) {
+ sw.setDragMode(ldm);
+ }
+ }
+ }
+
+ @PostConstruct
+ public void postConstruct(IEventBroker eventBroker) {
+ eventBroker.unsubscribe(minimizeHandler);
+ eventBroker.subscribe(Events.MinMaxEvents.EVENT_MINIMIZE_ELEMENT,
+ minimizeHandler);
+
+ eventBroker.unsubscribe(restoreHandler);
+ eventBroker.subscribe(Events.MinMaxEvents.EVENT_RESTORE_ELEMENT,
+ restoreHandler);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/fastview/SingleElementFastViewManager.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/fastview/SingleElementFastViewManager.java
new file mode 100644
index 0000000..adfa690
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/fastview/SingleElementFastViewManager.java
@@ -0,0 +1,393 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.fastview;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.MUILabel;
+import org.eclipse.e4.ui.model.application.ui.SideValue;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.vaaclipse.api.Behaviour;
+import org.eclipse.osbp.vaaclipse.presentation.widgets.TrimmedWindowContent;
+import org.eclipse.osbp.vaaclipse.widgets.FastView;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.event.MouseEvents.ClickEvent;
+import com.vaadin.event.MouseEvents.ClickListener;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * @author rushan
+ *
+ */
+public class SingleElementFastViewManager {
+
+ @Inject
+ UI vaadinUI;
+
+ @Inject
+ Behaviour behaviour;
+
+ @Inject
+ MUIElement minimizedElement;
+ @Inject
+ MTrimBar trimBar;
+ @Inject
+ MToolBar toolBar;
+
+ private MWindow window;
+ private Panel vaadinWindow;
+
+ // --------------------------------------------
+ // --------------------------------------------
+
+ private static final String STATE_XSIZE = "XSize"; //$NON-NLS-1$
+
+ private static final String STATE_YSIZE = "YSize"; //$NON-NLS-1$
+
+ private boolean isShowing = false;
+ private FastView hostPane;
+
+ @Inject
+ EModelService modelService;
+
+ @Inject
+ EPartService partService;
+
+ @Inject
+ protected IEventBroker eventBroker;
+
+ /**
+ * This is the old way to subscribe to UIEvents. You should consider using
+ * the new way as shown by handleTransientDataEvents() and described in the
+ * article at http://wiki.eclipse.org/Eclipse4/RCP/Event_Model
+ */
+ private EventHandler closeHandler = new EventHandler() {
+ public void handleEvent(org.osgi.service.event.Event event) {
+ if (!isShowing)
+ return;
+
+ // The only time we don't close is if I've selected my tab.
+ MUIElement changedElement = (MUIElement) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+
+ // Perspective changed, close the visible stacks
+ if (changedElement instanceof MPerspectiveStack) {
+ showStack(false);
+ return;
+ }
+
+ if (changedElement == getLeafPart(minimizedElement)) {
+ fixToolItemSelection(changedElement);
+ return;
+ }
+
+ showStack(false);
+ }
+ };
+
+ private void fixToolItemSelection(MUIElement element) {
+ // TODO: implement correctly this method
+ // if (trimStackTB == null || trimStackTB.isDisposed())
+ // return;
+ //
+ // if (isEditorStack()) {
+ // trimStackTB.getItem(1).setSelection(element != null);
+ // if (element != null)
+ // trimStackTB.getItem(1).setData(element);
+ // } else if (isPerspectiveStack()) {
+ // for (ToolItem item : trimStackTB.getItems()) {
+ // boolean result = item.getData() == null ? false : item.getData() ==
+ // element;
+ // item.setSelection(result);
+ // }
+ // } else {
+ // for (ToolItem item : trimStackTB.getItems()) {
+ // boolean result = item.getData() == null ? false : item.getData() ==
+ // element;
+ // item.setSelection(result);
+ // }
+ // }
+
+ }
+
+ private boolean isEditorStack() {
+ return minimizedElement instanceof MPlaceholder;
+ }
+
+ private boolean isPerspectiveStack() {
+ return minimizedElement instanceof MPerspectiveStack;
+ }
+
+ private MPart getLeafPart(MUIElement element) {
+ if (element instanceof MPlaceholder)
+ return getLeafPart(((MPlaceholder) element).getRef());
+
+ if (element instanceof MElementContainer<?>)
+ return getLeafPart(((MElementContainer<?>) element)
+ .getSelectedElement());
+
+ if (element instanceof MPart)
+ return (MPart) element;
+
+ return null;
+ }
+
+ private EventHandler openHandler = new EventHandler() {
+
+ public void handleEvent(org.osgi.service.event.Event event) {
+ if (isShowing)
+ return;
+
+ MPerspective currentPerspective = modelService
+ .getPerspectiveFor(minimizedElement);
+ MPerspective activePerspective = modelService
+ .getActivePerspective(window);
+
+ if (currentPerspective != activePerspective)
+ return;
+
+ MPart changedElement = (MPart) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+
+ // Open if shared area
+ if (getLeafPart(minimizedElement) == changedElement) {
+ showStack(true);
+ return;
+ }
+
+ MUIElement selectedElement = null;
+
+ if (minimizedElement instanceof MPlaceholder) {
+ selectedElement = ((MPlaceholder) minimizedElement).getRef();
+ } else if (minimizedElement instanceof MPartStack) {
+ selectedElement = ((MPartStack) minimizedElement)
+ .getSelectedElement();
+ }
+
+ if (selectedElement == null)
+ return;
+
+ if (selectedElement instanceof MPlaceholder)
+ selectedElement = ((MPlaceholder) selectedElement).getRef();
+
+ if (changedElement != selectedElement)
+ return;
+
+ showStack(true);
+ }
+ };
+
+ /**
+ * This is the old way to subscribe to UIEvents. You should consider using
+ * the new way as shown by handleTransientDataEvents() and described in the
+ * article at http://wiki.eclipse.org/Eclipse4/RCP/Event_Model
+ */
+ private EventHandler toBeRenderedHandler = new EventHandler() {
+ public void handleEvent(org.osgi.service.event.Event event) {
+ if (minimizedElement == null || trimBar == null)
+ return;
+
+ MUIElement changedElement = (MUIElement) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+
+ // if our stack is going away, so should we
+ if (changedElement == minimizedElement
+ && !minimizedElement.isToBeRendered()) {
+ if (hostPane != null)
+ vaadinUI.removeWindow(hostPane);
+ hostPane = null;
+ return;
+ }
+ }
+ };
+
+ @PostConstruct
+ void postConstruct() {
+
+ if (window == null)
+ window = (MWindow) (trimBar.getParent() != null ? (MElementContainer<?>) trimBar
+ .getParent() : ((EObject) trimBar).eContainer());
+ vaadinWindow = (Panel) window.getWidget();
+
+ eventBroker.subscribe(UIEvents.UIElement.TOPIC_TOBERENDERED,
+ toBeRenderedHandler);
+ eventBroker.subscribe(UIEvents.UILifeCycle.BRINGTOTOP, openHandler);
+ eventBroker.subscribe(UIEvents.UILifeCycle.ACTIVATE, closeHandler);
+ }
+
+ void dispose() {
+ showStack(false);
+
+ eventBroker.unsubscribe(toBeRenderedHandler);
+ eventBroker.unsubscribe(openHandler);
+ eventBroker.unsubscribe(closeHandler);
+ }
+
+ /**
+ * This is the old way to subscribe to UIEvents. You should consider using
+ * the new way as shown by handleTransientDataEvents() and described in the
+ * article at http://wiki.eclipse.org/Eclipse4/RCP/Event_Model
+ */
+ @PreDestroy
+ void removeListeners() {
+ eventBroker.unsubscribe(openHandler);
+ eventBroker.unsubscribe(closeHandler);
+ }
+
+ private String getLabelText(MUILabel label) {
+ // Use override text if available
+ if (label instanceof MUIElement) {
+ String text = getOverrideTitleToolTip((MUIElement) label);
+ if (text != null)
+ return text;
+ }
+
+ String string = label.getLabel();
+ return string == null ? "" : string; //$NON-NLS-1$
+ }
+
+ private String getOverrideTitleToolTip(MUIElement element) {
+ String result = null;
+
+ Object stringObject = element.getTransientData().get(
+ IPresentationEngine.OVERRIDE_TITLE_TOOL_TIP_KEY);
+ if (stringObject != null && stringObject instanceof String)
+ result = (String) stringObject;
+
+ return result;
+ }
+
+ private MUILabel getLabelElement(MUIElement element) {
+ if (element instanceof MPlaceholder)
+ element = ((MPlaceholder) element).getRef();
+
+ return (MUILabel) (element instanceof MUILabel ? element : null);
+ }
+
+ /**
+ * Create the popup menu that will appear when a minimized part has been
+ * selected by the cursor.
+ */
+ // private void createPopupMenu() {
+ // trimStackMenu = new Menu(trimStackTB);
+ // trimStackTB.setMenu(trimStackMenu);
+ //
+ // MenuItem closeItem = new MenuItem(trimStackMenu, SWT.NONE);
+ // closeItem.setText(Messages.TrimStack_CloseText);
+ // closeItem.addListener(SWT.Selection, new Listener() {
+ // public void handleEvent(Event event) {
+ // partService.hidePart((MPart) selectedToolItem.getData());
+ // }
+ // });
+ // }
+
+ ClickListener layoutClickListener = new ClickListener() {
+
+ @Override
+ public void click(ClickEvent event) {
+ if (isShowing)
+ showStack(false);
+ partService.requestActivation();
+ }
+ };
+
+ public synchronized void showStack(boolean show) {
+ Component ctf = (Component) minimizedElement.getWidget();
+
+ if (show && !isShowing) {
+ hostPane = getHostPane();
+ VerticalLayout vl = new VerticalLayout();
+ vl.setSizeFull();
+ hostPane.setContent(vl);
+
+ ctf.setVisible(true);
+
+ TrimmedWindowContent windowContent = (TrimmedWindowContent) vaadinWindow
+ .getContent();
+ VerticalLayout clientArea = windowContent.getClientArea();
+
+ hostPane.setTrimmedWindowClientArea(clientArea);
+ // hostPane.setContent(ctf);
+ vl.addComponent(ctf);
+
+ vaadinUI.addWindow(hostPane);
+ vaadinWindow.addClickListener(layoutClickListener);
+
+ isShowing = true;
+ } else if (!show && isShowing) {
+ if (hostPane != null) {
+ vaadinUI.removeWindow(hostPane);
+ // capture the current shell's bounds
+ toolBar.getPersistedState().put(STATE_XSIZE,
+ Float.toString(Float.valueOf(hostPane.getWidth())));
+ toolBar.getPersistedState().put(STATE_YSIZE,
+ Float.toString(Float.valueOf(hostPane.getHeight())));
+ }
+
+ fixToolItemSelection(null);
+
+ vaadinWindow.removeClickListener(layoutClickListener);
+
+ partService.requestActivation();
+
+ isShowing = false;
+ }
+ }
+
+ private FastView getHostPane() {
+ if (hostPane != null)
+ return hostPane;
+
+ // Create one
+ hostPane = new FastView();
+ hostPane.setSide(trimBar.getSide().getValue());
+ hostPane.setClosable(false);
+ hostPane.setDraggable(false);
+ if (trimBar.getSide() == SideValue.RIGHT)
+ hostPane.setResizable(false);
+ // hostPane.setResizeLazy(true);
+ hostPane.setStyleName("loading-window");
+
+ // TODO: implement closing by esc
+ // hostPane.addListener(SWT.Traverse, new Listener() {
+ // public void handleEvent(Event event) {
+ // if (event.character == SWT.ESC) {
+ // partService.requestActivation();
+ // }
+ // }
+ // });
+
+ return hostPane;
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/AreaRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/AreaRenderer.java
new file mode 100644
index 0000000..2f13255
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/AreaRenderer.java
@@ -0,0 +1,276 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.List;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MArea;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainerElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
+import org.eclipse.osbp.vaaclipse.presentation.utils.HierarchyUtils;
+import org.eclipse.osbp.vaaclipse.widgets.StackWidget;
+import org.eclipse.osbp.vaaclipse.widgets.StackWidget.StateListener;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.ui.AbstractOrderedLayout;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * @author rushan
+ *
+ */
+public class AreaRenderer extends VaadinRenderer {
+ @Inject
+ IEventBroker eventBroker;
+
+ @Inject
+ VaadinExecutorService executorService;
+
+ private EventHandler childrenHandler = new EventHandler() {
+ public void handleEvent(Event event) {
+ Object changedObj = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+ // Stacks can not contains another stacks (yes, theoretically it can
+ // contains the stack in child placeholder, but
+ // we search only top level stacks)
+ if (changedObj instanceof MPartStack)
+ return;
+
+ @SuppressWarnings("unchecked")
+ MElementContainer<? extends MUIElement> changedElement = (MElementContainer<MUIElement>) changedObj;
+
+ if (!changedElement.isToBeRendered()
+ || changedElement.getWidget() == null)
+ return;
+
+ String eventType = (String) event
+ .getProperty(UIEvents.EventTags.TYPE);
+ MUIElement child = null;
+ if (UIEvents.EventTypes.ADD.equals(eventType))
+ child = (MUIElement) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+ else if (UIEvents.EventTypes.REMOVE.equals(eventType))
+ child = (MUIElement) event
+ .getProperty(UIEvents.EventTags.OLD_VALUE);
+
+ if (child == null || !child.isToBeRendered())
+ return;
+
+ if (!(child instanceof MPartStack || child instanceof MPartSashContainer))
+ return;
+
+ processChangedElement(changedElement);
+ }
+ };
+
+ private EventHandler toBeRenderedHandler = new EventHandler() {
+ public void handleEvent(Event event) {
+
+ MUIElement changedElement = (MUIElement) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+
+ if (!(changedElement instanceof MPartStack || changedElement instanceof MPartSashContainer))
+ return;
+
+ processChangedElement(changedElement);
+ }
+ };
+
+ private void processChangedElement(MUIElement changedElement) {
+ MArea area = null;
+ // if it is area we directly process it
+ if (changedElement instanceof MArea)
+ area = (MArea) changedElement;
+ else {// otherwise we find parent area
+ int loc = modelService.getElementLocation(changedElement);
+ if (loc != EModelService.IN_SHARED_AREA)
+ return;
+
+ area = findArea(changedElement);
+ }
+
+ if (area != null) {
+ final MArea closureArea = area;
+ executorService.invokeLater(closureArea, new Runnable() {
+
+ @Override
+ public void run() {
+ refreshTopRightState(closureArea);
+ }
+ });
+ }
+ }
+
+ private MArea findArea(MUIElement element) {
+ MUIElement parent = element.getParent();
+ while (parent != null) {
+ if (parent instanceof MArea)
+ return (MArea) parent;
+ parent = parent.getParent();
+ }
+ return null;
+ }
+
+ @PostConstruct
+ public void subscribe() {
+ eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+ childrenHandler);
+ eventBroker.subscribe(UIEvents.UIElement.TOPIC_TOBERENDERED,
+ toBeRenderedHandler);
+ }
+
+ @PreDestroy
+ public void unsubscribe() {
+ eventBroker.unsubscribe(childrenHandler);
+ eventBroker.unsubscribe(toBeRenderedHandler);
+ }
+
+ @Override
+ public void createWidget(MUIElement element,
+ MElementContainer<MUIElement> parent) {
+ if (!(element instanceof MArea))
+ return;
+
+ MArea area = (MArea) element;
+ AbstractOrderedLayout areaComp;
+ if (area.isHorizontal())
+ areaComp = new HorizontalLayout();
+ else
+ areaComp = new VerticalLayout();
+ areaComp.addStyleName("org_eclipse_osbp_vaaclipse_area");
+ areaComp.setSizeFull();
+ element.setWidget(areaComp);
+ }
+
+ @Override
+ public void processContents(MElementContainer<MUIElement> container) {
+ MArea area = (MArea) (MElementContainer<?>) container;
+ AbstractOrderedLayout parentPane = (AbstractOrderedLayout) area
+ .getWidget();
+ parentPane.removeAllComponents();
+ for (MUIElement element : area.getChildren()) {
+ if (element.isToBeRendered()) {
+ if (element instanceof MPlaceholder)
+ element = ((MPlaceholder) element).getRef();
+ parentPane.addComponent((Component) element.getWidget());
+ }
+ }
+
+ refreshTopRightState(area);
+ }
+
+ /**
+ * This method finds the top right part stack (located in top right corner)
+ * and apply its maximize and minimize buttons to entire area. Then hide the
+ * maximize and minimize buttons of other stacks in this area. So, there are
+ * implemented the eclipse3-like approach to manage area (in e4 swt renderer
+ * is used other way - if more than one stack is located in area, the top
+ * container-tabfolder is created for entire area and buttons of this
+ * container folder is used - i found this way is too heavy-weight).
+ */
+ @SuppressWarnings("restriction")
+ private void refreshTopRightState(final MArea area) {
+ MPartStack topLeftStak = HierarchyUtils.findTopLeftFolder(area);
+ if (topLeftStak != null) {
+ StackWidget topLeftStackWidget = (StackWidget) topLeftStak
+ .getWidget();
+ if (topLeftStackWidget != null) {
+ topLeftStackWidget.setMinMaxEnabled(true);
+ topLeftStackWidget.removeAllStateListeners();
+
+ topLeftStackWidget.addStateListener(new StateListener() {
+
+ @Override
+ public void stateChanged(int newState, int oldState) {
+ MPlaceholder ph = area.getCurSharedRef();
+ if (oldState == 0 && newState == 1)
+ setState(ph, IPresentationEngine.MAXIMIZED);
+ else if (oldState == 1 && newState == 0)
+ setState(ph, null);
+ else if (oldState == 1 && newState == -1) {
+ ph.getTags().remove(IPresentationEngine.MINIMIZED);
+ ph.getTags().remove(IPresentationEngine.MAXIMIZED);
+ ph.getTags().add(IPresentationEngine.MINIMIZED);
+ } else if (oldState == -1 && newState == 0) {
+ ph.getTags().remove(
+ IPresentationEngine.MINIMIZED_BY_ZOOM);
+ ph.getTags().remove(IPresentationEngine.MINIMIZED);
+ } else if (oldState == 0 && newState == -1)
+ setState(ph, IPresentationEngine.MINIMIZED);
+ }
+
+ private void setState(MUIElement element, String state) {
+ element.getTags().remove(
+ IPresentationEngine.MINIMIZED_BY_ZOOM);
+ if (IPresentationEngine.MINIMIZED.equals(state)) {
+ element.getTags().remove(
+ IPresentationEngine.MAXIMIZED);
+ element.getTags()
+ .add(IPresentationEngine.MINIMIZED);
+ } else if (IPresentationEngine.MAXIMIZED.equals(state)) {
+ element.getTags().remove(
+ IPresentationEngine.MINIMIZED);
+ element.getTags()
+ .add(IPresentationEngine.MAXIMIZED);
+ } else {
+ element.getTags().remove(
+ IPresentationEngine.MINIMIZED);
+ element.getTags().remove(
+ IPresentationEngine.MAXIMIZED);
+ }
+ }
+ });
+ }
+
+ List<MPartStack> stacks = modelService.findElements(area, null,
+ MPartStack.class, null);
+
+ for (MPartStack stack : stacks) {
+ if (stack.isToBeRendered() && stack != topLeftStak) {
+ StackWidget stackWidget = (StackWidget) stack.getWidget();
+ if (stackWidget != null) {
+ stackWidget.setMinMaxEnabled(false);
+ stackWidget.removeAllStateListeners();
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ public void addChildGui(MUIElement child,
+ MElementContainer<MUIElement> element) {
+ if (!(child instanceof MPartSashContainerElement))
+ return;
+
+ AbstractOrderedLayout areaWidget = (AbstractOrderedLayout) element
+ .getWidget();
+ int index = indexOf(child, element);
+ areaWidget.addComponent((Component) child.getWidget(), index);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/BasicMenuToolbarTrimbarRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/BasicMenuToolbarTrimbarRenderer.java
new file mode 100644
index 0000000..a1c434c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/BasicMenuToolbarTrimbarRenderer.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+/**
+ * @author rushan
+ *
+ */
+public class BasicMenuToolbarTrimbarRenderer extends VaadinRenderer {
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/GenericRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/GenericRenderer.java
new file mode 100644
index 0000000..f047f89
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/GenericRenderer.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Kai Toedter and others.
+ *
+ * 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:
+ * Kai Toedter - initial API and implementation
+ * Rushan R. Gilmullin - adaption to vaaclipse needs
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+
+/**
+ * The beginning point of this renderer interface is a Kai Toedter's
+ * GenericRenderer class. I place it in vaaclipse packages temproraly - until
+ * the generic renderer will be the part of eclipse project.
+ *
+ * @author Kai Toedter
+ */
+public interface GenericRenderer {
+ void createWidget(MUIElement element, MElementContainer<MUIElement> parent);
+
+ void disposeWidget(MUIElement element);
+
+ void processContents(MElementContainer<MUIElement> element);
+
+ void addChildGui(MUIElement child, MElementContainer<MUIElement> element);
+
+ void removeChildGui(MUIElement element, MElementContainer<MUIElement> parent);
+
+ boolean isLazy();
+
+ void hookControllerLogic(MUIElement element);
+
+ IEclipseContext getContext(MUIElement part);
+
+ void setVisible(MUIElement changedElement, boolean visible);
+
+ void bindWidget(MUIElement element);
+
+ void unbindWidget(MUIElement element);
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ItemRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ItemRenderer.java
new file mode 100644
index 0000000..4120d61
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ItemRenderer.java
@@ -0,0 +1,224 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.inject.Inject;
+
+import org.eclipse.core.commands.ParameterizedCommand;
+import org.eclipse.core.commands.common.NotDefinedException;
+import org.eclipse.e4.core.commands.ECommandService;
+import org.eclipse.e4.core.commands.EHandlerService;
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.commands.MParameter;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.menu.MDirectMenuItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuItem;
+import org.eclipse.e4.ui.services.internal.events.EventBroker;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
+import org.eclipse.osbp.vaaclipse.publicapi.events.VaaclipseUiEvents;
+
+import com.vaadin.ui.MenuBar.Command;
+import com.vaadin.ui.MenuBar.MenuItem;
+
+@SuppressWarnings("restriction")
+public abstract class ItemRenderer extends VaadinRenderer {
+
+ @Inject
+ EventBroker eventBroker;
+
+ @Inject
+ EModelService modelService;
+
+ @Inject
+ protected VaadinExecutorService executorService;
+
+ protected Map<MItem, Runnable> enabledUpdaters = new HashMap<MItem, Runnable>();
+
+ protected void registerEnablementUpdaters(final MItem item) {
+ if (!enabledUpdaters.containsKey(item)) {
+ Runnable runnable = new Runnable() {
+
+ @Override
+ public void run() {
+ updateItemEnablement(item);
+ }
+ };
+ this.enabledUpdaters.put(item, runnable);
+ executorService.invokeLaterAlways(runnable);
+ }
+ }
+
+ protected abstract void updateItemEnablement(MItem item);
+
+ public boolean canExecute(MItem item) {
+ // override by sub classes
+ return true;
+ }
+
+ protected boolean canExecute(MHandledItem item) {
+ final IEclipseContext eclipseContext = getContext(item);
+ if (eclipseContext == null) // item is not in hierarchy
+ return false;
+ EHandlerService service = (EHandlerService) eclipseContext
+ .get(EHandlerService.class.getName());
+ if (service == null)
+ return false;
+ ParameterizedCommand command = item.getWbCommand();
+ if (command == null) {
+ command = generateParameterizedCommand(item, eclipseContext);
+ }
+ if (command == null) {
+ return false;
+ }
+ eclipseContext.set(MItem.class, item);
+ setupContext(eclipseContext, item);
+ return service.canExecute(command, eclipseContext);
+ }
+
+ @Override
+ public void disposeWidget(MUIElement element) {
+ unregisterEnabledUpdater(element);
+ }
+
+ private void unregisterEnabledUpdater(MUIElement element) {
+ Runnable runnable = enabledUpdaters.remove(element);
+ if (runnable != null) {
+ executorService.removeAlwaysRunnable(runnable);
+ }
+ }
+
+ protected String prepareText(MMenuItem model) {
+ String text = model.getLocalizedLabel();
+ if (model instanceof MHandledItem) {
+ MHandledItem handledItem = (MHandledItem) model;
+ generateParameterizedCommand(handledItem, context);
+ ParameterizedCommand cmd = handledItem.getWbCommand();
+ if (cmd != null && (text == null || text.length() == 0)) {
+ try {
+ text = cmd.getName();
+ } catch (NotDefinedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ if (text == null)
+ text = "Blank";
+ return text;
+ }
+
+ protected ParameterizedCommand generateParameterizedCommand(
+ final MHandledItem item, final IEclipseContext lclContext) {
+ ECommandService cmdService = (ECommandService) lclContext
+ .get(ECommandService.class.getName());
+ Map<String, Object> parameters = null;
+ List<MParameter> modelParms = item.getParameters();
+ if (modelParms != null && !modelParms.isEmpty()) {
+ parameters = new HashMap<String, Object>();
+ for (MParameter mParm : modelParms) {
+ parameters.put(mParm.getName(), mParm.getValue());
+ }
+ }
+ if (item.getCommand() != null) {
+ ParameterizedCommand cmd = cmdService.createCommand(item
+ .getCommand().getElementId(), parameters);
+ item.setWbCommand(cmd);
+
+ return cmd;
+ } else
+ return null;
+ }
+
+ protected Command createParametrizedCommandEventHandler(
+ final MHandledItem item) {
+ return new Command() {
+
+ @Override
+ public void menuSelected(MenuItem selectedItem) {
+ executeItem(item);
+ }
+ };
+ }
+
+ protected Command createEventHandler(final MItem item) {
+ return new Command() {
+
+ @Override
+ public void menuSelected(MenuItem selectedItem) {
+ executeItem(item);
+ }
+ };
+ }
+
+ public void executeItem(final MHandledItem item) {
+ final IEclipseContext eclipseContext = getContext(item);
+ EHandlerService service = (EHandlerService) eclipseContext
+ .get(EHandlerService.class.getName());
+ ParameterizedCommand command = item.getWbCommand();
+ if (command == null) {
+ command = generateParameterizedCommand(item, eclipseContext);
+ }
+ if (command == null) {
+ System.err.println("Failed to execute: " + item.getCommand());
+ return;
+ }
+ eclipseContext.set(MItem.class, item);
+ setupContext(eclipseContext, item);
+ service.executeHandler(command);
+ eclipseContext.remove(MItem.class.getName());
+
+ eventBroker.send(VaaclipseUiEvents.Item.TOPIC_EXECUTED, item);
+ }
+
+ public void executeItem(final MItem item) {
+ if (item instanceof MHandledItem) {
+ MHandledItem mHandled = (MHandledItem) item;
+ executeItem(mHandled);
+ } else {
+ final IEclipseContext eclipseContext = getContext(item);
+ eclipseContext.set(MItem.class, item);
+ setupContext(eclipseContext, item);
+ if (item instanceof MDirectToolItem) {
+ Object toolItem = ((MDirectToolItem) item).getObject();
+ if ((Boolean) ContextInjectionFactory.invoke(toolItem,
+ CanExecute.class, eclipseContext, true))
+ ContextInjectionFactory.invoke(toolItem, Execute.class,
+ eclipseContext);
+ } else if (item instanceof MDirectMenuItem) {
+ Object menuItem = ((MDirectMenuItem) item).getObject();
+ if ((Boolean) ContextInjectionFactory.invoke(menuItem,
+ CanExecute.class, eclipseContext, true))
+ ContextInjectionFactory.invoke(menuItem, Execute.class,
+ eclipseContext);
+ }
+ eclipseContext.remove(MItem.class);
+ }
+
+ eventBroker.send(VaaclipseUiEvents.Item.TOPIC_EXECUTED, item);
+ }
+
+ protected void setupContext(IEclipseContext context, MItem item) {
+ MWindow window = modelService.getTopLevelWindowFor(item);
+ context.set(MWindow.class, window);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/MenuItemRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/MenuItemRenderer.java
new file mode 100644
index 0000000..fd60b02
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/MenuItemRenderer.java
@@ -0,0 +1,335 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.services.contributions.IContributionFactory;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.menu.MDirectMenuItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenu;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuItem;
+//import org.eclipse.e4.ui.model.application.ui.menu.MOpaqueMenuItem;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.osbp.vaaclipse.presentation.utils.Commons;
+import org.eclipse.osbp.vaaclipse.publicapi.resources.ResourceHelper;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.server.Resource;
+import com.vaadin.ui.MenuBar;
+import com.vaadin.ui.MenuBar.Command;
+import com.vaadin.ui.MenuBar.MenuItem;
+
+@SuppressWarnings("restriction")
+public class MenuItemRenderer extends ItemRenderer {
+
+ @Inject
+ IContributionFactory contributionFactory;
+
+ @Inject
+ IEventBroker eventBroker;
+
+ private EventHandler itemUpdater = new EventHandler() {
+ public void handleEvent(Event event) {
+ // Ensure that this event is for a MMenuItem
+ if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MMenuItem))
+ return;
+
+ MMenuItem itemModel = (MMenuItem) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+
+ MenuItem ici = (MenuItem) itemModel.getWidget();
+ if (ici == null) {
+ return;
+ }
+
+ String attName = (String) event
+ .getProperty(UIEvents.EventTags.ATTNAME);
+ String newValue = (String) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+ if (UIEvents.UILabel.LABEL.equals(attName)) {
+ ici.setText(newValue);
+ } else if (UIEvents.UILabel.ICONURI.equals(attName)) {
+ Resource icon = ResourceHelper.createResource(newValue);
+ ici.setIcon(icon);
+ } else if (UIEvents.UILabel.TOOLTIP.equals(attName)) {
+ ici.setDescription(newValue);
+ }
+ }
+ };
+
+ private EventHandler enabledUpdater = new EventHandler() {
+ public void handleEvent(Event event) {
+ // Ensure that this event is for a MMenuItem
+ if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MMenuItem))
+ return;
+
+ MMenuItem itemModel = (MMenuItem) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+ MenuItem ici = (MenuItem) itemModel.getWidget();
+ if (ici != null) {
+ Boolean newValue = (Boolean) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+ ici.setEnabled(newValue);
+ }
+ }
+ };
+
+ private EventHandler selectedUpdater = new EventHandler() {
+ public void handleEvent(Event event) {
+ // Ensure that this event is for a MMenuItem
+ if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MMenuItem))
+ return;
+
+ MMenuItem itemModel = (MMenuItem) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+ MenuItem ici = (MenuItem) itemModel.getWidget();
+ if (ici != null) {
+ Boolean newValue = (Boolean) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+ ici.setChecked(newValue);
+ }
+ }
+ };
+
+ @PostConstruct
+ public void postConstruct() {
+ eventBroker.subscribe(UIEvents.UILabel.TOPIC_ALL, itemUpdater);
+ eventBroker.subscribe(UIEvents.Item.TOPIC_ENABLED, enabledUpdater);
+ eventBroker.subscribe(UIEvents.Item.TOPIC_SELECTED, selectedUpdater);
+ eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+ childrenMoveUpdater);
+ eventBroker.subscribe(UIEvents.UILabel.TOPIC_LOCALIZED_LABEL,
+ localizeLabel);
+ eventBroker.subscribe(UIEvents.UILabel.TOPIC_LOCALIZED_TOOLTIP,
+ localizeTooltip);
+ eventBroker.subscribe(UIEvents.UILabel.TOPIC_LABEL, localizeLabel);
+ eventBroker.subscribe(UIEvents.UILabel.TOPIC_TOOLTIP, localizeTooltip);
+ }
+
+ @PreDestroy
+ public void preDestroy() {
+ eventBroker.unsubscribe(itemUpdater);
+ eventBroker.unsubscribe(enabledUpdater);
+ eventBroker.unsubscribe(selectedUpdater);
+ eventBroker.unsubscribe(childrenMoveUpdater);
+ eventBroker.unsubscribe(localizeLabel);
+ eventBroker.unsubscribe(localizeTooltip);
+ }
+
+ private EventHandler childrenMoveUpdater = new EventHandler() {
+ @SuppressWarnings("unchecked")
+ public void handleEvent(Event event) {
+ // Ensure that this event is for a MMenuItem
+ if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MMenu))
+ return;
+
+ MElementContainer<MUIElement> menu = (MElementContainer<MUIElement>) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+
+ String type = (String) event.getProperty(UIEvents.EventTags.TYPE);
+
+ // on move, we unrender an render the UI again
+ //
+ if (UIEvents.EventTypes.MOVE.equals(type)) {
+ for (MUIElement item : menu.getChildren()) {
+ removeChildGui(item, menu);
+ }
+
+ for (MUIElement item : menu.getChildren()) {
+ createWidget(item, menu);
+ }
+ }
+ }
+ };
+
+ @Override
+ public void createWidget(MUIElement element,
+ MElementContainer<MUIElement> parent) {
+
+ if (!element.isToBeRendered())
+ return;
+
+ if (element instanceof MMenuItem) {
+ MMenuItem model = (MMenuItem) element;
+
+ // --------------------
+ // Prepare the text
+ String text = prepareText(model);
+ text = text.replaceAll("&", "");
+
+ // Prepare the icon
+ Resource icon = model.getIconURI() != null ? ResourceHelper
+ .createResource(model.getIconURI()) : null;
+
+ // Prepare the command
+ Command command = null;
+ if (model instanceof MDirectMenuItem) {
+ final MDirectMenuItem item = (MDirectMenuItem) model;
+ item.setObject(contributionFactory.create(
+ item.getContributionURI(), getContext(item)));
+
+ command = createEventHandler(item);
+ } else if (model instanceof MHandledMenuItem) {
+ final MHandledMenuItem item = (MHandledMenuItem) model;
+ command = createParametrizedCommandEventHandler(item);
+ }
+
+ MUIElement nextRenderableAndVisible = findNextRendarableAndVisible(
+ element, parent);
+ MenuItem item = null;
+ if (nextRenderableAndVisible == null)
+ item = ((MenuItem) parent.getWidget()).addItem(text, icon,
+ command);
+ else
+ item = ((MenuItem) parent.getWidget()).addItemBefore(text,
+ icon, command,
+ (MenuItem) nextRenderableAndVisible.getWidget());
+ // -----------------
+
+ element.setWidget(item);
+
+ updateItemEnablement(model);
+ item.setEnabled(model.isEnabled());
+
+ // set the check mode
+ switch (model.getType()) {
+ case CHECK:
+ item.setCheckable(true);
+ item.setChecked(model.isSelected());
+ break;
+ default:
+ item.setCheckable(false);
+ break;
+ }
+
+ registerEnablementUpdaters(model);
+ }
+ }
+
+ protected void updateItemEnablement(MItem item) {
+ if (!(item.getWidget() instanceof MenuItem))
+ return;
+
+ MenuItem widget = (MenuItem) item.getWidget();
+ if (widget == null)
+ return;
+
+ item.setEnabled(canExecute(item));
+ }
+
+ public boolean canExecute(MItem item) {
+ if (item instanceof MHandledItem)
+ return canExecute((MHandledItem) item);
+ else if (item instanceof MDirectMenuItem)
+ return canExecute((MDirectMenuItem) item);
+ else
+ return false;
+ }
+
+ private boolean canExecute(MDirectMenuItem item) {
+ final IEclipseContext eclipseContext = getContext(item);
+ eclipseContext.set(MItem.class, item);
+ setupContext(eclipseContext, item);
+ return (Boolean) ContextInjectionFactory.invoke(item, CanExecute.class,
+ eclipseContext, true);
+ }
+
+ @Override
+ public void hookControllerLogic(MUIElement me) {
+ // the listener already attached (when created - vaadin API issue)
+ }
+
+ @Override
+ protected void setupContext(IEclipseContext context, MItem item) {
+ context.set(MMenuItem.class, (MMenuItem) item);
+
+ if (item instanceof MDirectMenuItem)
+ context.set(MDirectMenuItem.class, (MDirectMenuItem) item);
+ else if (item instanceof MHandledMenuItem)
+ context.set(MHandledMenuItem.class, (MHandledMenuItem) item);
+ // TODO luna - check this
+ // else if (item instanceof MOpaqueMenuItem)
+ // context.set(MOpaqueMenuItem.class, (MOpaqueMenuItem) item);
+ }
+
+ @Override
+ public void setVisible(MUIElement changedElement, boolean visible) {
+ ((MenuItem) changedElement.getWidget()).setVisible(visible);
+ }
+
+ @Override
+ public void removeChildGui(MUIElement element,
+ MElementContainer<MUIElement> parent) {
+ MenuItem childItem = (MenuItem) element.getWidget();
+
+ if (parent.getWidget() instanceof MenuBar) {
+ MenuBar bar = (MenuBar) parent.getWidget();
+ bar.removeItem(childItem);
+ } else if (parent.getWidget() instanceof MenuItem) {
+ MenuItem parentItem = (MenuItem) parent.getWidget();
+ parentItem.removeChild(childItem);
+ }
+ }
+
+ private EventHandler localizeLabel = new EventHandler() {
+ @Override
+ public void handleEvent(Event event) {
+ Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+ if (!(element instanceof MMenuItem))
+ return;
+
+ MMenuItem item = (MMenuItem) element;
+ final MenuItem menuItem = (MenuItem) item.getWidget();
+
+ String newValue = (String) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+
+ String label = Commons.trim(newValue);
+ if (menuItem != null) {
+ menuItem.setText(label);
+ }
+ }
+ };
+
+ private EventHandler localizeTooltip = new EventHandler() {
+ @Override
+ public void handleEvent(Event event) {
+ Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+ if (!(element instanceof MMenuItem))
+ return;
+
+ MMenuItem item = (MMenuItem) element;
+ final MenuItem menuItem = (MenuItem) item.getWidget();
+
+ String newValue = (String) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+
+ if (menuItem != null) {
+ menuItem.setDescription(newValue);
+ }
+ }
+ };
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/MenuRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/MenuRenderer.java
new file mode 100644
index 0000000..6d21096
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/MenuRenderer.java
@@ -0,0 +1,264 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.commands.ExpressionContext;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.contexts.RunAndTrack;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.internal.workbench.ContributionsAnalyzer;
+import org.eclipse.e4.ui.model.application.ui.MCoreExpression;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.MUILabel;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenu;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuElement;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.osbp.vaaclipse.api.MenuContributionService;
+import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
+import org.eclipse.osbp.vaaclipse.publicapi.resources.ResourceHelper;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.server.Resource;
+import com.vaadin.ui.MenuBar;
+import com.vaadin.ui.MenuBar.MenuItem;
+
+@SuppressWarnings("restriction")
+public class MenuRenderer extends BasicMenuToolbarTrimbarRenderer {
+ @Inject
+ MenuContributionService contributionService;
+
+ @Inject
+ VaadinExecutorService execService;
+
+ @Inject
+ IEventBroker eventBroker;
+
+ @Override
+ public void createWidget(MUIElement element,
+ MElementContainer<MUIElement> parent) {
+ if (!(element instanceof MMenu) || !element.isToBeRendered())
+ return;
+
+ if (MWindow.class.isAssignableFrom(parent.getClass())) {
+ MenuBar menuBar = new MenuBar();
+ element.setWidget(menuBar);
+ } else {
+ String text = ((MUILabel) element).getLocalizedLabel();
+ if (text != null)
+ text = text.trim();
+ else
+ text = "NoName";
+ text = text.replaceAll("&", "");
+
+ MUIElement nextRenderableAndVisible = findNextRendarableAndVisible(
+ element, parent);
+ MenuItem item = null;
+ if (parent.getWidget() instanceof MenuBar) {
+ if (nextRenderableAndVisible == null)
+ item = ((MenuBar) parent.getWidget()).addItem(text, null,
+ null);
+ else
+ item = ((MenuBar) parent.getWidget()).addItemBefore(text,
+ null, null,
+ (MenuItem) nextRenderableAndVisible.getWidget());
+ } else if (parent.getWidget() instanceof MenuItem) {
+ if (nextRenderableAndVisible == null)
+ item = ((MenuItem) parent.getWidget()).addItem(text, null,
+ null);
+ else
+ item = ((MenuItem) parent.getWidget()).addItemBefore(text,
+ null, null,
+ (MenuItem) nextRenderableAndVisible.getWidget());
+ }
+
+ element.setWidget(item);
+ }
+ }
+
+ @Override
+ public void processContents(MElementContainer<MUIElement> element) {
+ final MMenu menu = (MMenu) (MElementContainer<?>) element;
+
+ final IEclipseContext ctx = getContext(menu);
+ final ExpressionContext eContext = new ExpressionContext(ctx);
+
+ // Before contribution added:
+ // visible when support for original trimbar elements (without
+ // contributed)
+ for (final MMenuElement child : menu.getChildren()) {
+ if (child.getVisibleWhen() != null) {
+ ctx.runAndTrack(new RunAndTrack() {
+ @Override
+ public boolean changed(IEclipseContext context) {
+
+ if (!menu.isToBeRendered() || !menu.isVisible()
+ || menu.getWidget() == null) {
+ System.err.println("remove context tracker");
+ return false;
+ }
+
+ final boolean rc = ContributionsAnalyzer.isVisible(
+ (MCoreExpression) child.getVisibleWhen(),
+ eContext);
+ Runnable runnable = new Runnable() {
+
+ @Override
+ public void run() {
+ child.setToBeRendered(rc);
+ }
+ };
+ execService.invokeLater(runnable);
+
+ return true;
+ }
+ });
+ }
+ }
+ // Then add contributions using contribution service:
+ contributionService
+ .addContributions((MMenu) (MElementContainer<?>) element);
+ }
+
+ @Override
+ public void disposeWidget(MUIElement element) {
+ contributionService
+ .removeContributions((MMenu) (MElementContainer<?>) element);
+ }
+
+ @Override
+ public void addChildGui(MUIElement child,
+ MElementContainer<MUIElement> parent) {
+ createWidget(child, parent);
+ }
+
+ @Override
+ public void removeChildGui(MUIElement element,
+ MElementContainer<MUIElement> parent) {
+ MenuItem childItem = (MenuItem) element.getWidget();
+
+ if (parent.getWidget() instanceof MenuBar) {
+ MenuBar bar = (MenuBar) parent.getWidget();
+ bar.removeItem(childItem);
+ } else if (parent.getWidget() instanceof MenuItem) {
+ MenuItem parentItem = (MenuItem) parent.getWidget();
+ parentItem.removeChild(childItem);
+ }
+ }
+
+ @Override
+ public void setVisible(MUIElement changedElement, boolean visible) {
+ if (changedElement.getWidget() instanceof MenuBar)
+ ((MenuBar) changedElement.getWidget()).setVisible(visible);
+ else if (changedElement.getWidget() instanceof MenuItem)
+ ((MenuItem) changedElement.getWidget()).setVisible(visible);
+ }
+
+ @PostConstruct
+ public void postConstruct() {
+ eventBroker.subscribe(UIEvents.UILabel.TOPIC_ALL, itemUpdater);
+ eventBroker.subscribe(UIEvents.Menu.TOPIC_ENABLED, itemUpdater);
+ eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+ childrenMoveUpdater);
+ }
+
+ @PreDestroy
+ public void preDestroy() {
+ eventBroker.unsubscribe(itemUpdater);
+ eventBroker.unsubscribe(childrenMoveUpdater);
+ }
+
+ private EventHandler childrenMoveUpdater = new EventHandler() {
+ @SuppressWarnings("unchecked")
+ public void handleEvent(Event event) {
+ // Ensure that this event is for a MMenuItem
+ if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MMenu))
+ return;
+
+ MElementContainer<MUIElement> menu = (MElementContainer<MUIElement>) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+
+ String type = (String) event.getProperty(UIEvents.EventTags.TYPE);
+
+ // on move, we unrender an render the UI again
+ //
+ if (UIEvents.EventTypes.MOVE.equals(type)) {
+ for (MUIElement item : menu.getChildren()) {
+ removeChildGui(item, menu);
+ }
+
+ for (MUIElement item : menu.getChildren()) {
+ createWidget(item, menu);
+ }
+ }
+ }
+ };
+
+ private EventHandler itemUpdater = new EventHandler() {
+ public void handleEvent(Event event) {
+ // Ensure that this event is for a MMenuItem
+ if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MMenu))
+ return;
+
+ MMenu model = (MMenu) event.getProperty(UIEvents.EventTags.ELEMENT);
+ if (model.getWidget() instanceof MenuItem) {
+ MenuItem ici = (MenuItem) model.getWidget();
+ if (ici == null) {
+ return;
+ }
+
+ String attName = (String) event
+ .getProperty(UIEvents.EventTags.ATTNAME);
+ Object newValue = event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+ if (UIEvents.UILabel.LABEL.equals(attName)) {
+ ici.setText((String) newValue);
+ } else if (UIEvents.UILabel.ICONURI.equals(attName)) {
+ Resource icon = ResourceHelper
+ .createResource((String) newValue);
+ ici.setIcon(icon);
+ } else if (UIEvents.UILabel.TOOLTIP.equals(attName)) {
+ ici.setDescription((String) newValue);
+ } else if (UIEvents.Item.ENABLED.equals(attName)) {
+ ici.setEnabled((boolean) newValue);
+ }
+ } else if (model.getWidget() instanceof MenuBar) {
+ MenuBar ici = (MenuBar) model.getWidget();
+ if (ici == null) {
+ return;
+ }
+
+ String attName = (String) event
+ .getProperty(UIEvents.EventTags.ATTNAME);
+ Object newValue = event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+ if (UIEvents.UILabel.ICONURI.equals(attName)) {
+ Resource icon = ResourceHelper
+ .createResource((String) newValue);
+ ici.setIcon(icon);
+ } else if (UIEvents.UILabel.TOOLTIP.equals(attName)) {
+ ici.setDescription((String) newValue);
+ } else if (UIEvents.Item.ENABLED.equals(attName)) {
+ ici.setEnabled((boolean) newValue);
+ } else if (UIEvents.Menu.ENABLED.equals(attName)) {
+ ici.setEnabled((boolean) newValue);
+ }
+ }
+ }
+ };
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/MenuSeparatorRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/MenuSeparatorRenderer.java
new file mode 100644
index 0000000..1b775bf
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/MenuSeparatorRenderer.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuSeparator;
+
+import com.vaadin.ui.MenuBar.MenuItem;
+
+/**
+ * @author rushan
+ *
+ */
+public class MenuSeparatorRenderer extends VaadinRenderer {
+ @Override
+ public void createWidget(MUIElement element,
+ MElementContainer<MUIElement> parent) {
+ if (!(element instanceof MMenuSeparator))
+ return;
+
+ MUIElement nextRenderableAndVisible = findNextRendarableAndVisible(
+ element, parent);
+
+ MenuItem separator = null;
+ if (nextRenderableAndVisible == null)
+ separator = ((MenuItem) parent.getWidget()).addSeparator();
+ else
+ separator = ((MenuItem) parent.getWidget())
+ .addSeparatorBefore((MenuItem) nextRenderableAndVisible
+ .getWidget());
+ element.setWidget(separator);
+ }
+
+ @Override
+ public void setVisible(MUIElement changedElement, boolean visible) {
+ ((MenuItem) changedElement.getWidget()).setVisible(visible);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PartRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PartRenderer.java
new file mode 100644
index 0000000..d302084
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PartRenderer.java
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.contributions.IContributionFactory;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MInputPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.UIEvents.EventTags;
+import org.eclipse.osbp.vaaclipse.presentation.renderers.callback.PartItemExecutionService;
+import org.eclipse.osbp.vaaclipse.publicapi.commands.IPartItemExecutionService;
+import org.eclipse.osbp.vaaclipse.publicapi.editor.SavePromptSetup;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.ui.AbstractLayout;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.ComponentContainer;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.VerticalLayout;
+
+@SuppressWarnings("restriction")
+public class PartRenderer extends VaadinRenderer {
+
+ private Map<MPart, SavePromptSetup> savePrompts = new HashMap<MPart, SavePromptSetup>();
+
+ @Inject
+ IPresentationEngine renderingEngine;
+
+ @Inject
+ IEventBroker eventBroker;
+
+ private EventHandler contributionURIChanged = new EventHandler() {
+ @Override
+ public void handleEvent(Event event) {
+ Object changedObj = event.getProperty(EventTags.ELEMENT);
+ if (!(changedObj instanceof MPart)) {
+ return;
+ }
+
+ final MPart part = (MPart) changedObj;
+ IEclipseContext localContext = part.getContext();
+ IContributionFactory contributionFactory = (IContributionFactory) localContext
+ .get(IContributionFactory.class.getName());
+ Object newPart = contributionFactory.create(part.getContributionURI(),
+ localContext);
+
+ if(part.getObject() != null) {
+ ContextInjectionFactory.uninject(part.getObject(), localContext);
+ }
+
+ part.setObject(newPart);
+ }
+ };
+
+ public SavePromptSetup getSavePromptSetup(MPart part) {
+ return savePrompts.get(part);
+ }
+
+ @Override
+ public void createWidget(MUIElement element,
+ MElementContainer<MUIElement> parent) {
+ Panel shortcutReceiver = new Panel();
+ shortcutReceiver.setSizeFull();
+
+ VerticalLayout pane = new VerticalLayout();
+ shortcutReceiver.setContent(pane);
+ pane.setSizeFull();
+ final MPart part = (MPart) element;
+ // toolbar
+ MToolBar toolbar = part.getToolbar();
+ if (toolbar != null && toolbar.isToBeRendered()) {
+ // create toolbar area
+ CssLayout toolbarArea = new CssLayout();
+ toolbarArea.setStyleName("mparttoolbararea");
+ toolbarArea.setSizeUndefined();
+ toolbarArea.setWidth("100%");
+ pane.addComponent(toolbarArea);
+
+ // create toolbar
+ Component toolbarWidget = (Component) renderingEngine
+ .createGui(toolbar);
+ ((AbstractLayout) toolbarWidget).setSizeUndefined();
+ toolbarWidget.setStyleName("mparttoolbar");
+ toolbarArea.addComponent(toolbarWidget);
+ }
+
+ VerticalLayout contributionArea = new VerticalLayout();
+ contributionArea.setSizeFull();
+ pane.addComponent(contributionArea);
+ pane.setExpandRatio(contributionArea, 100);
+
+ pane.setStyleName("part");
+ element.setWidget(shortcutReceiver);
+
+ IEclipseContext localContext = part.getContext();
+ localContext.set(Component.class, contributionArea);
+ localContext.set(ComponentContainer.class, contributionArea);
+ localContext.set(VerticalLayout.class, contributionArea);
+ localContext.set(MPart.class, part);
+ localContext.set(IPartItemExecutionService.class,
+ new PartItemExecutionService());
+
+ SavePromptSetup savePromptProvider = new SavePromptSetup();
+ savePrompts.put(part, savePromptProvider);
+ localContext.set(SavePromptSetup.class, savePromptProvider);
+ if (part instanceof MInputPart)
+ localContext.set(MInputPart.class, (MInputPart) part);
+
+ IContributionFactory contributionFactory = (IContributionFactory) localContext
+ .get(IContributionFactory.class.getName());
+ Object newPart = contributionFactory.create(part.getContributionURI(),
+ localContext);
+
+ part.setObject(newPart);
+ }
+
+ @Override
+ public void disposeWidget(MUIElement element) {
+ this.savePrompts.remove(element);
+ }
+
+ @PostConstruct
+ public void postConstruct() {
+ eventBroker.subscribe(UIEvents.Contribution.TOPIC_CONTRIBUTIONURI,
+ contributionURIChanged);
+ }
+
+ @PreDestroy
+ public void dispose() {
+ eventBroker.unsubscribe(contributionURIChanged);
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PerspectiveRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PerspectiveRenderer.java
new file mode 100644
index 0000000..8e24861
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PerspectiveRenderer.java
@@ -0,0 +1,117 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.Map.Entry;
+
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainerElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MStackElement;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.runtime.designer.api.IDesignerService;
+import org.eclipse.osbp.runtime.designer.api.IWidgetDesignConfigurator;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * @author rushan
+ *
+ */
+public class PerspectiveRenderer extends VaadinRenderer implements
+ IDesignerService.IDesignListener {
+
+ @Inject
+ @Optional
+ private IDesignerService designerService;
+
+ @Override
+ public void createWidget(MUIElement element,
+ MElementContainer<MUIElement> parent) {
+ if (!(element instanceof MPerspective))
+ return;
+
+ VerticalLayout perspectivePanel = new VerticalLayout();
+ perspectivePanel.setSizeFull();
+ element.setWidget(perspectivePanel);
+
+ MPerspective p = (MPerspective) element;
+
+ if (p.getIconURI() == null && p.getLabel() == null) {
+ p.setIconURI("platform:/plugin/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/blank_perspective.png");
+ }
+
+ if (designerService != null) {
+ designerService.addListener(this);
+
+ if (designerService.isDesignMode()) {
+ updateDesigner(true);
+ }
+ }
+ }
+
+ @PreDestroy
+ public void preDestroy() {
+
+ if (designerService != null) {
+ designerService.removeListener(this);
+ }
+ }
+
+ @Override
+ public void notify(IDesignerService.DesignEvent event) {
+ updateDesigner(event.getType() == IDesignerService.EventType.ENABLED);
+ }
+
+ private void updateDesigner(boolean enabled) {
+ IWidgetDesignConfigurator designConfigurator = context
+ .get(IWidgetDesignConfigurator.class);
+// if (designConfigurator != null) {
+// for (Entry<Component, MStackElement> entry : vaatab2Element
+// .entrySet()) {
+// designConfigurator.configure(entry.getKey(),
+// (EObject) entry.getValue(), enabled);
+// }
+// }
+ }
+
+ @Override
+ public void processContents(MElementContainer<MUIElement> element) {
+ VerticalLayout perspectivePanel = (VerticalLayout) element.getWidget();
+ for (MUIElement e : element.getChildren()) {
+ if (e.isToBeRendered() && e.getWidget() != null) {
+ perspectivePanel.addComponent((Component) e.getWidget());
+ }
+ }
+ }
+
+ @Override
+ public void addChildGui(MUIElement child,
+ MElementContainer<MUIElement> element) {
+ if (!(child instanceof MPartSashContainerElement))
+ return;
+
+ VerticalLayout sw = (VerticalLayout) element.getWidget();
+ int index = indexOf(child, element);
+ sw.addComponent((Component) child.getWidget(), index);
+
+ if(designerService != null && designerService.isDesignMode()) {
+ updateDesigner(designerService.isDesignMode());
+ }
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PerspectiveStackRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PerspectiveStackRenderer.java
new file mode 100644
index 0000000..1024f74
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PerspectiveStackRenderer.java
@@ -0,0 +1,1077 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MContext;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.UIEvents.EventTags;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.xmi.XMIResource;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.osbp.runtime.designer.api.IDesignerService;
+import org.eclipse.osbp.runtime.designer.api.IDesignerService.DesignEvent;
+import org.eclipse.osbp.runtime.designer.api.IDesignerService.EventType;
+import org.eclipse.osbp.runtime.designer.api.IWidgetDesignConfigurator;
+import org.eclipse.osbp.vaaclipse.Activator;
+import org.eclipse.osbp.vaaclipse.api.ResourceInfoProvider;
+import org.eclipse.osbp.vaaclipse.presentation.engine.GenericPresentationEngine;
+import org.eclipse.osbp.vaaclipse.presentation.utils.Commons;
+import org.eclipse.osbp.vaaclipse.presentation.utils.HierarchyUtils;
+import org.eclipse.osbp.vaaclipse.publicapi.authentication.AuthenticationConstants;
+import org.eclipse.osbp.vaaclipse.publicapi.change.ChangeCommand;
+import org.eclipse.osbp.vaaclipse.publicapi.change.SimpleCommand;
+import org.eclipse.osbp.vaaclipse.publicapi.model.Tags;
+import org.eclipse.osbp.vaaclipse.publicapi.perspective.IPerspectiveHandler;
+import org.eclipse.osbp.vaaclipse.publicapi.resources.BundleResource;
+import org.eclipse.osbp.vaaclipse.publicapi.resources.ResourceHelper;
+import org.eclipse.osbp.vaaclipse.widgets.StackWidget;
+import org.eclipse.osbp.vaaclipse.widgets.TwoStateToolbarButton;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog.OptionsAlign;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+import org.vaadin.peter.contextmenu.ContextMenu;
+import org.vaadin.peter.contextmenu.ContextMenu.ContextMenuItem;
+import org.vaadin.peter.contextmenu.ContextMenu.ContextMenuItemClickEvent;
+
+import com.vaadin.data.Item;
+import com.vaadin.data.util.IndexedContainer;
+import com.vaadin.event.dd.DragAndDropEvent;
+import com.vaadin.event.dd.DropHandler;
+import com.vaadin.event.dd.acceptcriteria.AcceptAll;
+import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
+import com.vaadin.server.Resource;
+import com.vaadin.server.Sizeable.Unit;
+import com.vaadin.server.StreamVariable;
+import com.vaadin.server.ThemeResource;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.ComponentContainer;
+import com.vaadin.ui.DragAndDropWrapper;
+import com.vaadin.ui.DragAndDropWrapper.WrapperTransferable;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Html5File;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.Notification;
+import com.vaadin.ui.Notification.Type;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.Table;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * @author rushan
+ *
+ */
+public class PerspectiveStackRenderer extends VaadinRenderer implements
+ IDesignerService.IDesignListener {
+
+ /**
+ * Removes the perspective from stack if it is closed.
+ */
+ private static final String TAG__REMOVE_ON_CLOSE = "remove_on_close";
+
+ /**
+ * The perspective is not visible in the open perspective dialog.
+ */
+ private static final String TAG__NOT_IN_OPEN_PERSPECTIVE_DIALOG = "not_in_open_perspective_dialog";
+
+ private MPerspectiveStack perspectiveStackForSwitcher;
+ private HorizontalLayout perspectiveSwitcherPanel;
+ private Map<MPerspective, TwoStateToolbarButton> perspective_button = new HashMap<MPerspective, TwoStateToolbarButton>();
+ private Map<Component, PerspectiveContextMenu> button2ContextMenu = new HashMap<Component, PerspectiveContextMenu>();
+
+ private MPerspective activePerspective;
+ @Inject
+ private UI vaadinUI;
+
+ @Inject
+ @Optional
+ private IPerspectiveHandler perspectiveRegistry;
+
+ @Inject
+ @Optional
+ private EditingDomain editingDomain;
+
+ @Inject
+ @Optional
+ private IDesignerService designerService;
+
+ @SuppressWarnings("serial")
+ private static class PerspectiveContextMenu extends ContextMenu {
+ private ContextMenuItem showTextItem;
+ private ContextMenuItem closeItem;
+
+ private static final String SHOW_TEXT = "Show Text";
+ Resource checkIcon = new ThemeResource(
+ "../vaaclipse_default_theme/img/check.png");
+
+ public PerspectiveContextMenu(boolean iconsOnly) {
+ createItems(iconsOnly);
+ setIconsOnly(iconsOnly);
+ }
+
+ private void createItems(boolean iconsOnly) {
+ closeItem = addItem("Close");
+ closeItem.setSeparatorVisible(true);
+ showTextItem = addItem(SHOW_TEXT, checkIcon);
+ }
+
+ public ContextMenuItem getShowTextItem() {
+ return showTextItem;
+ }
+
+ public ContextMenuItem getCloseItem() {
+ return closeItem;
+ }
+
+ void setIconsOnly(boolean iconsOnly) {
+ showTextItem.setIcon(!iconsOnly ? checkIcon : null);
+ }
+ }
+
+ public HorizontalLayout getPerspectiveSwitcher() {
+ return perspectiveSwitcherPanel;
+ }
+
+ public MPerspectiveStack getPerspectiveStackForSwitcher() {
+ return perspectiveStackForSwitcher;
+ }
+
+ @Inject
+ IEventBroker eventBroker;
+
+ @Inject
+ MApplication application;
+
+ @Inject
+ EPartService partService;
+
+ @Inject
+ GenericPresentationEngine engine;
+
+ static final String PERSPECTIVE_LABEL = "PerspectiveLabel";
+ static final String PERSPECTIVE_ICON = "PerspectiveIcon";
+
+ private final EventHandler tagListener = new EventHandler() {
+ @SuppressWarnings("unused")
+ @Override
+ public void handleEvent(Event event) {
+ Object changedObj = event.getProperty(EventTags.ELEMENT);
+
+ if (!(changedObj instanceof MPerspectiveStack)) {
+ return;
+ }
+
+ final MPerspectiveStack changedElement = (MPerspectiveStack) changedObj;
+
+ String eventType = (String) event
+ .getProperty(UIEvents.EventTags.TYPE);
+ String tag = (String) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+ String oldVal = (String) event
+ .getProperty(UIEvents.EventTags.OLD_VALUE);
+
+ if (UIEvents.EventTypes.ADD.equals(eventType)
+ && Tags.ICONS_ONLY.equals(tag)) {
+ for (Map.Entry<MPerspective, TwoStateToolbarButton> entry : perspective_button
+ .entrySet()) {
+ MPerspective perspective = entry.getKey();
+ TwoStateToolbarButton button = entry.getValue();
+ button.setLabelAndIcon(null,
+ Commons.trim(perspective.getIconURI()));
+
+ PerspectiveContextMenu menu = button2ContextMenu
+ .get(button);
+ menu.setIconsOnly(true);
+ }
+ } else if (UIEvents.EventTypes.REMOVE.equals(eventType)
+ && Tags.ICONS_ONLY.equals(oldVal)) {
+ for (Map.Entry<MPerspective, TwoStateToolbarButton> entry : perspective_button
+ .entrySet()) {
+ MPerspective perspective = entry.getKey();
+ TwoStateToolbarButton button = entry.getValue();
+ button.setLabelAndIcon(
+ Commons.trim(perspective.getLabel()),
+ Commons.trim(perspective.getIconURI()));
+
+ PerspectiveContextMenu menu = button2ContextMenu
+ .get(button);
+ menu.setIconsOnly(false);
+ }
+ }
+ }
+ };
+
+ private EventHandler selectPerspectiveHandler = new EventHandler() {
+ @SuppressWarnings("unchecked")
+ public void handleEvent(Event event) {
+ Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+ if (!(element instanceof MPerspectiveStack))
+ return;
+
+ MPerspectiveStack stack = (MPerspectiveStack) element;
+ if (stack.getRenderer() != PerspectiveStackRenderer.this)
+ return;
+ @SuppressWarnings("unused")
+ PerspectiveStackRenderer psr = (PerspectiveStackRenderer) stack
+ .getRenderer();
+
+ // Gather up the elements that are being 'hidden' by this change
+ MUIElement oldSel = (MUIElement) event
+ .getProperty(UIEvents.EventTags.OLD_VALUE);
+ if (oldSel != null) {
+ @SuppressWarnings("unused")
+ List<MUIElement> goingHidden = new ArrayList<MUIElement>();
+ }
+
+ if (oldSel != null) {
+ perspective_button.get(oldSel).setCheckedState(false);
+ perspective_button.get(oldSel)
+ .setSwitchStateByUserClickEnabled(true);
+
+ hideElementRecursive(oldSel);
+ }
+
+ ((VerticalLayout) stack.getWidget()).removeAllComponents();
+
+ if (stack.getSelectedElement() != null) {
+ showElementRecursive(stack.getSelectedElement());
+ ((VerticalLayout) stack.getWidget())
+ .addComponent((Component) stack.getSelectedElement()
+ .getWidget());
+ perspective_button.get(stack.getSelectedElement())
+ .setCheckedState(true);
+ perspective_button.get(stack.getSelectedElement())
+ .setSwitchStateByUserClickEnabled(false);
+
+ // mark the perspective as active
+ switchPerspective(stack.getSelectedElement());
+ } else if (oldSel instanceof MElementContainer<?>) {
+ disconnectReferencedElementsFromPerspectiveWidgets((MElementContainer<? extends MUIElement>) oldSel);
+ }
+
+ }
+ };
+
+ private EventHandler localizeLabel = new EventHandler() {
+ @Override
+ public void handleEvent(Event event) {
+ Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+ if (!(element instanceof MPerspective))
+ return;
+
+ MPerspective perspective = (MPerspective) element;
+
+ String newValue = (String) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+
+ boolean iconsOnly = perspectiveStackForSwitcher.getTags().contains(
+ Tags.ICONS_ONLY);
+ String label = iconsOnly ? null : Commons.trim(newValue);
+ String iconURI = Commons.trim(perspective.getIconURI());
+
+ TwoStateToolbarButton button = perspective_button.get(perspective);
+ if (button != null) {
+ button.setLabelAndIcon(label, iconURI);
+ }
+ }
+ };
+
+ private EventHandler iconURI = new EventHandler() {
+ @Override
+ public void handleEvent(Event event) {
+ Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+ if (!(element instanceof MPerspective))
+ return;
+
+ MPerspective perspective = (MPerspective) element;
+
+ String newValue = (String) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+
+ TwoStateToolbarButton button = perspective_button.get(perspective);
+ if (button != null) {
+ button.setIconURI(newValue);
+ }
+ }
+ };
+
+ private EventHandler localizeTooltip = new EventHandler() {
+ @Override
+ public void handleEvent(Event event) {
+ Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+ if (!(element instanceof MPerspective))
+ return;
+
+ MPerspective perspective = (MPerspective) element;
+
+ if (perspective.getTooltip() != null) {
+ String newValue = (String) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+ TwoStateToolbarButton button = perspective_button
+ .get(perspective);
+ if (button != null) {
+ button.setDescription(newValue);
+ }
+ }
+ }
+ };
+
+ private void disconnectReferencedElementsFromPerspectiveWidgets(
+ MElementContainer<? extends MUIElement> container) {
+ for (MUIElement e : container.getChildren()) {
+ if (e instanceof MPlaceholder) {
+ MPlaceholder ph = (MPlaceholder) e;
+ if (ph.isToBeRendered()) {
+ ComponentContainer phComponent = (ComponentContainer) ph
+ .getWidget();
+ Component refComponent = (Component) ph.getRef()
+ .getWidget();
+ phComponent.removeComponent(refComponent);
+ }
+ }
+ }
+ }
+
+ @PostConstruct
+ public void postConstruct() {
+ eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_SELECTEDELEMENT,
+ selectPerspectiveHandler);
+ eventBroker.subscribe(UIEvents.ApplicationElement.TOPIC_TAGS,
+ tagListener);
+ eventBroker.subscribe(UIEvents.UILabel.TOPIC_LOCALIZED_LABEL,
+ localizeLabel);
+ eventBroker.subscribe(UIEvents.UILabel.TOPIC_LOCALIZED_TOOLTIP,
+ localizeTooltip);
+ eventBroker.subscribe(UIEvents.UILabel.TOPIC_LABEL, localizeLabel);
+ eventBroker.subscribe(UIEvents.UILabel.TOPIC_TOOLTIP, localizeTooltip);
+ eventBroker.subscribe(UIEvents.UILabel.TOPIC_ICONURI, iconURI);
+ eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+ childrenMoveUpdater);
+ }
+
+ @PreDestroy
+ public void preDestroy() {
+
+ if (designerService != null) {
+ designerService.removeListener(this);
+ }
+
+ eventBroker.unsubscribe(selectPerspectiveHandler);
+ eventBroker.unsubscribe(tagListener);
+ eventBroker.unsubscribe(localizeLabel);
+ eventBroker.unsubscribe(localizeTooltip);
+ eventBroker.unsubscribe(iconURI);
+ eventBroker.unsubscribe(childrenMoveUpdater);
+ }
+
+ private EventHandler childrenMoveUpdater = new EventHandler() {
+ @SuppressWarnings("unchecked")
+ public void handleEvent(Event event) {
+ // Ensure that this event is for a MMenuItem
+ if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MPerspectiveStack))
+ return;
+
+ MElementContainer<MUIElement> stack = (MElementContainer<MUIElement>) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+ String type = (String) event.getProperty(UIEvents.EventTags.TYPE);
+
+ // on move, we unrender an render the UI again
+ //
+ if (UIEvents.EventTypes.MOVE.equals(type)) {
+ MUIElement newValue = (MUIElement) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+ removeChildGui(newValue, stack);
+ addChildGui(newValue, stack);
+ }
+ }
+ };
+ private DragAndDropWrapper html5Drop;
+
+ @Override
+ public boolean isLazy() {
+ return true;
+ }
+
+ @Override
+ public void createWidget(MUIElement element,
+ MElementContainer<MUIElement> parent) {
+ if (perspectiveSwitcherPanel == null)
+ initializePerspectiveSwticherPanel((MPerspectiveStack) element);
+
+ VerticalLayout perspectiveStackContent = new VerticalLayout();
+ perspectiveStackContent.setSizeFull();
+ element.setWidget(perspectiveStackContent);
+
+ if (designerService != null) {
+ designerService.addListener(this);
+
+ if (designerService.isDesignMode()) {
+ updateDesigner(true);
+ }
+ }
+ }
+
+ @SuppressWarnings("serial")
+ private void initializePerspectiveSwticherPanel(
+ MPerspectiveStack perspectiveStack) {
+ if (perspectiveSwitcherPanel != null)
+ return;
+ // initialize perspective switcher panel
+ perspectiveStackForSwitcher = perspectiveStack;
+
+ perspectiveSwitcherPanel = new HorizontalLayout();
+ perspectiveSwitcherPanel.setStyleName("perspectivepanel");
+ perspectiveSwitcherPanel.setSizeUndefined();
+
+ Button openPerspectiveButton = new Button("Open");
+ openPerspectiveButton.addStyleName("vaaclipsebutton");
+ openPerspectiveButton.addStyleName("icononly");
+ openPerspectiveButton.setIcon(new ThemeResource(
+ "../vaaclipse_default_theme/img/open_perspective.png"));
+
+ html5Drop = new DragAndDropWrapper(openPerspectiveButton);
+ html5Drop.setDropHandler(new PerspectiveDropHandler());
+
+ perspectiveSwitcherPanel.addComponent(html5Drop);
+
+ openPerspectiveButton.addClickListener(new Button.ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ openOpenPerspectiveWindow();
+
+ // change focus
+ Component parent = event.getButton().getParent();
+ while (parent != null) {
+ if (parent instanceof Component.Focusable) {
+ ((Component.Focusable) parent).focus();
+ break;
+ } else {
+ parent = parent.getParent();
+ }
+ }
+ }
+ });
+
+ // add separator between openPerspectiveButton and perspective's buttons
+ Label separator = new Label();
+ separator.setSizeUndefined();
+ separator.addStyleName("horizontalseparator");
+ separator.setHeight("100%");
+ perspectiveSwitcherPanel.addComponent(separator);
+
+ // add buttons to perspective switch panel
+ for (final MPerspective perspective : perspectiveStackForSwitcher
+ .getChildren()) {
+ if (perspective.isToBeRendered()) {
+ Component button = createPerspectiveButton(perspective);
+ if (button != null) {
+ perspectiveSwitcherPanel.addComponent(button);
+ }
+ }
+ }
+ }
+
+ @SuppressWarnings("serial")
+ private Component createPerspectiveButton(final MPerspective perspective) {
+ if (!perspective.isVisible())
+ return null;
+ boolean iconsOnly = perspectiveStackForSwitcher.getTags().contains(
+ Tags.ICONS_ONLY);
+ String label = iconsOnly ? null : Commons.trim(perspective
+ .getLocalizedLabel());
+ String iconURI = Commons.trim(perspective.getIconURI());
+
+ final TwoStateToolbarButton button = new TwoStateToolbarButton(label,
+ iconURI);
+
+ if (perspective.getTooltip() != null) {
+ button.setDescription(perspective.getLocalizedTooltip());
+ }
+
+ button.addListener(new ClickListener() {
+ public void buttonClick(ClickEvent event) {
+ if (editingDomain != null) {
+ SimpleCommand command = new SimpleCommand(
+ "Switch perspective: "
+ + activePerspective.getLocalizedLabel()
+ + " <--> "
+ + perspective.getLocalizedLabel()) {
+ final MPerspective oldPerspective = activePerspective;
+ final MPerspective newPerspective = perspective;
+
+ @Override
+ protected void doExecute() {
+ switchPerspective(newPerspective);
+ }
+
+ @Override
+ protected void doUndo() {
+ switchPerspective(oldPerspective);
+ }
+ };
+ editingDomain.getCommandStack().execute(command);
+
+ } else {
+ switchPerspective(perspective);
+ }
+ }
+ });
+
+ // Create context menu
+ final PerspectiveContextMenu menu = new PerspectiveContextMenu(
+ iconsOnly);
+
+ // closeItem.setSeparatorVisible(true);
+
+ // showTextItem.addStyleName("close-perspective-item"); //bugfixing
+ // style for ie9 (context menu addon has bug for ie9)
+
+ menu.addItemClickListener(new ContextMenu.ContextMenuItemClickListener() {
+ @Override
+ public void contextMenuItemClicked(ContextMenuItemClickEvent event) {
+ ContextMenuItem clickedItem = (ContextMenuItem) event
+ .getSource();
+
+ if (clickedItem == menu.getCloseItem()) {
+ if (perspective.getTags().contains(TAG__REMOVE_ON_CLOSE)) {
+ // sends new messages
+ modelService.removePerspectiveModel(perspective,
+ perspective.getContext().get(MWindow.class));
+
+ switchToPreviousPerspective(perspective);
+
+ } else if (perspective == activePerspective) {
+ switchToPreviousPerspective(perspective);
+ }
+
+ perspective.setToBeRendered(false);
+
+ } else if (clickedItem == menu.getShowTextItem()) {
+ if (perspectiveStackForSwitcher.getTags().contains(
+ Tags.ICONS_ONLY))
+ perspectiveStackForSwitcher.getTags().remove(
+ Tags.ICONS_ONLY);
+ else
+ perspectiveStackForSwitcher.getTags().add(
+ Tags.ICONS_ONLY);
+ }
+ }
+ });
+
+ menu.setAsContextMenuOf(button);
+ button2ContextMenu.put(button, menu);
+ perspective_button.put(perspective, button);
+ return button;
+ }
+
+ @Override
+ public void notify(DesignEvent event) {
+ updateDesigner(event.getType() == EventType.ENABLED);
+ }
+
+ private void updateDesigner(boolean enabled) {
+ IWidgetDesignConfigurator designConfigurator = context
+ .get(IWidgetDesignConfigurator.class);
+ if (designConfigurator != null) {
+ for (Map.Entry<MPerspective, TwoStateToolbarButton> entry : perspective_button
+ .entrySet()) {
+ designConfigurator.configure(entry.getValue(),
+ (EObject) entry.getKey(), enabled);
+ }
+ }
+ }
+
+ @Override
+ public void processContents(MElementContainer<MUIElement> element) {
+ if (element.getChildren().isEmpty())
+ return;
+
+ MPerspectiveStack perspectiveStack = (MPerspectiveStack) (MElementContainer<?>) element;
+ MPerspective selectedPerspective = perspectiveStack
+ .getSelectedElement();
+ if (selectedPerspective == null) {
+ // try to find by registry
+ if (perspectiveRegistry != null) {
+ String userId = (String) context
+ .get(AuthenticationConstants.USER_ID);
+ String perspectiveId = perspectiveRegistry
+ .getDefaultPerspective(userId);
+ if (perspectiveId != null) {
+ selectedPerspective = perspectiveRegistry
+ .findPerspectiveWithId(perspectiveId);
+ }
+ if (selectedPerspective == null) {
+ selectedPerspective = (MPerspective) findFirstRenderableAndVisibleElement(perspectiveStack);
+ }
+ } else {
+ // use the first elemet
+ selectedPerspective = (MPerspective) findFirstRenderableAndVisibleElement(perspectiveStack);
+ }
+ }
+
+ if (selectedPerspective != null) {
+ if (!selectedPerspective.isToBeRendered()
+ || !selectedPerspective.isVisible()) {
+ selectedPerspective = (MPerspective) findFirstRenderableAndVisibleElement(perspectiveStack);
+ if (selectedPerspective != null) {
+ switchPerspective(selectedPerspective);
+ } else {
+ perspectiveStack.setSelectedElement(null);
+ }
+ } else {
+ // reset selected element (set selected element handler will
+ // work)
+ perspectiveStack.setSelectedElement(null);
+ switchPerspective(selectedPerspective);
+ }
+ }
+
+ refreshPerspectiveStackVisibility(perspectiveStack);
+ }
+
+ private void switchPerspective(MPerspective perspective) {
+ if (perspective.isToBeRendered() && perspective.getWidget() == null)
+ engine.createGui(perspective);
+ partService.switchPerspective(perspective);
+ this.activePerspective = perspective;
+ if (perspective.getElementId() != null) {
+ String perspectiveId = perspective.getElementId().trim();
+ application.getContext().set("activePerspective", perspectiveId);
+ }
+ }
+
+ private void refreshPerspectiveStackVisibility(MPerspectiveStack stack) {
+ perspectiveSwitcherPanel.setVisible(stack.getChildren().size() > 0);
+ }
+
+ @Override
+ public void addChildGui(MUIElement child,
+ MElementContainer<MUIElement> element) {
+ MPerspectiveStack stack = (MPerspectiveStack) (MElementContainer<?>) element;
+ MPerspective p = (MPerspective) child;
+
+ Component button = createPerspectiveButton(p);
+ // shift on 2 - the first child - open perspective button, the second
+ // child - is separator
+ int index = indexOf(child, element) + 2;
+ perspectiveSwitcherPanel.addComponent(button, Math.min(index,
+ perspectiveSwitcherPanel.getComponentCount() - 1));
+
+ refreshPerspectiveStackVisibility(stack);
+ }
+
+ @Override
+ public void removeChildGui(MUIElement child,
+ MElementContainer<MUIElement> element) {
+ MPerspectiveStack stack = (MPerspectiveStack) (MElementContainer<?>) element;
+ MPerspective p = (MPerspective) child;
+
+ Button button = perspective_button.remove(p);
+ if (button != null) {
+ perspectiveSwitcherPanel.removeComponent(button);
+ button2ContextMenu.remove(button);
+ }
+
+ refreshPerspectiveStackVisibility(stack);
+ }
+
+ private void openOpenPerspectiveWindow() {
+ OptionDialog dlg = new OptionDialog();
+ dlg.setCaption("Open perspective");
+
+ ServiceReference<ResourceInfoProvider> resourceInfoProviderRef = Activator
+ .getInstance().getContext()
+ .getServiceReference(ResourceInfoProvider.class);
+ if (resourceInfoProviderRef != null) {
+ ResourceInfoProvider resourceInfoProvider = Activator.getInstance()
+ .getContext().getService(resourceInfoProviderRef);
+ if (resourceInfoProvider.getApplicationHeaderIcon() != null) {
+ dlg.setIcon(BundleResource.valueOf(resourceInfoProvider
+ .getApplicationHeaderIcon()));
+ }
+ }
+
+ dlg.setModal(true);
+ dlg.setWidth(360, Unit.PIXELS);
+ dlg.setHeight(440, Unit.PIXELS);
+ dlg.addOption(0, "OK");
+ dlg.addOption(1, "CANCEL");
+ dlg.setOptionButtonsWidth(80, Unit.PIXELS);
+ dlg.setOptionButtonsAlignment(OptionsAlign.RIGHT);
+
+ vaadinUI.addWindow(dlg);
+
+ dlg.setComponentProvider(new OptionDialog.ComponentProvider() {
+
+ Panel panel;
+ Table list;
+ IndexedContainer container;
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Component getComponent(OptionDialog optionDialog) {
+ if (panel == null) {
+ container = new IndexedContainer();
+ container.addContainerProperty(PERSPECTIVE_ICON,
+ Resource.class, null);
+ container.addContainerProperty(PERSPECTIVE_LABEL,
+ String.class, null);
+
+ for (MPerspective p : perspectiveStackForSwitcher
+ .getChildren()) {
+ if (!p.isVisible()) {
+ continue;
+ }
+
+ if(p.getTags().contains(TAG__NOT_IN_OPEN_PERSPECTIVE_DIALOG)) {
+ continue;
+ }
+
+ Item item = container.addItem(p.getElementId());
+ Resource icon = ResourceHelper.createResource(p
+ .getIconURI());
+ if (icon != null) {
+ item.getItemProperty(PERSPECTIVE_ICON).setValue(
+ icon);
+ }
+ item.getItemProperty(PERSPECTIVE_LABEL).setValue(
+ p.getLabel());
+ }
+
+ panel = new Panel();
+ list = new Table();
+ list.addStyleName("open_perspective_window");
+ panel.setContent(list);
+ list.setSizeFull();
+ list.setSelectable(true);
+ list.setMultiSelect(false);
+ list.setContainerDataSource(container);
+ list.setColumnHeaderMode(Table.COLUMN_HEADER_MODE_HIDDEN);
+ list.setVisibleColumns(new Object[] { PERSPECTIVE_LABEL });
+ list.setRowHeaderMode(Table.ROW_HEADER_MODE_ICON_ONLY);
+ list.setItemIconPropertyId(PERSPECTIVE_ICON);
+ list.setColumnExpandRatio(PERSPECTIVE_LABEL, 1);
+ }
+ return panel;
+ }
+
+ @Override
+ public void optionSelected(OptionDialog dlg, int optionId) {
+ if (optionId == 0) {
+ // selected perspective's elementId
+ String perspectiveId = (String) list.getValue();
+ if (perspectiveId != null) {
+ MPerspective perspective = (MPerspective) modelService
+ .find(perspectiveId,
+ perspectiveStackForSwitcher);
+ if (!perspective.isToBeRendered())
+ perspective.setToBeRendered(true);
+ switchPerspective(perspective);
+ }
+ }
+ dlg.close();
+ }
+
+ @Override
+ public void setMessage(String message) {
+ }
+ });
+ }
+
+ // -------------------------------------------------------
+ // -------------------------------------------------------
+ private void hideElementRecursive(MUIElement element) {
+ if (element == null || element.getWidget() == null)
+ return;
+
+ if (element instanceof MPlaceholder) {
+ MPlaceholder ph = (MPlaceholder) element;
+ element = ph.getRef();
+ }
+
+ // Hide any floating windows
+ if (element instanceof MWindow && element.getWidget() != null) {
+ element.setVisible(false);
+ }
+
+ if (element instanceof MElementContainer<?>) {
+ MElementContainer<?> container = (MElementContainer<?>) element;
+ for (MUIElement childElement : container.getChildren()) {
+ hideElementRecursive(childElement);
+ }
+
+ // OK, now process detached windows
+ if (element instanceof MWindow) {
+ for (MWindow w : ((MWindow) element).getWindows()) {
+ hideElementRecursive(w);
+ }
+ } else if (element instanceof MPerspective) {
+ for (MWindow w : ((MPerspective) element).getWindows()) {
+ hideElementRecursive(w);
+ }
+ }
+ }
+ }
+
+ private void showElementRecursive(MUIElement element) {
+ if (!element.isToBeRendered())
+ return;
+
+ if (element instanceof MPlaceholder && element.getWidget() != null) {
+ MPlaceholder ph = (MPlaceholder) element;
+ MUIElement ref = ph.getRef();
+ ref.setCurSharedRef(ph);
+
+ ComponentContainer phComponent = (ComponentContainer) ph
+ .getWidget();
+ Component refComponent = (Component) ph.getRef().getWidget();
+ phComponent.addComponent(refComponent);
+
+ element = ref;
+
+ // top right folder
+ MPartStack topLeftStack = HierarchyUtils.findTopLeftFolder(ph
+ .getRef());
+ if (topLeftStack != null) {
+ if (ph.getTags().contains(IPresentationEngine.MAXIMIZED))
+ ((StackWidget) topLeftStack.getWidget()).setState(1);
+ else if (ph.getTags().contains(IPresentationEngine.MINIMIZED))
+ ((StackWidget) topLeftStack.getWidget()).setState(-1);
+ else {
+ if (((StackWidget) topLeftStack.getWidget()) != null) {
+ ((StackWidget) topLeftStack.getWidget()).setState(0);
+ }
+ }
+
+ }
+ }
+
+ if (element instanceof MContext) {
+ IEclipseContext context = ((MContext) element).getContext();
+ if (context != null) {
+ IEclipseContext newParentContext = modelService
+ .getContainingContext(element);
+ if (context.getParent() != newParentContext) {
+ context.setParent(newParentContext);
+ }
+ }
+ }
+
+ // Show any floating windows
+ if (element instanceof MWindow && element.getWidget() != null) {
+ int visCount = 0;
+ for (MUIElement kid : ((MWindow) element).getChildren()) {
+ if (kid.isToBeRendered() && kid.isVisible())
+ visCount++;
+ }
+ if (visCount > 0)
+ element.setVisible(true);
+ }
+
+ if (element instanceof MElementContainer<?>) {
+ MElementContainer<?> container = (MElementContainer<?>) element;
+ List<MUIElement> kids = new ArrayList<MUIElement>(
+ container.getChildren());
+ for (MUIElement childElement : kids) {
+ showElementRecursive(childElement);
+ }
+
+ // OK, now process detached windows
+ if (element instanceof MWindow) {
+ for (MWindow w : ((MWindow) element).getWindows()) {
+ showElementRecursive(w);
+ }
+ } else if (element instanceof MPerspective) {
+ for (MWindow w : ((MPerspective) element).getWindows()) {
+ showElementRecursive(w);
+ }
+ }
+ }
+ }
+
+ private void switchToPreviousPerspective(final MPerspective perspective) {
+ MPerspective prevRenderableAndVisiblePerspective = null, nextRenderableAndVisiblePerspective = null;
+ boolean startSearch = false;
+ for (MPerspective p : perspectiveStackForSwitcher
+ .getChildren()) {
+ if (startSearch && p.isToBeRendered()
+ && p.isVisible()) {
+ nextRenderableAndVisiblePerspective = p;
+ break;
+ }
+
+ if (p == perspective)
+ startSearch = true;
+
+ if (!startSearch && p.isToBeRendered()
+ && p.isVisible()) {
+ prevRenderableAndVisiblePerspective = p;
+ }
+ }
+
+ MPerspective newSelectedPerspective = nextRenderableAndVisiblePerspective != null ? nextRenderableAndVisiblePerspective
+ : prevRenderableAndVisiblePerspective;
+
+ if (newSelectedPerspective != null) {
+ switchPerspective(newSelectedPerspective);
+ }
+ }
+
+ private class PerspectiveDropHandler implements DropHandler {
+ private static final long FILE_SIZE_LIMIT = 2 * 1024 * 1024; // 2MB
+
+ public PerspectiveDropHandler() {
+ }
+
+ @Override
+ public void drop(final DragAndDropEvent dropEvent) {
+ // expecting this to be an html5 drag
+ final WrapperTransferable tr = (WrapperTransferable) dropEvent
+ .getTransferable();
+ final Html5File[] files = tr.getFiles();
+ if (files != null) {
+ for (final Html5File html5File : files) {
+ final String fileName = html5File.getFileName();
+ // if (!fileName.endsWith(".perspective")) {
+ // continue;
+ // }
+ if (html5File.getFileSize() > FILE_SIZE_LIMIT) {
+ Notification
+ .show("File rejected. Max 2Mb files are accepted by Sampler",
+ Notification.Type.WARNING_MESSAGE);
+ } else {
+ final ByteArrayOutputStream bas = new ByteArrayOutputStream();
+ final StreamVariable streamVariable = new StreamVariable() {
+ @Override
+ public OutputStream getOutputStream() {
+ return bas;
+ }
+
+ @Override
+ public boolean listenProgress() {
+ return false;
+ }
+
+ @Override
+ public void onProgress(
+ final StreamingProgressEvent event) {
+ }
+
+ @Override
+ public void streamingStarted(
+ final StreamingStartEvent event) {
+ }
+
+ @Override
+ public void streamingFinished(
+ final StreamingEndEvent event) {
+ addPerspective(
+ fileName,
+ html5File.getType(),
+ new ByteArrayInputStream(bas
+ .toByteArray()));
+ }
+
+ @Override
+ public void streamingFailed(
+ final StreamingErrorEvent event) {
+ }
+
+ @Override
+ public boolean isInterrupted() {
+ return false;
+ }
+ };
+ html5File.setStreamVariable(streamVariable);
+ }
+ }
+ }
+ }
+
+ @SuppressWarnings("restriction")
+ private void addPerspective(final String name, final String type,
+ final InputStream stream) {
+ XMIResource resource = new XMIResourceImpl(
+ URI.createURI("perspective" + name));
+ try {
+ resource.load(stream, null);
+
+ final MPerspective perspective = (MPerspective) resource
+ .getContents().get(0);
+ ChangeCommand command = new ChangeCommand("Drop perspective: "
+ + perspective.getLocalizedLabel(),
+ ((EObject) getPerspectiveStackForSwitcher())
+ .eResource()) {
+ @Override
+ protected void doExecute() {
+ // add the perspective
+ //
+ getPerspectiveStackForSwitcher().getChildren().add(
+ perspective);
+ getPerspectiveStackForSwitcher().setSelectedElement(
+ perspective);
+ }
+ };
+ editingDomain.getCommandStack().execute(command);
+
+ resource.unload();
+
+ } catch (IOException e) {
+ Notification.show(e.toString(), Type.ERROR_MESSAGE);
+ }
+ }
+
+ @Override
+ public AcceptCriterion getAcceptCriterion() {
+ return AcceptAll.get();
+ }
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PlaceholderRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PlaceholderRenderer.java
new file mode 100644
index 0000000..e3f043d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/PlaceholderRenderer.java
@@ -0,0 +1,121 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.ui.MContext;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.UIEvents.EventTags;
+import org.eclipse.osbp.vaaclipse.presentation.utils.HierarchyUtils;
+import org.eclipse.osbp.vaaclipse.widgets.StackWidget;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * @author rushan
+ *
+ */
+public class PlaceholderRenderer extends VaadinRenderer {
+ @Inject
+ IPresentationEngine renderingEngine;
+
+ @Inject
+ private IEventBroker eventBroker;
+
+ @Override
+ public void createWidget(MUIElement element,
+ MElementContainer<MUIElement> parent) {
+ MPlaceholder ph = (MPlaceholder) element;
+ final MUIElement ref = ph.getRef();
+ ref.setCurSharedRef(ph);
+
+ VerticalLayout phComp = new VerticalLayout();
+ phComp.setSizeFull();
+ phComp.setMargin(false);
+ ph.setWidget(phComp);
+
+ Component refWidget = (Component) ref.getWidget();
+ if (refWidget == null) {
+ ref.setToBeRendered(true);
+ refWidget = (Component) renderingEngine.createGui(ref);
+ }
+
+ if (refWidget.getParent() != phComp) {
+ phComp.addComponent(refWidget);
+ }
+
+ if (ref instanceof MContext) {
+ IEclipseContext context = ((MContext) ref).getContext();
+ IEclipseContext newParentContext = getContext(ph);
+ if (context.getParent() != newParentContext) {
+ context.setParent(newParentContext);
+ }
+ }
+ }
+
+ EventHandler tagListener = new EventHandler() {
+ @Override
+ public void handleEvent(Event event) {
+ Object changedObj = event.getProperty(EventTags.ELEMENT);
+ String eventType = (String) event
+ .getProperty(UIEvents.EventTags.TYPE);
+ String tag = (String) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+
+ if (!(changedObj instanceof MPlaceholder)) {
+ return;
+ }
+
+ final MPlaceholder ph = (MPlaceholder) changedObj;
+ MPartStack topLeftStack = HierarchyUtils.findTopLeftFolder(ph
+ .getRef());
+ if (topLeftStack != null) {
+ StackWidget stackWidget = (StackWidget) topLeftStack
+ .getWidget();
+
+ if (UIEvents.EventTypes.ADD.equals(eventType)) {
+ if (IPresentationEngine.MINIMIZED.equals(tag)) {
+ stackWidget.setState(-1);
+ } else if (IPresentationEngine.MAXIMIZED.equals(tag)) {
+ stackWidget.setState(1);
+ }
+ } else if (UIEvents.EventTypes.REMOVE.equals(eventType)) {
+ stackWidget.setState(0);
+ }
+ }
+ }
+ };
+
+ @PostConstruct
+ void postConstruct() {
+ eventBroker.subscribe(UIEvents.ApplicationElement.TOPIC_TAGS,
+ tagListener);
+ }
+
+ @PreDestroy
+ void preDestroy() {
+ eventBroker.unsubscribe(tagListener);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/SashRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/SashRenderer.java
new file mode 100644
index 0000000..970c2b5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/SashRenderer.java
@@ -0,0 +1,485 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.core.services.log.Logger;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainerElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.runtime.designer.api.IDesignerService;
+import org.eclipse.osbp.runtime.designer.api.IDesignerService.IDesignListener;
+import org.eclipse.osbp.runtime.designer.api.IWidgetDesignConfigurator;
+import org.eclipse.osbp.vaaclipse.presentation.widgets.TrimmedWindowContent;
+import org.eclipse.osbp.vaaclipse.publicapi.model.Tags;
+import org.eclipse.osbp.vaaclipse.widgets.SashWidget;
+import org.eclipse.osbp.vaaclipse.widgets.SashWidgetHorizontal;
+import org.eclipse.osbp.vaaclipse.widgets.SashWidgetVertical;
+import org.eclipse.osbp.vaaclipse.widgets.SplitPositionChangedListener;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.ui.AbstractComponent;
+import com.vaadin.ui.AbstractSplitPanel;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.ComponentContainer;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.VerticalLayout;
+
+public class SashRenderer extends VaadinRenderer implements IDesignListener {
+
+ @Inject
+ IEventBroker eventBroker;
+
+ @Inject
+ Logger logger;
+
+ @Inject
+ @Optional
+ private IDesignerService designerService;
+
+ private boolean ignoreSashWeights = false;
+
+ private EventHandler sashWeightHandler = new EventHandler() {
+ public void handleEvent(Event event) {
+
+ if (ignoreSashWeights)
+ return;
+
+ // Ensure that this event is for a MPartSashContainer
+ MUIElement element = (MUIElement) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+ MElementContainer<MUIElement> parent = element.getParent();
+ if (parent.getRenderer() != SashRenderer.this)
+ return;
+
+ MPartSashContainer sash = (MPartSashContainer) (MElementContainer<?>) element
+ .getParent();
+ setWeights(sash);
+ }
+ };
+
+ private final EventHandler visibilityHandler = new EventHandler() {
+ @Override
+ public void handleEvent(Event event) {
+ MUIElement changedElement = (MUIElement) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+
+ if ((MElementContainer<?>) changedElement.getParent() instanceof MPartSashContainer) {
+ MPartSashContainer sash = (MPartSashContainer) (MElementContainer<?>) changedElement
+ .getParent();
+
+ if (sash.getRenderer() == null) {
+ return;
+ }
+
+ ((SashRenderer) sash.getRenderer()).refreshSashContainer(sash);
+
+ boolean visible = false;
+ for (MPartSashContainerElement child : sash.getChildren()) {
+ if (child.isVisible()) {
+ visible = true;
+ break;
+ }
+ }
+ if (sash.isVisible() != visible)
+ sash.setVisible(visible);
+ }
+ }
+ };
+
+ private Set<MPartSashContainer> sashContainers = new HashSet<>();
+
+ @Override
+ public void createWidget(MUIElement element,
+ MElementContainer<MUIElement> parent) {
+ if (!(element instanceof MPartSashContainer)) {
+ return;
+ }
+ VerticalLayout layout = new VerticalLayout();
+ layout.setSizeFull();
+
+ element.setWidget(layout);
+
+ sashContainers.add((MPartSashContainer) element);
+
+ if (designerService != null) {
+ designerService.addListener(this);
+
+ if (designerService.isDesignMode()) {
+ updateDesigner(true);
+ }
+ }
+
+ }
+
+ @Override
+ public void processContents(final MElementContainer<MUIElement> element) {
+ refreshSashContainer((MPartSashContainer) (MElementContainer<?>) element);
+ }
+
+ public void generateSplitPanelStructure(MPartSashContainer sash) {
+ VerticalLayout layout = (VerticalLayout) sash.getWidget();
+ layout.removeAllComponents();
+
+ ComponentContainer sashWidget = null;
+
+ @SuppressWarnings("unchecked")
+ List<MPartSashContainerElement> renderableAndVisible = (List<MPartSashContainerElement>) filterRenderableAndVisibleElements(sash);
+
+ if (renderableAndVisible.isEmpty()) {
+ sashWidget = new VerticalLayout();
+ } else if (renderableAndVisible.size() == 1) {
+ sashWidget = new VerticalLayout();
+ MPartSashContainerElement child = renderableAndVisible.get(0);
+ sashWidget.addComponent((Component) child.getWidget());
+ } else {
+ sashWidget = sash.isHorizontal() ? new SashWidgetHorizontal()
+ : new SashWidgetVertical();
+ AbstractSplitPanel currentSashWidget = (AbstractSplitPanel) sashWidget;
+ currentSashWidget
+ .setLocked(sash.getTags().contains(Tags.NO_RESIZE));
+ for (int i = 0; i < renderableAndVisible.size(); i++) {
+ MPartSashContainerElement child = renderableAndVisible.get(i);
+
+ if (currentSashWidget.getFirstComponent() == null) {
+ currentSashWidget.setFirstComponent((Component) child
+ .getWidget());
+ } else {
+ if (i == renderableAndVisible.size() - 1) {
+ currentSashWidget.setSecondComponent((Component) child
+ .getWidget());
+ } else {
+ AbstractSplitPanel newSashWidget = sash.isHorizontal() ? new SashWidgetHorizontal()
+ : new SashWidgetVertical();
+ newSashWidget.setLocked(sash.getTags().contains(
+ Tags.NO_RESIZE));
+ newSashWidget.setFirstComponent((Component) child
+ .getWidget());
+ currentSashWidget.setSecondComponent(newSashWidget);
+ currentSashWidget = newSashWidget;
+ }
+ }
+ }
+ }
+
+ sashWidget.setSizeFull();
+ layout.addComponent(sashWidget);
+
+ setWeights(sash);
+ }
+
+ @Override
+ public void notify(IDesignerService.DesignEvent event) {
+ updateDesigner(event.getType() == IDesignerService.EventType.ENABLED);
+ }
+
+ private void updateDesigner(boolean enabled) {
+ for (MPartSashContainer container : sashContainers) {
+ for (MPartSashContainerElement child : container.getChildren()) {
+ if (child.getWidget() != null && child.isToBeRendered()) {
+ updateDesigner(enabled, child);
+ }
+ }
+ }
+ }
+
+ private void updateDesigner(boolean enabled, MPartSashContainerElement child) {
+ IWidgetDesignConfigurator designConfigurator = context
+ .get(IWidgetDesignConfigurator.class);
+ if (designConfigurator != null) {
+ designConfigurator.configure(child.getWidget(), (EObject) child,
+ enabled);
+ }
+ }
+
+ void setWeights(MPartSashContainer sash) {
+ @SuppressWarnings("unchecked")
+ List<MPartSashContainerElement> renderableAndVisible = (List<MPartSashContainerElement>) filterRenderableAndVisibleElements(sash);
+ if (renderableAndVisible.size() < 2)
+ return;
+
+ Map<MPartSashContainerElement, Double> weights = new HashMap<MPartSashContainerElement, Double>();
+ Map<Component, MPartSashContainerElement> map = new HashMap<Component, MPartSashContainerElement>();
+ double total_weight = 0;
+ for (MPartSashContainerElement children : renderableAndVisible) {
+ String data = children.getContainerData();
+ double weight = parseContainerData(data);
+
+ map.put((Component) children.getWidget(), children);
+ weights.put(children, weight);
+ total_weight += weight;
+ }
+
+ if (total_weight == 0.0) // all child elements has zero weight
+ total_weight = 1.0;
+
+ AbstractSplitPanel topSashWidget = (AbstractSplitPanel) ((VerticalLayout) sash
+ .getWidget()).getComponent(0);
+ AbstractSplitPanel currentSashWidget = topSashWidget;
+ while (true) {
+ MPartSashContainerElement e1 = map.get(currentSashWidget
+ .getFirstComponent());
+ // the first - is always element
+ double w = weights.get(e1);
+ double pos = (w / total_weight) * 100;
+ currentSashWidget.setSplitPosition((float) pos);
+
+ if (map.containsKey(currentSashWidget.getSecondComponent()))
+ break;
+
+ currentSashWidget = (AbstractSplitPanel) currentSashWidget
+ .getSecondComponent();
+ total_weight = total_weight - w;
+ }
+ }
+
+ public void refreshSashContainer(MPartSashContainer sash) {
+
+ // sashContainersMap.remove(sash);
+
+ generateSplitPanelStructure(sash);
+ addSplitPaneListener(sash);
+ }
+
+ @PostConstruct
+ void postConstruct() {
+ eventBroker.subscribe(UIEvents.UIElement.TOPIC_CONTAINERDATA,
+ sashWeightHandler);
+ eventBroker.subscribe(UIEvents.UIElement.TOPIC_VISIBLE,
+ visibilityHandler);
+ eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+ childrenMoveUpdater);
+ }
+
+ @PreDestroy
+ public void preDestroy() {
+
+ if (designerService != null) {
+ designerService.removeListener(this);
+ }
+
+ eventBroker.unsubscribe(sashWeightHandler);
+ eventBroker.unsubscribe(visibilityHandler);
+ eventBroker.unsubscribe(childrenMoveUpdater);
+ }
+
+ private EventHandler childrenMoveUpdater = new EventHandler() {
+ public void handleEvent(Event event) {
+ // Ensure that this event is for a MMenuItem
+ if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MPartSashContainer))
+ return;
+
+ MPartSashContainer sash = (MPartSashContainer) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+ String type = (String) event.getProperty(UIEvents.EventTags.TYPE);
+
+ // on move, we unrender an render the UI again
+ //
+ if (UIEvents.EventTypes.MOVE.equals(type)) {
+ // refreshSashContainer(sash);
+ }
+ }
+ };
+
+ @Override
+ public void hookControllerLogic(MUIElement element) {
+ // Controller logic is added in refreshSashContainer method. The widget
+ // hierarchy regenerated on each add and remove gui,
+ // so listeners must added each time when sash widget created
+ }
+
+ public void addSplitPaneListener(MUIElement element) {
+ final MPartSashContainer sash = (MPartSashContainer) element;
+
+ List<MPartSashContainerElement> renderableAndVisible = (List<MPartSashContainerElement>) filterRenderableAndVisibleElements(sash);
+
+ if (renderableAndVisible.size() > 1) {
+ for (MPartSashContainerElement child : renderableAndVisible) {
+ Component childComponent = (Component) child.getWidget();
+ if (childComponent.getParent() instanceof SashWidget) {
+ SashWidget sashWidget = (SashWidget) childComponent
+ .getParent();
+ sashWidget.addListener(new SplitPositionChangedListener() {
+
+ @Override
+ public void processEvent(AbstractSplitPanel splitPanel,
+ float newSplitPos) {
+ AbstractComponent firstWidget = (AbstractComponent) splitPanel
+ .getFirstComponent();
+
+ // filter renderable and visible again (list can be
+ // changed)
+ List<MPartSashContainerElement> renderableAndVisible = (List<MPartSashContainerElement>) filterRenderableAndVisibleElements(sash);
+ MPartSashContainerElement firstChild = null;
+ double rest_weight = 0;
+ List<MPartSashContainerElement> restChilds = new LinkedList<MPartSashContainerElement>();
+ for (int i = 0; i < renderableAndVisible.size(); i++) {
+ MPartSashContainerElement child = renderableAndVisible
+ .get(i);
+ if (firstWidget.equals(child.getWidget())) {
+ firstChild = child;
+ }
+
+ if (firstChild != null) {
+ try {
+ double w = parseContainerData(child
+ .getContainerData());
+ rest_weight += w;
+ } catch (NumberFormatException e) {
+ logger.error("Changing weights of SashContainer's childs is failed. Can not parse children container data");
+ return;
+ }
+
+ restChilds.add(child);
+ }
+ }
+
+ if (restChilds.size() > 1) {
+ // String debugstr = "weights: ";
+ ignoreSashWeights = true;
+
+ double rest_weight_except_first = rest_weight
+ - parseContainerData(firstChild
+ .getContainerData());
+ double newW1 = (newSplitPos / 100)
+ * rest_weight;
+ double new_rest_weight_except_first = rest_weight
+ - newW1;
+ long longVal1 = Math.round(newW1);
+ firstChild.setContainerData(Long
+ .toString(longVal1));
+ // debugstr += longVal1;
+
+ // if the weight of remainder (except first) is
+ // not zero, then we distribute the new space
+ // appropriate weights
+ if (rest_weight_except_first > 0.0) {
+ for (int i = 1; i < restChilds.size(); i++) {
+ MPartSashContainerElement child = restChilds
+ .get(i);
+ double w = parseContainerData(child
+ .getContainerData());
+ double newW = (w / rest_weight_except_first)
+ * new_rest_weight_except_first;
+ long longVal = Math.round(newW);
+
+ child.setContainerData(Long
+ .toString(longVal));
+ // debugstr += ", " + longVal;
+ }
+ } else // otherwise we assign all new space to
+ // the last component
+ {
+ MPartSashContainerElement rest1 = restChilds
+ .get(restChilds.size() - 1);
+ rest1.setContainerData(Long.toString(Math
+ .round(new_rest_weight_except_first)));
+ }
+
+ ignoreSashWeights = false;
+
+ // System.out.println(debugstr);
+
+ // ATTENTION! Really line below is not required
+ // if code above works correctly.
+ // But if there are any wrong behaviour appear
+ // then we have wrong synchronized state
+ // that may caused side effects, so we do back
+ // syncronization (and bug if it occur become
+ // obvious).
+ // This is also zeroed weight mismatch occuring
+ // when double rounded (and possible when vaadin
+ // process changes),
+ // so we avoid mismatch accumulating.
+ // Most likely in the future this will be
+ // deleted (when this code will be proved that
+ // all ok).
+ setWeights(sash);
+ } else {
+ logger.error("Changing SashContainer child weights is failed. User changes is not processed correctly");
+ }
+
+ // and last thing what we must do - tell the
+ // WorkbenchWindow to recalculate bounds of it
+ // content
+ // (because bounds of some content of workbench
+ // window changed after sash widget split position
+ // changed)
+ MWindow window = modelService
+ .getTopLevelWindowFor(sash);
+ TrimmedWindowContent windowContent = (TrimmedWindowContent) ((Panel) window
+ .getWidget()).getContent();
+ windowContent.invalidateBounds();
+ }
+ });
+ } else {
+ logger.error("Error in widget hierarchy detected - if sash container has more than one element its child widget must has SashWidget as a parent");
+ }
+ }
+ }
+ }
+
+ private double parseContainerData(String containerData) {
+ if (containerData == null)
+ return 0.0d;
+
+ containerData = containerData.trim();
+
+ try {
+ return Double.parseDouble(containerData);
+ } catch (NumberFormatException e) {
+ return 0.0d;
+ }
+ }
+
+ @Override
+ public void addChildGui(MUIElement child,
+ MElementContainer<MUIElement> element) {
+ if (!(child instanceof MPartSashContainerElement)
+ || !((MElementContainer<?>) element instanceof MPartSashContainer))
+ return;
+
+ refreshSashContainer((MPartSashContainer) (MElementContainer<?>) element);
+
+ if (designerService != null && designerService.isDesignMode()) {
+ updateDesigner(designerService.isDesignMode(),
+ (MPartSashContainerElement) child);
+ }
+ }
+
+ @Override
+ public void removeChildGui(MUIElement child,
+ MElementContainer<MUIElement> element) {
+ if (!(child instanceof MPartSashContainerElement)
+ || !((MElementContainer<?>) element instanceof MPartSashContainer))
+ return;
+
+ refreshSashContainer((MPartSashContainer) (MElementContainer<?>) element);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/StackRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/StackRenderer.java
new file mode 100644
index 0000000..c265792
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/StackRenderer.java
@@ -0,0 +1,611 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MDirtyable;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.MUILabel;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MStackElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.services.internal.events.EventBroker;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.UIEvents.EventTags;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.osbp.runtime.designer.api.IDesignerService;
+import org.eclipse.osbp.runtime.designer.api.IWidgetDesignConfigurator;
+import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
+import org.eclipse.osbp.vaaclipse.presentation.dnd.VaadinDropHandler;
+import org.eclipse.osbp.vaaclipse.publicapi.change.SimpleCommand;
+import org.eclipse.osbp.vaaclipse.publicapi.resources.ResourceHelper;
+import org.eclipse.osbp.vaaclipse.widgets.StackWidget;
+import org.eclipse.osbp.vaaclipse.widgets.StackWidget.StateListener;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.server.Resource;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.TabSheet;
+import com.vaadin.ui.TabSheet.CloseHandler;
+import com.vaadin.ui.TabSheet.SelectedTabChangeEvent;
+import com.vaadin.ui.TabSheet.SelectedTabChangeListener;
+import com.vaadin.ui.TabSheet.Tab;
+
+import fi.jasoft.dragdroplayouts.client.ui.LayoutDragMode;
+
+@SuppressWarnings("restriction")
+public class StackRenderer extends VaadinRenderer implements
+ IDesignerService.IDesignListener {
+
+ @Inject
+ private EventBroker eventBroker;
+ @Inject
+ private EModelService modelService;
+ @Inject
+ private EditingDomain editingDomain;
+ @Inject
+ private EPartService partService;
+ private Map<Component, MStackElement> vaatab2Element = new HashMap<Component, MStackElement>();
+ private boolean ignoreTabSelChanges = false;
+
+ @Inject
+ VaadinExecutorService communicationManager;
+
+ @Inject
+ @Optional
+ private IDesignerService designerService;
+
+ private EventHandler tagListener = new EventHandler() {
+ @Override
+ public void handleEvent(Event event) {
+
+ Object changedObj = event.getProperty(EventTags.ELEMENT);
+ String eventType = (String) event
+ .getProperty(UIEvents.EventTags.TYPE);
+ String tag = (String) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+
+ int location = modelService
+ .getElementLocation((MUIElement) changedObj);
+ if (!(changedObj instanceof MPartStack)
+ || location == EModelService.IN_SHARED_AREA) {
+ return;
+ }
+
+ final MPartStack stack = (MPartStack) changedObj;
+ StackWidget stackWidget = (StackWidget) stack.getWidget();
+
+ if (UIEvents.EventTypes.ADD.equals(eventType)) {
+ if (IPresentationEngine.MINIMIZED.equals(tag)) {
+ stackWidget.setState(-1);
+ } else if (IPresentationEngine.MAXIMIZED.equals(tag)) {
+ stackWidget.setState(1);
+ }
+ } else if (UIEvents.EventTypes.REMOVE.equals(eventType)) {
+ stackWidget.setState(0);
+ }
+ }
+ };
+
+ private EventHandler selectElementHandler = new EventHandler() {
+
+ public void handleEvent(Event event) {
+ Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+ if (!(element instanceof MPartStack))
+ return;
+
+ MPartStack stack = (MPartStack) element;
+ if (stack.getRenderer() != StackRenderer.this)
+ return;
+
+ if (stack.getSelectedElement() != null) {
+ if (stack.getSelectedElement().getWidget() == null) {
+ IPresentationEngine engine = (IPresentationEngine) context
+ .get(IPresentationEngine.class.getName());
+ engine.createGui(stack.getSelectedElement());
+
+ int i = 0;
+ for (MStackElement e : stack.getChildren()) {
+ if (e == stack.getSelectedElement())
+ break;
+
+ if (e.getWidget() != null)
+ i++;
+ }
+
+ addTab((TabSheet) stack.getWidget(),
+ stack.getSelectedElement(), i);
+ }
+
+ ignoreTabSelChanges = true;
+ ((TabSheet) stack.getWidget()).setSelectedTab((Component) stack
+ .getSelectedElement().getWidget());
+ ignoreTabSelChanges = false;
+ }
+ }
+ };
+
+ EventHandler itemUpdater = new EventHandler() {
+ public void handleEvent(Event event) {
+ MUIElement element = (MUIElement) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+ if (!(element instanceof MPart))
+ return;
+
+ MPart part = (MPart) element;
+
+ String attName = (String) event
+ .getProperty(UIEvents.EventTags.ATTNAME);
+ Object newValue = event.getProperty(UIEvents.EventTags.NEW_VALUE);
+
+ MPartStack stack = null;
+ // is this a direct child of the stack?
+ MPlaceholder placeholder = null;
+ if (element.getParent() != null
+ && element.getParent().getRenderer() == StackRenderer.this) {
+ stack = (MPartStack) (MElementContainer<?>) element.getParent();
+ } else {
+ // Do we have any stacks with place holders for the element
+ // that's changed?
+ MWindow win = modelService.getTopLevelWindowFor(part);
+ List<MPlaceholder> refs = modelService.findElements(win, null,
+ MPlaceholder.class, null);
+ if (refs != null) {
+ for (MPlaceholder ref : refs) {
+ if (ref.getRef() != part)
+ continue;
+
+ MElementContainer<?> refParent = ref.getParent();
+ // can be null, see bug 328296
+ if (refParent != null
+ && refParent.getRenderer() instanceof StackRenderer) {
+ placeholder = ref;
+ stack = (MPartStack) refParent;
+ }
+ }
+ }
+ }
+
+ if (stack != null) {
+ Tab tab = ((StackWidget) stack.getWidget())
+ .getTab((Component) (placeholder == null ? part
+ .getWidget() : placeholder.getWidget()));
+ if (tab != null)
+ updateTab(tab, part, attName, newValue);
+ }
+ }
+ };
+
+ private void updateTab(Tab tab, MPart part, String attName, Object newValue) {
+ if (UIEvents.UILabel.LABEL.equals(attName)) {
+ String newName = (String) newValue;
+ tab.setCaption(getLabel(part, newName));
+ } else if (UIEvents.UILabel.ICONURI.equals(attName)) {
+ Resource icon = part.getIconURI() != null ? ResourceHelper
+ .createResource(part.getIconURI()) : null;
+ tab.setIcon(icon);
+ } else if (UIEvents.UILabel.TOOLTIP.equals(attName)) {
+ String newTTip = (String) newValue;
+ tab.setDescription(newTTip);
+ } else if (UIEvents.UILabel.LOCALIZED_LABEL.equals(attName)) {
+ String newName = (String) newValue;
+ tab.setCaption(getLabel(part, newName));
+ } else if (UIEvents.UILabel.LOCALIZED_TOOLTIP.equals(attName)) {
+ String newTTip = (String) newValue;
+ tab.setDescription(newTTip);
+ } else if (UIEvents.Dirtyable.DIRTY.equals(attName)) {
+ Boolean dirtyState = (Boolean) newValue;
+ String text = tab.getCaption();
+ boolean hasAsterisk = text.length() > 0 && text.charAt(0) == '*';
+ if (dirtyState.booleanValue()) {
+ if (!hasAsterisk) {
+ tab.setCaption('*' + text);
+ }
+ } else if (hasAsterisk) {
+ tab.setCaption(text.substring(1));
+ }
+ }
+ }
+
+ private String getLabel(MUILabel itemPart, String newName) {
+ if (newName == null) {
+ newName = ""; //$NON-NLS-1$
+ }
+ if (itemPart instanceof MDirtyable && ((MDirtyable) itemPart).isDirty()) {
+ newName = '*' + newName;
+ }
+ return newName;
+ }
+
+ @PostConstruct
+ public void postConstruct() {
+ eventBroker.subscribe(UIEvents.ApplicationElement.TOPIC_TAGS,
+ tagListener);
+ eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_SELECTEDELEMENT,
+ selectElementHandler);
+ eventBroker.subscribe(UIEvents.UILabel.TOPIC_ALL, itemUpdater);
+ eventBroker.subscribe(UIEvents.Dirtyable.TOPIC_DIRTY, itemUpdater);
+ eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+ childrenMoveUpdater);
+ }
+
+ @Override
+ public void notify(IDesignerService.DesignEvent event) {
+ updateDesigner(event.getType() == IDesignerService.EventType.ENABLED);
+ }
+
+ private void updateDesigner(boolean enabled) {
+ IWidgetDesignConfigurator designConfigurator = context
+ .get(IWidgetDesignConfigurator.class);
+ if (designConfigurator != null) {
+ for (Entry<Component, MStackElement> entry : vaatab2Element
+ .entrySet()) {
+ designConfigurator.configure(entry.getKey(),
+ (EObject) entry.getValue(), enabled);
+ }
+ }
+ }
+
+ @PreDestroy
+ public void preDestroy() {
+
+ if (designerService != null) {
+ designerService.removeListener(this);
+ }
+
+ eventBroker.unsubscribe(tagListener);
+ eventBroker.unsubscribe(selectElementHandler);
+ eventBroker.unsubscribe(itemUpdater);
+ eventBroker.unsubscribe(childrenMoveUpdater);
+ }
+
+ // TODO for later use
+ private EventHandler childrenMoveUpdater = new EventHandler() {
+ public void handleEvent(Event event) {
+ // Ensure that this event is for a MMenuItem
+ if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MPartStack))
+ return;
+
+ @SuppressWarnings("unchecked")
+ MElementContainer<MUIElement> stack = (MElementContainer<MUIElement>) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+ String type = (String) event.getProperty(UIEvents.EventTags.TYPE);
+
+ if (UIEvents.EventTypes.MOVE.equals(type)) {
+ StackWidget stackWidget = (StackWidget) stack.getWidget();
+ stackWidget.removeAllComponents();
+
+ processContents(stack);
+ }
+ }
+ };
+
+ @Override
+ public void createWidget(MUIElement element,
+ MElementContainer<MUIElement> parent) {
+ if (!(element instanceof MPartStack))
+ return;
+
+ MPartStack stack = (MPartStack) element;
+ StackWidget stackWidget = new StackWidget();
+ stackWidget.setDragMode(LayoutDragMode.CLONE);
+
+ stackWidget.setSizeFull();
+ element.setWidget(stackWidget);
+
+ IEclipseContext context = modelService.getContainingContext(stack)
+ .createChild();
+ context.set(MPartStack.class, stack);
+
+ VaadinDropHandler dropHandler = ContextInjectionFactory.make(
+ VaadinDropHandler.class, context);
+ stackWidget.setDropHandler(dropHandler);
+
+ if (designerService != null) {
+ designerService.addListener(this);
+
+ if (designerService.isDesignMode()) {
+ updateDesigner(true);
+ }
+ }
+ }
+
+ @Override
+ public void processContents(final MElementContainer<MUIElement> container) {
+ MPartStack stack = (MPartStack) (MElementContainer<?>) container;
+ StackWidget stackWidget = (StackWidget) stack.getWidget();
+ for (MStackElement element : stack.getChildren()) {
+ if (element.isToBeRendered())
+ addTab(stackWidget, (MStackElement) element,
+ stackWidget.getComponentCount());
+ }
+
+ // if there are childs in stack and the selected element is not
+ // specified for stack, set the first child as selected
+ if (stack.getChildren().size() > 0
+ && stack.getSelectedElement() == null) {
+ if (stack.getChildren().get(0).isVisible()
+ && stack.getChildren().get(0).isToBeRendered()) {
+ stack.setSelectedElement(stack.getChildren().get(0));
+ }
+ }
+
+ if (stack.getSelectedElement() != null) {
+ Component stackSelectedComponent = (Component) stack
+ .getSelectedElement().getWidget();
+ stackWidget.setSelectedTab(stackSelectedComponent);
+ }
+ }
+
+ private void addTab(TabSheet parentPane, MStackElement element, int pos) {
+ MUILabel mLabel;
+ if (element instanceof MPlaceholder)
+ mLabel = (MUILabel) ((MPlaceholder) element).getRef();
+ else
+ mLabel = (MUILabel) element;
+
+ boolean closable = false;
+ if (mLabel instanceof MPart)
+ closable = ((MPart) mLabel).isCloseable();
+
+ // Tab tab = parentPane.addTab((com.vaadin.ui.Component)
+ // element.getWidget(), mLabel.getLocalizedLabel(), icon, pos);
+ Tab tab = parentPane.addTab(
+ (com.vaadin.ui.Component) element.getWidget(), pos);
+ tab.setCaption(mLabel.getLocalizedLabel());
+ Resource icon = (mLabel.getIconURI() != null && !mLabel.getIconURI()
+ .trim().equals("")) ? ResourceHelper.createResource(mLabel
+ .getIconURI()) : null;
+ if (icon != null) {
+ tab.setIcon(icon);
+ }
+ tab.setClosable(closable);
+ tab.setDescription(mLabel.getLocalizedTooltip());
+
+ vaatab2Element.put((Component) element.getWidget(), element);
+
+ if(designerService != null && designerService.isDesignMode()) {
+ updateDesigner(designerService.isDesignMode());
+ }
+ }
+
+ @SuppressWarnings("serial")
+ @Override
+ public void hookControllerLogic(final MUIElement element) {
+ final StackWidget sw = (StackWidget) element.getWidget();
+
+ int location = modelService.getElementLocation(element);
+ if (location != EModelService.IN_SHARED_AREA) // if the stack not in
+ // shared area
+ {
+ sw.addStateListener(new StateListener() {
+
+ @Override
+ public void stateChanged(int newState, int oldState) {
+ if (oldState == 0 && newState == 1)
+ setState(element, IPresentationEngine.MAXIMIZED);
+ else if (oldState == 1 && newState == 0)
+ setState(element, null);
+ else if (oldState == 1 && newState == -1) {
+ element.getTags().remove(IPresentationEngine.MINIMIZED);
+ element.getTags().remove(IPresentationEngine.MAXIMIZED);
+ element.getTags().add(IPresentationEngine.MINIMIZED);
+ } else if (oldState == -1 && newState == 0) {
+ element.getTags().remove(
+ IPresentationEngine.MINIMIZED_BY_ZOOM);
+ element.getTags().remove(IPresentationEngine.MINIMIZED);
+ } else if (oldState == 0 && newState == -1)
+ setState(element, IPresentationEngine.MINIMIZED);
+ }
+
+ private void setState(MUIElement element, String state) {
+ element.getTags().remove(
+ IPresentationEngine.MINIMIZED_BY_ZOOM);
+ if (IPresentationEngine.MINIMIZED.equals(state)) {
+ element.getTags().remove(IPresentationEngine.MAXIMIZED);
+ element.getTags().add(IPresentationEngine.MINIMIZED);
+ } else if (IPresentationEngine.MAXIMIZED.equals(state)) {
+ element.getTags().remove(IPresentationEngine.MINIMIZED);
+ element.getTags().add(IPresentationEngine.MAXIMIZED);
+ } else {
+ element.getTags().remove(IPresentationEngine.MINIMIZED);
+ element.getTags().remove(IPresentationEngine.MAXIMIZED);
+ }
+ }
+ });
+ }
+
+ sw.addSelectedTabChangeListener(new SelectedTabChangeListener() {
+ public void selectedTabChange(SelectedTabChangeEvent event) {
+ final MStackElement stackElement = vaatab2Element.get(sw
+ .getSelectedTab());
+ if (stackElement != null) {
+ if (ignoreTabSelChanges)
+ return;
+
+ final MPartStack stack = (MPartStack) (MElementContainer<?>) stackElement
+ .getParent();
+ if (stack != null
+ && stack.getSelectedElement() != stackElement) {
+
+ SimpleCommand command = new SimpleCommand(
+ "Switch stack element") {
+ final MStackElement oldStackElement = stack
+ .getSelectedElement();
+
+ @Override
+ protected void doUndo() {
+ stack.setSelectedElement(oldStackElement);
+ activateStack(stack);
+ }
+
+ @Override
+ protected void doExecute() {
+ stack.setSelectedElement(stackElement);
+ activateStack(stack);
+ }
+ };
+ editingDomain.getCommandStack().execute(command);
+ }
+ }
+ }
+ });
+
+ sw.setCloseHandler(new CloseHandler() {
+
+ public void onTabClose(TabSheet tabsheet, Component tabContent) {
+ MStackElement stackElement = vaatab2Element.get(tabContent);
+ closePart(stackElement);
+ }
+ });
+ }
+
+ private void activateStack(MPartStack stack) {
+ communicationManager.invokeLater(new ActivationRunnable(stack));
+ }
+
+ private class ActivationRunnable implements Runnable {
+
+ private MPartStack stack;
+
+ public ActivationRunnable(MPartStack stack) {
+ this.stack = stack;
+ }
+
+ @Override
+ public void run() {
+ MStackElement stackElement = stack.getSelectedElement();
+ // Ensure we're activating a stack in the current perspective,
+ // when using a dialog to open a perspective
+ // we end up in the situation where this stack is in the
+ // previously active perspective
+ int location = modelService.getElementLocation(stack);
+ if ((location & EModelService.IN_ACTIVE_PERSPECTIVE) == 0
+ && (location & EModelService.OUTSIDE_PERSPECTIVE) == 0
+ && (location & EModelService.IN_SHARED_AREA) == 0)
+ return;
+
+ if (!isValid(stackElement))
+ return;
+
+ if (stackElement instanceof MPlaceholder)
+ stackElement = (MStackElement) ((MPlaceholder) stackElement)
+ .getRef();
+
+ IEclipseContext curContext = getContext(stackElement);
+ if (curContext != null) {
+ EPartService ps = (EPartService) curContext
+ .get(EPartService.class.getName());
+ if (ps != null)
+ ps.activate((MPart) stackElement, true);
+ }
+ }
+ }
+
+ private boolean isValid(MUIElement element) {
+ if (element == null || !element.isToBeRendered()) {
+ return false;
+ }
+
+ if (element instanceof MApplication) {
+ return true;
+ }
+
+ MUIElement parent = element.getParent();
+ if (parent == null && element instanceof MWindow) {
+ // might be a detached window
+ parent = (MUIElement) ((EObject) element).eContainer();
+ }
+
+ if (parent == null) {
+ // might be a shared part, try to find the placeholder
+ MWindow window = modelService.getTopLevelWindowFor(element);
+ return window == null ? false : isValid(modelService
+ .findPlaceholderFor(window, element));
+ }
+
+ return isValid(parent);
+ }
+
+ private boolean isClosable(MPart part) {
+ // if it's a shared part check its current ref
+ if (part.getCurSharedRef() != null) {
+ return !(part.getCurSharedRef().getTags()
+ .contains(IPresentationEngine.NO_CLOSE));
+ }
+
+ return part.isCloseable();
+ }
+
+ private boolean closePart(MStackElement stackElement) {
+
+ MPart part = (MPart) ((stackElement instanceof MPart) ? stackElement
+ : ((MPlaceholder) stackElement).getRef());
+ if (!isClosable(part)) {
+ return false;
+ }
+
+ IEclipseContext partContext = part.getContext();
+ IEclipseContext parentContext = getContextForParent(part);
+ // a part may not have a context if it hasn't been rendered
+ IEclipseContext context = partContext == null ? parentContext
+ : partContext;
+ // Allow closes to be 'canceled'
+ EPartService partService = (EPartService) context
+ .get(EPartService.class.getName());
+ if (partService.savePart(part, true)) {
+ partService.hidePart(part);
+ return true;
+ }
+ // the user has canceled out of the save operation, so don't close the
+ // part
+ return false;
+ }
+
+ @Override
+ public void setVisible(MUIElement changedElement, boolean visible) {
+ TabSheet tabPane = (TabSheet) changedElement.getWidget();
+ tabPane.setVisible(visible);
+ }
+
+ @Override
+ public void addChildGui(MUIElement child,
+ MElementContainer<MUIElement> element) {
+ if (!(child instanceof MStackElement))
+ return;
+
+ StackWidget sw = (StackWidget) element.getWidget();
+ int index = indexOf(child, element);
+ addTab(sw, (MStackElement) child, index);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolBarContributionRecord.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolBarContributionRecord.java
new file mode 100644
index 0000000..5d9e89d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolBarContributionRecord.java
@@ -0,0 +1,173 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2012 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ * Rushan R. Gilmullin - adoption to vaadin
+ ******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+
+import org.eclipse.e4.core.commands.ExpressionContext;
+import org.eclipse.e4.core.contexts.EclipseContextFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.internal.workbench.ContributionsAnalyzer;
+import org.eclipse.e4.ui.model.application.ui.MCoreExpression;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarContribution;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarElement;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+public class ToolBarContributionRecord {
+ public static final String FACTORY = "ToolBarContributionFactory"; //$NON-NLS-1$
+ static final String STATIC_CONTEXT = "ToolBarContributionFactoryContext"; //$NON-NLS-1$
+
+ MToolBar toolbarModel;
+ MToolBarContribution toolbarContribution;
+ ArrayList<MToolBarElement> generatedElements = new ArrayList<MToolBarElement>();
+ ToolBarRenderer renderer;
+ boolean isVisible = true;
+ private IEclipseContext infoContext;
+
+ public ToolBarContributionRecord(MToolBar model,
+ MToolBarContribution contribution, ToolBarRenderer renderer) {
+ this.toolbarModel = model;
+ this.toolbarContribution = contribution;
+ this.renderer = renderer;
+ }
+
+ /**
+ * @param context
+ */
+ public void updateVisibility(IEclipseContext context) {
+ ExpressionContext exprContext = new ExpressionContext(context);
+ updateIsVisible(exprContext);
+ HashSet<ToolBarContributionRecord> recentlyUpdated = new HashSet<ToolBarContributionRecord>();
+ recentlyUpdated.add(this);
+ for (MToolBarElement item : generatedElements) {
+ boolean currentVisibility = computeVisibility(recentlyUpdated,
+ item, exprContext);
+ if (item.isVisible() != currentVisibility) {
+ item.setVisible(currentVisibility);
+ }
+ }
+ }
+
+ public void updateIsVisible(ExpressionContext exprContext) {
+ isVisible = ContributionsAnalyzer.isVisible(toolbarContribution,
+ exprContext);
+ }
+
+ public boolean computeVisibility(
+ HashSet<ToolBarContributionRecord> recentlyUpdated,
+ MToolBarElement item, ExpressionContext exprContext) {
+ boolean currentVisibility = isVisible;
+
+ if (currentVisibility
+ && item.getVisibleWhen() instanceof MCoreExpression) {
+ boolean val = ContributionsAnalyzer.isVisible(
+ (MCoreExpression) item.getVisibleWhen(), exprContext);
+ currentVisibility = val;
+ }
+ return currentVisibility;
+ }
+
+ public boolean anyVisibleWhen() {
+ if (toolbarContribution.getVisibleWhen() != null) {
+ return true;
+ }
+ for (MToolBarElement child : toolbarContribution.getChildren()) {
+ if (child.getVisibleWhen() != null) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public boolean mergeIntoModel() {
+ int idx = getIndex(toolbarModel,
+ toolbarContribution.getPositionInParent());
+ if (idx == -1) {
+ return false;
+ }
+
+ final List<MToolBarElement> copyElements = new ArrayList<MToolBarElement>();
+ for (MToolBarElement item : toolbarContribution.getChildren()) {
+ MToolBarElement copy = (MToolBarElement) EcoreUtil
+ .copy((EObject) item);
+ copyElements.add(copy);
+ }
+
+ for (MToolBarElement copy : copyElements) {
+ // if a visibleWhen clause is defined, the item should not be
+ // visible until the clause has been evaluated and returned 'true'
+ copy.setVisible(!anyVisibleWhen());
+ generatedElements.add(copy);
+ toolbarModel.getChildren().add(idx++, copy);
+ }
+ return true;
+ }
+
+ private IEclipseContext getStaticContext() {
+ if (infoContext == null) {
+ IEclipseContext parentContext = renderer.getContext(toolbarModel);
+ if (parentContext != null) {
+ infoContext = parentContext.createChild(STATIC_CONTEXT);
+ } else {
+ infoContext = EclipseContextFactory.create(STATIC_CONTEXT);
+ }
+ ContributionsAnalyzer.populateModelInterfaces(toolbarModel,
+ infoContext, toolbarModel.getClass().getInterfaces());
+ infoContext.set(ToolBarRenderer.class, renderer);
+ }
+ return infoContext;
+ }
+
+ private static int getIndex(MElementContainer<?> model,
+ String positionInParent) {
+ String id = null;
+ String modifier = null;
+ if (positionInParent != null && positionInParent.length() > 0) {
+ String[] array = positionInParent.split("="); //$NON-NLS-1$
+ modifier = array[0];
+ id = array[1];
+ }
+ if (id == null) {
+ return model.getChildren().size();
+ }
+
+ int idx = 0;
+ int size = model.getChildren().size();
+ while (idx < size) {
+ if (id.equals(model.getChildren().get(idx).getElementId())) {
+ if ("after".equals(modifier)) { //$NON-NLS-1$
+ idx++;
+ } else if ("endof".equals(modifier)) { //$NON-NLS-1$
+ // Skip current menu item
+ idx++;
+
+ // Skip all menu items until next MenuSeparator is found
+ while (idx < size
+ && !(model.getChildren().get(idx) instanceof MToolBarSeparator && model
+ .getChildren().get(idx).getElementId() != null)) {
+ idx++;
+ }
+ }
+ return idx;
+ }
+ idx++;
+ }
+ return id.equals("additions") ? model.getChildren().size() : -1; //$NON-NLS-1$
+ }
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolBarRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolBarRenderer.java
new file mode 100644
index 0000000..64401ac
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolBarRenderer.java
@@ -0,0 +1,331 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.ArrayList;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.contexts.RunAndTrack;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.internal.workbench.ContributionsAnalyzer;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.SideValue;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarContribution;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarElement;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.osbp.vaaclipse.presentation.utils.GuiUtils;
+import org.eclipse.osbp.vaaclipse.publicapi.resources.ResourceHelper;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.server.Resource;
+import com.vaadin.ui.AbstractLayout;
+import com.vaadin.ui.AbstractOrderedLayout;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.VerticalLayout;
+
+@SuppressWarnings("restriction")
+public class ToolBarRenderer extends BasicMenuToolbarTrimbarRenderer {
+ @Inject
+ private MApplication application;
+ @Inject
+ private EModelService modelService;
+ @Inject
+ IEventBroker eventBroker;
+
+ @PostConstruct
+ public void init() {
+ context.set(ToolBarRenderer.class, this);
+ }
+
+ @PreDestroy
+ public void contextDisposed() {
+
+ }
+
+ @Override
+ public void createWidget(MUIElement element,
+ MElementContainer<MUIElement> parent) {
+ if (!(element instanceof MToolBar)) {
+ return;
+ }
+
+ MToolBar toolbarModel = (MToolBar) element;
+ processContribution(toolbarModel);
+
+ AbstractLayout toolBarWidget;
+
+ if ((MElementContainer<?>) toolbarModel.getParent() instanceof MTrimBar) {
+ MTrimBar parentTrimBar = (MTrimBar) (MElementContainer<?>) toolbarModel
+ .getParent();
+ int orientation = parentTrimBar.getSide().getValue();
+
+ if (orientation == SideValue.TOP_VALUE
+ || orientation == SideValue.BOTTOM_VALUE) {
+ toolBarWidget = new HorizontalLayout() {
+ @Override
+ public void addComponent(Component c) {
+ if (!c.getStyleName().contains("horizontalseparator"))
+ c.addStyleName("horizontaltoolbarlement");
+ super.addComponent(c);
+ }
+
+ @Override
+ public void addComponent(Component c, int index) {
+ if (!c.getStyleName().contains("horizontalseparator"))
+ c.addStyleName("horizontaltoolbarlement");
+ super.addComponent(c, index);
+ }
+ };
+ toolBarWidget.addStyleName("horizontaltoolbar");
+ } else {
+ toolBarWidget = new VerticalLayout() {
+ @Override
+ public void addComponent(Component c) {
+ if (!c.getStyleName().contains("verticalseparator"))
+ c.addStyleName("verticaltoolbarlement");
+ super.addComponent(c);
+ }
+
+ @Override
+ public void addComponent(Component c, int index) {
+ if (!c.getStyleName().contains("verticalseparator"))
+ c.addStyleName("verticaltoolbarlement");
+ super.addComponent(c, index);
+ }
+ };
+ toolBarWidget.addStyleName("verticaltoolbar");
+ }
+
+ Component separator = GuiUtils.createSeparator(toolbarModel);
+ if (separator != null)
+ toolBarWidget.addComponent(separator);
+ } else {
+ toolBarWidget = new HorizontalLayout();
+ Component separator = GuiUtils.createSeparator(toolbarModel);
+ if (separator != null)
+ toolBarWidget.addComponent(separator);
+ }
+ toolBarWidget.setSizeUndefined();
+ toolBarWidget.addStyleName("toolbar");
+
+ for (String css : toolbarModel.getTags()) {
+ toolBarWidget.addStyleName(css);
+ }
+
+ element.setWidget(toolBarWidget);
+ }
+
+ /**
+ * @param element
+ */
+ private void processContribution(MToolBar toolbarModel) {
+ final ArrayList<MToolBarContribution> toContribute = new ArrayList<MToolBarContribution>();
+ ContributionsAnalyzer.XXXgatherToolBarContributions(toolbarModel,
+ application.getToolBarContributions(),
+ toolbarModel.getElementId(), toContribute);
+ generateContributions(toolbarModel, toContribute);
+ }
+
+ /**
+ * @param toolbarModel
+ * @param toContribute
+ */
+ private void generateContributions(MToolBar toolbarModel,
+ ArrayList<MToolBarContribution> toContribute) {
+
+ AbstractLayout manager = (AbstractLayout) toolbarModel.getWidget();
+ boolean done = toContribute.size() == 0;
+ while (!done) {
+ ArrayList<MToolBarContribution> curList = new ArrayList<MToolBarContribution>(
+ toContribute);
+ int retryCount = toContribute.size();
+ toContribute.clear();
+
+ for (final MToolBarContribution contribution : curList) {
+ if (!processAddition(toolbarModel, manager, contribution)) {
+ toContribute.add(contribution);
+ }
+ }
+ // We're done if the retryList is now empty (everything done) or
+ // if the list hasn't changed at all (no hope)
+ done = (toContribute.size() == 0)
+ || (toContribute.size() == retryCount);
+ }
+ }
+
+ /**
+ * @param toolbarModel
+ * @param manager
+ * @param contribution
+ * @param existingSeparatorNames
+ * @return <code>true</code> if the contribution was successfuly processed
+ */
+ private boolean processAddition(final MToolBar toolbarModel,
+ final AbstractLayout manager, MToolBarContribution contribution) {
+ final ToolBarContributionRecord record = new ToolBarContributionRecord(
+ toolbarModel, contribution, this);
+ if (!record.mergeIntoModel()) {
+ return false;
+ }
+ if (record.anyVisibleWhen()) {
+ final IEclipseContext parentContext = modelService
+ .getContainingContext(toolbarModel);
+ parentContext.runAndTrack(new RunAndTrack() {
+ @Override
+ public boolean changed(IEclipseContext context) {
+ if (toolbarModel.getWidget() == null) {
+ return false;
+ }
+
+ record.updateVisibility(parentContext.getActiveLeaf());
+
+ return true;
+ }
+ });
+ }
+
+ return true;
+ }
+
+ @Override
+ public void processContents(final MElementContainer<MUIElement> container) {
+ MToolBar toolBar = (MToolBar) (MElementContainer<?>) container;
+ AbstractLayout toolBarWidget = (AbstractLayout) container.getWidget();
+ if (toolBarWidget != null) {
+ for (MUIElement element : container.getChildren()) {
+ if (element instanceof MHandledToolItem
+ || element instanceof MDirectToolItem) {
+ toolBarWidget.addComponent((Component) element.getWidget());
+ } else if (element instanceof MToolBarSeparator) {
+ toolBarWidget.addComponent(GuiUtils
+ .createSeparator(toolBar));
+ }
+ }
+ }
+ }
+
+ @Override
+ public void addChildGui(MUIElement child,
+ MElementContainer<MUIElement> element) {
+ if (!(child instanceof MToolBarElement && (MElementContainer<?>) element instanceof MToolBar))
+ return;
+
+ MToolBar toolBar = (MToolBar) (MElementContainer<?>) element;
+
+ AbstractOrderedLayout toolbarWidget = (AbstractOrderedLayout) element
+ .getWidget();
+ Component childWidget = (Component) child.getWidget();
+ if (toolbarWidget == null || childWidget == null)
+ return;
+ int index = indexOf(child, element)/* + 1 */; // +1 becouse the first
+ // element is toolbar
+ // drag handler
+ // (separator)
+ if (element instanceof MToolBarSeparator) {
+ toolbarWidget
+ .addComponent(GuiUtils.createSeparator(toolBar), index);
+ } else {
+ toolbarWidget.addComponent(childWidget, index);
+ }
+
+ toolbarWidget.requestRepaint();
+ }
+
+ @Override
+ public void setVisible(MUIElement changedElement, boolean visible) {
+ ((AbstractOrderedLayout) changedElement.getWidget())
+ .setVisible(visible);
+ }
+
+ @PostConstruct
+ public void postConstruct() {
+ eventBroker.subscribe(UIEvents.UILabel.TOPIC_ALL, itemUpdater);
+ eventBroker.subscribe(UIEvents.Menu.TOPIC_ENABLED, itemUpdater);
+ eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN,
+ childrenMoveUpdater);
+ }
+
+ @PreDestroy
+ public void preDestroy() {
+ eventBroker.unsubscribe(itemUpdater);
+ eventBroker.unsubscribe(childrenMoveUpdater);
+ }
+
+ private EventHandler itemUpdater = new EventHandler() {
+ public void handleEvent(Event event) {
+ // Ensure that this event is for a MMenuItem
+ if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MToolBar))
+ return;
+
+ MToolBar model = (MToolBar) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+ AbstractOrderedLayout ici = (AbstractOrderedLayout) model
+ .getWidget();
+ if (ici == null) {
+ return;
+ }
+
+ String attName = (String) event
+ .getProperty(UIEvents.EventTags.ATTNAME);
+ Object newValue = event.getProperty(UIEvents.EventTags.NEW_VALUE);
+ if (UIEvents.UILabel.ICONURI.equals(attName)) {
+ Resource icon = ResourceHelper
+ .createResource((String) newValue);
+ ici.setIcon(icon);
+ } else if (UIEvents.UILabel.TOOLTIP.equals(attName)) {
+ ici.setDescription((String) newValue);
+ } else if (UIEvents.Item.ENABLED.equals(attName)) {
+ ici.setEnabled((boolean) newValue);
+ }
+ }
+ };
+
+ private EventHandler childrenMoveUpdater = new EventHandler() {
+ @SuppressWarnings("unchecked")
+ public void handleEvent(Event event) {
+ // Ensure that this event is for a MMenuItem
+ if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MToolBar))
+ return;
+
+ MElementContainer<MUIElement> toolbar = (MElementContainer<MUIElement>) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+
+ String type = (String) event.getProperty(UIEvents.EventTags.TYPE);
+
+ // on move, we unrender an render the UI again
+ //
+ if (UIEvents.EventTypes.MOVE.equals(type)) {
+ for (MUIElement item : toolbar.getChildren()) {
+ removeChildGui(item, toolbar);
+ }
+
+ for (MUIElement item : toolbar.getChildren()) {
+ addChildGui(item, toolbar);
+ }
+ }
+ }
+ };
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolControlRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolControlRenderer.java
new file mode 100644
index 0000000..e08acf6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolControlRenderer.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.EclipseContextFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.contributions.IContributionFactory;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.SideValue;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolControl;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.osbp.vaaclipse.presentation.utils.GuiUtils;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.ComponentContainer;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * Create a contribute part.
+ */
+public class ToolControlRenderer extends VaadinRenderer {
+
+ @Inject
+ EModelService modelService;
+
+ public void createWidget(MUIElement element,
+ MElementContainer<MUIElement> parent) {
+ if (!(element instanceof MToolControl))
+ return;
+
+ MToolControl toolControl = (MToolControl) element;
+
+ ComponentContainer toolControlContainer;
+ if ((MElementContainer<?>) element.getParent() instanceof MTrimBar) {
+ MTrimBar trimBar = (MTrimBar) (MElementContainer<?>) element
+ .getParent();
+ if (trimBar.getSide() == SideValue.LEFT
+ || trimBar.getSide() == SideValue.RIGHT)
+ toolControlContainer = new VerticalLayout();
+ else
+ toolControlContainer = new HorizontalLayout();
+ // add the drag handler (separator)
+ toolControlContainer.addComponent(GuiUtils
+ .createSeparator(toolControl));
+ } else
+ toolControlContainer = new VerticalLayout();
+
+ IEclipseContext parentContext = modelService
+ .getContainingContext(element);
+
+ // Create a context just to contain the parameters for injection
+ IContributionFactory contributionFactory = parentContext
+ .get(IContributionFactory.class);
+
+ IEclipseContext localContext = EclipseContextFactory.create();
+
+ localContext.set(Component.class, toolControlContainer);
+ localContext.set(ComponentContainer.class, toolControlContainer);
+ localContext.set(MToolControl.class, toolControl);
+
+ Object tcImpl = contributionFactory.create(
+ toolControl.getContributionURI(), parentContext, localContext);
+ toolControl.setObject(tcImpl);
+
+ for (String css : toolControl.getTags()) {
+ toolControlContainer.addStyleName(css);
+ }
+
+ toolControl.setWidget(toolControlContainer);
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolItemRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolItemRenderer.java
new file mode 100644
index 0000000..87658d5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/ToolItemRenderer.java
@@ -0,0 +1,357 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.services.contributions.IContributionFactory;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.menu.ItemType;
+import org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarElement;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolItem;
+import org.eclipse.e4.ui.services.internal.events.EventBroker;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.osbp.vaaclipse.presentation.utils.Commons;
+import org.eclipse.osbp.vaaclipse.publicapi.resources.ResourceHelper;
+import org.eclipse.osbp.vaaclipse.widgets.ToolbarButton;
+import org.eclipse.osbp.vaaclipse.widgets.ToolbarButton.Type;
+import org.eclipse.osbp.vaaclipse.widgets.ToolbarButtonBase;
+import org.eclipse.osbp.vaaclipse.widgets.TwoStateToolbarButton;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.server.Resource;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+
+@SuppressWarnings("restriction")
+public class ToolItemRenderer extends ItemRenderer {
+ @Inject
+ IContributionFactory contributionFactory;
+
+ @Inject
+ EventBroker eventBroker;
+
+ private static final String HCI_STATIC_CONTEXT = "HCI-staticContext";
+
+ private EventHandler itemUpdater = new EventHandler() {
+ public void handleEvent(Event event) {
+ // Ensure that this event is for a MMenuItem
+ if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MToolBarElement))
+ return;
+
+ MToolBarElement itemModel = (MToolBarElement) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+
+ Button ici = (Button) itemModel.getWidget();
+ if (ici == null) {
+ return;
+ }
+
+ String attName = (String) event
+ .getProperty(UIEvents.EventTags.ATTNAME);
+ String newValue = (String) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+ if (UIEvents.UILabel.LABEL.equals(attName)) {
+ ici.setCaption(newValue);
+ } else if (UIEvents.UILabel.ICONURI.equals(attName)) {
+ Resource icon = ResourceHelper.createResource(newValue);
+ ici.setIcon(icon);
+ } else if (UIEvents.UILabel.TOOLTIP.equals(attName)) {
+ ici.setDescription(newValue);
+ }
+ }
+ };
+
+ private EventHandler toBeRenderedUpdater = new EventHandler() {
+ public void handleEvent(Event event) {
+ // Ensure that this event is for a MMenuItem
+ if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MToolBarElement))
+ return;
+
+ MToolBarElement itemModel = (MToolBarElement) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+ String attName = (String) event
+ .getProperty(UIEvents.EventTags.ATTNAME);
+
+ if (UIEvents.UIElement.VISIBLE.equals(attName)) {
+ Button ici = (Button) itemModel.getWidget();
+
+ if (ici == null) {
+ return;
+ }
+ ici.setVisible(itemModel.isVisible());
+ }
+ }
+ };
+
+ private EventHandler selectionUpdater = new EventHandler() {
+ public void handleEvent(Event event) {
+ // Ensure that this event is for a MToolItem
+ if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MToolBarElement))
+ return;
+
+ MToolBarElement itemModel = (MToolBarElement) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+ if (itemModel.getWidget() instanceof TwoStateToolbarButton) {
+ TwoStateToolbarButton button = (TwoStateToolbarButton) itemModel
+ .getWidget();
+ Boolean newValue = (Boolean) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+ button.setCheckedState(newValue);
+ }
+ }
+ };
+
+ private EventHandler enabledUpdater = new EventHandler() {
+ public void handleEvent(Event event) {
+ // Ensure that this event is for a MMenuItem
+ if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MToolBarElement))
+ return;
+
+ MToolBarElement itemModel = (MToolBarElement) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+ Button ici = (Button) itemModel.getWidget();
+ Boolean newValue = (Boolean) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+ ici.setEnabled(newValue);
+ }
+ };
+
+ @PostConstruct
+ public void init() {
+ eventBroker.subscribe(UIEvents.UILabel.TOPIC_ALL, itemUpdater);
+ eventBroker.subscribe(UIEvents.Item.TOPIC_SELECTED, selectionUpdater);
+ eventBroker.subscribe(UIEvents.Item.TOPIC_ENABLED, enabledUpdater);
+ eventBroker
+ .subscribe(UIEvents.UIElement.TOPIC_ALL, toBeRenderedUpdater);
+ eventBroker.subscribe(UIEvents.UILabel.TOPIC_LOCALIZED_LABEL,
+ localizeLabel);
+ eventBroker.subscribe(UIEvents.UILabel.TOPIC_LOCALIZED_TOOLTIP,
+ localizeTooltip);
+ eventBroker.subscribe(UIEvents.UILabel.TOPIC_LABEL, localizeLabel);
+ eventBroker.subscribe(UIEvents.UILabel.TOPIC_TOOLTIP, localizeTooltip);
+ }
+
+ @PreDestroy
+ public void contextDisposed() {
+ eventBroker.unsubscribe(itemUpdater);
+ eventBroker.unsubscribe(selectionUpdater);
+ eventBroker.unsubscribe(enabledUpdater);
+ eventBroker.unsubscribe(toBeRenderedUpdater);
+ eventBroker.unsubscribe(localizeLabel);
+ eventBroker.unsubscribe(localizeTooltip);
+ }
+
+ @Override
+ public void createWidget(MUIElement element,
+ MElementContainer<MUIElement> parent) {
+ if (element instanceof MHandledToolItem
+ || element instanceof MDirectToolItem) {
+ final MToolItem item = (MToolItem) element;
+
+ ToolbarButtonBase button;
+ if (item.getType() == ItemType.CHECK) {
+ button = new TwoStateToolbarButton();
+ ((TwoStateToolbarButton) button).setCheckedState(item
+ .isSelected());
+ } else if (item.getType() == ItemType.RADIO) {
+ button = new TwoStateToolbarButton();
+ ((TwoStateToolbarButton) button).setCheckedState(item
+ .isSelected());
+ ((TwoStateToolbarButton) button)
+ .setSwitchStateByUserClickEnabled(false);
+ } else { // By default - ItemType.PUSH
+ ToolbarButton toolbarButton = new ToolbarButton();
+ button = toolbarButton;
+
+ if (item.getTags().contains("link")) {
+ toolbarButton.setType(Type.Link);
+ }
+ }
+
+ // label and icon
+ button.setLabelAndIcon(Commons.trim(item.getLabel()),
+ Commons.trim(item.getIconURI()));
+
+ // tooltip
+ if (item.getTooltip() != null)
+ button.setDescription(item.getLocalizedTooltip());
+
+ element.setWidget(button);
+
+ updateItemEnablement(item);
+ button.setEnabled(item.isEnabled());
+ registerEnablementUpdaters(item);
+ }
+ }
+
+ protected void updateItemEnablement(MItem item) {
+ if (!(item.getWidget() instanceof Button))
+ return;
+
+ Button widget = (Button) item.getWidget();
+ if (widget == null)
+ return;
+
+ item.setEnabled(canExecute(item));
+ }
+
+ public boolean canExecute(MItem item) {
+ if (item instanceof MHandledItem)
+ return canExecute((MHandledItem) item);
+ else if (item instanceof MDirectToolItem)
+ return canExecute((MDirectToolItem) item);
+ else
+ return false;
+ }
+
+ protected boolean canExecute(MDirectToolItem item) {
+ final IEclipseContext eclipseContext = getContext(item);
+ if (eclipseContext == null) // item is not in hierarchy
+ return false;
+
+ if (item.getObject() == null) {
+ item.setObject(contributionFactory.create(
+ item.getContributionURI(), getContext(item)));
+ }
+
+ eclipseContext.set(MItem.class, item);
+ setupContext(eclipseContext, item);
+
+ if (item.getObject() == null) {
+ return false;
+ } else {
+ return (Boolean) ContextInjectionFactory.invoke(item.getObject(),
+ CanExecute.class, eclipseContext, true);
+ }
+ }
+
+ @SuppressWarnings("serial")
+ @Override
+ public void hookControllerLogic(MUIElement me) {
+ if (me instanceof MDirectToolItem) {
+ final MDirectToolItem item = (MDirectToolItem) me;
+
+ final Button button = (Button) item.getWidget();
+ button.addClickListener(new ClickListener() {
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void buttonClick(ClickEvent event) {
+ if (item.getType() == ItemType.CHECK) {
+ item.setSelected(((TwoStateToolbarButton) button)
+ .getCheckedState());
+ } else if (item.getType() == ItemType.RADIO) {
+ MElementContainer<? extends MToolItem> parent = (MElementContainer<? extends MToolItem>) item
+ .getParent();
+ for (MToolItem toolItem : parent.getChildren()) {
+ if (toolItem.getType() == ItemType.RADIO) {
+ toolItem.setSelected(toolItem != item);
+ }
+ }
+ }
+
+ executeItem(item);
+ }
+ });
+ } else if (me instanceof MHandledToolItem) {
+ final MHandledItem item = (MHandledToolItem) me;
+
+ final Button button = (Button) item.getWidget();
+ button.addClickListener(new ClickListener() {
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void buttonClick(ClickEvent event) {
+ if (item.getType() == ItemType.CHECK) {
+ item.setSelected(((TwoStateToolbarButton) button)
+ .getCheckedState());
+ } else if (item.getType() == ItemType.RADIO) {
+ MElementContainer<? extends MToolItem> parent = (MElementContainer<? extends MToolItem>) item
+ .getParent();
+ for (MToolItem toolItem : parent.getChildren()) {
+ if (toolItem.getType() == ItemType.RADIO) {
+ toolItem.setSelected(toolItem != item);
+ }
+ }
+ }
+
+ executeItem(item);
+ }
+ });
+ }
+ }
+
+ @Override
+ protected void setupContext(IEclipseContext context, MItem item) {
+ super.setupContext(context, item);
+ context.set(MToolItem.class, (MToolItem) item);
+ if (item instanceof MDirectToolItem)
+ context.set(MDirectToolItem.class, (MDirectToolItem) item);
+ else if (item instanceof MHandledToolItem)
+ context.set(MHandledToolItem.class, (MHandledToolItem) item);
+ }
+
+ private EventHandler localizeLabel = new EventHandler() {
+ @Override
+ public void handleEvent(Event event) {
+ Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+ if (!(element instanceof MToolBarElement))
+ return;
+
+ MToolBarElement item = (MToolBarElement) element;
+ final ToolbarButton button = (ToolbarButton) item.getWidget();
+
+ String newValue = (String) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+
+ String label = Commons.trim(newValue);
+ if (button != null) {
+ button.setCaption(label);
+ }
+ }
+ };
+
+ private EventHandler localizeTooltip = new EventHandler() {
+ @Override
+ public void handleEvent(Event event) {
+ Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
+
+ if (!(element instanceof MToolBarElement))
+ return;
+
+ MToolBarElement item = (MToolBarElement) element;
+ final ToolbarButton button = (ToolbarButton) item.getWidget();
+
+ String newValue = (String) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+
+ if (button != null) {
+ button.setDescription(newValue);
+ }
+ }
+ };
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/TrimBarRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/TrimBarRenderer.java
new file mode 100644
index 0000000..8c39969
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/TrimBarRenderer.java
@@ -0,0 +1,320 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.commands.ExpressionContext;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.contexts.RunAndTrack;
+import org.eclipse.e4.ui.internal.workbench.ContributionsAnalyzer;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MCoreExpression;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.SideValue;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MTrimContribution;
+import org.eclipse.e4.ui.services.internal.events.EventBroker;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
+import org.eclipse.osbp.vaaclipse.presentation.widgets.TrimmedWindowContent;
+
+import com.vaadin.server.Sizeable.Unit;
+import com.vaadin.ui.AbstractLayout;
+import com.vaadin.ui.AbstractOrderedLayout;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.ComponentContainer;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.VerticalLayout;
+
+@SuppressWarnings("restriction")
+public class TrimBarRenderer extends VaadinRenderer {
+
+ @Inject
+ MApplication app;
+
+ @Inject
+ EventBroker eventBroker;
+
+ @Inject
+ EModelService modelService;
+
+ @Inject
+ VaadinExecutorService execService;
+
+ private HashMap<MTrimBar, ArrayList<ArrayList<MTrimElement>>> pendingCleanup = new HashMap<MTrimBar, ArrayList<ArrayList<MTrimElement>>>();
+
+ @PostConstruct
+ public void subsrcribe() {
+
+ }
+
+ @PreDestroy
+ public void unsubscribe() {
+
+ }
+
+ @Override
+ public void createWidget(MUIElement element,
+ MElementContainer<MUIElement> parent) {
+ if (!(element instanceof MTrimBar)) {
+ return;
+ }
+
+ MTrimBar mTrimBar = (MTrimBar) element;
+ int orientation = mTrimBar.getSide().getValue();
+
+ AbstractLayout trimBar = null;
+
+ if (orientation == SideValue.BOTTOM_VALUE) {
+ trimBar = new CssLayout();
+ trimBar.addStyleName("horizontaltrimbar");
+ } else if (orientation == SideValue.TOP_VALUE) {
+ trimBar = new CssLayout();
+ trimBar.addStyleName("toptrimbar");
+ } else if (orientation == SideValue.LEFT_VALUE
+ || orientation == SideValue.RIGHT_VALUE) {
+ trimBar = new VerticalLayout();
+ trimBar.addStyleName("verticaltrimbar");
+ }
+
+ trimBar.setSizeUndefined();
+
+ if (orientation == SideValue.BOTTOM_VALUE
+ || orientation == SideValue.TOP_VALUE) {
+ trimBar.setWidth("100%");
+ }
+
+ element.setWidget(trimBar);
+ }
+
+ @Override
+ public void processContents(MElementContainer<MUIElement> container) {
+ final MTrimBar trimBar = (MTrimBar) ((MElementContainer<?>) container);
+ int orientation = trimBar.getSide().getValue();
+ AbstractLayout trimBarWidget = (AbstractLayout) container.getWidget();
+ if (orientation == SideValue.TOP_VALUE
+ || orientation == SideValue.BOTTOM_VALUE)
+ trimBarWidget.setHeight(-1, Unit.PIXELS);
+ else
+ trimBarWidget.setWidth(-1, Unit.PIXELS);
+
+ boolean isFirst = true;
+ trimBarWidget.removeAllComponents();
+ for (MUIElement element : container.getChildren()) {
+ if (element.isToBeRendered()) {
+ ComponentContainer subToolbar = (ComponentContainer) element
+ .getWidget();
+ subToolbar.setVisible(element.isVisible());
+ if (subToolbar != null) {
+ if (orientation == SideValue.TOP_VALUE
+ || orientation == SideValue.BOTTOM_VALUE)
+ subToolbar.addStyleName("horizontaltrimelement");
+ else
+ subToolbar.addStyleName("verticaltrimelement");
+
+ subToolbar.setSizeUndefined();
+
+ trimBarWidget.addComponent(subToolbar);
+ isFirst = false;
+ }
+ }
+ }
+
+ // ---
+ IEclipseContext ctx = getContext(container);
+ final ExpressionContext eContext = new ExpressionContext(ctx);
+
+ // visible when support for original trimbar elements (without
+ // contributed)
+ for (final MTrimElement child : trimBar.getChildren()) {
+ if (child.getVisibleWhen() != null) {
+ ctx.runAndTrack(new RunAndTrack() {
+ @Override
+ public boolean changed(IEclipseContext context) {
+
+ if (!trimBar.isToBeRendered() || !trimBar.isVisible()
+ || trimBar.getWidget() == null) {
+ return false;
+ }
+
+ final boolean rc = ContributionsAnalyzer.isVisible(
+ (MCoreExpression) child.getVisibleWhen(),
+ eContext);
+ execService.invokeLater(new Runnable() {
+
+ @Override
+ public void run() {
+ child.setToBeRendered(rc);
+ }
+ });
+
+ return true;
+ }
+ });
+ }
+ }
+
+ // contributions
+ ArrayList<MTrimContribution> toContribute = new ArrayList<MTrimContribution>();
+ ContributionsAnalyzer.gatherTrimContributions(trimBar,
+ app.getTrimContributions(), trimBar.getElementId(),
+ toContribute, eContext);
+ addTrimContributions(trimBar, toContribute, ctx, eContext);
+
+ refreshVisibility(trimBar);
+ }
+
+ private void refreshVisibility(MTrimBar trimBar) {
+
+ AbstractLayout trimBarWidget = (AbstractLayout) trimBar.getWidget();
+ int orientation = trimBar.getSide().getValue();
+
+ trimBarWidget.setVisible(trimBarWidget.getComponentCount() != 0);
+
+ if (orientation == SideValue.TOP_VALUE) {
+ MWindow window = modelService.getTopLevelWindowFor(trimBar);
+ TrimmedWindowContent windowContent = (TrimmedWindowContent) ((Panel) window
+ .getWidget()).getContent();
+
+ Component topbar = windowContent.getTopbar();
+ if (topbar != null)
+ topbar.setVisible(trimBarWidget.getComponentCount() != 0);
+ }
+ }
+
+ private void addTrimContributions(final MTrimBar trimModel,
+ ArrayList<MTrimContribution> toContribute, IEclipseContext ctx,
+ final ExpressionContext eContext) {
+ HashSet<String> existingToolbarIds = new HashSet<String>();
+ for (MTrimElement item : trimModel.getChildren()) {
+ String id = item.getElementId();
+ if (item instanceof MToolBar && id != null) {
+ existingToolbarIds.add(id);
+ }
+ }
+
+ boolean done = toContribute.size() == 0;
+ while (!done) {
+ ArrayList<MTrimContribution> curList = new ArrayList<MTrimContribution>(
+ toContribute);
+ int retryCount = toContribute.size();
+ toContribute.clear();
+
+ for (final MTrimContribution contribution : curList) {
+ final ArrayList<MTrimElement> toRemove = new ArrayList<MTrimElement>();
+ if (!ContributionsAnalyzer.processAddition(trimModel,
+ contribution, toRemove, existingToolbarIds)) {
+ toContribute.add(contribution);
+ } else {
+ if (contribution.getVisibleWhen() != null) {
+ ctx.runAndTrack(new RunAndTrack() {
+ @Override
+ public boolean changed(IEclipseContext context) {
+ if (!trimModel.isToBeRendered()
+ || !trimModel.isVisible()
+ || trimModel.getWidget() == null) {
+ return false;
+ }
+ final boolean rc = ContributionsAnalyzer
+ .isVisible(contribution, eContext);
+
+ execService.invokeLater(new Runnable() {
+
+ @Override
+ public void run() {
+ for (MTrimElement child : toRemove) {
+ child.setToBeRendered(rc);
+ }
+ }
+ });
+
+ return true;
+ }
+ });
+ }
+ ArrayList<ArrayList<MTrimElement>> lists = pendingCleanup
+ .get(trimModel);
+ if (lists == null) {
+ lists = new ArrayList<ArrayList<MTrimElement>>();
+ pendingCleanup.put(trimModel, lists);
+ }
+ lists.add(toRemove);
+ }
+ }
+ // We're done if the retryList is now empty (everything done) or
+ // if the list hasn't changed at all (no hope)
+ done = (toContribute.size() == 0)
+ || (toContribute.size() == retryCount);
+ }
+ }
+
+ @Override
+ public void addChildGui(MUIElement child,
+ MElementContainer<MUIElement> element) {
+ if (!(child instanceof MTrimElement && (MElementContainer<?>) element instanceof MTrimBar))
+ return;
+
+ MTrimBar trimBar = (MTrimBar) (MElementContainer<?>) element;
+
+ final Component childWidget = (Component) child.getWidget();
+ childWidget.setVisible(child.isVisible());
+ childWidget.setSizeUndefined();
+ int orientation = trimBar.getSide().getValue();
+ if (orientation == SideValue.TOP_VALUE
+ || orientation == SideValue.BOTTOM_VALUE)
+ childWidget.addStyleName("horizontaltrimelement");
+ else
+ childWidget.addStyleName("verticaltrimelement");
+
+ int index = indexOf(child, element);
+ if (element.getWidget() instanceof CssLayout) {
+ CssLayout trimWidget = (CssLayout) element.getWidget();
+ trimWidget.addComponent(childWidget, index);
+ trimWidget.markAsDirty();
+ } else if (element.getWidget() instanceof AbstractOrderedLayout) {
+ AbstractOrderedLayout trimWidget = (AbstractOrderedLayout) element
+ .getWidget();
+ trimWidget.addComponent(childWidget, index);
+ trimWidget.markAsDirty();
+ }
+
+ refreshVisibility(trimBar);
+ }
+
+ @Override
+ public void removeChildGui(MUIElement child,
+ MElementContainer<MUIElement> element) {
+ if (!(child instanceof MTrimElement && (MElementContainer<?>) element instanceof MTrimBar))
+ return;
+
+ super.removeChildGui(child, element);
+
+ Component trimWidget = (Component) element.getWidget();
+
+ MTrimBar trimBar = (MTrimBar) (MElementContainer<?>) element;
+ refreshVisibility(trimBar);
+
+ trimWidget.markAsDirty();
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/VaadinRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/VaadinRenderer.java
new file mode 100644
index 0000000..d3a3944
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/VaadinRenderer.java
@@ -0,0 +1,204 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Kai Toedter, Rushan R. Gilmullin and others.
+ *
+ * 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:
+ * Kai Toedter - initial API and implementation
+ * Rushan R. Gilmullin - adoption to vaaclipse and other changes
+ ******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.annotation.PostConstruct;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.model.application.ui.MContext;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.osbp.commons.general.Condition;
+
+import com.vaadin.ui.AbstractComponent;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.ComponentContainer;
+
+@SuppressWarnings("restriction")
+public class VaadinRenderer implements GenericRenderer {
+
+ // public static final String OWNING_ME = "modelElement";
+
+ protected IEclipseContext context;
+ protected EModelService modelService;
+
+ @Override
+ public boolean isLazy() {
+ return false;
+ }
+
+ @PostConstruct
+ public void postConstruct(IEclipseContext context) {
+ this.context = context;
+ this.modelService = (EModelService) context.get(EModelService.class
+ .getName());
+ }
+
+ public void createWidget(MUIElement element,
+ MElementContainer<MUIElement> parent) {
+
+ }
+
+ public void disposeWidget(MUIElement element) {
+
+ }
+
+ public void processContents(MElementContainer<MUIElement> element) {
+
+ }
+
+ public void addChildGui(MUIElement child,
+ MElementContainer<MUIElement> element) {
+ throw new RuntimeException("addChildGui not implemented for renderer "
+ + this);
+ }
+
+ public void removeChildGui(MUIElement element,
+ MElementContainer<MUIElement> parent) {
+ if (parent.getWidget() instanceof ComponentContainer
+ && element.getWidget() != null) {
+ ((ComponentContainer) parent.getWidget())
+ .removeComponent((Component) element.getWidget());
+ }
+ }
+
+ protected List<? extends MUIElement> filterRenderableAndVisibleElements(
+ MElementContainer<?> sash) {
+ List<MUIElement> renderableAndVisible = new ArrayList<MUIElement>();
+ for (MUIElement e : sash.getChildren()) {
+ if (e.isToBeRendered() && e.isVisible() && e.getWidget() != null /*
+ * element
+ * can
+ * be
+ * renderable
+ * but
+ * has
+ * no
+ * widget
+ * when
+ * removeGui
+ * called
+ * for
+ * element
+ */)
+ renderableAndVisible.add(e);
+ }
+ return renderableAndVisible;
+ }
+
+ protected MUIElement findFirstRenderableAndVisibleElement(
+ MElementContainer<?> container) {
+ for (MUIElement p : container.getChildren()) {
+ if (p.isToBeRendered() && p.isVisible()) {
+ return p;
+ }
+ }
+ return null;
+ }
+
+ protected MUIElement findNextRendarableAndVisible(MUIElement element,
+ MElementContainer<MUIElement> parent) {
+ MUIElement nextRenderableAndVisible = null;
+ for (int i = parent.getChildren().indexOf(element) + 1; i < parent
+ .getChildren().size(); i++) {
+ MUIElement child = parent.getChildren().get(i);
+ if (child.isToBeRendered() && child.isVisible()
+ && child.getWidget() != null) {
+ nextRenderableAndVisible = child;
+ break;
+ }
+ }
+ return nextRenderableAndVisible;
+ }
+
+ protected int indexOf(MUIElement element,
+ MElementContainer<MUIElement> parent) {
+ return indexOf(element, parent, null);
+ }
+
+ protected int indexOf(MUIElement element,
+ MElementContainer<MUIElement> parent,
+ Condition<MUIElement> condition) {
+ int i = 0;
+ for (MUIElement child : parent.getChildren()) {
+ boolean additionalConditionRes = condition != null ? condition
+ .check(child) : true;
+ if (child.isToBeRendered() && additionalConditionRes) {
+ if (child.equals(element))
+ return i;
+ i++;
+ }
+ }
+ return -1;
+ }
+
+ public void hookControllerLogic(MUIElement element) {
+
+ }
+
+ // public IEclipseContext getContext(MUIElement element) {
+ // if (element instanceof MContext) {
+ // return ((MContext) element).getContext();
+ // }
+ // IEclipseContext parentContext = getContextForParent(element);
+ // if (parentContext == null)
+ // return null; //element is not attached
+ // return parentContext.createChild();
+ // }
+
+ /**
+ * Return a context for this part.
+ *
+ * @param part
+ * the part to start searching from
+ * @return the closest context, or global context if none in the hierarchy
+ */
+ public IEclipseContext getContext(MUIElement part) {
+ if (part instanceof MContext) {
+ return ((MContext) part).getContext();
+ }
+ return getContextForParent(part);
+ }
+
+ protected IEclipseContext getContextForParent(MUIElement element) {
+ return modelService.getContainingContext(element);
+ }
+
+ public void setVisible(MUIElement changedElement, boolean visible) {
+ ((Component) changedElement.getWidget()).setVisible(visible);
+ }
+
+ public void unbindWidget(MUIElement element) {
+ if (element.getWidget() != null
+ && element.getWidget() instanceof AbstractComponent) {
+ AbstractComponent component = (AbstractComponent) element
+ .getWidget();
+ component.setData(null);
+ }
+ }
+
+ @Override
+ public void bindWidget(MUIElement element) {
+ if (element.getWidget() != null
+ && element.getWidget() instanceof AbstractComponent) {
+ AbstractComponent component = (AbstractComponent) element
+ .getWidget();
+ component.setData(element);
+ }
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/VaadinRendererFactory.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/VaadinRendererFactory.java
new file mode 100644
index 0000000..e739d67
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/VaadinRendererFactory.java
@@ -0,0 +1,160 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MArea;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenu;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuSeparator;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolControl;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolItem;
+import org.eclipse.osbp.vaaclipse.presentation.engine.GenericRendererFactory;
+
+@SuppressWarnings("restriction")
+public class VaadinRendererFactory extends GenericRendererFactory {
+
+ private WorkbenchWindowRenderer workbenchWindowRenderer;
+ private TrimBarRenderer trimRenderer;
+ private ToolControlRenderer toolControlRenderer;
+ private SashRenderer sashRenderer;
+ private StackRenderer partStackRenderer;
+ private PartRenderer partRenderer;
+ private ToolBarRenderer toolBarRenderer;
+ private ToolItemRenderer toolItemRenderer;
+ private MenuRenderer menuBarRenderer;
+ private MenuItemRenderer menuItemRenderer;
+ private MenuSeparatorRenderer menuSeparatorRenderer;
+ private PerspectiveStackRenderer perspectiveStackRenderer;
+ private PerspectiveRenderer perspectiveRenderer;
+ private PlaceholderRenderer placeholderRenderer;
+ private AreaRenderer areaRenderer;
+
+ private final IEclipseContext context;
+
+ @Inject
+ public VaadinRendererFactory(IEclipseContext context) {
+ this.context = context;
+ }
+
+ @Override
+ public GenericRenderer getRenderer(MUIElement uiElement) {
+ if (uiElement instanceof MWindow) {
+ if (workbenchWindowRenderer == null) {
+ workbenchWindowRenderer = ContextInjectionFactory.make(
+ WorkbenchWindowRenderer.class, context);
+ }
+ return workbenchWindowRenderer;
+ } else if (uiElement instanceof MTrimBar) {
+ if (trimRenderer == null) {
+ trimRenderer = ContextInjectionFactory.make(
+ TrimBarRenderer.class, context);
+ }
+ return trimRenderer;
+ } else if (uiElement instanceof MToolControl) {
+ if (toolControlRenderer == null) {
+ toolControlRenderer = ContextInjectionFactory.make(
+ ToolControlRenderer.class, context);
+ }
+ return toolControlRenderer;
+ } else if (uiElement instanceof MPartStack) {
+ if (partStackRenderer == null) {
+ partStackRenderer = ContextInjectionFactory.make(
+ StackRenderer.class, context);
+ }
+ return partStackRenderer;
+ } else if (uiElement instanceof MPart) {
+ if (partRenderer == null) {
+ partRenderer = ContextInjectionFactory.make(PartRenderer.class,
+ context);
+ }
+ return partRenderer;
+ } else if (uiElement instanceof MToolBar) {
+ if (toolBarRenderer == null) {
+ toolBarRenderer = ContextInjectionFactory.make(
+ ToolBarRenderer.class, context);
+ }
+ return toolBarRenderer;
+ } else if (uiElement instanceof MToolItem) {
+ if (toolItemRenderer == null) {
+ toolItemRenderer = ContextInjectionFactory.make(
+ ToolItemRenderer.class, context);
+ }
+ return toolItemRenderer;
+ } else if (uiElement instanceof MMenu) {
+ if (menuBarRenderer == null) {
+ menuBarRenderer = ContextInjectionFactory.make(
+ MenuRenderer.class, context);
+ }
+ return menuBarRenderer;
+ } else if (uiElement instanceof MMenuItem) {
+ if (menuItemRenderer == null) {
+ menuItemRenderer = ContextInjectionFactory.make(
+ MenuItemRenderer.class, context);
+ }
+ return menuItemRenderer;
+ } else if (uiElement instanceof MMenuSeparator) {
+ if (menuSeparatorRenderer == null) {
+ menuSeparatorRenderer = ContextInjectionFactory.make(
+ MenuSeparatorRenderer.class, context);
+ }
+ return menuSeparatorRenderer;
+ } else if (uiElement instanceof MPerspectiveStack) {
+ if (perspectiveStackRenderer == null) {
+ perspectiveStackRenderer = ContextInjectionFactory.make(
+ PerspectiveStackRenderer.class, context);
+ }
+ return perspectiveStackRenderer;
+ } else if (uiElement instanceof MPerspective) {
+ if (perspectiveRenderer == null) {
+ perspectiveRenderer = ContextInjectionFactory.make(
+ PerspectiveRenderer.class, context);
+ }
+ return perspectiveRenderer;
+ } else if (uiElement instanceof MPlaceholder) {
+ if (placeholderRenderer == null) {
+ placeholderRenderer = ContextInjectionFactory.make(
+ PlaceholderRenderer.class, context);
+ }
+ return placeholderRenderer;
+ } else if (uiElement instanceof MArea) // must be before
+ // MPartSashContainer becouse
+ // more special type
+ {
+ if (areaRenderer == null) {
+ areaRenderer = ContextInjectionFactory.make(AreaRenderer.class,
+ context);
+ }
+ return areaRenderer;
+ } else if (uiElement instanceof MPartSashContainer) {
+ if (sashRenderer == null) {
+ sashRenderer = ContextInjectionFactory.make(SashRenderer.class,
+ context);
+ }
+ return sashRenderer;
+ }
+ return super.getRenderer(uiElement);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/WorkbenchWindowRenderer.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/WorkbenchWindowRenderer.java
new file mode 100644
index 0000000..705ff60
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/WorkbenchWindowRenderer.java
@@ -0,0 +1,417 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.renderers;
+
+import java.util.Collection;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.internal.workbench.PartServiceSaveHandler;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MInputPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindowElement;
+import org.eclipse.e4.ui.services.internal.events.EventBroker;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.e4.ui.workbench.modeling.ISaveHandler;
+import org.eclipse.e4.ui.workbench.modeling.ISaveHandler.Save;
+import org.eclipse.osbp.commons.general.Condition;
+import org.eclipse.osbp.vaaclipse.presentation.engine.PresentationEngine;
+import org.eclipse.osbp.vaaclipse.presentation.widgets.TrimmedWindowContent;
+import org.eclipse.osbp.vaaclipse.publicapi.editor.SavePromptSetup;
+import org.eclipse.osbp.vaaclipse.publicapi.model.Tags;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+import com.vaadin.server.Sizeable.Unit;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.MenuBar;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.Window;
+import com.vaadin.ui.Window.ResizeEvent;
+
+@SuppressWarnings("restriction")
+public class WorkbenchWindowRenderer extends VaadinRenderer {
+
+ @Inject
+ private IEclipseContext eclipseContext;
+
+ @Inject
+ MApplication app;
+
+ @Inject
+ UI vaadinUI;
+
+ @Inject
+ EventBroker eventBroker;
+
+ @Inject
+ EPartService partService;
+
+ // Save support
+ private MPart saveCandidate;
+ private Save s;
+
+ EventHandler trimHandler = new EventHandler() {
+
+ @Override
+ public void handleEvent(Event event) {
+ if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MTrimmedWindow))
+ return;
+
+ MTrimmedWindow window = (MTrimmedWindow) event
+ .getProperty(UIEvents.EventTags.ELEMENT);
+ Panel _vWindow = (Panel) window.getWidget();
+ TrimmedWindowContent vWindow = (TrimmedWindowContent) _vWindow
+ .getContent();
+ PresentationEngine engine = (PresentationEngine) context
+ .get(IPresentationEngine.class.getName());
+ Object attType = event.getProperty(UIEvents.EventTags.TYPE);
+
+ Component c;
+ MTrimBar trimBar;
+ if (attType.equals("ADD")) {
+ trimBar = (MTrimBar) event
+ .getProperty(UIEvents.EventTags.NEW_VALUE);
+ c = trimBar.getWidget() == null ? (Component) engine
+ .createGui(trimBar) : (Component) trimBar.getWidget();
+ } else {
+ trimBar = (MTrimBar) event
+ .getProperty(UIEvents.EventTags.OLD_VALUE);
+ c = null;
+ }
+
+ switch (trimBar.getSide()) {
+ case BOTTOM:
+ vWindow.setBottomBar(c);
+ break;
+ case LEFT:
+ vWindow.setLeftBar(c);
+ break;
+ case RIGHT:
+ vWindow.setRightBar(c);
+ break;
+ case TOP:
+ vWindow.setTopBar(c);
+ break;
+ }
+ }
+ };
+
+ @PostConstruct
+ public void init() {
+ eventBroker.subscribe(UIEvents.TrimmedWindow.TOPIC_TRIMBARS,
+ trimHandler);
+ }
+
+ @PreDestroy
+ public void deinit() {
+ eventBroker.unsubscribe(trimHandler);
+ }
+
+ @Override
+ public void createWidget(MUIElement element,
+ MElementContainer<MUIElement> parent) {
+ if (element instanceof MWindow) {
+ final MWindow mWindow = (MWindow) element;
+ Component currentMainWindow = vaadinUI.getContent();
+ if (element.getTags().contains(Tags.MAIN_WINDOW)) {
+ Panel window = new Panel();
+
+ TrimmedWindowContent content = new TrimmedWindowContent();
+ window.setContent(content);
+ vaadinUI.getPage().setTitle(mWindow.getLocalizedLabel());
+ element.setWidget(window);
+ ((MWindow) element).getContext().set(Panel.class, window);
+ ((MWindow) element).getContext().set(MWindow.class, mWindow);
+ window.setSizeFull();
+
+ // register the content as a rootLayoutClickNotifier for later
+ // use.
+ // this content allows to register layoutClickedListeners to be
+ // added.
+ app.getContext().set("rootLayoutClickNotifier", content);
+
+ vaadinUI.setContent(window);
+
+ app.setSelectedElement(mWindow);
+ mWindow.getContext().activate();
+
+ } else {// case child windows
+ if (currentMainWindow != null) {
+ Window window = new Window();
+ window.setContent(new TrimmedWindowContent());
+ window.setImmediate(true);
+ window.setPositionX(mWindow.getX());
+ window.setPositionY(mWindow.getY());
+ window.setWidth(mWindow.getWidth(), Unit.PIXELS);
+ window.setHeight(mWindow.getHeight(), Unit.PIXELS);
+ window.setCaption(mWindow.getLocalizedLabel());
+ element.setWidget(window);
+ ((MWindow) element).getContext().set(Panel.class, window);
+ vaadinUI.addWindow(window);
+ } else {
+ throw new IllegalStateException(
+ "Can not add child window because application has not main window");
+ }
+ }
+
+ IEclipseContext localContext = getContext(element);
+ localContext.set(ISaveHandler.class, new PartServiceSaveHandler() {
+ public Save promptToSave(MPart dirtyPart) {
+ if (saveCandidate == null) {
+ saveCandidate = dirtyPart;
+
+ PartRenderer partRenderer = (PartRenderer) saveCandidate
+ .getRenderer();
+ SavePromptSetup setup = partRenderer
+ .getSavePromptSetup(saveCandidate);
+ String caption = setup.getCaption() != null ? setup
+ .getCaption() : "Save";
+ String msg = setup.getMessage() != null ? setup
+ .getMessage()
+ : String.format(
+ "%s has been modified. Save changes?",
+ saveCandidate instanceof MInputPart
+ && ((MInputPart) saveCandidate)
+ .getInputURI() != null ? ((MInputPart) saveCandidate)
+ .getInputURI() : "Data");
+
+ OptionDialog.show(vaadinUI, caption, msg, new String[] {
+ "Yes", "No", "Cancel" }, 400, 140, Unit.PIXELS,
+ new OptionDialog.OptionListener() {
+
+ @Override
+ public void optionSelected(
+ OptionDialog dlg, int optionId) {
+ switch (optionId) {
+ case 0:
+ s = Save.YES;
+ break;
+ case 1:
+ s = Save.NO;
+ break;
+ case 2:
+ s = Save.CANCEL;
+ break;
+
+ default:
+ s = null;
+ }
+
+ if (partService.savePart(saveCandidate,
+ true)) {
+ partService.hidePart(saveCandidate);
+ }
+ saveCandidate = null;
+ dlg.close();
+ }
+ });
+
+ return Save.CANCEL;
+ } else {
+ return s;
+ }
+
+ }
+
+ public Save[] promptToSave(Collection<MPart> dirtyParts) {
+ // List<MPart> parts = new ArrayList<MPart>(dirtyParts);
+ //
+ // Save[] response = new Save[dirtyParts.size()];
+ // Object[] elements = promptForSave(parts);
+ // if (elements == null) {
+ // Arrays.fill(response, Save.CANCEL);
+ // } else {
+ // Arrays.fill(response, Save.NO);
+ // for (int i = 0; i < elements.length; i++) {
+ // response[parts.indexOf(elements[i])] = Save.YES;
+ // }
+ // }
+ // return response;
+
+ throw new RuntimeException(
+ "Multiple saving is not implemented yet");
+ }
+ });
+ }
+ }
+
+ @SuppressWarnings("serial")
+ @Override
+ public void hookControllerLogic(final MUIElement element) {
+ if (element instanceof MWindow) {
+ final MWindow mWindow = (MWindow) element;
+
+ if (!element.getTags().contains(Tags.MAIN_WINDOW)) {// only for
+ // child windows
+ // (main window
+ // not need
+ // that)
+ final Window window = (Window) mWindow.getWidget();
+
+ window.addResizeListener(new Window.ResizeListener() {
+ @Override
+ public void windowResized(ResizeEvent e) {
+ mWindow.setWidth((int) window.getWidth());
+ mWindow.setHeight((int) window.getHeight());
+ }
+ });
+
+ // TODO: there are no window move listener in vaadin, implement
+ // it later
+ }
+ }
+ }
+
+ @Override
+ public void processContents(MElementContainer<MUIElement> element) {
+ if ((MUIElement) element instanceof MWindow) {
+ MWindow window = (MWindow) ((MUIElement) element);
+ Panel _vWindow = (Panel) element.getWidget();
+ TrimmedWindowContent vWindow = (TrimmedWindowContent) _vWindow
+ .getContent();
+ PresentationEngine engine = (PresentationEngine) context
+ .get(IPresentationEngine.class.getName());
+
+ for (MUIElement e : element.getChildren()) {
+ if (e.isToBeRendered() && e.getWidget() != null) {
+ if (e instanceof MPerspectiveStack) {
+ PerspectiveStackRenderer perspectiveStackRenderer = (PerspectiveStackRenderer) e
+ .getRenderer();
+ if (perspectiveStackRenderer
+ .getPerspectiveStackForSwitcher() == e) {
+ final HorizontalLayout perspectiveStackPanel = perspectiveStackRenderer
+ .getPerspectiveSwitcher();
+ vWindow.setPerspectiveStackPanel(perspectiveStackPanel);
+ }
+ }
+
+ vWindow.getClientArea().addComponent(
+ (com.vaadin.ui.Component) e.getWidget());
+ }
+ }
+
+ if (window.getMainMenu() != null) {
+ engine.createGui(window.getMainMenu());
+ MenuBar menu = (MenuBar) window.getMainMenu().getWidget();
+ vWindow.setMenuBar(menu);
+ }
+
+ // -------------------------------------------------------------------
+ if (window instanceof MTrimmedWindow) {
+ MTrimmedWindow tWindow = (MTrimmedWindow) window;
+ for (MTrimBar trim : tWindow.getTrimBars()) {
+ Component c = (com.vaadin.ui.Component) engine
+ .createGui(trim);
+ switch (trim.getSide()) {
+ case BOTTOM:
+ vWindow.setBottomBar(c);
+ break;
+ case LEFT:
+ vWindow.setLeftBar(c);
+ break;
+ case RIGHT:
+ vWindow.setRightBar(c);
+ break;
+ case TOP:
+ vWindow.setTopBar(c);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ public void addChildGui(MUIElement child,
+ MElementContainer<MUIElement> element) {
+ if (!(child instanceof MWindowElement))
+ return;
+
+ Panel _vWindow = (Panel) element.getWidget();
+ TrimmedWindowContent vWindow = (TrimmedWindowContent) _vWindow
+ .getContent();
+
+ if (child instanceof MPerspectiveStack) {
+ PerspectiveStackRenderer perspectiveStackRenderer = (PerspectiveStackRenderer) child
+ .getRenderer();
+ if (perspectiveStackRenderer.getPerspectiveStackForSwitcher() == child) {
+ final HorizontalLayout perspectiveStackPanel = perspectiveStackRenderer
+ .getPerspectiveSwitcher();
+ vWindow.setPerspectiveStackPanel(perspectiveStackPanel);
+ }
+ } else {
+ int index = indexOf(child, element, new Condition<MUIElement>() {
+
+ @Override
+ public boolean check(MUIElement child) {
+ return !(child instanceof MPerspectiveStack);
+ }
+ });
+
+ vWindow.getClientArea().addComponent(
+ (com.vaadin.ui.Component) child.getWidget(), index);
+ }
+ }
+
+ @Override
+ public void removeChildGui(MUIElement child,
+ MElementContainer<MUIElement> element) {
+ if (!(child instanceof MWindowElement))
+ return;
+
+ Panel _vWindow = (Panel) element.getWidget();
+ TrimmedWindowContent vWindow = (TrimmedWindowContent) _vWindow
+ .getContent();
+
+ if (child instanceof MPerspectiveStack) {
+ vWindow.setPerspectiveStackPanel(null);
+ } else {
+ vWindow.getClientArea().removeComponent(
+ (com.vaadin.ui.Component) child.getWidget());
+ }
+ }
+
+ @Override
+ public void setVisible(MUIElement changedElement, boolean visible) {
+ if (changedElement instanceof MWindow
+ && !(changedElement.getTags().contains(Tags.MAIN_WINDOW))) {
+ super.setVisible(changedElement, visible);
+ }
+ }
+
+ private Object[] promptForSave(Collection<MPart> saveableParts) {
+ // SaveablePartPromptDialog dialog = new SaveablePartPromptDialog(
+ // parentShell, saveableParts);
+ // if (dialog.open() == Window.CANCEL) {
+ // return null;
+ // }
+ //
+ // return dialog.getCheckedElements();
+ return null;
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/callback/PartItemExecutionService.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/callback/PartItemExecutionService.java
new file mode 100644
index 0000000..50e761e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/renderers/callback/PartItemExecutionService.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.presentation.renderers.callback;
+
+import org.eclipse.e4.ui.model.application.ui.menu.MItem;
+import org.eclipse.osbp.vaaclipse.presentation.renderers.ItemRenderer;
+import org.eclipse.osbp.vaaclipse.publicapi.commands.IPartItemExecutionService;
+
+public class PartItemExecutionService implements IPartItemExecutionService {
+
+ public PartItemExecutionService() {
+ }
+
+ @Override
+ public boolean canExecuteItem(MItem mItem) {
+ Object renderer = mItem.getRenderer();
+ if (renderer instanceof ItemRenderer) {
+ ItemRenderer itemRenderer = (ItemRenderer) renderer;
+ return itemRenderer.canExecute(mItem);
+ }
+ return true;
+ }
+
+ @Override
+ public void executeItem(MItem mItem) {
+ Object renderer = mItem.getRenderer();
+ if (renderer instanceof ItemRenderer) {
+ ItemRenderer itemRenderer = (ItemRenderer) renderer;
+ itemRenderer.executeItem(mItem);
+ }
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/utils/Commons.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/utils/Commons.java
new file mode 100644
index 0000000..458ef21
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/utils/Commons.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.presentation.utils;
+
+/**
+ * @author rushan
+ *
+ */
+public class Commons {
+ public static String trim(String value) {
+ if (value != null) {
+ value = value.trim();
+ if (value.isEmpty())
+ value = null;
+ }
+ return value;
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/utils/GuiUtils.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/utils/GuiUtils.java
new file mode 100644
index 0000000..f72cc39
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/utils/GuiUtils.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.utils;
+
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.SideValue;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimElement;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.Label;
+
+/**
+ * @author rushan
+ *
+ */
+public class GuiUtils {
+ public static Component createSeparator(MTrimElement trimElement) {
+ if ((MElementContainer<?>) trimElement.getParent() instanceof MTrimBar) {
+ Label separator = new Label();
+ separator.setSizeUndefined();
+
+ MTrimBar parentTrimBar = (MTrimBar) (MElementContainer<?>) trimElement
+ .getParent();
+ int orientation = parentTrimBar.getSide().getValue();
+
+ if (orientation == SideValue.TOP_VALUE
+ || orientation == SideValue.BOTTOM_VALUE) {
+ separator.addStyleName("horizontalseparator");
+ separator.setHeight("100%");
+ } else {
+ separator.addStyleName("verticalseparator");
+ separator.setWidth("100%");
+ }
+ return separator;
+ } else
+ return null;
+
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/utils/HierarchyUtils.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/utils/HierarchyUtils.java
new file mode 100644
index 0000000..d67a9b4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/utils/HierarchyUtils.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.utils;
+
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+
+/**
+ * @author rushan
+ *
+ */
+public class HierarchyUtils {
+ /**
+ * Recursively search in container the top right stack (the stack locatied
+ * in top right corner), i.e. the stack with top right corner is mathced
+ * with top right corner of container (area).
+ *
+ * @param container
+ * - input container (area)
+ * @return the top right part stack
+ */
+ public static MPartStack findTopLeftFolder(MUIElement container) {
+ if (container instanceof MPartStack)
+ return (MPartStack) container;
+ else if (container instanceof MPartSashContainer) {
+ MPartSashContainer sash = (MPartSashContainer) container;
+
+ if (sash.getChildren().isEmpty())
+ return null;
+ else if (sash.getChildren().size() == 1)
+ return findTopLeftFolder((MElementContainer) sash.getChildren()
+ .get(0));
+ else if (sash.isHorizontal()
+ && sash.getChildren().get(1) instanceof MElementContainer<?>)
+ return findTopLeftFolder((MElementContainer) sash.getChildren()
+ .get(1));
+ else if (!sash.isHorizontal()
+ && sash.getChildren().get(0) instanceof MElementContainer<?>)
+ return findTopLeftFolder((MElementContainer) sash.getChildren()
+ .get(0));
+ }
+
+ return null;
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/widgetinfo/WidgetInfoImpl.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/widgetinfo/WidgetInfoImpl.java
new file mode 100644
index 0000000..646c4fc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/widgetinfo/WidgetInfoImpl.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.widgetinfo;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.osbp.vaaclipse.api.WidgetInfo;
+
+import com.vaadin.ui.Component;
+
+/**
+ * @author rushan
+ *
+ */
+public class WidgetInfoImpl implements WidgetInfo {
+ @Execute
+ public void activate(IEclipseContext context) {
+ context.set(WidgetInfo.class, this);
+ System.out.println("widgetinfo started");
+ }
+
+ @Override
+ public Object getParent(Object widget) {
+ if (widget instanceof Component)
+ return ((Component) widget).getParent();
+ else
+ return null;
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/widgets/TrimmedWindowContent.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/widgets/TrimmedWindowContent.java
new file mode 100644
index 0000000..52361ab
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/presentation/widgets/TrimmedWindowContent.java
@@ -0,0 +1,172 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.presentation.widgets;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.GridLayout;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.MenuBar;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * @author rushan
+ *
+ */
+public class TrimmedWindowContent extends VerticalLayout {
+ private VerticalLayout windowBody;
+ private VerticalLayout windowCenterArea;
+ private HorizontalLayout helperLayout;
+ private GridLayout topContainerPanel;
+
+ private VerticalLayout leftBarContainer = new VerticalLayout();
+ private VerticalLayout rightBarContainer = new VerticalLayout();
+ private VerticalLayout topBarContainer = new VerticalLayout();
+ private HorizontalLayout bottomBarContainer = new HorizontalLayout();
+
+ private boolean boundsValide = false;
+
+ public TrimmedWindowContent() {
+ leftBarContainer.setWidth(-1, Unit.PIXELS);
+ leftBarContainer.setHeight("100%");
+
+ rightBarContainer.setWidth(-1, Unit.PIXELS);
+ rightBarContainer.setHeight("100%");
+
+ topBarContainer.setHeight(-1, Unit.PIXELS);
+ topBarContainer.setWidth("100%");
+ topBarContainer.setMargin(false);
+
+ // bottomBarContainer.setSizeFull();
+ bottomBarContainer.setHeight(-1, Unit.PIXELS);
+ bottomBarContainer.setWidth("100%");
+ bottomBarContainer.setMargin(false);
+
+ this.setSizeFull();
+
+ windowBody = new VerticalLayout();
+ windowBody.setSizeFull();
+ this.addComponent(windowBody);
+ this.setExpandRatio(windowBody, 100);
+
+ windowCenterArea = new VerticalLayout();
+ windowCenterArea.setSizeFull();
+
+ helperLayout = new HorizontalLayout();
+ helperLayout.setSizeFull();
+
+ // Top panel - it contains the top trimbar and the perspective stack
+ // panel
+ topContainerPanel = new GridLayout(2, 1);
+ topContainerPanel.setColumnExpandRatio(0, 100);
+ topContainerPanel.setColumnExpandRatio(1, 0);
+ topContainerPanel.setSizeUndefined();
+ topContainerPanel.setWidth("100%");
+
+ windowBody.addComponent(topContainerPanel);
+ // ------------------------
+ helperLayout.addComponent(leftBarContainer);
+ helperLayout.addComponent(windowCenterArea);
+ helperLayout.addComponent(rightBarContainer);
+ helperLayout.setExpandRatio(windowCenterArea, 100);
+
+ windowBody.addComponent(topBarContainer);
+ windowBody.addComponent(helperLayout);
+ windowBody.setExpandRatio(helperLayout, 100);
+ windowBody.addComponent(bottomBarContainer);
+ // -------------------------------------------------------------------
+ }
+
+ public VerticalLayout getClientArea() {
+ return windowCenterArea;
+ }
+
+ public void setMenuBar(MenuBar menuBar) {
+ for (int i = 0; i < this.getComponentCount(); i++) {
+ Component c = this.getComponent(i);
+ if (c instanceof MenuBar)
+ this.removeComponent(c);
+ }
+
+ menuBar.setWidth("100%");
+ this.addComponent(menuBar, 0);
+ }
+
+ public HorizontalLayout getPerspectiveStackPanel() {
+ return (HorizontalLayout) topContainerPanel.getComponent(0, 1);
+ }
+
+ public void setPerspectiveStackPanel(HorizontalLayout perspectiveStackPanel) {
+ if (perspectiveStackPanel == null) {
+ this.topContainerPanel.removeComponent(1, 0);
+ } else {
+ perspectiveStackPanel.setSizeUndefined();
+ this.topContainerPanel.addComponent(perspectiveStackPanel, 1, 0);
+ }
+ }
+
+ public void setLeftBar(Component bar) {
+ if (bar == null) {
+ leftBarContainer.removeAllComponents();
+ return;
+ }
+
+ leftBarContainer.removeAllComponents();
+ leftBarContainer.addComponent(bar);
+ }
+
+ public void setRightBar(Component bar) {
+ if (bar == null) {
+ rightBarContainer.removeAllComponents();
+ return;
+ }
+
+ rightBarContainer.removeAllComponents();
+ rightBarContainer.addComponent(bar);
+ }
+
+ public void setBottomBar(Component bar) {
+ if (bar == null) {
+ bottomBarContainer.removeAllComponents();
+ return;
+ }
+
+ bottomBarContainer.removeAllComponents();
+ bottomBarContainer.addComponent(bar);
+ }
+
+ public void setTopBar(Component bar) {
+ if (bar == null) {
+ this.topContainerPanel.removeComponent(0, 0);
+ return;
+ }
+
+ if (this.topContainerPanel.getComponent(0, 0) != null) {
+ this.topContainerPanel.removeComponent(0, 0);
+ }
+
+ this.topContainerPanel.addComponent(bar, 0, 0);
+ }
+
+ public Component getTopbar() {
+ return this.topContainerPanel.getComponent(0, 0);
+ }
+
+ // -----------------------------------
+ // -----------------------------------
+ public boolean isBoundsValid() {
+ return this.boundsValide;
+ }
+
+ public void invalidateBounds() {
+ this.boundsValide = false;
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidget.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidget.java
new file mode 100644
index 0000000..9aec488
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidget.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+ package org.eclipse.osbp.vaaclipse.widgets;
+
+import java.util.EventObject;
+
+import com.vaadin.shared.communication.ServerRpc;
+import com.vaadin.shared.ui.splitpanel.AbstractSplitPanelState;
+
+/**
+ * @author rushan
+ *
+ */
+public interface SashWidget {
+ void addListener(SplitPositionChangedListener listener);
+
+ void fireEvent(EventObject event);
+
+ AbstractSplitPanelState getState();
+
+ <T extends ServerRpc> void registerRpc(T implementation,
+ Class<T> rpcInterfaceType);
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidgetExtension.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidgetExtension.java
new file mode 100644
index 0000000..4372cf8
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidgetExtension.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.widgets;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.vaadin.shared.MouseEventDetails;
+import com.vaadin.shared.ui.splitpanel.AbstractSplitPanelRpc;
+import com.vaadin.ui.AbstractSplitPanel;
+import com.vaadin.ui.AbstractSplitPanel.SplitterClickEvent;
+
+/**
+ * @author rushan
+ *
+ */
+public class SashWidgetExtension {
+ AbstractSplitPanel splitPanel;
+ SashWidget sash;
+ List<SplitPositionChangedListener> listeners = new ArrayList<SplitPositionChangedListener>();
+
+ public SashWidgetExtension(AbstractSplitPanel splitPanel) {
+ this.splitPanel = splitPanel;
+ this.sash = (SashWidget) splitPanel;
+ installRpc();
+ }
+
+ public void addListener(SplitPositionChangedListener listener) {
+ this.listeners.add(listener);
+ }
+
+ public void fireEvent(float newPos) {
+ for (SplitPositionChangedListener l : this.listeners) {
+ l.processEvent(splitPanel, newPos);
+ }
+ }
+
+ private void installRpc() {
+ sash.registerRpc(new AbstractSplitPanelRpc() {
+
+ @Override
+ public void splitterClick(MouseEventDetails mouseDetails) {
+ sash.fireEvent(new SplitterClickEvent(splitPanel, mouseDetails));
+ }
+
+ @Override
+ public void setSplitterPosition(float position) {
+ sash.getState().splitterState.position = position;
+ System.out.println("split position changed!");
+ fireEvent(splitPanel.getSplitPosition());
+ }
+
+ }, AbstractSplitPanelRpc.class);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidgetHorizontal.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidgetHorizontal.java
new file mode 100644
index 0000000..d55eaff
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidgetHorizontal.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets;
+
+import java.util.EventObject;
+
+import com.vaadin.shared.communication.ServerRpc;
+import com.vaadin.shared.ui.splitpanel.HorizontalSplitPanelState;
+import com.vaadin.ui.HorizontalSplitPanel;
+
+/**
+ * @author rushan
+ *
+ */
+public class SashWidgetHorizontal extends HorizontalSplitPanel implements
+ SashWidget {
+ private SashWidgetExtension extension = new SashWidgetExtension(this);
+
+ public void addListener(SplitPositionChangedListener listener) {
+ this.extension.addListener(listener);
+ }
+
+ public SashWidgetHorizontal() {
+ this.setImmediate(true);
+ }
+
+ @Override
+ public void fireEvent(EventObject event) {
+ super.fireEvent(event);
+ }
+
+ @Override
+ public HorizontalSplitPanelState getState() {
+ return super.getState();
+ }
+
+ @Override
+ public <T extends ServerRpc> void registerRpc(T implementation,
+ Class<T> rpcInterfaceType) {
+ super.registerRpc(implementation, rpcInterfaceType);
+ }
+
+ // @Override
+ // public void changeVariables(Object source, Map<String, Object> variables)
+ // {
+ // super.changeVariables(source, variables);
+ //
+ // extension.fireEvent(this.getSplitPosition());
+ //
+ // }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidgetVertical.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidgetVertical.java
new file mode 100644
index 0000000..2848d87
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SashWidgetVertical.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets;
+
+import java.util.EventObject;
+
+import com.vaadin.shared.communication.ServerRpc;
+import com.vaadin.shared.ui.splitpanel.VerticalSplitPanelState;
+import com.vaadin.ui.VerticalSplitPanel;
+
+/**
+ * @author rushan
+ *
+ */
+public class SashWidgetVertical extends VerticalSplitPanel implements
+ SashWidget {
+ private SashWidgetExtension extension = new SashWidgetExtension(this);
+
+ public void addListener(SplitPositionChangedListener listener) {
+ this.extension.addListener(listener);
+ }
+
+ public SashWidgetVertical() {
+ this.setImmediate(true);
+ }
+
+ @Override
+ public void fireEvent(EventObject event) {
+ super.fireEvent(event);
+ }
+
+ @Override
+ public VerticalSplitPanelState getState() {
+ return super.getState();
+ }
+
+ @Override
+ public <T extends ServerRpc> void registerRpc(T implementation,
+ Class<T> rpcInterfaceType) {
+ super.registerRpc(implementation, rpcInterfaceType);
+ }
+
+ // @Override
+ // public void changeVariables(Object source, Map<String, Object> variables)
+ // {
+ // super.changeVariables(source, variables);
+ //
+ // extension.fireEvent(this.getSplitPosition());
+ // }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SplitPositionChangedListener.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SplitPositionChangedListener.java
new file mode 100644
index 0000000..7e5ddec
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/SplitPositionChangedListener.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.widgets;
+
+import com.vaadin.ui.AbstractSplitPanel;
+
+/**
+ * @author rushan
+ *
+ */
+public interface SplitPositionChangedListener {
+ void processEvent(AbstractSplitPanel splitPanel, float newSplitPos);
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/ToolbarButton.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/ToolbarButton.java
new file mode 100644
index 0000000..7285ae5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/ToolbarButton.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets;
+
+/**
+ * @author rushan
+ *
+ */
+public class ToolbarButton extends ToolbarButtonBase {
+ public static enum Type {
+ Button, Link
+ }
+
+ private Type type;
+
+ public ToolbarButton() {
+ this("Blank", null);
+ }
+
+ public ToolbarButton(String label, String iconURI) {
+
+ super(label, iconURI);
+ setType(Type.Button);
+ }
+
+ public void setType(Type type) {
+ if (type == Type.Link) {
+ this.addStyleName("link");
+ this.addStyleName("general");
+ } else if (type == Type.Button) {
+ this.addStyleName("vaaclipsebutton");
+ }
+ this.type = type;
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/ToolbarButtonBase.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/ToolbarButtonBase.java
new file mode 100644
index 0000000..6fc942f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/ToolbarButtonBase.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets;
+
+import org.eclipse.osbp.vaaclipse.publicapi.resources.ResourceHelper;
+
+import com.vaadin.server.Resource;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Component;
+
+/**
+ * @author rushan
+ *
+ */
+public class ToolbarButtonBase extends Button {
+ public ToolbarButtonBase() {
+ this("Blank", null);
+ }
+
+ public ToolbarButtonBase(String label, String iconURI) {
+ this.setSizeUndefined();
+
+ setLabelAndIcon(label, iconURI);
+
+ // hack
+ super.addClickListener(new ClickListener() {
+
+ public void buttonClick(ClickEvent event) {
+ // change focus
+ Component parent = event.getButton().getParent();
+ while (parent != null) {
+ if (parent instanceof Component.Focusable) {
+ ((Component.Focusable) parent).focus();
+ break;
+ } else {
+ parent = parent.getParent();
+ }
+ }
+ }
+ });
+ }
+
+ public void setLabelAndIcon(String label, String iconURI) {
+
+ // clear
+ this.setCaption(null);
+ this.setIcon(null);
+ this.removeStyleName("icononly");
+ this.removeStyleName("textonly");
+
+ // setup icon and text
+ if (iconURI == null && label == null)
+ label = "Blank";
+
+ if (iconURI != null) {
+ Resource icon = ResourceHelper.createResource(iconURI);
+ this.setIcon(icon);
+ }
+
+ if (label != null) {
+ this.setCaption(label);
+ }
+
+ if (iconURI == null && label != null)
+ this.addStyleName("textonly");
+ else if (iconURI != null && label == null)
+ this.addStyleName("icononly");
+ }
+
+ public void setIconURI(String iconURI) {
+
+ // clear
+ this.setIcon(null);
+
+ // setup icon and text
+ if (iconURI != null) {
+ Resource icon = ResourceHelper.createResource(iconURI);
+ this.setIcon(icon);
+ }
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/TwoStateToolbarButton.java b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/TwoStateToolbarButton.java
new file mode 100644
index 0000000..371b11c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.presentation/src/org/eclipse/osbp/vaaclipse/widgets/TwoStateToolbarButton.java
@@ -0,0 +1,110 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author rushan
+ *
+ */
+public class TwoStateToolbarButton extends ToolbarButtonBase {
+ private String primaryStyle;
+ private String selectedStyle;
+
+ private boolean switchOn = false;
+ private boolean switchStateByUserClickEnabled = true;
+ private List<ClickListener> userListeners = new ArrayList<ClickListener>();
+
+ public TwoStateToolbarButton() {
+ this("Blank", null);
+ }
+
+ public TwoStateToolbarButton(String label, String iconURI) {
+
+ super(label, iconURI);
+
+ setPrimaryStyle("vaaclipsebutton");
+ setSelectedStyle("pushed");
+
+ setCheckedState(false);
+
+ super.addClickListener(new ClickListener() {
+
+ public void buttonClick(ClickEvent event) {
+ if (switchStateByUserClickEnabled) {
+ setCheckedState(!switchOn);
+
+ for (ClickListener l : userListeners) {
+ l.buttonClick(event);
+ }
+ }
+ }
+ });
+ }
+
+ public boolean getCheckedState() {
+ return switchOn;
+ }
+
+ public void setCheckedState(boolean switchOn) {
+ if (switchOn) {
+ addStyleName(selectedStyle);
+ } else {
+ removeStyleName(selectedStyle);
+ }
+
+ this.switchOn = switchOn;
+ }
+
+ @Override
+ public void addListener(ClickListener listener) {
+ this.userListeners.add(listener);
+ }
+
+ public boolean isSwitchStateByUserClickEnabled() {
+ return switchStateByUserClickEnabled;
+ }
+
+ public void setSwitchStateByUserClickEnabled(
+ boolean switchStateByUserClickEnabled) {
+ this.switchStateByUserClickEnabled = switchStateByUserClickEnabled;
+ }
+
+ public String getPrimaryStyle() {
+ return primaryStyle;
+ }
+
+ public void setPrimaryStyle(String primaryStyle) {
+ removePrimaryStyle();
+ this.primaryStyle = primaryStyle;
+ this.addStyleName(this.primaryStyle);
+ }
+
+ public void removePrimaryStyle() {
+ if (this.primaryStyle != null)
+ this.removeStyleName(this.primaryStyle);
+ }
+
+ public String getSelectedStyle() {
+ return selectedStyle;
+ }
+
+ public void setSelectedStyle(String selectedStyle) {
+ if (this.switchOn)
+ this.removeStyleName(this.selectedStyle);
+ this.selectedStyle = selectedStyle;
+ if (this.switchOn)
+ this.addStyleName(this.selectedStyle);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/.project b/org.eclipse.osbp.vaaclipse.publicapi/.project
new file mode 100644
index 0000000..6e08d37
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse.publicapi</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.vaadin.integration.eclipse.addonStylesBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.publicapi/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..145c2c0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.publicapi
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.publicapi
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.osbp.vaaclipse.publicapi.app;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi.authentication;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi.change;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi.commands;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi.debug,
+ org.eclipse.osbp.vaaclipse.publicapi.editor;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi.events;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi.model;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi.perspective;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi.preferences;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi.resources;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi.theme;version="0.9.0"
+Require-Bundle: org.eclipse.emf.common;bundle-version="2.8.0",
+ com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.shared;bundle-version="[7.5.7,7.7.0)",
+ org.eclipse.e4.core.contexts;bundle-version="1.1.0",
+ org.eclipse.e4.ui.model.workbench;bundle-version="1.1.0",
+ org.eclipse.emf.ecore
+Import-Package: org.eclipse.osbp.ui.api.metadata;version="0.9.0",
+ org.osgi.service.prefs
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/about.html b/org.eclipse.osbp.vaaclipse.publicapi/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/about.ini b/org.eclipse.osbp.vaaclipse.publicapi/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/about.mappings b/org.eclipse.osbp.vaaclipse.publicapi/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/about.properties b/org.eclipse.osbp.vaaclipse.publicapi/about.properties
new file mode 100644
index 0000000..6a61dfd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.publicapi
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/build.properties b/org.eclipse.osbp.vaaclipse.publicapi/build.properties
new file mode 100644
index 0000000..a138bbd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ epl-v10.html,\
+ license.html
+src.includes = about.properties, about.mappings, about.ini, about.html, epl-v10.html,\
+ license.html
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/epl-v10.html b/org.eclipse.osbp.vaaclipse.publicapi/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/license.html b/org.eclipse.osbp.vaaclipse.publicapi/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.vaaclipse.publicapi/pom.xml b/org.eclipse.osbp.vaaclipse.publicapi/pom.xml
new file mode 100644
index 0000000..c8dbe12
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.osbp.vaaclipse.publicapi</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/app/ThreadLocals.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/app/ThreadLocals.java
new file mode 100644
index 0000000..e0b96a1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/app/ThreadLocals.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.publicapi.app;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+
+/**
+ * @author rushan
+ *
+ */
+public class ThreadLocals {
+ private static final ThreadLocal<IEclipseContext> eclipseContext = new ThreadLocal<IEclipseContext>();
+
+ public static IEclipseContext getRootContext() {
+ return eclipseContext.get();
+ }
+
+ public static void setRootContext(IEclipseContext context) {
+ eclipseContext.set(context);
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/authentication/AuthenticationConstants.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/authentication/AuthenticationConstants.java
new file mode 100644
index 0000000..5440880
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/authentication/AuthenticationConstants.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.authentication;
+
+/**
+ * @author rushan
+ *
+ */
+public class AuthenticationConstants {
+
+ /**
+ * For e4 context. User id as string.
+ */
+ public static final String USER_ID = "userId";
+
+ /**
+ * For e4 context. Needs to implement IUser.
+ */
+ public static final String USER = "user";
+
+ public static class Events {
+
+ public static class Authentication {
+ public static final String name = "vaaclipseAuthentication";
+ public static final String registration = "vaaclipseRegistration";
+ public static final String userClass = "userClass";
+ /**
+ * Is sent before the logout of the current session.
+ */
+ public static final String PRE_LOGOUT = "session/prelogout";
+ /**
+ * Logs out the current session.
+ */
+ public static final String LOGOUT = "session/logout";
+ }
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/change/ChangeCommand.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/change/ChangeCommand.java
new file mode 100644
index 0000000..61eebd7
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/change/ChangeCommand.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.change;
+
+import org.eclipse.emf.common.command.AbstractCommand;
+import org.eclipse.emf.ecore.resource.Resource;
+
+/**
+ * Uses the {@link ChangeCommand} to record notifications.
+ */
+public abstract class ChangeCommand extends AbstractCommand {
+
+ private Resource resource;
+ private ChangedRecorder recorder;
+
+ public ChangeCommand(String name, Resource resource) {
+ super(name);
+ this.resource = resource;
+ }
+
+ @Override
+ public void execute() {
+ recorder.start();
+
+ doExecute();
+
+ recorder.stop();
+ }
+
+ /**
+ * Execute your operations.
+ */
+ protected abstract void doExecute();
+
+ @Override
+ public void redo() {
+ recorder.redo();
+ }
+
+ @Override
+ protected boolean prepare() {
+ recorder = new ChangedRecorder(resource);
+ return true;
+ }
+
+ @Override
+ public void undo() {
+ recorder.undo();
+ }
+
+ @Override
+ public boolean canUndo() {
+ return super.canUndo();
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/change/ChangedRecorder.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/change/ChangedRecorder.java
new file mode 100644
index 0000000..b8849e1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/change/ChangedRecorder.java
@@ -0,0 +1,173 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.change;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+
+/**
+ * Implementation of {@link EContentAdapter} that records all notifications. And
+ * implements logic to {@link #undo()} and {@link #redo()} the changes.
+ */
+public class ChangedRecorder extends EContentAdapter {
+
+ private final Notifier notifier;
+
+ private List<Notification> notifications = new ArrayList<Notification>();
+
+ public ChangedRecorder(Notifier notifier) {
+ super();
+ this.notifier = notifier;
+ }
+
+ /**
+ * Starts the recording.
+ */
+ public void start() {
+ setTarget(notifier);
+ }
+
+ /**
+ * Stops the recording.
+ */
+ public void stop() {
+ unsetTarget(notifier);
+ }
+
+ /**
+ * Returns all notifications recorded.
+ *
+ * @return
+ */
+ public List<Notification> getNotifications() {
+ return notifications;
+ }
+
+ @Override
+ public void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+
+ if (notification.isTouch()) {
+ return;
+ }
+
+ if (notification.getEventType() == Notification.REMOVING_ADAPTER) {
+ return;
+ }
+
+ if (notification.getEventType() == Notification.RESOLVE) {
+ return;
+ }
+
+ notifications.add(notification);
+ }
+
+ /**
+ * Undos all notifications.
+ */
+ public void undo() {
+ for (int i = notifications.size() - 1; i >= 0; i--) {
+ Notification change = notifications.get(i);
+ undo(change);
+ }
+ }
+
+ /**
+ * Redos all notifications.
+ */
+ public void redo() {
+ for (int i = 0; i < notifications.size(); i++) {
+ Notification change = notifications.get(i);
+ redo(change);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ protected void undo(Notification change) {
+ EObject notifier = (EObject) change.getNotifier();
+ switch (change.getEventType()) {
+ case Notification.ADD: {
+ List<Object> list = (List<Object>) notifier
+ .eGet((EStructuralFeature) change.getFeature());
+ list.remove(change.getNewValue());
+ }
+ break;
+ case Notification.ADD_MANY:
+ throw new IllegalStateException("Implement me");
+ case Notification.MOVE:
+ throw new IllegalStateException("Implement me");
+ case Notification.REMOVE: {
+ List<Object> list = (List<Object>) notifier
+ .eGet((EStructuralFeature) change.getFeature());
+ if (change.getPosition() > 0) {
+ list.add(change.getPosition(), change.getOldValue());
+ } else {
+ list.add(change.getOldValue());
+ }
+ }
+ break;
+ case Notification.REMOVE_MANY:
+ throw new IllegalStateException("Implement me");
+ case Notification.SET: {
+ Object value = change.getOldValue();
+ notifier.eSet((EStructuralFeature) change.getFeature(), value);
+ }
+ break;
+ case Notification.UNSET: {
+ Object value = change.getOldValue();
+ notifier.eSet((EStructuralFeature) change.getFeature(), value);
+ }
+ break;
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ protected void redo(Notification change) {
+ EObject notifier = (EObject) change.getNotifier();
+ switch (change.getEventType()) {
+ case Notification.ADD: {
+ List<Object> list = (List<Object>) notifier
+ .eGet((EStructuralFeature) change.getFeature());
+ if (change.getPosition() > 0) {
+ list.add(change.getPosition(), change.getNewValue());
+ } else {
+ list.add(change.getNewValue());
+ }
+ }
+ break;
+ case Notification.ADD_MANY:
+ throw new IllegalStateException("Implement me");
+ case Notification.MOVE:
+ throw new IllegalStateException("Implement me");
+ case Notification.REMOVE: {
+ List<Object> list = (List<Object>) notifier
+ .eGet((EStructuralFeature) change.getFeature());
+ list.remove(change.getOldValue());
+ }
+ break;
+ case Notification.REMOVE_MANY:
+ throw new IllegalStateException("Implement me");
+ case Notification.SET: {
+ Object value = change.getNewValue();
+ notifier.eSet((EStructuralFeature) change.getFeature(), value);
+ }
+ case Notification.UNSET: {
+ notifier.eUnset((EStructuralFeature) change.getFeature());
+ }
+ }
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/change/SimpleCommand.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/change/SimpleCommand.java
new file mode 100644
index 0000000..8720e5a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/change/SimpleCommand.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/ package org.eclipse.osbp.vaaclipse.publicapi.change;
+
+import org.eclipse.emf.common.command.AbstractCommand;
+
+/**
+ * Uses the {@link SimpleCommand} to record notifications.
+ */
+public abstract class SimpleCommand extends AbstractCommand {
+
+ public SimpleCommand(String name) {
+ super(name);
+ }
+
+ @Override
+ public void execute() {
+ doExecute();
+ }
+
+ @Override
+ public void redo() {
+ doRedo();
+ }
+
+ @Override
+ protected boolean prepare() {
+ return true;
+ }
+
+ @Override
+ public void undo() {
+ doUndo();
+ }
+
+ @Override
+ public boolean canUndo() {
+ return true;
+ }
+
+ protected abstract void doExecute();
+
+ /**
+ * Override if required.
+ */
+ protected void doRedo() {
+ doExecute();
+ }
+
+ protected abstract void doUndo();
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/commands/IPartItemExecutionService.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/commands/IPartItemExecutionService.java
new file mode 100644
index 0000000..6881ba7
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/commands/IPartItemExecutionService.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.commands;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.menu.MItem;
+
+/**
+ * {@link MPart parts} provide this service by their eclipse context. It can be
+ * used to execute {@link MItem} directly.
+ */
+public interface IPartItemExecutionService {
+
+ /**
+ * Executes the given item in the context of the container part.
+ *
+ * @param mItem
+ * @return true if the item can be executed. False otherwise.
+ */
+ boolean canExecuteItem(MItem mItem);
+
+ /**
+ * Executes the given item in the context of the container part.
+ *
+ * @param mItem
+ */
+ void executeItem(MItem mItem);
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/debug/IOwningWorkspaceAccess.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/debug/IOwningWorkspaceAccess.java
new file mode 100644
index 0000000..66b6021
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/debug/IOwningWorkspaceAccess.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.debug;
+
+public interface IOwningWorkspaceAccess {
+
+ /**
+ * In debug mode, this value may be used to access the URI of the launching
+ * workspace location
+ */
+ public static final String DEBUG_OWNER_WORKSPACE_LOCATION = "debugOwnerWorkspaceLocation";
+
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/editor/SavePromptSetup.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/editor/SavePromptSetup.java
new file mode 100644
index 0000000..c65bc3a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/editor/SavePromptSetup.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.editor;
+
+/**
+ * @author rushan
+ *
+ */
+public class SavePromptSetup {
+ private String caption;
+ private String message;
+ private String iconUri;
+
+ public String getCaption() {
+ return caption;
+ }
+
+ public void setCaption(String caption) {
+ this.caption = caption;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public String getIconUri() {
+ return iconUri;
+ }
+
+ public void setIconUri(String iconUri) {
+ this.iconUri = iconUri;
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/events/IWidgetModelAssociations.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/events/IWidgetModelAssociations.java
new file mode 100644
index 0000000..5acd6fd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/events/IWidgetModelAssociations.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.publicapi.events;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * A session singleton service, which returns the EObject for a given component.
+ * <p>
+ * It also allows different EMF-based UIModel-To-Widget-Frameworks like ECView
+ * to participate by {@link #addThirdParty(IWidgetModelAssociations)}.
+ */
+public interface IWidgetModelAssociations {
+
+ /**
+ * Returns the EObject for a given component. If no model element could be
+ * found for the given component, the component hierarchies parent will be
+ * used. This method is internally called with the parent as long as no
+ * model element could be found, or until the UI instance is reached.
+ *
+ * @param component
+ * @return
+ */
+ EObject getElement(Object component);
+
+ /**
+ * Returns the UI Widget for the given model element.
+ *
+ * @param element
+ * @return
+ */
+ Object getWidget(EObject element);
+
+ /**
+ * Adds a thirdparty {@link IWidgetModelAssociations} to this service.
+ *
+ * @param e
+ * @return
+ */
+ boolean addThirdParty(IWidgetModelAssociations e);
+
+ /**
+ * Removes a thirdparty {@link IWidgetModelAssociations} from this service.
+ *
+ * @param o
+ * @return
+ */
+ boolean removeThirdParty(IWidgetModelAssociations o);
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/events/PublicEvents.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/events/PublicEvents.java
new file mode 100644
index 0000000..2b15e48
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/events/PublicEvents.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.events;
+
+/**
+ * @author rushan
+ *
+ */
+public class PublicEvents {
+ public static final String EXIT_WORKBENCH = "EXIT_WORKBENCH";
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/events/VaaclipseUiEvents.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/events/VaaclipseUiEvents.java
new file mode 100644
index 0000000..5aa8b3b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/events/VaaclipseUiEvents.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.publicapi.events;
+
+public class VaaclipseUiEvents {
+
+ public static interface Item {
+ public static final String TOPIC_EXECUTED = "org/eclipse/e4/ui/model/menu/Item/executed"; //$NON-NLS-1$
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/model/Tags.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/model/Tags.java
new file mode 100644
index 0000000..e5fbc5a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/model/Tags.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.model;
+
+/**
+ * @author rushan
+ *
+ */
+public class Tags {
+ /**
+ * Vaadin specific tag to inhibit resizing of sashes if needed
+ */
+ public static final String NO_RESIZE = "NoResize";
+
+ public static final String MAIN_WINDOW = "mainWindow";
+
+ /**
+ * Perspective's tag to show perspective switch button in perspective switch
+ * panel
+ */
+ public static final String HAS_SWITCH_BUTTON = "HasSwitchButton";
+
+ /**
+ * Tag to show text of perspective switch buttons in perspective switcher
+ * panel
+ */
+ public static final String ICONS_ONLY = "IconsOnly";
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/perspective/IPerspectiveHandler.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/perspective/IPerspectiveHandler.java
new file mode 100644
index 0000000..a71da50
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/perspective/IPerspectiveHandler.java
@@ -0,0 +1,151 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ * Florian Pirchner - moved to osbp namespace for Vaaclipse
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.publicapi.perspective;
+
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+
+/**
+ * The workbench's user based registry of perspectives.
+ * <p>
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface IPerspectiveHandler {
+
+ /**
+ * The preference key to access the default perspective.
+ */
+ public static final String PREF_DEFAULT_PERSPECTIVE = "org.eclipse.osbp.vaaclipse.addons.default.perspective";
+
+ /**
+ * Is used to save the original perspective in the persistedState of a
+ * perspective.
+ */
+ public static final String PROP_ORIGINAL_PERSPECTIVE = "org.eclipse.osbp.vaaclipse.addons.original.perspective";
+
+ /**
+ * Only perspectives tagged with this tag can be deleted by an user.
+ */
+ public static final String TAG_CREATED_BY_USER = "org.eclipse.osbp.vaaclipse.addons.perspective.createdByUser";
+
+ /**
+ * Clones an existing perspective.
+ *
+ * @param label
+ * the label assigned to the cloned perspective
+ * @param desc
+ * the perspective to clone
+ * @return the cloned perspective descriptor
+ * @throws IllegalArgumentException
+ * if there is already a perspective with the given id
+ */
+ public MPerspective clonePerspective(String userId, String label,
+ MPerspective perspective) throws IllegalArgumentException;
+
+ /**
+ * Returns true, if the user can delete the perspective.
+ *
+ * @param userId
+ * the userId
+ * @param persp
+ * the perspective to delete
+ */
+ public boolean canDeletePerspective(String userId, MPerspective perspective);
+
+ /**
+ * Deletes a perspective.
+ *
+ * @param persp
+ * the perspective to delete
+ * @return true if the perspective could be deleted
+ */
+ public boolean deletePerspective(String userId, MPerspective perspective);
+
+ /**
+ * Finds and returns the registered perspective with the given perspective
+ * id.
+ *
+ * @param perspectiveId
+ * the perspective id
+ * @return the perspective, or <code>null</code> if none
+ * @see MPerspective#getId
+ */
+ public MPerspective findPerspectiveWithId(String perspectiveId);
+
+ // /**
+ // * Finds and returns the registered perspective with the given label.
+ // *
+ // * @param label
+ // * the label
+ // * @return the perspective, or <code>null</code> if none
+ // * @see MPerspective#getLabel
+ // */
+ // public MPerspective findPerspectiveWithLabel(String label);
+
+ public String getDefaultPerspective();
+
+ public String getDefaultPerspective(String userId);
+
+ // /**
+ // * Returns a list of the perspectives known to the workbench.
+ // *
+ // * @return a list of perspectives
+ // */
+ // public MPerspective[] getPerspectives();
+
+ /**
+ * Sets the default perspective for the system to the given perspective id.
+ * If non-<code>null</code>, the id must correspond to a perspective
+ * extension within the workbench's perspective registry.
+ * <p>
+ * A <code>null</code> id indicates no default perspective.
+ * </p>
+ *
+ * @param id
+ * a perspective id, or <code>null</code>
+ */
+ public void setSystemDefaultPerspective(String id);
+
+ /**
+ * Sets the default perspective for the workbench for the current User to
+ * the given perspective id. If non-<code>null</code>, the id must
+ * correspond to a perspective extension within the workbench's perspective
+ * registry.
+ * <p>
+ * A <code>null</code> id indicates no default perspective.
+ * </p>
+ *
+ * @param id
+ * a perspective id, or <code>null</code>
+ */
+ public void setUserDefaultPerspective(String userId, String id);
+
+ /**
+ * Returns true, if the perspective can be reverted.
+ *
+ * @param persp
+ * the perspective to delete
+ */
+ public boolean canRevertPerspective(MPerspective perspective);
+
+ /**
+ * Reverts a perspective back to its original definition as specified in the
+ * plug-in manifest.
+ *
+ * @param perspToRevert
+ * the perspective to revert
+ *
+ * @since 3.0
+ */
+ public void revertPerspective(MPerspective perspectiveToRevert);
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/preferences/IPreferenceProvider.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/preferences/IPreferenceProvider.java
new file mode 100644
index 0000000..af04b1a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/preferences/IPreferenceProvider.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.preferences;
+
+import org.osgi.service.prefs.Preferences;
+
+/**
+ * A service that provides preferences.
+ */
+public interface IPreferenceProvider {
+
+ /**
+ * Returns the system preferences.
+ *
+ * @return
+ */
+ Preferences getSystemPreferences();
+
+ /**
+ * Returns the preferences for the current user.
+ *
+ * @return
+ */
+ Preferences getUserPreferences();
+
+ /**
+ * Returns the preferences for the given user.
+ *
+ * @return
+ */
+ Preferences getUserPreferences(String userId);
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/resources/BundleResource.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/resources/BundleResource.java
new file mode 100644
index 0000000..ebc318d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/resources/BundleResource.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.resources;
+
+import org.eclipse.emf.common.util.URI;
+
+import com.vaadin.server.ThemeResource;
+
+/**
+ * @author rushan
+ *
+ */
+public class BundleResource extends ThemeResource {
+ private String resourceBundlePath;
+
+ public static BundleResource valueOf(String resourceBundlePath) {
+ String themePath = convertPath(resourceBundlePath);
+ BundleResource bundleResource = new BundleResource(themePath);
+ bundleResource.resourceBundlePath = resourceBundlePath;
+ return bundleResource;
+ }
+
+ private BundleResource(String resourceUri) {
+ super(resourceUri);
+ }
+
+ private static String convertPath(String uriString) {
+ if (!uriString.startsWith("platform:/plugin/"))
+ throw new IllegalArgumentException(
+ "Wrong bundle resource uri: "
+ + uriString
+ + ". Bundle resource uri should start with platform:/plugin/");
+
+ URI uri = URI.createURI(uriString);
+
+ if (uri.segmentCount() < 2)
+ throw new IllegalArgumentException();
+
+ StringBuilder bundlePath = new StringBuilder("plugin/");
+
+ for (int i = 1; i < uri.segmentCount(); i++) {
+ bundlePath.append(uri.segment(i));
+ bundlePath.append("/");
+ }
+
+ if (bundlePath.charAt(bundlePath.length() - 1) == '/')
+ return bundlePath.substring(0, bundlePath.length() - 1);
+ else
+ return bundlePath.toString();
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/resources/ResourceHelper.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/resources/ResourceHelper.java
new file mode 100644
index 0000000..c9b34ac
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/resources/ResourceHelper.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.publicapi.resources;
+
+import com.vaadin.server.ThemeResource;
+
+/**
+ * @author rushan
+ */
+public class ResourceHelper {
+ public static ThemeResource createResource(String path) {
+ if (path == null || path.trim().equals("")) {
+ return null;
+ }
+ if (path.startsWith("platform:/plugin/"))
+ return BundleResource.valueOf(path);
+ else
+ return new ThemeResource(path);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/Theme.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/Theme.java
new file mode 100644
index 0000000..a64e1e6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/Theme.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.theme;
+
+import java.io.InputStream;
+import java.util.List;
+
+public interface Theme extends ThemeEntry {
+ /**
+ * Theme label displayed to user
+ */
+ String getLabel();
+
+ /**
+ * Theme description displayed to user
+ */
+ String getDescription();
+
+ /**
+ * List of inherited themes
+ */
+ List<Theme> getInheritedThemes();
+
+ /**
+ * List of contributions to this theme
+ */
+ List<ThemeContribution> getContributions();
+
+ /**
+ * Get list of resource location URI including resource URI of this theme,
+ * contribution URIs and inherited theme's URI
+ */
+ List<String> getAllResourceLocationURIs();
+
+ /**
+ * Get CSS list including CSS of this theme, contribution CSS and inherited
+ * theme's CSS
+ */
+ List<String> getAllCssURIs();
+
+ /**
+ * Get CSS of this theme as stream
+ */
+ InputStream getCssAsStream();
+
+ /**
+ * Returns all image URIs contained in any of the registered resource
+ * locations.
+ */
+ List<String> getImageURIs();
+
+ /**
+ * Get theme resource as stream
+ *
+ * @param themeResourceUri
+ * resource uri relative to this theme
+ */
+ InputStream getThemeResourceAsStream(String themeResourceUri);
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeConstants.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeConstants.java
new file mode 100644
index 0000000..002be80
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeConstants.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.theme;
+
+/**
+ * @author rushan
+ *
+ */
+public class ThemeConstants {
+ public static class Events {
+ public static final String setThemeEvent = "SetThemeEvent";
+ }
+
+ public static class Attrubutes {
+ public static final String themeid = "org.eclipse.osbp.vaaclipse.themeid";
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeContribution.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeContribution.java
new file mode 100644
index 0000000..b3552bf
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeContribution.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.theme;
+
+/**
+ * @author rushan
+ *
+ */
+public interface ThemeContribution extends ThemeEntry {
+ public static final String MAIN_CSS = "MAIN_CSS";
+ public static final String INHERITED_IMPORTS = "INHERITED_IMPORTS";
+
+ String getInsertPosition();
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeEngine.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeEngine.java
new file mode 100644
index 0000000..ba37aa7
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeEngine.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.theme;
+
+/**
+ * @author rushan
+ *
+ */
+public interface ThemeEngine {
+ Theme getTheme(String themeId);
+
+ Theme getThemeByWebId(String themeWebId);
+
+ ThemeContribution getThemeContributionByWebId(String contributionWebId);
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeEntry.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeEntry.java
new file mode 100644
index 0000000..f07f548
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeEntry.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.theme;
+
+import java.util.List;
+
+/**
+ * @author rushan
+ *
+ */
+public interface ThemeEntry {
+ /**
+ * Theme id
+ */
+ String getId();
+
+ /**
+ * Web id - this id is in uri (replace all dot's, etc)
+ */
+ String getWebId();
+
+ String getCssUri();
+
+ List<String> getResourceLocationURIs();
+}
diff --git a/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeManager.java b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeManager.java
new file mode 100644
index 0000000..6269fa1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.publicapi/src/org/eclipse/osbp/vaaclipse/publicapi/theme/ThemeManager.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.publicapi.theme;
+
+/**
+ * @author rushan
+ *
+ */
+public interface ThemeManager {
+ String getThemeId();
+
+ Theme getTheme();
+
+ void setTheme(String themeId);
+
+ ThemeEngine getThemeEngine();
+}
diff --git a/org.eclipse.osbp.vaaclipse.resources/.project b/org.eclipse.osbp.vaaclipse.resources/.project
new file mode 100644
index 0000000..446ee16
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse.resources</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.resources/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.resources/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..f5b73b1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.resources
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.resources
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Fragment-Host: com.vaadin.themes;bundle-version="[7.5.7,7.7.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/codelabel.scss b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/codelabel.scss
new file mode 100644
index 0000000..61f6871
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/codelabel.scss
@@ -0,0 +1,12 @@
+/* Import the reindeer theme.*/
+/* This only allows us to use the mixins defined in it and does not add any styles by itself. */
+@import "../reindeer/reindeer.scss";
+
+/* This contains all of your theme.*/
+/* If somebody wants to extend the theme she will include this mixin. */
+@mixin codelabel {
+ /* Include all the styles from the reindeer theme */
+ @include reindeer;
+
+ /* Insert your theme rules here */
+}
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-apollo.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-apollo.js
new file mode 100644
index 0000000..99e4a97
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-apollo.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["com",/^#[^\n\r]*/,null,"#"],["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,null,'"']],[["kwd",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/,
+null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[ES]?BANK=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[!-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["apollo","agc","aea"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-basic.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-basic.js
new file mode 100644
index 0000000..6b784d4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-basic.js
@@ -0,0 +1,3 @@
+var a=null;
+PR.registerLangHandler(PR.createSimpleLexer([["str",/^"(?:[^\n\r"\\]|\\.)*(?:"|$)/,a,'"'],["pln",/^\s+/,a," \r\n\t\u00a0"]],[["com",/^REM[^\n\r]*/,a],["kwd",/^\b(?:AND|CLOSE|CLR|CMD|CONT|DATA|DEF ?FN|DIM|END|FOR|GET|GOSUB|GOTO|IF|INPUT|LET|LIST|LOAD|NEW|NEXT|NOT|ON|OPEN|OR|POKE|PRINT|READ|RESTORE|RETURN|RUN|SAVE|STEP|STOP|SYS|THEN|TO|VERIFY|WAIT)\b/,a],["pln",/^[a-z][^\W_]?(?:\$|%)?/i,a],["lit",/^(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?/i,a,"0123456789"],["pun",
+/^.[^\s\w"$%.]*/,a]]),["basic","cbm"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-clj.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-clj.js
new file mode 100644
index 0000000..1bb539c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-clj.js
@@ -0,0 +1,18 @@
+/*
+ Copyright (C) 2011 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+var a=null;
+PR.registerLangHandler(PR.createSimpleLexer([["opn",/^[([{]+/,a,"([{"],["clo",/^[)\]}]+/,a,")]}"],["com",/^;[^\n\r]*/,a,";"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:def|if|do|let|quote|var|fn|loop|recur|throw|try|monitor-enter|monitor-exit|defmacro|defn|defn-|macroexpand|macroexpand-1|for|doseq|dosync|dotimes|and|or|when|not|assert|doto|proxy|defstruct|first|rest|cons|defprotocol|deftype|defrecord|reify|defmulti|defmethod|meta|with-meta|ns|in-ns|create-ns|import|intern|refer|alias|namespace|resolve|ref|deref|refset|new|set!|memfn|to-array|into-array|aset|gen-class|reduce|map|filter|find|nil?|empty?|hash-map|hash-set|vec|vector|seq|flatten|reverse|assoc|dissoc|list|list?|disj|get|union|difference|intersection|extend|extend-type|extend-protocol|prn)\b/,a],
+["typ",/^:[\dA-Za-z-]+/]]),["clj"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-css.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-css.js
new file mode 100644
index 0000000..d7a4640
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-css.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n\u000c"]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]+)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],
+["com",/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}\b/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-dart.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-dart.js
new file mode 100644
index 0000000..eefccc9
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-dart.js
@@ -0,0 +1,3 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"]],[["com",/^#!.*/],["kwd",/^\b(?:import|library|part of|part|as|show|hide)\b/i],["com",/^\/\/.*/],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["kwd",/^\b(?:class|interface)\b/i],["kwd",/^\b(?:assert|break|case|catch|continue|default|do|else|finally|for|if|in|is|new|return|super|switch|this|throw|try|while)\b/i],["kwd",/^\b(?:abstract|const|extends|factory|final|get|implements|native|operator|set|static|typedef|var)\b/i],
+["typ",/^\b(?:bool|double|dynamic|int|num|object|string|void)\b/i],["kwd",/^\b(?:false|null|true)\b/i],["str",/^r?'''[\S\s]*?[^\\]'''/],["str",/^r?"""[\S\s]*?[^\\]"""/],["str",/^r?'('|[^\n\f\r]*?[^\\]')/],["str",/^r?"("|[^\n\f\r]*?[^\\]")/],["pln",/^[$_a-z]\w*/i],["pun",/^[!%&*+/:<-?^|~-]/],["lit",/^\b0x[\da-f]+/i],["lit",/^\b\d+(?:\.\d*)?(?:e[+-]?\d+)?/i],["lit",/^\b\.\d+(?:e[+-]?\d+)?/i],["pun",/^[(),.;[\]{}]/]]),
+["dart"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-erlang.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-erlang.js
new file mode 100644
index 0000000..27214a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-erlang.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t-\r ]+/,null,"\t\n\u000b\u000c\r "],["str",/^"(?:[^\n\f\r"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["lit",/^[a-z]\w*/],["lit",/^'(?:[^\n\f\r'\\]|\\[^&])+'?/,null,"'"],["lit",/^\?[^\t\n ({]+/,null,"?"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,null,"0123456789"]],[["com",/^%[^\n]*/],["kwd",/^(?:module|attributes|do|let|in|letrec|apply|call|primop|case|of|end|when|fun|try|catch|receive|after|char|integer|float,atom,string,var)\b/],
+["kwd",/^-[_a-z]+/],["typ",/^[A-Z_]\w*/],["pun",/^[,.;]/]]),["erlang","erl"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-go.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-go.js
new file mode 100644
index 0000000..1caca23
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-go.js
@@ -0,0 +1 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["pln",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])+(?:'|$)|`[^`]*(?:`|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\n\r]*|\/\*[\S\s]*?\*\/)/],["pln",/^(?:[^"'/`]|\/(?![*/]))+/]]),["go"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-hs.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-hs.js
new file mode 100644
index 0000000..ff3729b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-hs.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t-\r ]+/,null,"\t\n\u000b\u000c\r "],["str",/^"(?:[^\n\f\r"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["str",/^'(?:[^\n\f\r'\\]|\\[^&])'?/,null,"'"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,null,"0123456789"]],[["com",/^(?:--+[^\n\f\r]*|{-(?:[^-]|-+[^}-])*-})/],["kwd",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^\d'A-Za-z]|$)/,
+null],["pln",/^(?:[A-Z][\w']*\.)*[A-Za-z][\w']*/],["pun",/^[^\d\t-\r "'A-Za-z]+/]]),["hs"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-lisp.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-lisp.js
new file mode 100644
index 0000000..9c8cfa5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-lisp.js
@@ -0,0 +1,3 @@
+var a=null;
+PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,a,"("],["clo",/^\)+/,a,")"],["com",/^;[^\n\r]*/,a,";"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,a],
+["lit",/^[+-]?(?:[#0]x[\da-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[de][+-]?\d+)?)/i],["lit",/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[_a-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/i],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["cl","el","lisp","lsp","scm","ss","rkt"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-llvm.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-llvm.js
new file mode 100644
index 0000000..16fade2
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-llvm.js
@@ -0,0 +1 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^!?"(?:[^"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["com",/^;[^\n\r]*/,null,";"]],[["pln",/^[!%@](?:[$\-.A-Z_a-z][\w$\-.]*|\d+)/],["kwd",/^[^\W\d]\w*/,null],["lit",/^\d+\.\d+/],["lit",/^(?:\d+|0[Xx][\dA-Fa-f]+)/],["pun",/^[(-*,:<->[\]{}]|\.\.\.$/]]),["llvm","ll"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-lua.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-lua.js
new file mode 100644
index 0000000..7e44cca
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-lua.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$))/,null,"\"'"]],[["com",/^--(?:\[(=*)\[[\S\s]*?(?:]\1]|$)|[^\n\r]*)/],["str",/^\[(=*)\[[\S\s]*?(?:]\1]|$)/],["kwd",/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,null],["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],
+["pln",/^[_a-z]\w*/i],["pun",/^[^\w\t\n\r \xa0][^\w\t\n\r "'+=\xa0-]*/]]),["lua"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-matlab.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-matlab.js
new file mode 100644
index 0000000..d0d3516
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-matlab.js
@@ -0,0 +1,6 @@
+var a=null,b=window.PR,c=[[b.PR_PLAIN,/^[\t-\r \xa0]+/,a," \t\r\n\u000b\u000c\u00a0"],[b.PR_COMMENT,/^%{[^%]*%+(?:[^%}][^%]*%+)*}/,a],[b.PR_COMMENT,/^%[^\n\r]*/,a,"%"],["syscmd",/^![^\n\r]*/,a,"!"]],d=[["linecont",/^\.\.\.\s*[\n\r]/,a],["err",/^\?\?\? [^\n\r]*/,a],["wrn",/^Warning: [^\n\r]*/,a],["codeoutput",/^>>\s+/,a],["codeoutput",/^octave:\d+>\s+/,a],["lang-matlab-operators",/^((?:[A-Za-z]\w*(?:\.[A-Za-z]\w*)*|[).\]}])')/,a],["lang-matlab-identifiers",/^([A-Za-z]\w*(?:\.[A-Za-z]\w*)*)(?!')/,a],
+[b.PR_STRING,/^'(?:[^']|'')*'/,a],[b.PR_LITERAL,/^[+-]?\.?\d+(?:\.\d*)?(?:[Ee][+-]?\d+)?[ij]?/,a],[b.PR_TAG,/^[()[\]{}]/,a],[b.PR_PUNCTUATION,/^[!&*-/:->@\\^|~]/,a]],e=[["lang-matlab-identifiers",/^([A-Za-z]\w*(?:\.[A-Za-z]\w*)*)/,a],[b.PR_TAG,/^[()[\]{}]/,a],[b.PR_PUNCTUATION,/^[!&*-/:->@\\^|~]/,a],["transpose",/^'/,a]];
+b.registerLangHandler(b.createSimpleLexer([],[[b.PR_KEYWORD,/^\b(?:break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while)\b/,a],["const",/^\b(?:true|false|inf|Inf|nan|NaN|eps|pi|ans|nargin|nargout|varargin|varargout)\b/,a],[b.PR_TYPE,/^\b(?:cell|struct|char|double|single|logical|u?int(?:8|16|32|64)|sparse)\b/,a],["fun",/^\b(?:abs|accumarray|acos(?:d|h)?|acot(?:d|h)?|acsc(?:d|h)?|actxcontrol(?:list|select)?|actxGetRunningServer|actxserver|addlistener|addpath|addpref|addtodate|airy|align|alim|all|allchild|alpha|alphamap|amd|ancestor|and|angle|annotation|any|area|arrayfun|asec(?:d|h)?|asin(?:d|h)?|assert|assignin|atan[2dh]?|audiodevinfo|audioplayer|audiorecorder|aufinfo|auread|autumn|auwrite|avifile|aviinfo|aviread|axes|axis|balance|bar(?:3|3h|h)?|base2dec|beep|BeginInvoke|bench|bessel[h-ky]|beta|betainc|betaincinv|betaln|bicg|bicgstab|bicgstabl|bin2dec|bitand|bitcmp|bitget|bitmax|bitnot|bitor|bitset|bitshift|bitxor|blanks|blkdiag|bone|box|brighten|brush|bsxfun|builddocsearchdb|builtin|bvp4c|bvp5c|bvpget|bvpinit|bvpset|bvpxtend|calendar|calllib|callSoapService|camdolly|cameratoolbar|camlight|camlookat|camorbit|campan|campos|camproj|camroll|camtarget|camup|camva|camzoom|cart2pol|cart2sph|cast|cat|caxis|cd|cdf2rdf|cdfepoch|cdfinfo|cdflib(?:.(?:close|closeVar|computeEpoch|computeEpoch16|create|createAttr|createVar|delete|deleteAttr|deleteAttrEntry|deleteAttrgEntry|deleteVar|deleteVarRecords|epoch16Breakdown|epochBreakdown|getAttrEntry|getAttrgEntry|getAttrMaxEntry|getAttrMaxgEntry|getAttrName|getAttrNum|getAttrScope|getCacheSize|getChecksum|getCompression|getCompressionCacheSize|getConstantNames|getConstantValue|getCopyright|getFileBackward|getFormat|getLibraryCopyright|getLibraryVersion|getMajority|getName|getNumAttrEntries|getNumAttrgEntries|getNumAttributes|getNumgAttributes|getReadOnlyMode|getStageCacheSize|getValidate|getVarAllocRecords|getVarBlockingFactor|getVarCacheSize|getVarCompression|getVarData|getVarMaxAllocRecNum|getVarMaxWrittenRecNum|getVarName|getVarNum|getVarNumRecsWritten|getVarPadValue|getVarRecordData|getVarReservePercent|getVarsMaxWrittenRecNum|getVarSparseRecords|getVersion|hyperGetVarData|hyperPutVarData|inquire|inquireAttr|inquireAttrEntry|inquireAttrgEntry|inquireVar|open|putAttrEntry|putAttrgEntry|putVarData|putVarRecordData|renameAttr|renameVar|setCacheSize|setChecksum|setCompression|setCompressionCacheSize|setFileBackward|setFormat|setMajority|setReadOnlyMode|setStageCacheSize|setValidate|setVarAllocBlockRecords|setVarBlockingFactor|setVarCacheSize|setVarCompression|setVarInitialRecs|setVarPadValue|SetVarReservePercent|setVarsCacheSize|setVarSparseRecords))?|cdfread|cdfwrite|ceil|cell2mat|cell2struct|celldisp|cellfun|cellplot|cellstr|cgs|checkcode|checkin|checkout|chol|cholinc|cholupdate|circshift|cla|clabel|class|clc|clear|clearvars|clf|clipboard|clock|close|closereq|cmopts|cmpermute|cmunique|colamd|colon|colorbar|colordef|colormap|colormapeditor|colperm|Combine|comet|comet3|commandhistory|commandwindow|compan|compass|complex|computer|cond|condeig|condest|coneplot|conj|containers.Map|contour(?:[3cf]|slice)?|contrast|conv|conv2|convhull|convhulln|convn|cool|copper|copyfile|copyobj|corrcoef|cos(?:d|h)?|cot(?:d|h)?|cov|cplxpair|cputime|createClassFromWsdl|createSoapMessage|cross|csc(?:d|h)?|csvread|csvwrite|ctranspose|cumprod|cumsum|cumtrapz|curl|customverctrl|cylinder|daqread|daspect|datacursormode|datatipinfo|date|datenum|datestr|datetick|datevec|dbclear|dbcont|dbdown|dblquad|dbmex|dbquit|dbstack|dbstatus|dbstep|dbstop|dbtype|dbup|dde23|ddeget|ddesd|ddeset|deal|deblank|dec2base|dec2bin|dec2hex|decic|deconv|del2|delaunay|delaunay3|delaunayn|DelaunayTri|delete|demo|depdir|depfun|det|detrend|deval|diag|dialog|diary|diff|diffuse|dir|disp|display|dither|divergence|dlmread|dlmwrite|dmperm|doc|docsearch|dos|dot|dragrect|drawnow|dsearch|dsearchn|dynamicprops|echo|echodemo|edit|eig|eigs|ellipj|ellipke|ellipsoid|empty|enableNETfromNetworkDrive|enableservice|EndInvoke|enumeration|eomday|eq|erf|erfc|erfcinv|erfcx|erfinv|error|errorbar|errordlg|etime|etree|etreeplot|eval|evalc|evalin|event.(?:EventData|listener|PropertyEvent|proplistener)|exifread|exist|exit|exp|expint|expm|expm1|export2wsdlg|eye|ezcontour|ezcontourf|ezmesh|ezmeshc|ezplot|ezplot3|ezpolar|ezsurf|ezsurfc|factor|factorial|fclose|feather|feature|feof|ferror|feval|fft|fft2|fftn|fftshift|fftw|fgetl|fgets|fieldnames|figure|figurepalette|fileattrib|filebrowser|filemarker|fileparts|fileread|filesep|fill|fill3|filter|filter2|find|findall|findfigs|findobj|findstr|finish|fitsdisp|fitsinfo|fitsread|fitswrite|fix|flag|flipdim|fliplr|flipud|floor|flow|fminbnd|fminsearch|fopen|format|fplot|fprintf|frame2im|fread|freqspace|frewind|fscanf|fseek|ftell|FTP|full|fullfile|func2str|functions|funm|fwrite|fzero|gallery|gamma|gammainc|gammaincinv|gammaln|gca|gcbf|gcbo|gcd|gcf|gco|ge|genpath|genvarname|get|getappdata|getenv|getfield|getframe|getpixelposition|getpref|ginput|gmres|gplot|grabcode|gradient|gray|graymon|grid|griddata(?:3|n)?|griddedInterpolant|gsvd|gt|gtext|guidata|guide|guihandles|gunzip|gzip|h5create|h5disp|h5info|h5read|h5readatt|h5write|h5writeatt|hadamard|handle|hankel|hdf|hdf5|hdf5info|hdf5read|hdf5write|hdfinfo|hdfread|hdftool|help|helpbrowser|helpdesk|helpdlg|helpwin|hess|hex2dec|hex2num|hgexport|hggroup|hgload|hgsave|hgsetget|hgtransform|hidden|hilb|hist|histc|hold|home|horzcat|hostid|hot|hsv|hsv2rgb|hypot|ichol|idivide|ifft|ifft2|ifftn|ifftshift|ilu|im2frame|im2java|imag|image|imagesc|imapprox|imfinfo|imformats|import|importdata|imread|imwrite|ind2rgb|ind2sub|inferiorto|info|inline|inmem|inpolygon|input|inputdlg|inputname|inputParser|inspect|instrcallback|instrfind|instrfindall|int2str|integral(?:2|3)?|interp(?:1|1q|2|3|ft|n)|interpstreamspeed|intersect|intmax|intmin|inv|invhilb|ipermute|isa|isappdata|iscell|iscellstr|ischar|iscolumn|isdir|isempty|isequal|isequaln|isequalwithequalnans|isfield|isfinite|isfloat|isglobal|ishandle|ishghandle|ishold|isinf|isinteger|isjava|iskeyword|isletter|islogical|ismac|ismatrix|ismember|ismethod|isnan|isnumeric|isobject|isocaps|isocolors|isonormals|isosurface|ispc|ispref|isprime|isprop|isreal|isrow|isscalar|issorted|isspace|issparse|isstr|isstrprop|isstruct|isstudent|isunix|isvarname|isvector|javaaddpath|javaArray|javachk|javaclasspath|javacomponent|javaMethod|javaMethodEDT|javaObject|javaObjectEDT|javarmpath|jet|keyboard|kron|lasterr|lasterror|lastwarn|lcm|ldivide|ldl|le|legend|legendre|length|libfunctions|libfunctionsview|libisloaded|libpointer|libstruct|license|light|lightangle|lighting|lin2mu|line|lines|linkaxes|linkdata|linkprop|linsolve|linspace|listdlg|listfonts|load|loadlibrary|loadobj|log|log10|log1p|log2|loglog|logm|logspace|lookfor|lower|ls|lscov|lsqnonneg|lsqr|lt|lu|luinc|magic|makehgtform|mat2cell|mat2str|material|matfile|matlab.io.MatFile|matlab.mixin.(?:Copyable|Heterogeneous(?:.getDefaultScalarElement)?)|matlabrc|matlabroot|max|maxNumCompThreads|mean|median|membrane|memmapfile|memory|menu|mesh|meshc|meshgrid|meshz|meta.(?:class(?:.fromName)?|DynamicProperty|EnumeratedValue|event|MetaData|method|package(?:.(?:fromName|getAllPackages))?|property)|metaclass|methods|methodsview|mex(?:.getCompilerConfigurations)?|MException|mexext|mfilename|min|minres|minus|mislocked|mkdir|mkpp|mldivide|mlint|mlintrpt|mlock|mmfileinfo|mmreader|mod|mode|more|move|movefile|movegui|movie|movie2avi|mpower|mrdivide|msgbox|mtimes|mu2lin|multibandread|multibandwrite|munlock|namelengthmax|nargchk|narginchk|nargoutchk|native2unicode|nccreate|ncdisp|nchoosek|ncinfo|ncread|ncreadatt|ncwrite|ncwriteatt|ncwriteschema|ndgrid|ndims|ne|NET(?:.(?:addAssembly|Assembly|convertArray|createArray|createGeneric|disableAutoRelease|enableAutoRelease|GenericClass|invokeGenericMethod|NetException|setStaticProperty))?|netcdf.(?:abort|close|copyAtt|create|defDim|defGrp|defVar|defVarChunking|defVarDeflate|defVarFill|defVarFletcher32|delAtt|endDef|getAtt|getChunkCache|getConstant|getConstantNames|getVar|inq|inqAtt|inqAttID|inqAttName|inqDim|inqDimID|inqDimIDs|inqFormat|inqGrpName|inqGrpNameFull|inqGrpParent|inqGrps|inqLibVers|inqNcid|inqUnlimDims|inqVar|inqVarChunking|inqVarDeflate|inqVarFill|inqVarFletcher32|inqVarID|inqVarIDs|open|putAtt|putVar|reDef|renameAtt|renameDim|renameVar|setChunkCache|setDefaultFormat|setFill|sync)|newplot|nextpow2|nnz|noanimate|nonzeros|norm|normest|not|notebook|now|nthroot|null|num2cell|num2hex|num2str|numel|nzmax|ode(?:113|15i|15s|23|23s|23t|23tb|45)|odeget|odeset|odextend|onCleanup|ones|open|openfig|opengl|openvar|optimget|optimset|or|ordeig|orderfields|ordqz|ordschur|orient|orth|pack|padecoef|pagesetupdlg|pan|pareto|parseSoapResponse|pascal|patch|path|path2rc|pathsep|pathtool|pause|pbaspect|pcg|pchip|pcode|pcolor|pdepe|pdeval|peaks|perl|perms|permute|pie|pink|pinv|planerot|playshow|plot|plot3|plotbrowser|plotedit|plotmatrix|plottools|plotyy|plus|pol2cart|polar|poly|polyarea|polyder|polyeig|polyfit|polyint|polyval|polyvalm|pow2|power|ppval|prefdir|preferences|primes|print|printdlg|printopt|printpreview|prod|profile|profsave|propedit|propertyeditor|psi|publish|PutCharArray|PutFullMatrix|PutWorkspaceData|pwd|qhull|qmr|qr|qrdelete|qrinsert|qrupdate|quad|quad2d|quadgk|quadl|quadv|questdlg|quit|quiver|quiver3|qz|rand|randi|randn|randperm|RandStream(?:.(?:create|getDefaultStream|getGlobalStream|list|setDefaultStream|setGlobalStream))?|rank|rat|rats|rbbox|rcond|rdivide|readasync|real|reallog|realmax|realmin|realpow|realsqrt|record|rectangle|rectint|recycle|reducepatch|reducevolume|refresh|refreshdata|regexp|regexpi|regexprep|regexptranslate|rehash|rem|Remove|RemoveAll|repmat|reset|reshape|residue|restoredefaultpath|rethrow|rgb2hsv|rgb2ind|rgbplot|ribbon|rmappdata|rmdir|rmfield|rmpath|rmpref|rng|roots|rose|rosser|rot90|rotate|rotate3d|round|rref|rsf2csf|run|save|saveas|saveobj|savepath|scatter|scatter3|schur|sec|secd|sech|selectmoveresize|semilogx|semilogy|sendmail|serial|set|setappdata|setdiff|setenv|setfield|setpixelposition|setpref|setstr|setxor|shading|shg|shiftdim|showplottool|shrinkfaces|sign|sin(?:d|h)?|size|slice|smooth3|snapnow|sort|sortrows|sound|soundsc|spalloc|spaugment|spconvert|spdiags|specular|speye|spfun|sph2cart|sphere|spinmap|spline|spones|spparms|sprand|sprandn|sprandsym|sprank|spring|sprintf|spy|sqrt|sqrtm|squeeze|ss2tf|sscanf|stairs|startup|std|stem|stem3|stopasync|str2double|str2func|str2mat|str2num|strcat|strcmp|strcmpi|stream2|stream3|streamline|streamparticles|streamribbon|streamslice|streamtube|strfind|strjust|strmatch|strncmp|strncmpi|strread|strrep|strtok|strtrim|struct2cell|structfun|strvcat|sub2ind|subplot|subsasgn|subsindex|subspace|subsref|substruct|subvolume|sum|summer|superclasses|superiorto|support|surf|surf2patch|surface|surfc|surfl|surfnorm|svd|svds|swapbytes|symamd|symbfact|symmlq|symrcm|symvar|system|tan(?:d|h)?|tar|tempdir|tempname|tetramesh|texlabel|text|textread|textscan|textwrap|tfqmr|throw|tic|Tiff(?:.(?:getTagNames|getVersion))?|timer|timerfind|timerfindall|times|timeseries|title|toc|todatenum|toeplitz|toolboxdir|trace|transpose|trapz|treelayout|treeplot|tril|trimesh|triplequad|triplot|TriRep|TriScatteredInterp|trisurf|triu|tscollection|tsearch|tsearchn|tstool|type|typecast|uibuttongroup|uicontextmenu|uicontrol|uigetdir|uigetfile|uigetpref|uiimport|uimenu|uiopen|uipanel|uipushtool|uiputfile|uiresume|uisave|uisetcolor|uisetfont|uisetpref|uistack|uitable|uitoggletool|uitoolbar|uiwait|uminus|undocheckout|unicode2native|union|unique|unix|unloadlibrary|unmesh|unmkpp|untar|unwrap|unzip|uplus|upper|urlread|urlwrite|usejava|userpath|validateattributes|validatestring|vander|var|vectorize|ver|verctrl|verLessThan|version|vertcat|VideoReader(?:.isPlatformSupported)?|VideoWriter(?:.getProfiles)?|view|viewmtx|visdiff|volumebounds|voronoi|voronoin|wait|waitbar|waitfor|waitforbuttonpress|warndlg|warning|waterfall|wavfinfo|wavplay|wavread|wavrecord|wavwrite|web|weekday|what|whatsnew|which|whitebg|who|whos|wilkinson|winopen|winqueryreg|winter|wk1finfo|wk1read|wk1write|workspace|xlabel|xlim|xlsfinfo|xlsread|xlswrite|xmlread|xmlwrite|xor|xslt|ylabel|ylim|zeros|zip|zlabel|zlim|zoom)\b/,
+a],["fun_tbx",/^\b(?:addedvarplot|andrewsplot|anova[12n]|ansaribradley|aoctool|barttest|bbdesign|beta(?:cdf|fit|inv|like|pdf|rnd|stat)|bino(?:cdf|fit|inv|pdf|rnd|stat)|biplot|bootci|bootstrp|boxplot|candexch|candgen|canoncorr|capability|capaplot|caseread|casewrite|categorical|ccdesign|cdfplot|chi2(?:cdf|gof|inv|pdf|rnd|stat)|cholcov|Classification(?:BaggedEnsemble|Discriminant(?:.(?:fit|make|template))?|Ensemble|KNN(?:.(?:fit|template))?|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|classify|classregtree|cluster|clusterdata|cmdscale|combnk|Compact(?:Classification(?:Discriminant|Ensemble|Tree)|Regression(?:Ensemble|Tree)|TreeBagger)|confusionmat|controlchart|controlrules|cophenet|copula(?:cdf|fit|param|pdf|rnd|stat)|cordexch|corr|corrcov|coxphfit|createns|crosstab|crossval|cvpartition|datasample|dataset|daugment|dcovary|dendrogram|dfittool|disttool|dummyvar|dwtest|ecdf|ecdfhist|ev(?:cdf|fit|inv|like|pdf|rnd|stat)|ExhaustiveSearcher|exp(?:cdf|fit|inv|like|pdf|rnd|stat)|factoran|fcdf|ff2n|finv|fitdist|fitensemble|fpdf|fracfact|fracfactgen|friedman|frnd|fstat|fsurfht|fullfact|gagerr|gam(?:cdf|fit|inv|like|pdf|rnd|stat)|GeneralizedLinearModel(?:.fit)?|geo(?:cdf|inv|mean|pdf|rnd|stat)|gev(?:cdf|fit|inv|like|pdf|rnd|stat)|gline|glmfit|glmval|glyphplot|gmdistribution(?:.fit)?|gname|gp(?:cdf|fit|inv|like|pdf|rnd|stat)|gplotmatrix|grp2idx|grpstats|gscatter|haltonset|harmmean|hist3|histfit|hmm(?:decode|estimate|generate|train|viterbi)|hougen|hyge(?:cdf|inv|pdf|rnd|stat)|icdf|inconsistent|interactionplot|invpred|iqr|iwishrnd|jackknife|jbtest|johnsrnd|KDTreeSearcher|kmeans|knnsearch|kruskalwallis|ksdensity|kstest|kstest2|kurtosis|lasso|lassoglm|lassoPlot|leverage|lhsdesign|lhsnorm|lillietest|LinearModel(?:.fit)?|linhyptest|linkage|logn(?:cdf|fit|inv|like|pdf|rnd|stat)|lsline|mad|mahal|maineffectsplot|manova1|manovacluster|mdscale|mhsample|mle|mlecov|mnpdf|mnrfit|mnrnd|mnrval|moment|multcompare|multivarichart|mvn(?:cdf|pdf|rnd)|mvregress|mvregresslike|mvt(?:cdf|pdf|rnd)|NaiveBayes(?:.fit)?|nan(?:cov|max|mean|median|min|std|sum|var)|nbin(?:cdf|fit|inv|pdf|rnd|stat)|ncf(?:cdf|inv|pdf|rnd|stat)|nct(?:cdf|inv|pdf|rnd|stat)|ncx2(?:cdf|inv|pdf|rnd|stat)|NeighborSearcher|nlinfit|nlintool|nlmefit|nlmefitsa|nlparci|nlpredci|nnmf|nominal|NonLinearModel(?:.fit)?|norm(?:cdf|fit|inv|like|pdf|rnd|stat)|normplot|normspec|ordinal|outlierMeasure|parallelcoords|paretotails|partialcorr|pcacov|pcares|pdf|pdist|pdist2|pearsrnd|perfcurve|perms|piecewisedistribution|plsregress|poiss(?:cdf|fit|inv|pdf|rnd|tat)|polyconf|polytool|prctile|princomp|ProbDist(?:Kernel|Parametric|UnivKernel|UnivParam)?|probplot|procrustes|qqplot|qrandset|qrandstream|quantile|randg|random|randsample|randtool|range|rangesearch|ranksum|rayl(?:cdf|fit|inv|pdf|rnd|stat)|rcoplot|refcurve|refline|regress|Regression(?:BaggedEnsemble|Ensemble|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|regstats|relieff|ridge|robustdemo|robustfit|rotatefactors|rowexch|rsmdemo|rstool|runstest|sampsizepwr|scatterhist|sequentialfs|signrank|signtest|silhouette|skewness|slicesample|sobolset|squareform|statget|statset|stepwise|stepwisefit|surfht|tabulate|tblread|tblwrite|tcdf|tdfread|tiedrank|tinv|tpdf|TreeBagger|treedisp|treefit|treeprune|treetest|treeval|trimmean|trnd|tstat|ttest|ttest2|unid(?:cdf|inv|pdf|rnd|stat)|unif(?:cdf|inv|it|pdf|rnd|stat)|vartest(?:2|n)?|wbl(?:cdf|fit|inv|like|pdf|rnd|stat)|wblplot|wishrnd|x2fx|xptread|zscore|ztest)\b/,
+a],["fun_tbx",/^\b(?:adapthisteq|analyze75info|analyze75read|applycform|applylut|axes2pix|bestblk|blockproc|bwarea|bwareaopen|bwboundaries|bwconncomp|bwconvhull|bwdist|bwdistgeodesic|bweuler|bwhitmiss|bwlabel|bwlabeln|bwmorph|bwpack|bwperim|bwselect|bwtraceboundary|bwulterode|bwunpack|checkerboard|col2im|colfilt|conndef|convmtx2|corner|cornermetric|corr2|cp2tform|cpcorr|cpselect|cpstruct2pairs|dct2|dctmtx|deconvblind|deconvlucy|deconvreg|deconvwnr|decorrstretch|demosaic|dicom(?:anon|dict|info|lookup|read|uid|write)|edge|edgetaper|entropy|entropyfilt|fan2para|fanbeam|findbounds|fliptform|freqz2|fsamp2|fspecial|ftrans2|fwind1|fwind2|getheight|getimage|getimagemodel|getline|getneighbors|getnhood|getpts|getrangefromclass|getrect|getsequence|gray2ind|graycomatrix|graycoprops|graydist|grayslice|graythresh|hdrread|hdrwrite|histeq|hough|houghlines|houghpeaks|iccfind|iccread|iccroot|iccwrite|idct2|ifanbeam|im2bw|im2col|im2double|im2int16|im2java2d|im2single|im2uint16|im2uint8|imabsdiff|imadd|imadjust|ImageAdapter|imageinfo|imagemodel|imapplymatrix|imattributes|imbothat|imclearborder|imclose|imcolormaptool|imcomplement|imcontour|imcontrast|imcrop|imdilate|imdisplayrange|imdistline|imdivide|imellipse|imerode|imextendedmax|imextendedmin|imfill|imfilter|imfindcircles|imfreehand|imfuse|imgca|imgcf|imgetfile|imhandles|imhist|imhmax|imhmin|imimposemin|imlincomb|imline|immagbox|immovie|immultiply|imnoise|imopen|imoverview|imoverviewpanel|impixel|impixelinfo|impixelinfoval|impixelregion|impixelregionpanel|implay|impoint|impoly|impositionrect|improfile|imputfile|impyramid|imreconstruct|imrect|imregconfig|imregionalmax|imregionalmin|imregister|imresize|imroi|imrotate|imsave|imscrollpanel|imshow|imshowpair|imsubtract|imtool|imtophat|imtransform|imview|ind2gray|ind2rgb|interfileinfo|interfileread|intlut|ippl|iptaddcallback|iptcheckconn|iptcheckhandle|iptcheckinput|iptcheckmap|iptchecknargin|iptcheckstrs|iptdemos|iptgetapi|iptGetPointerBehavior|iptgetpref|ipticondir|iptnum2ordinal|iptPointerManager|iptprefs|iptremovecallback|iptSetPointerBehavior|iptsetpref|iptwindowalign|iradon|isbw|isflat|isgray|isicc|isind|isnitf|isrgb|isrset|lab2double|lab2uint16|lab2uint8|label2rgb|labelmatrix|makecform|makeConstrainToRectFcn|makehdr|makelut|makeresampler|maketform|mat2gray|mean2|medfilt2|montage|nitfinfo|nitfread|nlfilter|normxcorr2|ntsc2rgb|openrset|ordfilt2|otf2psf|padarray|para2fan|phantom|poly2mask|psf2otf|qtdecomp|qtgetblk|qtsetblk|radon|rangefilt|reflect|regionprops|registration.metric.(?:MattesMutualInformation|MeanSquares)|registration.optimizer.(?:OnePlusOneEvolutionary|RegularStepGradientDescent)|rgb2gray|rgb2ntsc|rgb2ycbcr|roicolor|roifill|roifilt2|roipoly|rsetwrite|std2|stdfilt|strel|stretchlim|subimage|tformarray|tformfwd|tforminv|tonemap|translate|truesize|uintlut|viscircles|warp|watershed|whitepoint|wiener2|xyz2double|xyz2uint16|ycbcr2rgb)\b/,
+a],["fun_tbx",/^\b(?:bintprog|color|fgoalattain|fminbnd|fmincon|fminimax|fminsearch|fminunc|fseminf|fsolve|fzero|fzmult|gangstr|ktrlink|linprog|lsqcurvefit|lsqlin|lsqnonlin|lsqnonneg|optimget|optimset|optimtool|quadprog)\b/,a],["ident",/^[A-Za-z]\w*(?:\.[A-Za-z]\w*)*/,a]]),["matlab-identifiers"]);b.registerLangHandler(b.createSimpleLexer([],e),["matlab-operators"]);b.registerLangHandler(b.createSimpleLexer(c,d),["matlab"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-ml.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-ml.js
new file mode 100644
index 0000000..8ed2b0c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-ml.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["com",/^#(?:if[\t\n\r \xa0]+(?:[$_a-z][\w']*|``[^\t\n\r`]*(?:``|$))|else|endif|light)/i,null,"#"],["str",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])(?:'|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\n\r]*|\(\*[\S\s]*?\*\))/],["kwd",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/],
+["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],["pln",/^(?:[_a-z][\w']*[!#?]?|``[^\t\n\r`]*(?:``|$))/i],["pun",/^[^\w\t\n\r "'\xa0]+/]]),["fs","ml"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-mumps.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-mumps.js
new file mode 100644
index 0000000..8a6b3fd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-mumps.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:[^"]|\\.)*"/,null,'"']],[["com",/^;[^\n\r]*/,null,";"],["dec",/^\$(?:d|device|ec|ecode|es|estack|et|etrap|h|horolog|i|io|j|job|k|key|p|principal|q|quit|st|stack|s|storage|sy|system|t|test|tl|tlevel|tr|trestart|x|y|z[a-z]*|a|ascii|c|char|d|data|e|extract|f|find|fn|fnumber|g|get|j|justify|l|length|na|name|o|order|p|piece|ql|qlength|qs|qsubscript|q|query|r|random|re|reverse|s|select|st|stack|t|text|tr|translate|nan)\b/i,
+null],["kwd",/^(?:[^$]b|break|c|close|d|do|e|else|f|for|g|goto|h|halt|h|hang|i|if|j|job|k|kill|l|lock|m|merge|n|new|o|open|q|quit|r|read|s|set|tc|tcommit|tre|trestart|tro|trollback|ts|tstart|u|use|v|view|w|write|x|xecute)\b/i,null],["lit",/^[+-]?(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?/i],["pln",/^[a-z][^\W_]*/i],["pun",/^[^\w\t\n\r"$%;^\xa0]|_/]]),["mumps"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-n.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-n.js
new file mode 100644
index 0000000..27812a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-n.js
@@ -0,0 +1,4 @@
+var a=null;
+PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:'(?:[^\n\r'\\]|\\.)*'|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,a,'"'],["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,a,"#"],["pln",/^\s+/,a," \r\n\t\u00a0"]],[["str",/^@"(?:[^"]|"")*(?:"|$)/,a],["str",/^<#[^#>]*(?:#>|$)/,a],["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,a],["com",/^\/\/[^\n\r]*/,a],["com",/^\/\*[\S\s]*?(?:\*\/|$)/,
+a],["kwd",/^(?:abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield)\b/,
+a],["typ",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\b/,a],["lit",/^@[$_a-z][\w$@]*/i,a],["typ",/^@[A-Z]+[a-z][\w$@]*/,a],["pln",/^'?[$_a-z][\w$@]*/i,a],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,a,"0123456789"],["pun",/^.[^\s\w"-$'./@`]*/,a]]),["n","nemerle"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-pascal.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-pascal.js
new file mode 100644
index 0000000..8435fad
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-pascal.js
@@ -0,0 +1,3 @@
+var a=null;
+PR.registerLangHandler(PR.createSimpleLexer([["str",/^'(?:[^\n\r'\\]|\\.)*(?:'|$)/,a,"'"],["pln",/^\s+/,a," \r\n\t\u00a0"]],[["com",/^\(\*[\S\s]*?(?:\*\)|$)|^{[\S\s]*?(?:}|$)/,a],["kwd",/^(?:absolute|and|array|asm|assembler|begin|case|const|constructor|destructor|div|do|downto|else|end|external|for|forward|function|goto|if|implementation|in|inline|interface|interrupt|label|mod|not|object|of|or|packed|procedure|program|record|repeat|set|shl|shr|then|to|type|unit|until|uses|var|virtual|while|with|xor)\b/i,a],
+["lit",/^(?:true|false|self|nil)/i,a],["pln",/^[a-z][^\W_]*/i,a],["lit",/^(?:\$[\da-f]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)/i,a,"0123456789"],["pun",/^.[^\s\w$'./@]*/,a]]),["pascal"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-proto.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-proto.js
new file mode 100644
index 0000000..f006ad8
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-proto.js
@@ -0,0 +1 @@
+PR.registerLangHandler(PR.sourceDecorator({keywords:"bytes,default,double,enum,extend,extensions,false,group,import,max,message,option,optional,package,repeated,required,returns,rpc,service,syntax,to,true",types:/^(bool|(double|s?fixed|[su]?int)(32|64)|float|string)\b/,cStyleComments:!0}),["proto"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-r.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-r.js
new file mode 100644
index 0000000..99af8f8
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-r.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["str",/^'(?:[^'\\]|\\[\S\s])*(?:'|$)/,null,"'"]],[["com",/^#.*/],["kwd",/^(?:if|else|for|while|repeat|in|next|break|return|switch|function)(?![\w.])/],["lit",/^0[Xx][\dA-Fa-f]+([Pp]\d+)?[Li]?/],["lit",/^[+-]?(\d+(\.\d+)?|\.\d+)([Ee][+-]?\d+)?[Li]?/],["lit",/^(?:NULL|NA(?:_(?:integer|real|complex|character)_)?|Inf|TRUE|FALSE|NaN|\.\.(?:\.|\d+))(?![\w.])/],
+["pun",/^(?:<<?-|->>?|-|==|<=|>=|<|>|&&?|!=|\|\|?|[!*+/^]|%.*?%|[$=@~]|:{1,3}|[(),;?[\]{}])/],["pln",/^(?:[A-Za-z]+[\w.]*|\.[^\W\d][\w.]*)(?![\w.])/],["str",/^`.+`/]]),["r","s","R","S","Splus"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-rd.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-rd.js
new file mode 100644
index 0000000..7a7e43f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-rd.js
@@ -0,0 +1 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["com",/^%[^\n\r]*/,null,"%"]],[["lit",/^\\(?:cr|l?dots|R|tab)\b/],["kwd",/^\\[@-Za-z]+/],["kwd",/^#(?:ifn?def|endif)/],["pln",/^\\[{}]/],["pun",/^[()[\]{}]+/]]),["Rd","rd"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-scala.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-scala.js
new file mode 100644
index 0000000..3f97dba
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-scala.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:""(?:""?(?!")|[^"\\]|\\.)*"{0,3}|(?:[^\n\r"\\]|\\.)*"?)/,null,'"'],["lit",/^`(?:[^\n\r\\`]|\\.)*`?/,null,"`"],["pun",/^[!#%&(--:-@[-^{-~]+/,null,"!#%&()*+,-:;<=>?@[\\]^{|}~"]],[["str",/^'(?:[^\n\r'\\]|\\(?:'|[^\n\r']+))'/],["lit",/^'[$A-Z_a-z][\w$]*(?![\w$'])/],["kwd",/^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\b/],
+["lit",/^(?:true|false|null|this)\b/],["lit",/^(?:0(?:[0-7]+|x[\da-f]+)l?|(?:0|[1-9]\d*)(?:(?:\.\d+)?(?:e[+-]?\d+)?f?|l?)|\\.\d+(?:e[+-]?\d+)?f?)/i],["typ",/^[$_]*[A-Z][\d$A-Z_]*[a-z][\w$]*/],["pln",/^[$A-Z_a-z][\w$]*/],["com",/^\/(?:\/.*|\*(?:\/|\**[^*/])*(?:\*+\/?)?)/],["pun",/^(?:\.+|\/)/]]),["scala"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-sql.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-sql.js
new file mode 100644
index 0000000..8ec4280
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-sql.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')/,null,"\"'"]],[["com",/^(?:--[^\n\r]*|\/\*[\S\s]*?(?:\*\/|$))/],["kwd",/^(?:add|all|alter|and|any|apply|as|asc|authorization|backup|begin|between|break|browse|bulk|by|cascade|case|check|checkpoint|close|clustered|coalesce|collate|column|commit|compute|connect|constraint|contains|containstable|continue|convert|create|cross|current|current_date|current_time|current_timestamp|current_user|cursor|database|dbcc|deallocate|declare|default|delete|deny|desc|disk|distinct|distributed|double|drop|dummy|dump|else|end|errlvl|escape|except|exec|execute|exists|exit|fetch|file|fillfactor|following|for|foreign|freetext|freetexttable|from|full|function|goto|grant|group|having|holdlock|identity|identitycol|identity_insert|if|in|index|inner|insert|intersect|into|is|join|key|kill|left|like|lineno|load|match|matched|merge|natural|national|nocheck|nonclustered|nocycle|not|null|nullif|of|off|offsets|on|open|opendatasource|openquery|openrowset|openxml|option|or|order|outer|over|partition|percent|pivot|plan|preceding|precision|primary|print|proc|procedure|public|raiserror|read|readtext|reconfigure|references|replication|restore|restrict|return|revoke|right|rollback|rowcount|rowguidcol|rows?|rule|save|schema|select|session_user|set|setuser|shutdown|some|start|statistics|system_user|table|textsize|then|to|top|tran|transaction|trigger|truncate|tsequal|unbounded|union|unique|unpivot|update|updatetext|use|user|using|values|varying|view|waitfor|when|where|while|with|within|writetext|xml)(?=[^\w-]|$)/i,
+null],["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],["pln",/^[_a-z][\w-]*/i],["pun",/^[^\w\t\n\r "'\xa0][^\w\t\n\r "'+\xa0-]*/]]),["sql"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-tcl.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-tcl.js
new file mode 100644
index 0000000..490f562
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-tcl.js
@@ -0,0 +1,3 @@
+var a=null;
+PR.registerLangHandler(PR.createSimpleLexer([["opn",/^{+/,a,"{"],["clo",/^}+/,a,"}"],["com",/^#[^\n\r]*/,a,"#"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:after|append|apply|array|break|case|catch|continue|error|eval|exec|exit|expr|for|foreach|if|incr|info|proc|return|set|switch|trace|uplevel|upvar|while)\b/,a],["lit",/^[+-]?(?:[#0]x[\da-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[de][+-]?\d+)?)/i],["lit",
+/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[_a-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/i],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["tcl"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-tex.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-tex.js
new file mode 100644
index 0000000..dcfdadd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-tex.js
@@ -0,0 +1 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["com",/^%[^\n\r]*/,null,"%"]],[["kwd",/^\\[@-Za-z]+/],["kwd",/^\\./],["typ",/^[$&]/],["lit",/[+-]?(?:\.\d+|\d+(?:\.\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i],["pun",/^[()=[\]{}]+/]]),["latex","tex"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-vb.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-vb.js
new file mode 100644
index 0000000..ddde464
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-vb.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0\u2028\u2029]+/,null,"\t\n\r \u00a0\u2028\u2029"],["str",/^(?:["\u201c\u201d](?:[^"\u201c\u201d]|["\u201c\u201d]{2})(?:["\u201c\u201d]c|$)|["\u201c\u201d](?:[^"\u201c\u201d]|["\u201c\u201d]{2})*(?:["\u201c\u201d]|$))/i,null,'"\u201c\u201d'],["com",/^['\u2018\u2019](?:_(?:\r\n?|[^\r]?)|[^\n\r_\u2028\u2029])*/,null,"'\u2018\u2019"]],[["kwd",/^(?:addhandler|addressof|alias|and|andalso|ansi|as|assembly|auto|boolean|byref|byte|byval|call|case|catch|cbool|cbyte|cchar|cdate|cdbl|cdec|char|cint|class|clng|cobj|const|cshort|csng|cstr|ctype|date|decimal|declare|default|delegate|dim|directcast|do|double|each|else|elseif|end|endif|enum|erase|error|event|exit|finally|for|friend|function|get|gettype|gosub|goto|handles|if|implements|imports|in|inherits|integer|interface|is|let|lib|like|long|loop|me|mod|module|mustinherit|mustoverride|mybase|myclass|namespace|new|next|not|notinheritable|notoverridable|object|on|option|optional|or|orelse|overloads|overridable|overrides|paramarray|preserve|private|property|protected|public|raiseevent|readonly|redim|removehandler|resume|return|select|set|shadows|shared|short|single|static|step|stop|string|structure|sub|synclock|then|throw|to|try|typeof|unicode|until|variant|wend|when|while|with|withevents|writeonly|xor|endif|gosub|let|variant|wend)\b/i,
+null],["com",/^rem\b.*/i],["lit",/^(?:true\b|false\b|nothing\b|\d+(?:e[+-]?\d+[dfr]?|[dfilrs])?|(?:&h[\da-f]+|&o[0-7]+)[ils]?|\d*\.\d+(?:e[+-]?\d+)?[dfr]?|#\s+(?:\d+[/-]\d+[/-]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:am|pm))?)?|\d+:\d+(?::\d+)?(\s*(?:am|pm))?)\s+#)/i],["pln",/^(?:(?:[a-z]|_\w)\w*(?:\[[!#%&@]+])?|\[(?:[a-z]|_\w)\w*])/i],["pun",/^[^\w\t\n\r "'[\]\xa0\u2018\u2019\u201c\u201d\u2028\u2029]+/],["pun",/^(?:\[|])/]]),["vb","vbs"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-vhdl.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-vhdl.js
new file mode 100644
index 0000000..51f3017
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-vhdl.js
@@ -0,0 +1,3 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"]],[["str",/^(?:[box]?"(?:[^"]|"")*"|'.')/i],["com",/^--[^\n\r]*/],["kwd",/^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\w-]|$)/i,
+null],["typ",/^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\w-]|$)/i,null],["typ",/^'(?:active|ascending|base|delayed|driving|driving_value|event|high|image|instance_name|last_active|last_event|last_value|left|leftof|length|low|path_name|pos|pred|quiet|range|reverse_range|right|rightof|simple_name|stable|succ|transaction|val|value)(?=[^\w-]|$)/i,null],["lit",/^\d+(?:_\d+)*(?:#[\w.\\]+#(?:[+-]?\d+(?:_\d+)*)?|(?:\.\d+(?:_\d+)*)?(?:e[+-]?\d+(?:_\d+)*)?)/i],
+["pln",/^(?:[a-z]\w*|\\[^\\]*\\)/i],["pun",/^[^\w\t\n\r "'\xa0][^\w\t\n\r "'\xa0-]*/]]),["vhdl","vhd"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-wiki.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-wiki.js
new file mode 100644
index 0000000..96c1e34
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-wiki.js
@@ -0,0 +1,2 @@
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\d\t a-gi-z\xa0]+/,null,"\t \u00a0abcdefgijklmnopqrstuvwxyz0123456789"],["pun",/^[*=[\]^~]+/,null,"=*~^[]"]],[["lang-wiki.meta",/(?:^^|\r\n?|\n)(#[a-z]+)\b/],["lit",/^[A-Z][a-z][\da-z]+[A-Z][a-z][^\W_]+\b/],["lang-",/^{{{([\S\s]+?)}}}/],["lang-",/^`([^\n\r`]+)`/],["str",/^https?:\/\/[^\s#/?]*(?:\/[^\s#?]*)?(?:\?[^\s#]*)?(?:#\S*)?/i],["pln",/^(?:\r\n|[\S\s])[^\n\r#*=A-[^`h{~]*/]]),["wiki"]);
+PR.registerLangHandler(PR.createSimpleLexer([["kwd",/^#[a-z]+/i,null,"#"]],[]),["wiki.meta"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-xq.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-xq.js
new file mode 100644
index 0000000..e323ae3
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-xq.js
@@ -0,0 +1,3 @@
+PR.registerLangHandler(PR.createSimpleLexer([["var pln",/^\$[\w-]+/,null,"$"]],[["pln",/^[\s=][<>][\s=]/],["lit",/^@[\w-]+/],["tag",/^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["com",/^\(:[\S\s]*?:\)/],["pln",/^[(),/;[\]{}]$/],["str",/^(?:"(?:[^"\\{]|\\[\S\s])*(?:"|$)|'(?:[^'\\{]|\\[\S\s])*(?:'|$))/,null,"\"'"],["kwd",/^(?:xquery|where|version|variable|union|typeswitch|treat|to|then|text|stable|sortby|some|self|schema|satisfies|returns|return|ref|processing-instruction|preceding-sibling|preceding|precedes|parent|only|of|node|namespace|module|let|item|intersect|instance|in|import|if|function|for|follows|following-sibling|following|external|except|every|else|element|descending|descendant-or-self|descendant|define|default|declare|comment|child|cast|case|before|attribute|assert|ascending|as|ancestor-or-self|ancestor|after|eq|order|by|or|and|schema-element|document-node|node|at)\b/],
+["typ",/^(?:xs:yearMonthDuration|xs:unsignedLong|xs:time|xs:string|xs:short|xs:QName|xs:Name|xs:long|xs:integer|xs:int|xs:gYearMonth|xs:gYear|xs:gMonthDay|xs:gDay|xs:float|xs:duration|xs:double|xs:decimal|xs:dayTimeDuration|xs:dateTime|xs:date|xs:byte|xs:boolean|xs:anyURI|xf:yearMonthDuration)\b/,null],["fun pln",/^(?:xp:dereference|xinc:node-expand|xinc:link-references|xinc:link-expand|xhtml:restructure|xhtml:clean|xhtml:add-lists|xdmp:zip-manifest|xdmp:zip-get|xdmp:zip-create|xdmp:xquery-version|xdmp:word-convert|xdmp:with-namespaces|xdmp:version|xdmp:value|xdmp:user-roles|xdmp:user-last-login|xdmp:user|xdmp:url-encode|xdmp:url-decode|xdmp:uri-is-file|xdmp:uri-format|xdmp:uri-content-type|xdmp:unquote|xdmp:unpath|xdmp:triggers-database|xdmp:trace|xdmp:to-json|xdmp:tidy|xdmp:subbinary|xdmp:strftime|xdmp:spawn-in|xdmp:spawn|xdmp:sleep|xdmp:shutdown|xdmp:set-session-field|xdmp:set-response-encoding|xdmp:set-response-content-type|xdmp:set-response-code|xdmp:set-request-time-limit|xdmp:set|xdmp:servers|xdmp:server-status|xdmp:server-name|xdmp:server|xdmp:security-database|xdmp:security-assert|xdmp:schema-database|xdmp:save|xdmp:role-roles|xdmp:role|xdmp:rethrow|xdmp:restart|xdmp:request-timestamp|xdmp:request-status|xdmp:request-cancel|xdmp:request|xdmp:redirect-response|xdmp:random|xdmp:quote|xdmp:query-trace|xdmp:query-meters|xdmp:product-edition|xdmp:privilege-roles|xdmp:privilege|xdmp:pretty-print|xdmp:powerpoint-convert|xdmp:platform|xdmp:permission|xdmp:pdf-convert|xdmp:path|xdmp:octal-to-integer|xdmp:node-uri|xdmp:node-replace|xdmp:node-kind|xdmp:node-insert-child|xdmp:node-insert-before|xdmp:node-insert-after|xdmp:node-delete|xdmp:node-database|xdmp:mul64|xdmp:modules-root|xdmp:modules-database|xdmp:merging|xdmp:merge-cancel|xdmp:merge|xdmp:md5|xdmp:logout|xdmp:login|xdmp:log-level|xdmp:log|xdmp:lock-release|xdmp:lock-acquire|xdmp:load|xdmp:invoke-in|xdmp:invoke|xdmp:integer-to-octal|xdmp:integer-to-hex|xdmp:http-put|xdmp:http-post|xdmp:http-options|xdmp:http-head|xdmp:http-get|xdmp:http-delete|xdmp:hosts|xdmp:host-status|xdmp:host-name|xdmp:host|xdmp:hex-to-integer|xdmp:hash64|xdmp:hash32|xdmp:has-privilege|xdmp:groups|xdmp:group-serves|xdmp:group-servers|xdmp:group-name|xdmp:group-hosts|xdmp:group|xdmp:get-session-field-names|xdmp:get-session-field|xdmp:get-response-encoding|xdmp:get-response-code|xdmp:get-request-username|xdmp:get-request-user|xdmp:get-request-url|xdmp:get-request-protocol|xdmp:get-request-path|xdmp:get-request-method|xdmp:get-request-header-names|xdmp:get-request-header|xdmp:get-request-field-names|xdmp:get-request-field-filename|xdmp:get-request-field-content-type|xdmp:get-request-field|xdmp:get-request-client-certificate|xdmp:get-request-client-address|xdmp:get-request-body|xdmp:get-current-user|xdmp:get-current-roles|xdmp:get|xdmp:function-name|xdmp:function-module|xdmp:function|xdmp:from-json|xdmp:forests|xdmp:forest-status|xdmp:forest-restore|xdmp:forest-restart|xdmp:forest-name|xdmp:forest-delete|xdmp:forest-databases|xdmp:forest-counts|xdmp:forest-clear|xdmp:forest-backup|xdmp:forest|xdmp:filesystem-file|xdmp:filesystem-directory|xdmp:exists|xdmp:excel-convert|xdmp:eval-in|xdmp:eval|xdmp:estimate|xdmp:email|xdmp:element-content-type|xdmp:elapsed-time|xdmp:document-set-quality|xdmp:document-set-property|xdmp:document-set-properties|xdmp:document-set-permissions|xdmp:document-set-collections|xdmp:document-remove-properties|xdmp:document-remove-permissions|xdmp:document-remove-collections|xdmp:document-properties|xdmp:document-locks|xdmp:document-load|xdmp:document-insert|xdmp:document-get-quality|xdmp:document-get-properties|xdmp:document-get-permissions|xdmp:document-get-collections|xdmp:document-get|xdmp:document-forest|xdmp:document-delete|xdmp:document-add-properties|xdmp:document-add-permissions|xdmp:document-add-collections|xdmp:directory-properties|xdmp:directory-locks|xdmp:directory-delete|xdmp:directory-create|xdmp:directory|xdmp:diacritic-less|xdmp:describe|xdmp:default-permissions|xdmp:default-collections|xdmp:databases|xdmp:database-restore-validate|xdmp:database-restore-status|xdmp:database-restore-cancel|xdmp:database-restore|xdmp:database-name|xdmp:database-forests|xdmp:database-backup-validate|xdmp:database-backup-status|xdmp:database-backup-purge|xdmp:database-backup-cancel|xdmp:database-backup|xdmp:database|xdmp:collection-properties|xdmp:collection-locks|xdmp:collection-delete|xdmp:collation-canonical-uri|xdmp:castable-as|xdmp:can-grant-roles|xdmp:base64-encode|xdmp:base64-decode|xdmp:architecture|xdmp:apply|xdmp:amp-roles|xdmp:amp|xdmp:add64|xdmp:add-response-header|xdmp:access|trgr:trigger-set-recursive|trgr:trigger-set-permissions|trgr:trigger-set-name|trgr:trigger-set-module|trgr:trigger-set-event|trgr:trigger-set-description|trgr:trigger-remove-permissions|trgr:trigger-module|trgr:trigger-get-permissions|trgr:trigger-enable|trgr:trigger-disable|trgr:trigger-database-online-event|trgr:trigger-data-event|trgr:trigger-add-permissions|trgr:remove-trigger|trgr:property-content|trgr:pre-commit|trgr:post-commit|trgr:get-trigger-by-id|trgr:get-trigger|trgr:document-scope|trgr:document-content|trgr:directory-scope|trgr:create-trigger|trgr:collection-scope|trgr:any-property-content|thsr:set-entry|thsr:remove-term|thsr:remove-synonym|thsr:remove-entry|thsr:query-lookup|thsr:lookup|thsr:load|thsr:insert|thsr:expand|thsr:add-synonym|spell:suggest-detailed|spell:suggest|spell:remove-word|spell:make-dictionary|spell:load|spell:levenshtein-distance|spell:is-correct|spell:insert|spell:double-metaphone|spell:add-word|sec:users-collection|sec:user-set-roles|sec:user-set-password|sec:user-set-name|sec:user-set-description|sec:user-set-default-permissions|sec:user-set-default-collections|sec:user-remove-roles|sec:user-privileges|sec:user-get-roles|sec:user-get-description|sec:user-get-default-permissions|sec:user-get-default-collections|sec:user-doc-permissions|sec:user-doc-collections|sec:user-add-roles|sec:unprotect-collection|sec:uid-for-name|sec:set-realm|sec:security-version|sec:security-namespace|sec:security-installed|sec:security-collection|sec:roles-collection|sec:role-set-roles|sec:role-set-name|sec:role-set-description|sec:role-set-default-permissions|sec:role-set-default-collections|sec:role-remove-roles|sec:role-privileges|sec:role-get-roles|sec:role-get-description|sec:role-get-default-permissions|sec:role-get-default-collections|sec:role-doc-permissions|sec:role-doc-collections|sec:role-add-roles|sec:remove-user|sec:remove-role-from-users|sec:remove-role-from-role|sec:remove-role-from-privileges|sec:remove-role-from-amps|sec:remove-role|sec:remove-privilege|sec:remove-amp|sec:protect-collection|sec:privileges-collection|sec:privilege-set-roles|sec:privilege-set-name|sec:privilege-remove-roles|sec:privilege-get-roles|sec:privilege-add-roles|sec:priv-doc-permissions|sec:priv-doc-collections|sec:get-user-names|sec:get-unique-elem-id|sec:get-role-names|sec:get-role-ids|sec:get-privilege|sec:get-distinct-permissions|sec:get-collection|sec:get-amp|sec:create-user-with-role|sec:create-user|sec:create-role|sec:create-privilege|sec:create-amp|sec:collections-collection|sec:collection-set-permissions|sec:collection-remove-permissions|sec:collection-get-permissions|sec:collection-add-permissions|sec:check-admin|sec:amps-collection|sec:amp-set-roles|sec:amp-remove-roles|sec:amp-get-roles|sec:amp-doc-permissions|sec:amp-doc-collections|sec:amp-add-roles|search:unparse|search:suggest|search:snippet|search:search|search:resolve-nodes|search:resolve|search:remove-constraint|search:parse|search:get-default-options|search:estimate|search:check-options|prof:value|prof:reset|prof:report|prof:invoke|prof:eval|prof:enable|prof:disable|prof:allowed|ppt:clean|pki:template-set-request|pki:template-set-name|pki:template-set-key-type|pki:template-set-key-options|pki:template-set-description|pki:template-in-use|pki:template-get-version|pki:template-get-request|pki:template-get-name|pki:template-get-key-type|pki:template-get-key-options|pki:template-get-id|pki:template-get-description|pki:need-certificate|pki:is-temporary|pki:insert-trusted-certificates|pki:insert-template|pki:insert-signed-certificates|pki:insert-certificate-revocation-list|pki:get-trusted-certificate-ids|pki:get-template-ids|pki:get-template-certificate-authority|pki:get-template-by-name|pki:get-template|pki:get-pending-certificate-requests-xml|pki:get-pending-certificate-requests-pem|pki:get-pending-certificate-request|pki:get-certificates-for-template-xml|pki:get-certificates-for-template|pki:get-certificates|pki:get-certificate-xml|pki:get-certificate-pem|pki:get-certificate|pki:generate-temporary-certificate-if-necessary|pki:generate-temporary-certificate|pki:generate-template-certificate-authority|pki:generate-certificate-request|pki:delete-template|pki:delete-certificate|pki:create-template|pdf:make-toc|pdf:insert-toc-headers|pdf:get-toc|pdf:clean|p:status-transition|p:state-transition|p:remove|p:pipelines|p:insert|p:get-by-id|p:get|p:execute|p:create|p:condition|p:collection|p:action|ooxml:runs-merge|ooxml:package-uris|ooxml:package-parts-insert|ooxml:package-parts|msword:clean|mcgm:polygon|mcgm:point|mcgm:geospatial-query-from-elements|mcgm:geospatial-query|mcgm:circle|math:tanh|math:tan|math:sqrt|math:sinh|math:sin|math:pow|math:modf|math:log10|math:log|math:ldexp|math:frexp|math:fmod|math:floor|math:fabs|math:exp|math:cosh|math:cos|math:ceil|math:atan2|math:atan|math:asin|math:acos|map:put|map:map|map:keys|map:get|map:delete|map:count|map:clear|lnk:to|lnk:remove|lnk:insert|lnk:get|lnk:from|lnk:create|kml:polygon|kml:point|kml:interior-polygon|kml:geospatial-query-from-elements|kml:geospatial-query|kml:circle|kml:box|gml:polygon|gml:point|gml:interior-polygon|gml:geospatial-query-from-elements|gml:geospatial-query|gml:circle|gml:box|georss:point|georss:geospatial-query|georss:circle|geo:polygon|geo:point|geo:interior-polygon|geo:geospatial-query-from-elements|geo:geospatial-query|geo:circle|geo:box|fn:zero-or-one|fn:years-from-duration|fn:year-from-dateTime|fn:year-from-date|fn:upper-case|fn:unordered|fn:true|fn:translate|fn:trace|fn:tokenize|fn:timezone-from-time|fn:timezone-from-dateTime|fn:timezone-from-date|fn:sum|fn:subtract-dateTimes-yielding-yearMonthDuration|fn:subtract-dateTimes-yielding-dayTimeDuration|fn:substring-before|fn:substring-after|fn:substring|fn:subsequence|fn:string-to-codepoints|fn:string-pad|fn:string-length|fn:string-join|fn:string|fn:static-base-uri|fn:starts-with|fn:seconds-from-time|fn:seconds-from-duration|fn:seconds-from-dateTime|fn:round-half-to-even|fn:round|fn:root|fn:reverse|fn:resolve-uri|fn:resolve-QName|fn:replace|fn:remove|fn:QName|fn:prefix-from-QName|fn:position|fn:one-or-more|fn:number|fn:not|fn:normalize-unicode|fn:normalize-space|fn:node-name|fn:node-kind|fn:nilled|fn:namespace-uri-from-QName|fn:namespace-uri-for-prefix|fn:namespace-uri|fn:name|fn:months-from-duration|fn:month-from-dateTime|fn:month-from-date|fn:minutes-from-time|fn:minutes-from-duration|fn:minutes-from-dateTime|fn:min|fn:max|fn:matches|fn:lower-case|fn:local-name-from-QName|fn:local-name|fn:last|fn:lang|fn:iri-to-uri|fn:insert-before|fn:index-of|fn:in-scope-prefixes|fn:implicit-timezone|fn:idref|fn:id|fn:hours-from-time|fn:hours-from-duration|fn:hours-from-dateTime|fn:floor|fn:false|fn:expanded-QName|fn:exists|fn:exactly-one|fn:escape-uri|fn:escape-html-uri|fn:error|fn:ends-with|fn:encode-for-uri|fn:empty|fn:document-uri|fn:doc-available|fn:doc|fn:distinct-values|fn:distinct-nodes|fn:default-collation|fn:deep-equal|fn:days-from-duration|fn:day-from-dateTime|fn:day-from-date|fn:data|fn:current-time|fn:current-dateTime|fn:current-date|fn:count|fn:contains|fn:concat|fn:compare|fn:collection|fn:codepoints-to-string|fn:codepoint-equal|fn:ceiling|fn:boolean|fn:base-uri|fn:avg|fn:adjust-time-to-timezone|fn:adjust-dateTime-to-timezone|fn:adjust-date-to-timezone|fn:abs|feed:unsubscribe|feed:subscription|feed:subscribe|feed:request|feed:item|feed:description|excel:clean|entity:enrich|dom:set-pipelines|dom:set-permissions|dom:set-name|dom:set-evaluation-context|dom:set-domain-scope|dom:set-description|dom:remove-pipeline|dom:remove-permissions|dom:remove|dom:get|dom:evaluation-context|dom:domains|dom:domain-scope|dom:create|dom:configuration-set-restart-user|dom:configuration-set-permissions|dom:configuration-set-evaluation-context|dom:configuration-set-default-domain|dom:configuration-get|dom:configuration-create|dom:collection|dom:add-pipeline|dom:add-permissions|dls:retention-rules|dls:retention-rule-remove|dls:retention-rule-insert|dls:retention-rule|dls:purge|dls:node-expand|dls:link-references|dls:link-expand|dls:documents-query|dls:document-versions-query|dls:document-version-uri|dls:document-version-query|dls:document-version-delete|dls:document-version-as-of|dls:document-version|dls:document-update|dls:document-unmanage|dls:document-set-quality|dls:document-set-property|dls:document-set-properties|dls:document-set-permissions|dls:document-set-collections|dls:document-retention-rules|dls:document-remove-properties|dls:document-remove-permissions|dls:document-remove-collections|dls:document-purge|dls:document-manage|dls:document-is-managed|dls:document-insert-and-manage|dls:document-include-query|dls:document-history|dls:document-get-permissions|dls:document-extract-part|dls:document-delete|dls:document-checkout-status|dls:document-checkout|dls:document-checkin|dls:document-add-properties|dls:document-add-permissions|dls:document-add-collections|dls:break-checkout|dls:author-query|dls:as-of-query|dbk:convert|dbg:wait|dbg:value|dbg:stopped|dbg:stop|dbg:step|dbg:status|dbg:stack|dbg:out|dbg:next|dbg:line|dbg:invoke|dbg:function|dbg:finish|dbg:expr|dbg:eval|dbg:disconnect|dbg:detach|dbg:continue|dbg:connect|dbg:clear|dbg:breakpoints|dbg:break|dbg:attached|dbg:attach|cvt:save-converted-documents|cvt:part-uri|cvt:destination-uri|cvt:basepath|cvt:basename|cts:words|cts:word-query-weight|cts:word-query-text|cts:word-query-options|cts:word-query|cts:word-match|cts:walk|cts:uris|cts:uri-match|cts:train|cts:tokenize|cts:thresholds|cts:stem|cts:similar-query-weight|cts:similar-query-nodes|cts:similar-query|cts:shortest-distance|cts:search|cts:score|cts:reverse-query-weight|cts:reverse-query-nodes|cts:reverse-query|cts:remainder|cts:registered-query-weight|cts:registered-query-options|cts:registered-query-ids|cts:registered-query|cts:register|cts:query|cts:quality|cts:properties-query-query|cts:properties-query|cts:polygon-vertices|cts:polygon|cts:point-longitude|cts:point-latitude|cts:point|cts:or-query-queries|cts:or-query|cts:not-query-weight|cts:not-query-query|cts:not-query|cts:near-query-weight|cts:near-query-queries|cts:near-query-options|cts:near-query-distance|cts:near-query|cts:highlight|cts:geospatial-co-occurrences|cts:frequency|cts:fitness|cts:field-words|cts:field-word-query-weight|cts:field-word-query-text|cts:field-word-query-options|cts:field-word-query-field-name|cts:field-word-query|cts:field-word-match|cts:entity-highlight|cts:element-words|cts:element-word-query-weight|cts:element-word-query-text|cts:element-word-query-options|cts:element-word-query-element-name|cts:element-word-query|cts:element-word-match|cts:element-values|cts:element-value-ranges|cts:element-value-query-weight|cts:element-value-query-text|cts:element-value-query-options|cts:element-value-query-element-name|cts:element-value-query|cts:element-value-match|cts:element-value-geospatial-co-occurrences|cts:element-value-co-occurrences|cts:element-range-query-weight|cts:element-range-query-value|cts:element-range-query-options|cts:element-range-query-operator|cts:element-range-query-element-name|cts:element-range-query|cts:element-query-query|cts:element-query-element-name|cts:element-query|cts:element-pair-geospatial-values|cts:element-pair-geospatial-value-match|cts:element-pair-geospatial-query-weight|cts:element-pair-geospatial-query-region|cts:element-pair-geospatial-query-options|cts:element-pair-geospatial-query-longitude-name|cts:element-pair-geospatial-query-latitude-name|cts:element-pair-geospatial-query-element-name|cts:element-pair-geospatial-query|cts:element-pair-geospatial-boxes|cts:element-geospatial-values|cts:element-geospatial-value-match|cts:element-geospatial-query-weight|cts:element-geospatial-query-region|cts:element-geospatial-query-options|cts:element-geospatial-query-element-name|cts:element-geospatial-query|cts:element-geospatial-boxes|cts:element-child-geospatial-values|cts:element-child-geospatial-value-match|cts:element-child-geospatial-query-weight|cts:element-child-geospatial-query-region|cts:element-child-geospatial-query-options|cts:element-child-geospatial-query-element-name|cts:element-child-geospatial-query-child-name|cts:element-child-geospatial-query|cts:element-child-geospatial-boxes|cts:element-attribute-words|cts:element-attribute-word-query-weight|cts:element-attribute-word-query-text|cts:element-attribute-word-query-options|cts:element-attribute-word-query-element-name|cts:element-attribute-word-query-attribute-name|cts:element-attribute-word-query|cts:element-attribute-word-match|cts:element-attribute-values|cts:element-attribute-value-ranges|cts:element-attribute-value-query-weight|cts:element-attribute-value-query-text|cts:element-attribute-value-query-options|cts:element-attribute-value-query-element-name|cts:element-attribute-value-query-attribute-name|cts:element-attribute-value-query|cts:element-attribute-value-match|cts:element-attribute-value-geospatial-co-occurrences|cts:element-attribute-value-co-occurrences|cts:element-attribute-range-query-weight|cts:element-attribute-range-query-value|cts:element-attribute-range-query-options|cts:element-attribute-range-query-operator|cts:element-attribute-range-query-element-name|cts:element-attribute-range-query-attribute-name|cts:element-attribute-range-query|cts:element-attribute-pair-geospatial-values|cts:element-attribute-pair-geospatial-value-match|cts:element-attribute-pair-geospatial-query-weight|cts:element-attribute-pair-geospatial-query-region|cts:element-attribute-pair-geospatial-query-options|cts:element-attribute-pair-geospatial-query-longitude-name|cts:element-attribute-pair-geospatial-query-latitude-name|cts:element-attribute-pair-geospatial-query-element-name|cts:element-attribute-pair-geospatial-query|cts:element-attribute-pair-geospatial-boxes|cts:document-query-uris|cts:document-query|cts:distance|cts:directory-query-uris|cts:directory-query-depth|cts:directory-query|cts:destination|cts:deregister|cts:contains|cts:confidence|cts:collections|cts:collection-query-uris|cts:collection-query|cts:collection-match|cts:classify|cts:circle-radius|cts:circle-center|cts:circle|cts:box-west|cts:box-south|cts:box-north|cts:box-east|cts:box|cts:bearing|cts:arc-intersection|cts:and-query-queries|cts:and-query-options|cts:and-query|cts:and-not-query-positive-query|cts:and-not-query-negative-query|cts:and-not-query|css:get|css:convert|cpf:success|cpf:failure|cpf:document-set-state|cpf:document-set-processing-status|cpf:document-set-last-updated|cpf:document-set-error|cpf:document-get-state|cpf:document-get-processing-status|cpf:document-get-last-updated|cpf:document-get-error|cpf:check-transition|alert:spawn-matching-actions|alert:rule-user-id-query|alert:rule-set-user-id|alert:rule-set-query|alert:rule-set-options|alert:rule-set-name|alert:rule-set-description|alert:rule-set-action|alert:rule-remove|alert:rule-name-query|alert:rule-insert|alert:rule-id-query|alert:rule-get-user-id|alert:rule-get-query|alert:rule-get-options|alert:rule-get-name|alert:rule-get-id|alert:rule-get-description|alert:rule-get-action|alert:rule-action-query|alert:remove-triggers|alert:make-rule|alert:make-log-action|alert:make-config|alert:make-action|alert:invoke-matching-actions|alert:get-my-rules|alert:get-all-rules|alert:get-actions|alert:find-matching-rules|alert:create-triggers|alert:config-set-uri|alert:config-set-trigger-ids|alert:config-set-options|alert:config-set-name|alert:config-set-description|alert:config-set-cpf-domain-names|alert:config-set-cpf-domain-ids|alert:config-insert|alert:config-get-uri|alert:config-get-trigger-ids|alert:config-get-options|alert:config-get-name|alert:config-get-id|alert:config-get-description|alert:config-get-cpf-domain-names|alert:config-get-cpf-domain-ids|alert:config-get|alert:config-delete|alert:action-set-options|alert:action-set-name|alert:action-set-module-root|alert:action-set-module-db|alert:action-set-module|alert:action-set-description|alert:action-remove|alert:action-insert|alert:action-get-options|alert:action-get-name|alert:action-get-module-root|alert:action-get-module-db|alert:action-get-module|alert:action-get-description|zero-or-one|years-from-duration|year-from-dateTime|year-from-date|upper-case|unordered|true|translate|trace|tokenize|timezone-from-time|timezone-from-dateTime|timezone-from-date|sum|subtract-dateTimes-yielding-yearMonthDuration|subtract-dateTimes-yielding-dayTimeDuration|substring-before|substring-after|substring|subsequence|string-to-codepoints|string-pad|string-length|string-join|string|static-base-uri|starts-with|seconds-from-time|seconds-from-duration|seconds-from-dateTime|round-half-to-even|round|root|reverse|resolve-uri|resolve-QName|replace|remove|QName|prefix-from-QName|position|one-or-more|number|not|normalize-unicode|normalize-space|node-name|node-kind|nilled|namespace-uri-from-QName|namespace-uri-for-prefix|namespace-uri|name|months-from-duration|month-from-dateTime|month-from-date|minutes-from-time|minutes-from-duration|minutes-from-dateTime|min|max|matches|lower-case|local-name-from-QName|local-name|last|lang|iri-to-uri|insert-before|index-of|in-scope-prefixes|implicit-timezone|idref|id|hours-from-time|hours-from-duration|hours-from-dateTime|floor|false|expanded-QName|exists|exactly-one|escape-uri|escape-html-uri|error|ends-with|encode-for-uri|empty|document-uri|doc-available|doc|distinct-values|distinct-nodes|default-collation|deep-equal|days-from-duration|day-from-dateTime|day-from-date|data|current-time|current-dateTime|current-date|count|contains|concat|compare|collection|codepoints-to-string|codepoint-equal|ceiling|boolean|base-uri|avg|adjust-time-to-timezone|adjust-dateTime-to-timezone|adjust-date-to-timezone|abs)\b/],
+["pln",/^[\w:-]+/],["pln",/^[\t\n\r \xa0]+/]]),["xq","xquery"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-yaml.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-yaml.js
new file mode 100644
index 0000000..c38729b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/lang-yaml.js
@@ -0,0 +1,2 @@
+var a=null;
+PR.registerLangHandler(PR.createSimpleLexer([["pun",/^[:>?|]+/,a,":|>?"],["dec",/^%(?:YAML|TAG)[^\n\r#]+/,a,"%"],["typ",/^&\S+/,a,"&"],["typ",/^!\S*/,a,"!"],["str",/^"(?:[^"\\]|\\.)*(?:"|$)/,a,'"'],["str",/^'(?:[^']|'')*(?:'|$)/,a,"'"],["com",/^#[^\n\r]*/,a,"#"],["pln",/^\s+/,a," \t\r\n"]],[["dec",/^(?:---|\.\.\.)(?:[\n\r]|$)/],["pun",/^-/],["kwd",/^\w+:[\n\r ]/],["pln",/^\w+/]]),["yaml","yml"]);
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/prettify.css b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/prettify.css
new file mode 100644
index 0000000..d44b3a2
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/prettify.css
@@ -0,0 +1 @@
+.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/prettify.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/prettify.js
new file mode 100644
index 0000000..7b99049
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/prettify.js
@@ -0,0 +1,30 @@
+!function(){var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
+(function(){function S(a){function d(e){var b=e.charCodeAt(0);if(b!==92)return b;var a=e.charAt(1);return(b=r[a])?b:"0"<=a&&a<="7"?parseInt(e.substring(1),8):a==="u"||a==="x"?parseInt(e.substring(2),16):e.charCodeAt(1)}function g(e){if(e<32)return(e<16?"\\x0":"\\x")+e.toString(16);e=String.fromCharCode(e);return e==="\\"||e==="-"||e==="]"||e==="^"?"\\"+e:e}function b(e){var b=e.substring(1,e.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),e=[],a=
+b[0]==="^",c=["["];a&&c.push("^");for(var a=a?1:0,f=b.length;a<f;++a){var h=b[a];if(/\\[bdsw]/i.test(h))c.push(h);else{var h=d(h),l;a+2<f&&"-"===b[a+1]?(l=d(b[a+2]),a+=2):l=h;e.push([h,l]);l<65||h>122||(l<65||h>90||e.push([Math.max(65,h)|32,Math.min(l,90)|32]),l<97||h>122||e.push([Math.max(97,h)&-33,Math.min(l,122)&-33]))}}e.sort(function(e,a){return e[0]-a[0]||a[1]-e[1]});b=[];f=[];for(a=0;a<e.length;++a)h=e[a],h[0]<=f[1]+1?f[1]=Math.max(f[1],h[1]):b.push(f=h);for(a=0;a<b.length;++a)h=b[a],c.push(g(h[0])),
+h[1]>h[0]&&(h[1]+1>h[0]&&c.push("-"),c.push(g(h[1])));c.push("]");return c.join("")}function s(e){for(var a=e.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),c=a.length,d=[],f=0,h=0;f<c;++f){var l=a[f];l==="("?++h:"\\"===l.charAt(0)&&(l=+l.substring(1))&&(l<=h?d[l]=-1:a[f]=g(l))}for(f=1;f<d.length;++f)-1===d[f]&&(d[f]=++x);for(h=f=0;f<c;++f)l=a[f],l==="("?(++h,d[h]||(a[f]="(?:")):"\\"===l.charAt(0)&&(l=+l.substring(1))&&l<=h&&
+(a[f]="\\"+d[l]);for(f=0;f<c;++f)"^"===a[f]&&"^"!==a[f+1]&&(a[f]="");if(e.ignoreCase&&m)for(f=0;f<c;++f)l=a[f],e=l.charAt(0),l.length>=2&&e==="["?a[f]=b(l):e!=="\\"&&(a[f]=l.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return a.join("")}for(var x=0,m=!1,j=!1,k=0,c=a.length;k<c;++k){var i=a[k];if(i.ignoreCase)j=!0;else if(/[a-z]/i.test(i.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){m=!0;j=!1;break}}for(var r={b:8,t:9,n:10,v:11,
+f:12,r:13},n=[],k=0,c=a.length;k<c;++k){i=a[k];if(i.global||i.multiline)throw Error(""+i);n.push("(?:"+s(i)+")")}return RegExp(n.join("|"),j?"gi":"g")}function T(a,d){function g(a){var c=a.nodeType;if(c==1){if(!b.test(a.className)){for(c=a.firstChild;c;c=c.nextSibling)g(c);c=a.nodeName.toLowerCase();if("br"===c||"li"===c)s[j]="\n",m[j<<1]=x++,m[j++<<1|1]=a}}else if(c==3||c==4)c=a.nodeValue,c.length&&(c=d?c.replace(/\r\n?/g,"\n"):c.replace(/[\t\n\r ]+/g," "),s[j]=c,m[j<<1]=x,x+=c.length,m[j++<<1|1]=
+a)}var b=/(?:^|\s)nocode(?:\s|$)/,s=[],x=0,m=[],j=0;g(a);return{a:s.join("").replace(/\n$/,""),d:m}}function H(a,d,g,b){d&&(a={a:d,e:a},g(a),b.push.apply(b,a.g))}function U(a){for(var d=void 0,g=a.firstChild;g;g=g.nextSibling)var b=g.nodeType,d=b===1?d?a:g:b===3?V.test(g.nodeValue)?a:d:d;return d===a?void 0:d}function C(a,d){function g(a){for(var j=a.e,k=[j,"pln"],c=0,i=a.a.match(s)||[],r={},n=0,e=i.length;n<e;++n){var z=i[n],w=r[z],t=void 0,f;if(typeof w==="string")f=!1;else{var h=b[z.charAt(0)];
+if(h)t=z.match(h[1]),w=h[0];else{for(f=0;f<x;++f)if(h=d[f],t=z.match(h[1])){w=h[0];break}t||(w="pln")}if((f=w.length>=5&&"lang-"===w.substring(0,5))&&!(t&&typeof t[1]==="string"))f=!1,w="src";f||(r[z]=w)}h=c;c+=z.length;if(f){f=t[1];var l=z.indexOf(f),B=l+f.length;t[2]&&(B=z.length-t[2].length,l=B-f.length);w=w.substring(5);H(j+h,z.substring(0,l),g,k);H(j+h+l,f,I(w,f),k);H(j+h+B,z.substring(B),g,k)}else k.push(j+h,w)}a.g=k}var b={},s;(function(){for(var g=a.concat(d),j=[],k={},c=0,i=g.length;c<i;++c){var r=
+g[c],n=r[3];if(n)for(var e=n.length;--e>=0;)b[n.charAt(e)]=r;r=r[1];n=""+r;k.hasOwnProperty(n)||(j.push(r),k[n]=q)}j.push(/[\S\s]/);s=S(j)})();var x=d.length;return g}function v(a){var d=[],g=[];a.tripleQuotedStrings?d.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?d.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
+q,"'\"`"]):d.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&g.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var b=a.hashComments;b&&(a.cStyleComments?(b>1?d.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):d.push(["com",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),g.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,q])):d.push(["com",
+/^#[^\n\r]*/,q,"#"]));a.cStyleComments&&(g.push(["com",/^\/\/[^\n\r]*/,q]),g.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));if(b=a.regexLiterals){var s=(b=b>1?"":"\n\r")?".":"[\\S\\s]";g.push(["lang-regex",RegExp("^(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*("+("/(?=[^/*"+b+"])(?:[^/\\x5B\\x5C"+b+"]|\\x5C"+s+"|\\x5B(?:[^\\x5C\\x5D"+b+"]|\\x5C"+
+s+")*(?:\\x5D|$))+/")+")")])}(b=a.types)&&g.push(["typ",b]);b=(""+a.keywords).replace(/^ | $/g,"");b.length&&g.push(["kwd",RegExp("^(?:"+b.replace(/[\s,]+/g,"|")+")\\b"),q]);d.push(["pln",/^\s+/,q," \r\n\t\u00a0"]);b="^.[^\\s\\w.$@'\"`/\\\\]*";a.regexLiterals&&(b+="(?!s*/)");g.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,
+q],["pun",RegExp(b),q]);return C(d,g)}function J(a,d,g){function b(a){var c=a.nodeType;if(c==1&&!x.test(a.className))if("br"===a.nodeName)s(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((c==3||c==4)&&g){var d=a.nodeValue,i=d.match(m);if(i)c=d.substring(0,i.index),a.nodeValue=c,(d=d.substring(i.index+i[0].length))&&a.parentNode.insertBefore(j.createTextNode(d),a.nextSibling),s(a),c||a.parentNode.removeChild(a)}}function s(a){function b(a,c){var d=
+c?a.cloneNode(!1):a,e=a.parentNode;if(e){var e=b(e,1),g=a.nextSibling;e.appendChild(d);for(var i=g;i;i=g)g=i.nextSibling,e.appendChild(i)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),d;(d=a.parentNode)&&d.nodeType===1;)a=d;c.push(a)}for(var x=/(?:^|\s)nocode(?:\s|$)/,m=/\r\n?|\n/,j=a.ownerDocument,k=j.createElement("li");a.firstChild;)k.appendChild(a.firstChild);for(var c=[k],i=0;i<c.length;++i)b(c[i]);d===(d|0)&&c[0].setAttribute("value",d);var r=j.createElement("ol");
+r.className="linenums";for(var d=Math.max(0,d-1|0)||0,i=0,n=c.length;i<n;++i)k=c[i],k.className="L"+(i+d)%10,k.firstChild||k.appendChild(j.createTextNode("\u00a0")),r.appendChild(k);a.appendChild(r)}function p(a,d){for(var g=d.length;--g>=0;){var b=d[g];F.hasOwnProperty(b)?D.console&&console.warn("cannot override language handler %s",b):F[b]=a}}function I(a,d){if(!a||!F.hasOwnProperty(a))a=/^\s*</.test(d)?"default-markup":"default-code";return F[a]}function K(a){var d=a.h;try{var g=T(a.c,a.i),b=g.a;
+a.a=b;a.d=g.d;a.e=0;I(d,b)(a);var s=/\bMSIE\s(\d+)/.exec(navigator.userAgent),s=s&&+s[1]<=8,d=/\n/g,x=a.a,m=x.length,g=0,j=a.d,k=j.length,b=0,c=a.g,i=c.length,r=0;c[i]=m;var n,e;for(e=n=0;e<i;)c[e]!==c[e+2]?(c[n++]=c[e++],c[n++]=c[e++]):e+=2;i=n;for(e=n=0;e<i;){for(var p=c[e],w=c[e+1],t=e+2;t+2<=i&&c[t+1]===w;)t+=2;c[n++]=p;c[n++]=w;e=t}c.length=n;var f=a.c,h;if(f)h=f.style.display,f.style.display="none";try{for(;b<k;){var l=j[b+2]||m,B=c[r+2]||m,t=Math.min(l,B),A=j[b+1],G;if(A.nodeType!==1&&(G=x.substring(g,
+t))){s&&(G=G.replace(d,"\r"));A.nodeValue=G;var L=A.ownerDocument,o=L.createElement("span");o.className=c[r+1];var v=A.parentNode;v.replaceChild(o,A);o.appendChild(A);g<l&&(j[b+1]=A=L.createTextNode(x.substring(t,l)),v.insertBefore(A,o.nextSibling))}g=t;g>=l&&(b+=2);g>=B&&(r+=2)}}finally{if(f)f.style.display=h}}catch(u){D.console&&console.log(u&&u.stack||u)}}var D=window,y=["break,continue,do,else,for,if,return,while"],E=[[y,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
+"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],M=[E,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],N=[E,"abstract,assert,boolean,byte,extends,final,finally,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"],
+O=[N,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,internal,into,is,let,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where"],E=[E,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],P=[y,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
+Q=[y,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],W=[y,"as,assert,const,copy,drop,enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv,pub,pure,ref,self,static,struct,true,trait,type,unsafe,use"],y=[y,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],R=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/,
+V=/\S/,X=v({keywords:[M,O,E,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",P,Q,y],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),F={};p(X,["default-code"]);p(C([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",
+/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);p(C([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],
+["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);p(C([],[["atv",/^[\S\s]+/]]),["uq.val"]);p(v({keywords:M,hashComments:!0,cStyleComments:!0,types:R}),["c","cc","cpp","cxx","cyc","m"]);p(v({keywords:"null,true,false"}),["json"]);p(v({keywords:O,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:R}),
+["cs"]);p(v({keywords:N,cStyleComments:!0}),["java"]);p(v({keywords:y,hashComments:!0,multiLineStrings:!0}),["bash","bsh","csh","sh"]);p(v({keywords:P,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py","python"]);p(v({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:2}),["perl","pl","pm"]);p(v({keywords:Q,
+hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb","ruby"]);p(v({keywords:E,cStyleComments:!0,regexLiterals:!0}),["javascript","js"]);p(v({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);p(v({keywords:W,cStyleComments:!0,multilineStrings:!0}),["rc","rs","rust"]);
+p(C([],[["str",/^[\S\s]+/]]),["regex"]);var Y=D.PR={createSimpleLexer:C,registerLangHandler:p,sourceDecorator:v,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ",prettyPrintOne:D.prettyPrintOne=function(a,d,g){var b=document.createElement("div");b.innerHTML="<pre>"+a+"</pre>";b=b.firstChild;g&&J(b,g,!0);K({h:d,j:g,c:b,i:1});
+return b.innerHTML},prettyPrint:D.prettyPrint=function(a,d){function g(){for(var b=D.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;i<p.length&&c.now()<b;i++){for(var d=p[i],j=h,k=d;k=k.previousSibling;){var m=k.nodeType,o=(m===7||m===8)&&k.nodeValue;if(o?!/^\??prettify\b/.test(o):m!==3||/\S/.test(k.nodeValue))break;if(o){j={};o.replace(/\b(\w+)=([\w%+\-.:]+)/g,function(a,b,c){j[b]=c});break}}k=d.className;if((j!==h||e.test(k))&&!v.test(k)){m=!1;for(o=d.parentNode;o;o=o.parentNode)if(f.test(o.tagName)&&
+o.className&&e.test(o.className)){m=!0;break}if(!m){d.className+=" prettyprinted";m=j.lang;if(!m){var m=k.match(n),y;if(!m&&(y=U(d))&&t.test(y.tagName))m=y.className.match(n);m&&(m=m[1])}if(w.test(d.tagName))o=1;else var o=d.currentStyle,u=s.defaultView,o=(o=o?o.whiteSpace:u&&u.getComputedStyle?u.getComputedStyle(d,q).getPropertyValue("white-space"):0)&&"pre"===o.substring(0,3);u=j.linenums;if(!(u=u==="true"||+u))u=(u=k.match(/\blinenums\b(?::(\d+))?/))?u[1]&&u[1].length?+u[1]:!0:!1;u&&J(d,u,o);r=
+{h:m,c:d,j:u,i:o};K(r)}}}i<p.length?setTimeout(g,250):"function"===typeof a&&a()}for(var b=d||document.body,s=b.ownerDocument||document,b=[b.getElementsByTagName("pre"),b.getElementsByTagName("code"),b.getElementsByTagName("xmp")],p=[],m=0;m<b.length;++m)for(var j=0,k=b[m].length;j<k;++j)p.push(b[m][j]);var b=q,c=Date;c.now||(c={now:function(){return+new Date}});var i=0,r,n=/\blang(?:uage)?-([\w.]+)(?!\S)/,e=/\bprettyprint\b/,v=/\bprettyprinted\b/,w=/pre|xmp/i,t=/^code$/i,f=/^(?:pre|code|xmp)$/i,
+h={};g()}};typeof define==="function"&&define.amd&&define("google-code-prettify",[],function(){return Y})})();}()
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/run_prettify.js b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/run_prettify.js
new file mode 100644
index 0000000..9eb3e16
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/run_prettify.js
@@ -0,0 +1,34 @@
+!function(){var r=null;
+(function(){function X(e){function j(){try{J.doScroll("left")}catch(e){P(j,50);return}w("poll")}function w(j){if(!(j.type=="readystatechange"&&x.readyState!="complete")&&((j.type=="load"?n:x)[z](i+j.type,w,!1),!m&&(m=!0)))e.call(n,j.type||j)}var Y=x.addEventListener,m=!1,C=!0,t=Y?"addEventListener":"attachEvent",z=Y?"removeEventListener":"detachEvent",i=Y?"":"on";if(x.readyState=="complete")e.call(n,"lazy");else{if(x.createEventObject&&J.doScroll){try{C=!n.frameElement}catch(A){}C&&j()}x[t](i+"DOMContentLoaded",
+w,!1);x[t](i+"readystatechange",w,!1);n[t](i+"load",w,!1)}}function Q(){S&&X(function(){var e=K.length;$(e?function(){for(var j=0;j<e;++j)(function(e){P(function(){n.exports[K[e]].apply(n,arguments)},0)})(j)}:void 0)})}for(var n=window,P=n.setTimeout,x=document,J=x.documentElement,L=x.head||x.getElementsByTagName("head")[0]||J,z="",A=x.scripts,m=A.length;--m>=0;){var M=A[m],T=M.src.match(/^[^#?]*\/run_prettify\.js(\?[^#]*)?(?:#.*)?$/);if(T){z=T[1]||"";M.parentNode.removeChild(M);break}}var S=!0,D=
+[],N=[],K=[];z.replace(/[&?]([^&=]+)=([^&]+)/g,function(e,j,w){w=decodeURIComponent(w);j=decodeURIComponent(j);j=="autorun"?S=!/^[0fn]/i.test(w):j=="lang"?D.push(w):j=="skin"?N.push(w):j=="callback"&&K.push(w)});m=0;for(z=D.length;m<z;++m)(function(){var e=x.createElement("script");e.onload=e.onerror=e.onreadystatechange=function(){if(e&&(!e.readyState||/loaded|complete/.test(e.readyState)))e.onerror=e.onload=e.onreadystatechange=r,--R,R||P(Q,0),e.parentNode&&e.parentNode.removeChild(e),e=r};e.type=
+"text/javascript";e.src="https://google-code-prettify.googlecode.com/svn/loader/lang-"+encodeURIComponent(D[m])+".js";L.insertBefore(e,L.firstChild)})(D[m]);for(var R=D.length,A=[],m=0,z=N.length;m<z;++m)A.push("https://google-code-prettify.googlecode.com/svn/loader/skins/"+encodeURIComponent(N[m])+".css");A.push("https://google-code-prettify.googlecode.com/svn/loader/prettify.css");(function(e){function j(m){if(m!==w){var n=x.createElement("link");n.rel="stylesheet";n.type="text/css";if(m+1<w)n.error=
+n.onerror=function(){j(m+1)};n.href=e[m];L.appendChild(n)}}var w=e.length;j(0)})(A);var $=function(){window.PR_SHOULD_USE_CONTINUATION=!0;var e;(function(){function j(a){function d(f){var b=f.charCodeAt(0);if(b!==92)return b;var a=f.charAt(1);return(b=i[a])?b:"0"<=a&&a<="7"?parseInt(f.substring(1),8):a==="u"||a==="x"?parseInt(f.substring(2),16):f.charCodeAt(1)}function h(f){if(f<32)return(f<16?"\\x0":"\\x")+f.toString(16);f=String.fromCharCode(f);return f==="\\"||f==="-"||f==="]"||f==="^"?"\\"+f:
+f}function b(f){var b=f.substring(1,f.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),f=[],a=b[0]==="^",c=["["];a&&c.push("^");for(var a=a?1:0,g=b.length;a<g;++a){var k=b[a];if(/\\[bdsw]/i.test(k))c.push(k);else{var k=d(k),o;a+2<g&&"-"===b[a+1]?(o=d(b[a+2]),a+=2):o=k;f.push([k,o]);o<65||k>122||(o<65||k>90||f.push([Math.max(65,k)|32,Math.min(o,90)|32]),o<97||k>122||f.push([Math.max(97,k)&-33,Math.min(o,122)&-33]))}}f.sort(function(f,a){return f[0]-
+a[0]||a[1]-f[1]});b=[];g=[];for(a=0;a<f.length;++a)k=f[a],k[0]<=g[1]+1?g[1]=Math.max(g[1],k[1]):b.push(g=k);for(a=0;a<b.length;++a)k=b[a],c.push(h(k[0])),k[1]>k[0]&&(k[1]+1>k[0]&&c.push("-"),c.push(h(k[1])));c.push("]");return c.join("")}function e(f){for(var a=f.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),c=a.length,d=[],g=0,k=0;g<c;++g){var o=a[g];o==="("?++k:"\\"===o.charAt(0)&&(o=+o.substring(1))&&(o<=k?d[o]=-1:a[g]=h(o))}for(g=
+1;g<d.length;++g)-1===d[g]&&(d[g]=++j);for(k=g=0;g<c;++g)o=a[g],o==="("?(++k,d[k]||(a[g]="(?:")):"\\"===o.charAt(0)&&(o=+o.substring(1))&&o<=k&&(a[g]="\\"+d[o]);for(g=0;g<c;++g)"^"===a[g]&&"^"!==a[g+1]&&(a[g]="");if(f.ignoreCase&&F)for(g=0;g<c;++g)o=a[g],f=o.charAt(0),o.length>=2&&f==="["?a[g]=b(o):f!=="\\"&&(a[g]=o.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return a.join("")}for(var j=0,F=!1,l=!1,I=0,c=a.length;I<c;++I){var p=a[I];if(p.ignoreCase)l=
+!0;else if(/[a-z]/i.test(p.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){F=!0;l=!1;break}}for(var i={b:8,t:9,n:10,v:11,f:12,r:13},q=[],I=0,c=a.length;I<c;++I){p=a[I];if(p.global||p.multiline)throw Error(""+p);q.push("(?:"+e(p)+")")}return RegExp(q.join("|"),l?"gi":"g")}function m(a,d){function h(a){var c=a.nodeType;if(c==1){if(!b.test(a.className)){for(c=a.firstChild;c;c=c.nextSibling)h(c);c=a.nodeName.toLowerCase();if("br"===c||"li"===c)e[l]="\n",F[l<<1]=j++,F[l++<<1|1]=a}}else if(c==
+3||c==4)c=a.nodeValue,c.length&&(c=d?c.replace(/\r\n?/g,"\n"):c.replace(/[\t\n\r ]+/g," "),e[l]=c,F[l<<1]=j,j+=c.length,F[l++<<1|1]=a)}var b=/(?:^|\s)nocode(?:\s|$)/,e=[],j=0,F=[],l=0;h(a);return{a:e.join("").replace(/\n$/,""),d:F}}function n(a,d,h,b){d&&(a={a:d,e:a},h(a),b.push.apply(b,a.g))}function x(a){for(var d=void 0,h=a.firstChild;h;h=h.nextSibling)var b=h.nodeType,d=b===1?d?a:h:b===3?S.test(h.nodeValue)?a:d:d;return d===a?void 0:d}function C(a,d){function h(a){for(var l=a.e,j=[l,"pln"],c=
+0,p=a.a.match(e)||[],m={},q=0,f=p.length;q<f;++q){var B=p[q],y=m[B],u=void 0,g;if(typeof y==="string")g=!1;else{var k=b[B.charAt(0)];if(k)u=B.match(k[1]),y=k[0];else{for(g=0;g<i;++g)if(k=d[g],u=B.match(k[1])){y=k[0];break}u||(y="pln")}if((g=y.length>=5&&"lang-"===y.substring(0,5))&&!(u&&typeof u[1]==="string"))g=!1,y="src";g||(m[B]=y)}k=c;c+=B.length;if(g){g=u[1];var o=B.indexOf(g),H=o+g.length;u[2]&&(H=B.length-u[2].length,o=H-g.length);y=y.substring(5);n(l+k,B.substring(0,o),h,j);n(l+k+o,g,A(y,
+g),j);n(l+k+H,B.substring(H),h,j)}else j.push(l+k,y)}a.g=j}var b={},e;(function(){for(var h=a.concat(d),l=[],i={},c=0,p=h.length;c<p;++c){var m=h[c],q=m[3];if(q)for(var f=q.length;--f>=0;)b[q.charAt(f)]=m;m=m[1];q=""+m;i.hasOwnProperty(q)||(l.push(m),i[q]=r)}l.push(/[\S\s]/);e=j(l)})();var i=d.length;return h}function t(a){var d=[],h=[];a.tripleQuotedStrings?d.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,
+r,"'\""]):a.multiLineStrings?d.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,r,"'\"`"]):d.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,r,"\"'"]);a.verbatimStrings&&h.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,r]);var b=a.hashComments;b&&(a.cStyleComments?(b>1?d.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,r,"#"]):d.push(["com",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\n\r]*)/,
+r,"#"]),h.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,r])):d.push(["com",/^#[^\n\r]*/,r,"#"]));a.cStyleComments&&(h.push(["com",/^\/\/[^\n\r]*/,r]),h.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,r]));if(b=a.regexLiterals){var e=(b=b>1?"":"\n\r")?".":"[\\S\\s]";h.push(["lang-regex",RegExp("^(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*("+
+("/(?=[^/*"+b+"])(?:[^/\\x5B\\x5C"+b+"]|\\x5C"+e+"|\\x5B(?:[^\\x5C\\x5D"+b+"]|\\x5C"+e+")*(?:\\x5D|$))+/")+")")])}(b=a.types)&&h.push(["typ",b]);b=(""+a.keywords).replace(/^ | $/g,"");b.length&&h.push(["kwd",RegExp("^(?:"+b.replace(/[\s,]+/g,"|")+")\\b"),r]);d.push(["pln",/^\s+/,r," \r\n\t\u00a0"]);b="^.[^\\s\\w.$@'\"`/\\\\]*";a.regexLiterals&&(b+="(?!s*/)");h.push(["lit",/^@[$_a-z][\w$@]*/i,r],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,r],["pln",/^[$_a-z][\w$@]*/i,r],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,
+r,"0123456789"],["pln",/^\\[\S\s]?/,r],["pun",RegExp(b),r]);return C(d,h)}function z(a,d,h){function b(a){var c=a.nodeType;if(c==1&&!j.test(a.className))if("br"===a.nodeName)e(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((c==3||c==4)&&h){var d=a.nodeValue,i=d.match(m);if(i)c=d.substring(0,i.index),a.nodeValue=c,(d=d.substring(i.index+i[0].length))&&a.parentNode.insertBefore(l.createTextNode(d),a.nextSibling),e(a),c||a.parentNode.removeChild(a)}}
+function e(a){function b(a,c){var d=c?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),h=a.nextSibling;f.appendChild(d);for(var e=h;e;e=h)h=e.nextSibling,f.appendChild(e)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),d;(d=a.parentNode)&&d.nodeType===1;)a=d;c.push(a)}for(var j=/(?:^|\s)nocode(?:\s|$)/,m=/\r\n?|\n/,l=a.ownerDocument,i=l.createElement("li");a.firstChild;)i.appendChild(a.firstChild);for(var c=[i],p=0;p<c.length;++p)b(c[p]);d===(d|0)&&c[0].setAttribute("value",
+d);var n=l.createElement("ol");n.className="linenums";for(var d=Math.max(0,d-1|0)||0,p=0,q=c.length;p<q;++p)i=c[p],i.className="L"+(p+d)%10,i.firstChild||i.appendChild(l.createTextNode("\u00a0")),n.appendChild(i);a.appendChild(n)}function i(a,d){for(var h=d.length;--h>=0;){var b=d[h];U.hasOwnProperty(b)?V.console&&console.warn("cannot override language handler %s",b):U[b]=a}}function A(a,d){if(!a||!U.hasOwnProperty(a))a=/^\s*</.test(d)?"default-markup":"default-code";return U[a]}function D(a){var d=
+a.h;try{var h=m(a.c,a.i),b=h.a;a.a=b;a.d=h.d;a.e=0;A(d,b)(a);var e=/\bMSIE\s(\d+)/.exec(navigator.userAgent),e=e&&+e[1]<=8,d=/\n/g,i=a.a,j=i.length,h=0,l=a.d,n=l.length,b=0,c=a.g,p=c.length,t=0;c[p]=j;var q,f;for(f=q=0;f<p;)c[f]!==c[f+2]?(c[q++]=c[f++],c[q++]=c[f++]):f+=2;p=q;for(f=q=0;f<p;){for(var x=c[f],y=c[f+1],u=f+2;u+2<=p&&c[u+1]===y;)u+=2;c[q++]=x;c[q++]=y;f=u}c.length=q;var g=a.c,k;if(g)k=g.style.display,g.style.display="none";try{for(;b<n;){var o=l[b+2]||j,H=c[t+2]||j,u=Math.min(o,H),E=l[b+
+1],W;if(E.nodeType!==1&&(W=i.substring(h,u))){e&&(W=W.replace(d,"\r"));E.nodeValue=W;var Z=E.ownerDocument,s=Z.createElement("span");s.className=c[t+1];var z=E.parentNode;z.replaceChild(s,E);s.appendChild(E);h<o&&(l[b+1]=E=Z.createTextNode(i.substring(u,o)),z.insertBefore(E,s.nextSibling))}h=u;h>=o&&(b+=2);h>=H&&(t+=2)}}finally{if(g)g.style.display=k}}catch(v){V.console&&console.log(v&&v.stack||v)}}var V=window,G=["break,continue,do,else,for,if,return,while"],O=[[G,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
+"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],J=[O,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],K=[O,"abstract,assert,boolean,byte,extends,final,finally,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"],
+L=[K,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,internal,into,is,let,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where"],O=[O,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],M=[G,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
+N=[G,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],R=[G,"as,assert,const,copy,drop,enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv,pub,pure,ref,self,static,struct,true,trait,type,unsafe,use"],G=[G,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],Q=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/,
+S=/\S/,T=t({keywords:[J,L,O,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",M,N,G],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),U={};i(T,["default-code"]);i(C([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",
+/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);i(C([["pln",/^\s+/,r," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,r,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],
+["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);i(C([],[["atv",/^[\S\s]+/]]),["uq.val"]);i(t({keywords:J,hashComments:!0,cStyleComments:!0,types:Q}),["c","cc","cpp","cxx","cyc","m"]);i(t({keywords:"null,true,false"}),["json"]);i(t({keywords:L,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:Q}),
+["cs"]);i(t({keywords:K,cStyleComments:!0}),["java"]);i(t({keywords:G,hashComments:!0,multiLineStrings:!0}),["bash","bsh","csh","sh"]);i(t({keywords:M,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py","python"]);i(t({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:2}),["perl","pl","pm"]);i(t({keywords:N,
+hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb","ruby"]);i(t({keywords:O,cStyleComments:!0,regexLiterals:!0}),["javascript","js"]);i(t({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);i(t({keywords:R,cStyleComments:!0,multilineStrings:!0}),["rc","rs","rust"]);
+i(C([],[["str",/^[\S\s]+/]]),["regex"]);var X=V.PR={createSimpleLexer:C,registerLangHandler:i,sourceDecorator:t,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ",prettyPrintOne:function(a,d,e){var b=document.createElement("div");b.innerHTML="<pre>"+a+"</pre>";b=b.firstChild;e&&z(b,e,!0);D({h:d,j:e,c:b,i:1});return b.innerHTML},
+prettyPrint:e=e=function(a,d){function e(){for(var b=V.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;p<j.length&&c.now()<b;p++){for(var d=j[p],m=k,l=d;l=l.previousSibling;){var n=l.nodeType,s=(n===7||n===8)&&l.nodeValue;if(s?!/^\??prettify\b/.test(s):n!==3||/\S/.test(l.nodeValue))break;if(s){m={};s.replace(/\b(\w+)=([\w%+\-.:]+)/g,function(a,b,c){m[b]=c});break}}l=d.className;if((m!==k||f.test(l))&&!w.test(l)){n=!1;for(s=d.parentNode;s;s=s.parentNode)if(g.test(s.tagName)&&s.className&&f.test(s.className)){n=
+!0;break}if(!n){d.className+=" prettyprinted";n=m.lang;if(!n){var n=l.match(q),A;if(!n&&(A=x(d))&&u.test(A.tagName))n=A.className.match(q);n&&(n=n[1])}if(y.test(d.tagName))s=1;else var s=d.currentStyle,v=i.defaultView,s=(s=s?s.whiteSpace:v&&v.getComputedStyle?v.getComputedStyle(d,r).getPropertyValue("white-space"):0)&&"pre"===s.substring(0,3);v=m.linenums;if(!(v=v==="true"||+v))v=(v=l.match(/\blinenums\b(?::(\d+))?/))?v[1]&&v[1].length?+v[1]:!0:!1;v&&z(d,v,s);t={h:n,c:d,j:v,i:s};D(t)}}}p<j.length?
+P(e,250):"function"===typeof a&&a()}for(var b=d||document.body,i=b.ownerDocument||document,b=[b.getElementsByTagName("pre"),b.getElementsByTagName("code"),b.getElementsByTagName("xmp")],j=[],m=0;m<b.length;++m)for(var l=0,n=b[m].length;l<n;++l)j.push(b[m][l]);var b=r,c=Date;c.now||(c={now:function(){return+new Date}});var p=0,t,q=/\blang(?:uage)?-([\w.]+)(?!\S)/,f=/\bprettyprint\b/,w=/\bprettyprinted\b/,y=/pre|xmp/i,u=/^code$/i,g=/^(?:pre|code|xmp)$/i,k={};e()}};typeof define==="function"&&define.amd&&
+define("google-code-prettify",[],function(){return X})})();return e}();R||P(Q,0)})();}()
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/styles.scss b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/styles.scss
new file mode 100644
index 0000000..5346c0f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/codelabel/styles.scss
@@ -0,0 +1,7 @@
+@import "codelabel.scss";
+
+/* This file prefixes all rules with the theme name to avoid causing conflicts with other themes. */
+/* The actual styles should be defined in codelabel.scss */
+.codelabel {
+ @include codelabel;
+}
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/styles.css b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/styles.css
new file mode 100644
index 0000000..9e3d6b4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/styles.css
@@ -0,0 +1,19 @@
+@import "../reindeer/styles.css";
+
+/*
+.v-horizontallayout{
+ border: 1px solid blue;
+}
+
+.v-verticallayout{
+ border: 1px solid red;
+}
+
+.v-absolutelayout{
+ border: 1px solid green;
+}
+
+.v-gridlayout{
+ border: 1px solid yellow;
+}
+*/
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/test.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/test.png
new file mode 100644
index 0000000..ba6ce2d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/test.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/button_panel_bgcolor.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/button_panel_bgcolor.png
new file mode 100644
index 0000000..ba6ce2d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/button_panel_bgcolor.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/dockzone.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/dockzone.png
new file mode 100644
index 0000000..c3028fb
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/dockzone.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/save_workbench_btn.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/save_workbench_btn.png
new file mode 100644
index 0000000..9b645ec
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/save_workbench_btn.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/vaadock_sprites.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/vaadock_sprites.png
new file mode 100644
index 0000000..b2517e8
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/dragdrop/vaadock/img/vaadock_sprites.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/blank_part_label.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/blank_part_label.png
new file mode 100644
index 0000000..7dd9471
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/blank_part_label.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/blank_perspective.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/blank_perspective.png
new file mode 100644
index 0000000..7dd9471
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/blank_perspective.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/breakpoints.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/breakpoints.png
new file mode 100644
index 0000000..1deb9ea
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/breakpoints.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/check.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/check.png
new file mode 100644
index 0000000..a43a2b2
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/check.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/collapse_all.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/collapse_all.png
new file mode 100644
index 0000000..6ae6c01
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/collapse_all.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/console.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/console.png
new file mode 100644
index 0000000..f55744f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/console.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/css.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/css.png
new file mode 100644
index 0000000..00b61e4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/css.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/debug.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/debug.png
new file mode 100644
index 0000000..fcd5260
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/debug.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/display.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/display.png
new file mode 100644
index 0000000..a0b6f37
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/display.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/editor_area.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/editor_area.png
new file mode 100644
index 0000000..d697779
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/editor_area.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/fastview_restore.gif b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/fastview_restore.gif
new file mode 100644
index 0000000..e0010df
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/fastview_restore.gif
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/folder.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/folder.png
new file mode 100644
index 0000000..f633bb5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/folder.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-dark-bottom.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-dark-bottom.png
new file mode 100644
index 0000000..3d86693
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-dark-bottom.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-dark-bottom2.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-dark-bottom2.png
new file mode 100644
index 0000000..1bf7a55
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-dark-bottom2.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-dark-top2.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-dark-top2.png
new file mode 100644
index 0000000..8509f46
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-dark-top2.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-light-left.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-light-left.png
new file mode 100644
index 0000000..a6965e4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-light-left.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-light-top.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-light-top.png
new file mode 100644
index 0000000..d9479f1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-light-top.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-light-top2.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-light-top2.png
new file mode 100644
index 0000000..51ec5e6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/grad-light-top2.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/help.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/help.png
new file mode 100644
index 0000000..8fcfb91
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/help.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/img.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/img.png
new file mode 100644
index 0000000..91a4a2b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/img.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/java.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/java.png
new file mode 100644
index 0000000..3b59c6b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/java.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/java_perspective_16x16.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/java_perspective_16x16.png
new file mode 100644
index 0000000..2611f2a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/java_perspective_16x16.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/javadoc.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/javadoc.png
new file mode 100644
index 0000000..f2834c9
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/javadoc.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/junit.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/junit.png
new file mode 100644
index 0000000..7ea6c87
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/junit.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/link_to_editor.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/link_to_editor.png
new file mode 100644
index 0000000..ab61503
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/link_to_editor.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/open_perspective.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/open_perspective.png
new file mode 100644
index 0000000..20e199c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/open_perspective.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/outline.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/outline.png
new file mode 100644
index 0000000..908eb4e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/outline.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/package.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/package.png
new file mode 100644
index 0000000..906bdba
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/package.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/package_explorer.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/package_explorer.png
new file mode 100644
index 0000000..13ea956
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/package_explorer.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_16x16.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_16x16.png
new file mode 100644
index 0000000..af511de
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_16x16.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_17x20.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_17x20.png
new file mode 100644
index 0000000..6288cf9
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_17x20.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_active_17x20.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_active_17x20.png
new file mode 100644
index 0000000..b71d5cd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_active_17x20.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_hover_17x20.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_hover_17x20.png
new file mode 100644
index 0000000..dc7caba
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/popup_button_hover_17x20.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/project.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/project.png
new file mode 100644
index 0000000..0194704
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/project.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/restore1.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/restore1.png
new file mode 100644
index 0000000..ab77f5e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/restore1.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/separator.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/separator.png
new file mode 100644
index 0000000..20d1cdc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/separator.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/separator_v.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/separator_v.png
new file mode 100644
index 0000000..12df3f0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/separator_v.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/test.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/test.png
new file mode 100644
index 0000000..ba6ce2d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/test.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/text.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/text.png
new file mode 100644
index 0000000..4efeae9
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/text.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_background_active_23x20.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_background_active_23x20.png
new file mode 100644
index 0000000..18b8b0d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_background_active_23x20.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_background_hover_23x20.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_background_hover_23x20.png
new file mode 100644
index 0000000..931fe7d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_background_hover_23x20.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_hover_gradient.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_hover_gradient.png
new file mode 100644
index 0000000..23c9796
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_hover_gradient.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_pushed_gradient.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_pushed_gradient.png
new file mode 100644
index 0000000..9316a8a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toolbar_button_pushed_gradient.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toptrimbar.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toptrimbar.png
new file mode 100644
index 0000000..a629b8f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/toptrimbar.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/vaaclipse.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/vaaclipse.png
new file mode 100644
index 0000000..2779af1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/vaaclipse.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/variables.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/variables.png
new file mode 100644
index 0000000..908495a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/variables.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/xml.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/xml.png
new file mode 100644
index 0000000..2f0a698
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/img/xml.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/styles.css b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/styles.css
new file mode 100644
index 0000000..48f40e9
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/styles.css
@@ -0,0 +1,274 @@
+/*
+ * Perspective panel
+ */
+.v-app .perspectivepanel {
+ position: relative;
+ float: right;
+ padding-left: 10px;
+ padding-top: 6px;
+ padding-bottom: 6px;
+ margin-right: 4px;
+ border: none;
+ background-color: transparent;
+}
+
+.v-app .open_perspective_window .v-table-cell-content {
+ border: transparent;
+ padding-left: 0px;
+}
+
+/*
+* Toptrimbar
+*/
+.v-app .toptrimbar {
+ float: left;
+ padding-left: 8px;
+
+ size: 100%;
+
+ border-width:6px 6px 6px 6px;
+ border-image: url("img/toptrimbar.png") 6 6 6 6 stretch stretch;
+ -o-border-image: url("img/toptrimbar.png") 6 6 6 6 stretch stretch;
+ border-style:solid;
+ background-color: #d2d2d2;
+}
+
+/*
+* trimbar
+*/
+.v-app .trimbar .content {
+ background-color: #d2d2d2;
+ size: 100%;
+}
+
+.v-app .horizontaltrimbar {
+ padding-left: 5px;
+ padding-top: 6px;
+ padding-bottom: 6px;
+}
+
+.v-app .verticaltrimbar {
+ padding-left: 4px;
+ padding-right: 4px;
+ padding-top: 5px;
+}
+
+.v-app .verticaltrimelement {
+ position: relative;
+ padding: 0px;
+ margin-top: 3px;
+ margin-bottom: 3px;
+ margin-left: 0px;
+ margin-right: 0px;
+}
+
+.v-app .horizontaltrimelement {
+ position: relative;
+ float: left;
+ padding: 0px;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ margin-left: 3px;
+ margin-right: 3px;
+}
+
+.v-app .horizontalseparator {
+ position: relative;
+ float: left;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ margin-left: 4px;
+ margin-right: 4px;
+ width: 2px;
+ background-image: url('img/separator.png');
+ background-position: 0px 0px;
+ background-repeat: repeat;
+}
+
+.v-app .verticalseparator {
+ position: relative;
+ float: top;
+ margin-top: 4px;
+ margin-bottom: 4px;
+ margin-left: 0px;
+ margin-right: 0px;
+ height: 2px;
+ background-image: url('img/separator_v.png');
+}
+
+/**
+ * toolbar
+ */
+.v-app .toolbar {
+ background-color: transparent;
+}
+
+.v-app .verticaltoolbarlement {
+ padding: 0px;
+ margin-top: 1px;
+ margin-bottom: 1px;
+ margin-left: 0px;
+ margin-right: 0px;
+}
+
+.v-app .horizontaltoolbarlement {
+ padding: 0px;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ margin-left: 1px;
+ margin-right: 1px;
+}
+
+/*
+*toolbar button
+*/
+.v-app .v-button-vaaclipsebutton,.v-app .v-disabled.v-button-vaaclipsebutton {
+ display: block;
+ background: transparent;
+ background-image: none;
+ border: none;
+ padding: 0px;
+ border-radius: 4px;
+ height: auto;
+ width: auto;
+ margin: 2px;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+}
+
+.v-app .v-button-vaaclipsebutton .v-button-wrap,.v-app .v-disabled.v-button-vaaclipsebutton .v-button-wrap {
+ background: transparent;
+ border: none;
+ padding: 0px;
+}
+
+.v-app .v-button-vaaclipsebutton .v-icon {
+ margin-left: 0px;
+ margin-top: 0px;
+ padding-top: 3px;
+ padding-bottom: 3px;
+ padding-left: 6px;
+ padding-right: 6px;
+}
+
+.v-app .v-button-pushed .v-icon, .v-app .v-button-vaaclipsebutton:focus .v-icon {
+ margin-left: 1px;
+ margin-top: 1px;
+ padding-right: 5px;
+ padding-bottom: 2px;
+}
+
+.v-app .v-disabled:focus .v-icon {
+ margin-left: 0px;
+ margin-top: 0px;
+}
+
+.v-app .toptrimbar .v-button-vaaclipsebutton .v-button-caption {
+ color: #222222;
+ font-size: 11px;
+ font-weight: bold;
+ line-height: 16px;
+ text-shadow: 0 1px 0 #FFFFFF;
+}
+
+.v-app .v-button-vaaclipsebutton:hover {
+ box-shadow: 1px 1px 0px 0px rgba(0, 0, 0, .3) inset,
+ -1px -1px 0px 0px rgba(0, 0, 0, .3) inset;
+ background: #d6d6d6;
+ background: -moz-linear-gradient(top, #f1f1f1 0%, #d6d6d6 50%, #c7c7c7 50%, #cfcfcf 75%, #d7d7d7 100%);
+ background: -webkit-linear-gradient(top, #f1f1f1 0%, #d6d6d6 50%, #c7c7c7 50%, #cfcfcf 75%, #d7d7d7 100%);
+ background: -webkit-gradient(top, #f1f1f1 0%, #d6d6d6 50%, #c7c7c7 50%, #cfcfcf 75%, #d7d7d7 100%);
+ background: linear-gradient(top, #f1f1f1 0%, #d6d6d6 50%, #c7c7c7 50%, #cfcfcf 75%, #d7d7d7 100%);
+ background: -o-linear-gradient(top, #f1f1f1 0%, #d6d6d6 50%, #c7c7c7 50%, #cfcfcf 75%, #d7d7d7 100%);
+ background: -ms-linear-gradient(top, #f1f1f1 0%, #d6d6d6 50%, #c7c7c7 50%, #cfcfcf 75%, #d7d7d7 100%);
+}
+
+.v-app .v-button-pushed, .v-app .v-button-vaaclipsebutton:active,.v-button-vaaclipsebutton:focus {
+ box-shadow: 1px 1px 1px 1px rgba(0, 0, 0, .3) inset,
+ -1px -1px 0px 0px rgba(0, 0, 0, .2) inset !important;
+ background: #f0f0f0 !important;
+ background: -moz-linear-gradient(top, #b6b6b6 0%, #f0f0f0 50%, #d0d0d0 100%) !important;
+ background: -webkit-linear-gradient(top, #b6b6b6 0%, #f0f0f0 50%, #d0d0d0 100%) !important;
+ background: -webkit-gradient(top, #b6b6b6 0%, #f0f0f0 50%, #d0d0d0 100%) !important;
+ background: linear-gradient(top, #b6b6b6 0%, #f0f0f0 50%, #d0d0d0 100%) !important;
+ background: -o-linear-gradient(top, #b6b6b6 0%, #f0f0f0 50%, #d0d0d0 100%) !important;
+ background: -ms-linear-gradient(top, #b6b6b6 0%, #f0f0f0 50%, #d0d0d0 100%) !important;
+}
+
+.v-app .v-disabled:hover, .v-app .v-disabled:active,.v-disabled:focus {
+ background-image: none !important;
+ background-color: transparent !important;
+ display: block !important;
+ box-shadow: none !important;
+}
+
+.v-app .v-button-vaaclipsebutton:active .v-button-wrap,.v-app .v-button-vaaclipsebutton:focus .v-button-wrap, .v-app .v-button-pushed .v-button-wrap {
+ background-image: none;
+}
+
+.v-app .v-button-icononly .v-button-caption {
+ display: none;
+}
+
+.v-app .v-button-icononly .v-icon {
+ margin-right: -2px;
+}
+
+.v-app .v-button-vaaclipsebutton .v-button-wrap .v-button-caption {
+ padding-right: 8px;
+}
+
+.v-app .v-button-textonly .v-button-wrap .v-button-caption {
+ padding-left: 6px;
+ padding-right: 6px;
+}
+
+.v-app .v-button-general {
+ margin: 2px;
+}
+
+.v-app .v-button-general .v-button-wrap .v-button-caption {
+ font-weight: bold;
+}
+
+/*
+ * sash widget
+ */
+.v-app .v-splitpanel-hsplitter-invisible-locked {
+ width: 0px;
+}
+
+.v-app .v-splitpanel-vsplitter-invisible-locked {
+ width: 0px;
+}
+
+.v-app .org.eclipse.osbp_vaaclipse_area {
+ background-color: transparent;
+}
+
+/*
+ * window no header
+ */
+.v-app .v-window-loading-window .v-window-outerheader {
+ height: 0;
+ margin-left: 0;
+ padding: 0;
+}
+
+.v-app .mparttoolbararea {
+ padding-right: 4px;
+ padding-top: 3px;
+ padding-bottom: 3px;
+}
+
+.v-app .mparttoolbar {
+ float: right;
+}
+
+/*
+bugfixing style for context menu addon
+*/
+.v-ie9 .close-perspective-item .ctxmenu-name {
+ margin-left: 25px;
+ margin-top: -25px;
+}
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaadock/img/restore1.png b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaadock/img/restore1.png
new file mode 100644
index 0000000..7419227
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaadock/img/restore1.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaadock/styles.css b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaadock/styles.css
new file mode 100644
index 0000000..9e3d6b4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaadock/styles.css
@@ -0,0 +1,19 @@
+@import "../reindeer/styles.css";
+
+/*
+.v-horizontallayout{
+ border: 1px solid blue;
+}
+
+.v-verticallayout{
+ border: 1px solid red;
+}
+
+.v-absolutelayout{
+ border: 1px solid green;
+}
+
+.v-gridlayout{
+ border: 1px solid yellow;
+}
+*/
diff --git a/org.eclipse.osbp.vaaclipse.resources/about.html b/org.eclipse.osbp.vaaclipse.resources/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.resources/about.ini b/org.eclipse.osbp.vaaclipse.resources/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.resources/about.mappings b/org.eclipse.osbp.vaaclipse.resources/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.resources/about.properties b/org.eclipse.osbp.vaaclipse.resources/about.properties
new file mode 100644
index 0000000..3ed0b99
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.resources
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.resources/build.properties b/org.eclipse.osbp.vaaclipse.resources/build.properties
new file mode 100644
index 0000000..46c6987
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ VAADIN/,\
+ epl-v10.html,\
+ license.html
+src.includes = about.properties, about.mappings, about.ini, about.html, epl-v10.html,\
+ license.html
diff --git a/org.eclipse.osbp.vaaclipse.resources/epl-v10.html b/org.eclipse.osbp.vaaclipse.resources/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.resources/license.html b/org.eclipse.osbp.vaaclipse.resources/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.vaaclipse.resources/pom.xml b/org.eclipse.osbp.vaaclipse.resources/pom.xml
new file mode 100644
index 0000000..3534be3
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.osbp.vaaclipse.resources</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.resources/src/PLACEHOLDER b/org.eclipse.osbp.vaaclipse.resources/src/PLACEHOLDER
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.resources/src/PLACEHOLDER
diff --git a/org.eclipse.osbp.vaaclipse.target.juno/org.eclipse.osbp.vaaclipse.target.juno.target b/org.eclipse.osbp.vaaclipse.target.juno/org.eclipse.osbp.vaaclipse.target.juno.target
new file mode 100644
index 0000000..de5dc8b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.target.juno/org.eclipse.osbp.vaaclipse.target.juno.target
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde version="3.8"?><target name="org.eclipse.osbp.vaaclipse.target.juno" sequenceNumber="33">
+<locations>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.sdk.ide" version="4.2.2.M20130204-1200"/>
+<unit id="org.eclipse.platform.sdk" version="4.2.2.M20130204-1200"/>
+<unit id="org.eclipse.emf.sdk.feature.group" version="2.8.3.v20130125-0826"/>
+<repository location="http://download.eclipse.org/releases/juno"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.osbp.dependencies.feature.vaadin.feature.group" version="7.1.0.201306102153"/>
+<repository location="http://lun.lunifera.org/downloads/p2/lunifera/kepler/latest/"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
+<unit id="ch.qos.logback.slf4j" version="1.0.0.v20120123-1500"/>
+<unit id="org.slf4j.api" version="1.6.4.v20120130-2120"/>
+<unit id="ch.qos.logback.slf4j.source" version="1.0.0.v20120123-1500"/>
+<unit id="org.slf4j.ext.source" version="1.6.4.v20120130-2120"/>
+<unit id="org.slf4j.api.source" version="1.6.4.v20120130-2120"/>
+<unit id="org.slf4j.ext" version="1.6.4.v20120130-2120"/>
+<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository"/>
+</location>
+</locations>
+</target>
diff --git a/org.eclipse.osbp.vaaclipse.target.juno/pom.xml b/org.eclipse.osbp.vaaclipse.target.juno/pom.xml
new file mode 100644
index 0000000..163a316
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.target.juno/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>org.eclipse.osbp.vaaclipse.target.juno</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <packaging>eclipse-target-definition</packaging>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.target.luna/.project b/org.eclipse.osbp.vaaclipse.target.luna/.project
new file mode 100644
index 0000000..6cd7652
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.target.luna/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse.target.luna</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.target.luna/org.eclipse.osbp.vaaclipse.target.luna.target b/org.eclipse.osbp.vaaclipse.target.luna/org.eclipse.osbp.vaaclipse.target.luna.target
new file mode 100644
index 0000000..97cee7d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.target.luna/org.eclipse.osbp.vaaclipse.target.luna.target
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde version="3.8"?><target name="org.eclipse.osbp.vaaclipse.target.luna" sequenceNumber="34">
+<locations>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
+<unit id="org.apache.commons.io" version="2.0.1.v201105210651"/>
+<unit id="org.apache.commons.io.source" version="2.0.1.v201105210651"/>
+<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.emf.sdk.feature.group" version="2.10.0.v20140519-0339"/>
+<unit id="org.eclipse.e4.rcp.source.feature.group" version="1.3.100.v20140606-1445"/>
+<unit id="org.eclipse.e4.rcp.feature.group" version="1.3.100.v20140606-1445"/>
+<repository location="http://download.eclipse.org/releases/luna"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.equinox.core.sdk.feature.group" version="3.10.0.v20140606-1445"/>
+<repository location="http://download.eclipse.org/releases/luna"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.equinox.sdk.feature.group" version="3.10.0.v20140606-1602"/>
+<repository location="http://download.eclipse.org/releases/luna"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
+<unit id="ch.qos.logback.core" version="1.0.0.v20111214-2030"/>
+<unit id="ch.qos.logback.slf4j.source" version="1.0.0.v20120123-1500"/>
+<unit id="ch.qos.logback.classic.source" version="1.0.0.v20111214-2030"/>
+<unit id="org.slf4j.ext.source" version="1.6.4.v20120130-2120"/>
+<unit id="org.slf4j.ext" version="1.6.4.v20120130-2120"/>
+<unit id="ch.qos.logback.slf4j" version="1.0.0.v20120123-1500"/>
+<unit id="org.slf4j.api.source" version="1.6.4.v20120130-2120"/>
+<unit id="ch.qos.logback.core.source" version="1.0.0.v20111214-2030"/>
+<unit id="ch.qos.logback.classic" version="1.0.0.v20111214-2030"/>
+<unit id="org.slf4j.api" version="1.6.4.v20120130-2120"/>
+<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository/"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.osbp.dependencies.feature.atmosphere.feature.group" version="2.1.2.vaadin6"/>
+<unit id="org.eclipse.osbp.dependencies.feature.vaadin.feature.group" version="7.3.8"/>
+<repository location="http://lun.lunifera.org/downloads/p2/lunifera/luna/latest/"/>
+</location>
+</locations>
+</target>
diff --git a/org.eclipse.osbp.vaaclipse.target.luna/pom.xml b/org.eclipse.osbp.vaaclipse.target.luna/pom.xml
new file mode 100644
index 0000000..cd42a9b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.target.luna/pom.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>org.eclipse.osbp.vaaclipse.target.luna</artifactId>
+ <packaging>eclipse-target-definition</packaging>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.theme/.project b/org.eclipse.osbp.vaaclipse.theme/.project
new file mode 100644
index 0000000..e057d18
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse.theme</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.theme/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.theme/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..e995e4a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.theme
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.theme;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Require-Bundle: org.eclipse.osbp.vaaclipse.publicapi;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.equinox.common;bundle-version="3.6.100",
+ org.eclipse.equinox.registry;bundle-version="3.5.200",
+ org.eclipse.e4.core.services;bundle-version="1.0.0",
+ org.eclipse.e4.core.contexts;bundle-version="1.1.0",
+ org.eclipse.e4.core.di;bundle-version="1.1.0"
+Import-Package: javax.annotation;version="1.1.0",
+ javax.inject;version="1.0.0",
+ org.osgi.framework;version="1.8.0",
+ org.osgi.framework.wiring;version="1.2.0",
+ org.slf4j;version="1.7.2"
+Service-Component: OSGI-INF/themeManager.xml,
+ OSGI-INF/themeEngine.xml
+Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.osbp.vaaclipse.theme/OSGI-INF/themeEngine.xml b/org.eclipse.osbp.vaaclipse.theme/OSGI-INF/themeEngine.xml
new file mode 100644
index 0000000..1b2dda2
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/OSGI-INF/themeEngine.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.vaaclipse.theme.themeengine">
+ <implementation class="org.eclipse.osbp.vaaclipse.theme.ThemeEngineImpl"/>
+ <service>
+ <provide interface="org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeEngine"/>
+ </service>
+</scr:component>
diff --git a/org.eclipse.osbp.vaaclipse.theme/OSGI-INF/themeManager.xml b/org.eclipse.osbp.vaaclipse.theme/OSGI-INF/themeManager.xml
new file mode 100644
index 0000000..e862d0c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/OSGI-INF/themeManager.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="false" name="org.eclipse.osbp.vaaclipse.theme.themeManager">
+ <implementation class="org.eclipse.osbp.vaaclipse.theme.ThemeManagerContextFunction"/>
+ <service>
+ <provide interface="org.eclipse.e4.core.contexts.IContextFunction"/>
+ </service>
+ <property name="service.context.key" type="String" value="org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeManager"/>
+ <reference bind="bindThemeEngine" cardinality="1..1" interface="org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeEngine" name="ThemeEngine" policy="static"/>
+</scr:component>
diff --git a/org.eclipse.osbp.vaaclipse.theme/about.html b/org.eclipse.osbp.vaaclipse.theme/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.theme/about.ini b/org.eclipse.osbp.vaaclipse.theme/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.theme/about.mappings b/org.eclipse.osbp.vaaclipse.theme/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.theme/about.properties b/org.eclipse.osbp.vaaclipse.theme/about.properties
new file mode 100644
index 0000000..f12caf5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.theme
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.theme/build.properties b/org.eclipse.osbp.vaaclipse.theme/build.properties
new file mode 100644
index 0000000..87ee705
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/build.properties
@@ -0,0 +1,13 @@
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ plugin.xml,\
+ OSGI-INF/themeManager.xml,\
+ OSGI-INF/themeEngine.xml,\
+ schema/,\
+ OSGI-INF/,\
+ license.html,\
+ epl-v10.html
+source.. = src/
+src.includes = about.properties, about.mappings, about.ini, about.html, license.html,\
+ epl-v10.html
diff --git a/org.eclipse.osbp.vaaclipse.theme/epl-v10.html b/org.eclipse.osbp.vaaclipse.theme/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.theme/license.html b/org.eclipse.osbp.vaaclipse.theme/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.vaaclipse.theme/plugin.xml b/org.eclipse.osbp.vaaclipse.theme/plugin.xml
new file mode 100644
index 0000000..8bf9f51
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/plugin.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension-point id="org.eclipse.osbp.vaaclipse.theme" name="Vaaclipse Theme" schema="schema/org.eclipse.osbp.vaaclipse.theme.exsd"/>
+ <extension
+ point="org.eclipse.osbp.vaaclipse.theme">
+ <theme
+ cssUri="platform:/plugin/com.vaadin.themes/VAADIN/themes/reindeer/styles.css"
+ description="Vaadin Reindeer theme"
+ id="reindeer"
+ label="Reindeer">
+ <resourceLocationUri
+ uri="platform:/plugin/com.vaadin.themes/VAADIN/themes/reindeer/">
+ </resourceLocationUri>
+ </theme>
+ <theme
+ cssUri="platform:/plugin/com.vaadin.themes/VAADIN/themes/chameleon/styles.css"
+ description="Vaadin Chameleon theme"
+ id="chameleon"
+ label="Chameleon">
+ <resourceLocationUri
+ uri="platform:/plugin/com.vaadin.themes/VAADIN/themes/chameleon/">
+ </resourceLocationUri>
+ </theme>
+ <theme
+ cssUri="platform:/plugin/com.vaadin.themes/VAADIN/themes/chameleon/legacy-styles.css"
+ description="Vaadin Chameleon Legacy theme"
+ id="chameleon-legacy"
+ label="Chameleon Legacy">
+ <resourceLocationUri
+ uri="platform:/plugin/com.vaadin.themes/VAADIN/themes/chameleon/">
+ </resourceLocationUri>
+ </theme>
+ <theme
+ cssUri="platform:/plugin/com.vaadin.themes/VAADIN/themes/runo/styles.css"
+ description="Vaadin Runo theme"
+ id="runo"
+ label="Runo">
+ <resourceLocationUri
+ uri="platform:/plugin/com.vaadin.themes/VAADIN/themes/runo/">
+ </resourceLocationUri>
+ </theme>
+ <theme
+ cssUri="platform:/plugin/com.vaadin.themes/VAADIN/themes/liferay/styles.css"
+ description="Vaadin Liferay theme"
+ id="liferay"
+ label="Liferay">
+ <resourceLocationUri
+ uri="platform:/plugin/com.vaadin.themes/VAADIN/themes/liferay/">
+ </resourceLocationUri>
+ </theme>
+ <theme
+ cssUri="platform:/plugin/com.vaadin.themes/VAADIN/themes/base/styles.css"
+ description="Vaadin Base theme"
+ id="base"
+ label="Base">
+ <resourceLocationUri
+ uri="platform:/plugin/com.vaadin.themes/VAADIN/themes/base/">
+ </resourceLocationUri>
+ </theme>
+ <theme
+ cssUri="platform:/plugin/com.vaadin.themes/VAADIN/themes/valo/styles.css"
+ description="Vaadin Valo theme"
+ id="valo"
+ label="Valo">
+ <resourceLocationUri
+ uri="platform:/plugin/com.vaadin.themes/VAADIN/themes/valo/">
+ </resourceLocationUri>
+ </theme>
+ </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.vaaclipse.theme/pom.xml b/org.eclipse.osbp.vaaclipse.theme/pom.xml
new file mode 100644
index 0000000..80b3a5e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.osbp.vaaclipse.theme</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.theme/schema/org.eclipse.osbp.vaaclipse.theme.exsd b/org.eclipse.osbp.vaaclipse.theme/schema/org.eclipse.osbp.vaaclipse.theme.exsd
new file mode 100644
index 0000000..c9c794f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/schema/org.eclipse.osbp.vaaclipse.theme.exsd
@@ -0,0 +1,211 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.osbp.vaaclipse.theme" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.eclipse.osbp.vaaclipse.theme" id="org.eclipse.osbp.vaaclipse.theme" name="Vaaclipse Theme"/>
+ </appinfo>
+ <documentation>
+ This extension point provides the possibility to define themes and theme contributions
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="themecontribution" minOccurs="0" maxOccurs="unbounded"/>
+ <element ref="theme" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="themecontribution">
+ <annotation>
+ <documentation>
+ Theme contribution - contribute stylesheets and resources to theme
+ </documentation>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="themeid" minOccurs="0" maxOccurs="unbounded"/>
+ <element ref="resourceLocationUri" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+ Id of the contribution
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="cssUri" type="string">
+ <annotation>
+ <documentation>
+ uri to the stylesheet
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="resource"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="insertPosition" type="string" default="after=MAIN_CSS">
+ <annotation>
+ <documentation>
+ Position where contributed css inserted in main theme's css: after=POSITION or before=POSITION,
+ where POSITION can be another contribution id or one of MAIN_CSS, USER_IMPORTS, INHERITED_IMPORTS.
+ Default value: after=MAIN_CSS
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="theme">
+ <complexType>
+ <sequence>
+ <element ref="inheritedTheme" minOccurs="0" maxOccurs="unbounded"/>
+ <element ref="resourceLocationUri" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+ Id for the theme
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="label" type="string" use="required">
+ <annotation>
+ <documentation>
+ the label used when displayed to the user
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="description" type="string">
+ <annotation>
+ <documentation>
+ the description
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="cssUri" type="string" use="required">
+ <annotation>
+ <documentation>
+ the css uri starting with platform:/plugin
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="resource"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="themeid">
+ <complexType>
+ <attribute name="refid" type="string">
+ <annotation>
+ <documentation>
+ reference to theme for applying contribution
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="identifier" basedOn="org.eclipse.osbp.vaaclipse.theme/theme/@id"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="inheritedTheme">
+ <complexType>
+ <attribute name="refid" type="string">
+ <annotation>
+ <documentation>
+ reference to inherited (parent) theme
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="identifier" basedOn="org.eclipse.osbp.vaaclipse.theme/theme/@id"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="resourceLocationUri">
+ <complexType>
+ <attribute name="uri" type="string" use="required">
+ <annotation>
+ <documentation>
+ an url starting with platform:/plugin
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeContributionImpl.java b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeContributionImpl.java
new file mode 100644
index 0000000..f55a577
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeContributionImpl.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.theme;
+
+import org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeContribution;
+
+/**
+ * @author rushan
+ *
+ */
+public class ThemeContributionImpl extends ThemeEntryImpl implements
+ ThemeContribution {
+ private String insertPosition = "after=MAIN_CSS";
+
+ public ThemeContributionImpl(String id) {
+ super(id);
+ }
+
+ @Override
+ public String getInsertPosition() {
+ return insertPosition;
+ }
+
+ public void setInsertPosition(String insertPosition) {
+ this.insertPosition = insertPosition;
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeEngineImpl.java b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeEngineImpl.java
new file mode 100644
index 0000000..7d4131e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeEngineImpl.java
@@ -0,0 +1,162 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.theme;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.RegistryFactory;
+import org.eclipse.osbp.vaaclipse.publicapi.theme.Theme;
+import org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeContribution;
+import org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeEngine;
+
+/**
+ * @author rushan
+ *
+ */
+public class ThemeEngineImpl implements ThemeEngine {
+ private Map<String, ThemeImpl> themes = new HashMap<String, ThemeImpl>();
+ private Map<String, ThemeImpl> themesByWebId = new HashMap<String, ThemeImpl>();
+ private Map<String, ThemeContributionImpl> contributionsByWebId = new HashMap<String, ThemeContributionImpl>();
+
+ public void activate() {
+ IExtensionRegistry registry = RegistryFactory.getRegistry();
+ IExtensionPoint extPoint = registry
+ .getExtensionPoint("org.eclipse.osbp.vaaclipse.theme");
+
+ Map<Theme, List<String>> inherited = new HashMap<Theme, List<String>>();
+ // add themes
+ for (IExtension e : extPoint.getExtensions()) {
+ for (IConfigurationElement ce : e.getConfigurationElements()) {
+ if (ce.getName().equals("theme")) {
+ String themeId = ce.getAttribute("id");
+ if (!themes.containsKey(themeId)) {
+ String label = ce.getAttribute("label");
+ String description = ce.getAttribute("description");
+
+ ThemeImpl theme = new ThemeImpl(themeId, label);
+ setupThemeEntry(theme, ce);
+
+ List<String> inheritedList = new ArrayList<String>();
+ for (IConfigurationElement inheritedThemeEl : ce
+ .getChildren("inheritedTheme")) {
+ String refid = inheritedThemeEl
+ .getAttribute("refid");
+ if (refid != null) {
+ inheritedList.add(refid);
+ }
+ }
+
+ inherited.put(theme, inheritedList);
+
+ theme.setDescription(description);
+ themes.put(themeId, theme);
+ themesByWebId.put(theme.getWebId(), theme);
+ }
+ }
+ }
+ }
+
+ // add inherited themes
+ for (ThemeImpl theme : themes.values()) {
+ List<String> inheritedThemes = inherited.get(theme);
+ for (String inheritedThemeId : inheritedThemes) {
+ ThemeImpl inheritedTheme = themes.get(inheritedThemeId);
+ if (inheritedTheme != null)
+ theme.addInheritedTheme(inheritedTheme);
+ }
+ }
+
+ // add user contributions
+ for (IExtension e : extPoint.getExtensions()) {
+ for (IConfigurationElement ce : e.getConfigurationElements()) {
+ if (ce.getName().equals("themecontribution")) {
+ IConfigurationElement[] cces = ce.getChildren("themeid");
+ if (cces.length > 0) {
+ String contributionId = ce.getAttribute("id");
+ ThemeContributionImpl contribution = new ThemeContributionImpl(
+ contributionId);
+ setupThemeEntry(contribution, ce);
+
+ String insertPosition = ce
+ .getAttribute("insertPosition");
+ if (insertPosition != null)
+ contribution.setInsertPosition(insertPosition);
+
+ for (int i = 0; i < cces.length; i++) {
+ String themeId = cces[i].getAttribute("refid");
+ if (themeId != null && themeId.length() > 0) {
+ ThemeImpl theme = themes.get(themeId);
+ if (theme != null) {
+ theme.addContribution(contribution);
+ }
+ }
+ }
+
+ contributionsByWebId.put(contribution.getWebId(),
+ contribution);
+ }
+ }
+ }
+ }
+
+ for (ThemeImpl theme : themes.values()) {
+ try {
+ theme.prepareTheme();
+ } catch (Exception e1) {
+ e1.printStackTrace();
+ }
+ }
+ }
+
+ private void setupThemeEntry(ThemeEntryImpl themeEntry,
+ IConfigurationElement ce) {
+ String cssUri = ce.getAttribute("cssUri");
+ if (cssUri != null) {
+ if (!cssUri.startsWith("platform:/plugin/")) {
+ cssUri = "platform:/plugin/" + ce.getContributor().getName()
+ + "/" + cssUri;
+ }
+ }
+
+ themeEntry.setCssUri(cssUri);
+
+ for (IConfigurationElement resourceEl : ce
+ .getChildren("resourceLocationUri")) {
+ String resourceLocationUri = resourceEl.getAttribute("uri");
+ if (resourceLocationUri != null) {
+ themeEntry.addResourceUri(resourceLocationUri);
+ }
+ }
+ }
+
+ @Override
+ public Theme getTheme(String themeId) {
+ return themes.get(themeId);
+ }
+
+ @Override
+ public Theme getThemeByWebId(String themeWebId) {
+ return themesByWebId.get(themeWebId);
+ }
+
+ @Override
+ public ThemeContribution getThemeContributionByWebId(
+ String contributionWebId) {
+ return contributionsByWebId.get(contributionWebId);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeEntryImpl.java b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeEntryImpl.java
new file mode 100644
index 0000000..8f8f74e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeEntryImpl.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.theme;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @author rushan
+ *
+ */
+public class ThemeEntryImpl {
+ protected String id;
+ protected String webId;
+ protected String cssUri;
+ protected List<String> resourceUri = new ArrayList<String>();
+
+ public ThemeEntryImpl(String id) {
+ this.id = id;
+ this.webId = this.id.replaceAll("\\.", "-");
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public String getWebId() {
+ return webId;
+ }
+
+ public String getCssUri() {
+ return cssUri;
+ }
+
+ public void setCssUri(String cssUri) {
+ this.cssUri = cssUri;
+ }
+
+ public List<String> getResourceLocationURIs() {
+ return Collections.unmodifiableList(this.resourceUri);
+ }
+
+ public void addResourceUri(String resourceUri) {
+ resourceUri = processUri(resourceUri);
+ this.resourceUri.add(resourceUri);
+ }
+
+ private String processUri(String uri) {
+ if (uri == null)
+ return null;
+
+ uri = uri.trim();
+ if (uri.length() > 0) {
+ char last = uri.charAt(uri.length() - 1);
+ if (last != '/') {
+ uri += "/";
+ }
+ }
+ return uri;
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeImpl.java b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeImpl.java
new file mode 100644
index 0000000..431d421
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeImpl.java
@@ -0,0 +1,327 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.theme;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.osbp.vaaclipse.publicapi.theme.Theme;
+import org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeContribution;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.wiring.BundleWiring;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ThemeImpl extends ThemeEntryImpl implements Theme {
+
+ private static final String PLATFORM_PLUGIN = "platform:/plugin/";
+
+ private static final String PLATFORM_RESOURCE = "platform:/resource/";
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ThemeImpl.class);
+
+ private static List<String> imageExtensions = new ArrayList<String>();
+ static {
+ imageExtensions.add("png");
+ imageExtensions.add("gif");
+ imageExtensions.add("jpg");
+ imageExtensions.add("jpeg");
+ }
+
+ private String label;
+ private String description;
+ private List<ThemeContribution> contributions = new ArrayList<ThemeContribution>();
+ private List<Theme> inheritedThemes = new ArrayList<Theme>();
+
+ private List<String> cssCashList;
+ private List<String> resourcesCashList;
+
+ private byte[] cssBytes;
+
+ public ThemeImpl(String id, String label) {
+ super(id);
+ this.label = label;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ @Override
+ public String getDescription() {
+ return this.description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public List<Theme> getInheritedThemes() {
+ return Collections.unmodifiableList(this.inheritedThemes);
+ }
+
+ @Override
+ public List<ThemeContribution> getContributions() {
+ return Collections.unmodifiableList(this.contributions);
+ }
+
+ public void addContribution(ThemeContribution contibution) {
+ this.resourcesCashList = null;
+ this.cssCashList = null;
+ this.contributions.add(contibution);
+ }
+
+ public void addInheritedTheme(Theme theme) {
+ this.resourcesCashList = null;
+ this.cssCashList = null;
+ this.inheritedThemes.add(theme);
+ }
+
+ @Override
+ public String toString() {
+ return "Theme [id=" + id + ", label='" + label;
+ }
+
+ @Override
+ public List<String> getAllCssURIs() {
+ if (cssCashList == null) {
+ cssCashList = new ArrayList<String>();
+ cssCashList.add(getCssUri());
+
+ for (Theme theme : this.getInheritedThemes()) {
+ cssCashList.addAll(theme.getAllCssURIs());
+ }
+
+ for (ThemeContribution c : this.getContributions()) {
+ if (c.getCssUri() != null)
+ cssCashList.add(c.getCssUri());
+ }
+ }
+ return cssCashList;
+ }
+
+ @Override
+ public List<String> getAllResourceLocationURIs() {
+ if (resourcesCashList == null) {
+ resourcesCashList = new ArrayList<String>();
+ resourcesCashList.addAll(getResourceLocationURIs());
+
+ for (Theme theme : this.getInheritedThemes()) {
+ resourcesCashList.addAll(theme.getAllResourceLocationURIs());
+ }
+
+ for (ThemeContribution c : this.getContributions()) {
+ resourcesCashList.addAll(c.getResourceLocationURIs());
+ }
+ }
+ return Collections.unmodifiableList(resourcesCashList);
+ }
+
+ @Override
+ public InputStream getCssAsStream() {
+ return new ByteArrayInputStream(cssBytes);
+ }
+
+ @Override
+ public InputStream getThemeResourceAsStream(String themeUri) {
+ InputStream in = null;
+ StringBuffer buffer = new StringBuffer(themeUri);
+ for (String resLocUri : getAllResourceLocationURIs()) {
+ String bundlePath = resLocUri + themeUri;
+ try {
+ URL u = new URL(bundlePath);
+ in = u.openStream();
+ break;
+ } catch (Exception ex) {
+ buffer.append(":\n").append(ex.getClass().getName()).append(" in ").append(resLocUri).append("\n");
+ }
+ }
+ if (in == null) {
+ LOGGER.debug("{}", buffer);
+ }
+ return in;
+ }
+
+ void prepareTheme() throws Exception {
+ StringBuffer inheritedBuffer = new StringBuffer();
+ for (Theme inherited : inheritedThemes) {
+ inheritedBuffer.append(String.format("@import \"../%s/styles.css\";", inherited.getWebId()));
+ }
+
+ List<ThemeContributionImpl> afterMainCss = new ArrayList<ThemeContributionImpl>();
+ List<ThemeContributionImpl> afterInheritedImports = new ArrayList<ThemeContributionImpl>();
+ List<ThemeContributionImpl> beforeInheritedImports = new ArrayList<ThemeContributionImpl>();
+ Map<String, List<ThemeContributionImpl>> bindedContributionsBefore = new HashMap<String, List<ThemeContributionImpl>>();
+ Map<String, List<ThemeContributionImpl>> bindedContributionsAfter = new HashMap<String, List<ThemeContributionImpl>>();
+
+ for (ThemeContribution c : this.contributions) {
+ if (c.getCssUri() == null)
+ continue;
+
+ ThemeContributionImpl contribution = (ThemeContributionImpl) c;
+ String pos = contribution.getInsertPosition();
+ String[] split = pos.split("=");
+ if (split.length == 2) {
+ String mod = split[0].trim();
+
+ if ("after".equals(mod) || "before".equals(mod)) {
+ String value = split[1].trim();
+
+ if (mod.equals("after") && ThemeContribution.MAIN_CSS.equals(value)) {
+ afterMainCss.add(contribution);
+ } else if (mod.equals("after") && ThemeContribution.INHERITED_IMPORTS.equals(value) || mod.equals("before") && ThemeContribution.MAIN_CSS.equals(value)) {
+ afterInheritedImports.add(contribution);
+ } else if (mod.equals("before") && ThemeContribution.INHERITED_IMPORTS.equals(value)) {
+ beforeInheritedImports.add(contribution);
+ } else {// value - is contribution id?
+ if (mod.equals("before")) {
+ if (!bindedContributionsBefore.containsKey(value))
+ bindedContributionsBefore.put(value, new ArrayList<ThemeContributionImpl>());
+ bindedContributionsBefore.get(value).add(contribution);
+ } else if (mod.equals("after")) {
+ if (!bindedContributionsAfter.containsKey(value))
+ bindedContributionsAfter.put(value, new ArrayList<ThemeContributionImpl>());
+ bindedContributionsAfter.get(value).add(contribution);
+ }
+ }
+ }
+ }
+ }
+
+ StringBuffer afterMainCssContributionsBuffer = buildStringBuffer(afterMainCss, bindedContributionsBefore, bindedContributionsAfter);
+ StringBuffer afterInheritedImportsContributionsBuffer = buildStringBuffer(afterInheritedImports, bindedContributionsBefore, bindedContributionsAfter);
+ StringBuffer beforeInheritedImportsContributionsBuffer = buildStringBuffer(beforeInheritedImports, bindedContributionsBefore, bindedContributionsAfter);
+
+ String ls = System.lineSeparator();
+ String total = beforeInheritedImportsContributionsBuffer.toString() + ls + inheritedBuffer.toString() + ls + afterInheritedImportsContributionsBuffer.toString() + ls
+ + "@import \"original_styles.css\";" + ls + afterMainCssContributionsBuffer.toString() + ls;
+
+ cssBytes = total.getBytes("UTF-8");
+
+ for (Theme inherited : inheritedThemes) {
+ if (inherited instanceof ThemeImpl) {
+ ((ThemeImpl) inherited).prepareTheme();
+ }
+ }
+ }
+
+ @Override
+ public List<String> getImageURIs() {
+ List<String> result = new ArrayList<String>();
+ for (String uri : getAllResourceLocationURIs()) {
+ PathPair pair = parsePathPair(uri);
+ if (pair == null) {
+ continue;
+ }
+
+ Bundle target = findBundle(pair.bundle);
+ BundleWiring wiring = target.adapt(BundleWiring.class);
+ Collection<String> resources = wiring.listResources(pair.folder, "*", BundleWiring.LISTRESOURCES_RECURSE);
+ for (String path : resources) {
+ if (path.contains(".")) {
+ String extension = path.substring(path.lastIndexOf(".") + 1);
+ if (imageExtensions.contains(extension)) {
+ result.add("platform:/plugin/" + pair.bundle + "/" + path);
+ }
+ }
+ }
+ }
+ return result;
+ }
+
+ private Bundle findBundle(String bundleName) {
+ for (Bundle b : FrameworkUtil.getBundle(getClass()).getBundleContext().getBundles()) {
+ if (b.getSymbolicName().equals(bundleName)) {
+ return b;
+ }
+ }
+ return null;
+ }
+
+ private PathPair parsePathPair(String uri) {
+ PathPair pair = null;
+ if (uri.startsWith(PLATFORM_RESOURCE)) {
+ pair = new PathPair();
+ // eg platform:/resource/org.my.foo.bundle/images/obj16
+ String result = uri.replace(PLATFORM_RESOURCE, "");
+ pair.bundle = result.substring(0, result.indexOf("/"));
+ String folder = result = result.substring(result.indexOf("/"), result.length());
+ pair.folder = folder;
+ } else if (uri.startsWith(PLATFORM_PLUGIN)) {
+ // eg platform:/plugin/org.my.foo.bundle/images/obj16
+ pair = new PathPair();
+ String result = uri.replace(PLATFORM_PLUGIN, "");
+ pair.bundle = result.substring(0, result.indexOf("/"));
+ String folder = result = result.substring(result.indexOf("/"), result.length());
+ pair.folder = folder;
+ }
+
+ LOGGER.error("Not a valid URI: " + uri);
+ return pair;
+ }
+
+ private StringBuffer buildStringBuffer(List<ThemeContributionImpl> list, Map<String, List<ThemeContributionImpl>> bindedContributionsBefore,
+ Map<String, List<ThemeContributionImpl>> bindedContributionsAfter) {
+ StringBuffer buffer = new StringBuffer();
+ List<ThemeContributionImpl> result = buildList(list, bindedContributionsBefore, bindedContributionsAfter);
+ for (ThemeContributionImpl c : result) {
+ buffer.append(String.format("@import \"%s.css\";", c.getWebId()));
+ }
+ return buffer;
+ }
+
+ private List<ThemeContributionImpl> buildList(List<ThemeContributionImpl> list, Map<String, List<ThemeContributionImpl>> bindedContributionsBefore,
+ Map<String, List<ThemeContributionImpl>> bindedContributionsAfter) {
+ bindedContributionsBefore = new HashMap<String, List<ThemeContributionImpl>>(bindedContributionsBefore);
+ bindedContributionsAfter = new HashMap<String, List<ThemeContributionImpl>>(bindedContributionsAfter);
+ List<ThemeContributionImpl> accumulator = new ArrayList<ThemeContributionImpl>();
+
+ int restBefore, restAfter;
+ do {
+ restBefore = bindedContributionsBefore.size() + bindedContributionsAfter.size();
+ for (ThemeContributionImpl c : list) {
+
+ List<ThemeContributionImpl> bindedList = bindedContributionsBefore.remove(c.getId());
+ if (bindedList != null)
+ accumulator.addAll(bindedList);
+
+ accumulator.add(c);
+
+ bindedList = bindedContributionsAfter.remove(c.getId());
+ if (bindedList != null)
+ accumulator.addAll(bindedList);
+ }
+ restAfter = bindedContributionsBefore.size() + bindedContributionsAfter.size();
+ list = accumulator;
+ accumulator = new ArrayList<ThemeContributionImpl>();
+ } while (restBefore != restAfter);
+
+ return list;
+ }
+
+ private static class PathPair {
+ private String bundle;
+ private String folder;
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeManagerContextFunction.java b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeManagerContextFunction.java
new file mode 100644
index 0000000..f647dfc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeManagerContextFunction.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.theme;
+
+import org.eclipse.e4.core.contexts.ContextFunction;
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeEngine;
+import org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeManager;
+
+/**
+ * @author rushan
+ *
+ */
+public class ThemeManagerContextFunction extends ContextFunction {
+ private ThemeEngine themeEngine;
+
+ public void activate() {
+ System.out.println("Theme manager factory is started");
+ }
+
+ @Override
+ public Object compute(IEclipseContext context) {
+ ThemeManager manager = context.getLocal(ThemeManager.class);
+ if (manager == null) {
+ if (themeEngine != null)
+ context.set(ThemeEngine.class, themeEngine);
+ manager = ContextInjectionFactory.make(ThemeManagerImpl.class,
+ context);
+ context.set(ThemeManager.class, manager);
+ }
+ return manager;
+ }
+
+ public void bindThemeEngine(ThemeEngine themeEngine) {
+ this.themeEngine = themeEngine;
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeManagerImpl.java b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeManagerImpl.java
new file mode 100644
index 0000000..69949c3
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.theme/src/org/eclipse/osbp/vaaclipse/theme/ThemeManagerImpl.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.theme;
+
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.osbp.vaaclipse.publicapi.theme.Theme;
+import org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeConstants;
+import org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeEngine;
+import org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeManager;
+
+/**
+ * @author rushan
+ *
+ */
+public class ThemeManagerImpl implements ThemeManager {
+ @Inject
+ IEventBroker eventBroker;
+
+ @Inject
+ private ThemeEngine themeEngine;
+
+ private String themeId;
+
+ @Override
+ public String getThemeId() {
+ return this.themeId;
+ }
+
+ @Override
+ public ThemeEngine getThemeEngine() {
+ return this.themeEngine;
+ }
+
+ @Override
+ public Theme getTheme() {
+ return themeEngine.getTheme(themeId);
+ }
+
+ @Override
+ public void setTheme(String themeId) {
+ if (this.themeId != null && this.themeId.equals(themeId))
+ return;
+
+ Theme theme = themeEngine.getTheme(themeId);
+ if (theme == null)
+ throw new IllegalArgumentException(String.format(
+ "Theme with id=%s is not exists", themeId));
+ this.themeId = themeId;
+ eventBroker.send(ThemeConstants.Events.setThemeEvent, theme);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/.project b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/.project
new file mode 100644
index 0000000..46fa1e2
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/.project
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse.ui.preferences.addon</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.vaadin.integration.eclipse.addonStylesBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1f30d77
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/META-INF/MANIFEST.MF
@@ -0,0 +1,49 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.ui.preferences.addon
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.ui.preferences.addon;singleton:=true
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Import-Package: e4modelextension,
+ javax.annotation;version="1.1.0",
+ javax.inject;version="1.0.0",
+ org.eclipse.core.internal.preferences,
+ org.eclipse.core.runtime.preferences;version="3.3.0",
+ org.eclipse.e4.core.contexts,
+ org.eclipse.e4.core.services.contributions,
+ org.eclipse.e4.core.services.events,
+ org.eclipse.e4.ui.model.application,
+ org.eclipse.emf.common.notify,
+ org.eclipse.emf.common.util,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.ecore.resource,
+ org.eclipse.emf.ecore.util,
+ org.eclipse.osbp.vaaclipse.ui.preferences.model;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.ui.preferences.model.util;version="0.9.0",
+ org.osgi.framework;version="1.7.0",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.osgi.service.prefs;version="1.1.1",
+ org.eclipse.osbp.vaaclipse.publicapi.resources;version="0.9.0",
+ org.eclipse.osbp.vaadin.optiondialog
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.e4.core.di,
+ com.vaadin.client;bundle-version="[7.5.7,7.7.0)",
+ org.eclipse.e4.ui.model.workbench;bundle-version="1.0.1",
+ com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.shared;bundle-version="[7.5.7,7.7.0)",
+ org.eclipse.equinox.preferences;bundle-version="3.5.100",
+ org.eclipse.core.runtime;bundle-version="3.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi;bundle-version="[0.9.0,0.10.0)",
+ javax.annotation;bundle-version="[1.1.0,1.2.0)",
+ org.jsoup;bundle-version="1.7.2",
+ org.slf4j.api;bundle-version="1.7.2"
+Export-Package: org.eclipse.osbp.vaaclipse.ui.preferences.addon;version="0.9.0"
+Service-Component: OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml
+Service-Component: OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml
+Service-Component: OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml
+Service-Component: OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml
+Service-Component: OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml
+Service-Component: OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml
+Service-Component: OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml
new file mode 100644
index 0000000..bd8b432
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction">
+ <implementation class="org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction"/>
+ <service>
+ <provide interface="org.eclipse.e4.core.contexts.IContextFunction"/>
+ </service>
+ <property name="service.context.key" value="org.eclipse.osbp.vaaclipse.publicapi.preferences.IPreferenceProvider"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.html b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.ini b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.mappings b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.properties b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.properties
new file mode 100644
index 0000000..837e074
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.ui.preferences.addon
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/build.properties b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/build.properties
new file mode 100644
index 0000000..7f492ff
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/build.properties
@@ -0,0 +1,16 @@
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ plugin.xml,\
+ css/,\
+ img/,\
+ OSGI-INF/org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml,\
+ epl-v10.html,\
+ license.html
+ OSGI-INF/org.osbp.vaaclipse.ui.preferences.addon.internal.service.PreferenceProviderContextFunction.xml,\
+ OSGI-INF/
+src.includes = about.properties, about.mappings, about.ini, about.html, css/,\
+ img/,\
+ epl-v10.html,\
+ license.html
+source.. = src/
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/css/style.css b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/css/style.css
new file mode 100644
index 0000000..c54753a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/css/style.css
@@ -0,0 +1,101 @@
+.preferences-dialog .filter-category-button {
+ float:right;
+}
+
+.preferences-dialog .filter-category-button .v-button-caption {
+ display: none;
+}
+
+.preferences-dialog .clear-filter-button {
+ float:right;
+}
+
+.preferences-dialog .clear-filter-button .v-button-caption {
+ display: none;
+}
+
+.preferences-dialog .v-panel-deco {
+ display: none;
+}
+
+.preferences-dialog .field-editor {
+ margin-bottom: 15px;
+ float: left;
+ clear: left;
+}
+
+.preferences-dialog .add-button, .preferences-dialog .remove-button, .preferences-dialog .up-button, .preferences-dialog .down-button {
+ float: right;
+ clear: right;
+}
+
+.preferences-dialog .field-editor-caption-top {
+ margin-bottom: 5px;
+ float: left;
+ clear: left;
+}
+
+.preferences-dialog .restore-defaults {
+ float: right;
+}
+
+.preferences-dialog .apply {
+ float: right;
+ margin-left: 10px;
+}
+
+.preferences-dialog .ok-button {
+ float: right;
+}
+
+.preferences-dialog .cancel-button {
+ float: right;
+ margin-left: 10px;
+}
+
+.preferences-dialog .page-header-text {
+ font-weight: bold;
+}
+
+.preferences-dialog .page-header-error-text {
+ font-weight: bold;
+ color: red;
+}
+
+.preferences-dialog .page-header-panel {
+ padding: 10px;
+ border-bottom: solid 1px #DCDCDC;
+}
+
+.preferences-dialog .preferences-page {
+ padding: 10px;
+}
+
+.preferences-dialog .page-bottom-panel {
+ padding: 10px;
+}
+
+.preferences-dialog .dlg-button-panel {
+ padding: 10px;
+ border-top: solid 1px #DCDCDC;
+}
+
+.preferences-export-import-dialog .export, .preferences-export-import-dialog .import {
+ padding: 10px;
+}
+
+.preferences-export-import-dialog .export .v-panel, .preferences-export-import-dialog .import .v-panel {
+ margin-top: 10px;
+}
+
+.preferences-export-import-dialog .export .status-label {
+ margin-top: 25px;
+}
+
+.preferences-export-import-dialog .export .download-button {
+ margin-top: 10px;
+}
+
+.preferences-export-import-dialog .import .v-label {
+ margin-top: 20px;
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/epl-v10.html b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/img/clear.png b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/img/clear.png
new file mode 100644
index 0000000..ea11a3e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/img/clear.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/img/find.png b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/img/find.png
new file mode 100644
index 0000000..0773220
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/img/find.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/license.html b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.vaaclipse.ui.preferences.addon/plugin.xml b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/plugin.xml
new file mode 100644
index 0000000..e93d6af
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension point="org.eclipse.osbp.vaaclipse.theme">
+ <themecontribution
+ cssUri="css/style.css"
+ id="org.eclipse.osbp.vaaclipse.ui.preferences.styles"
+ insertPosition="after=MAIN_CSS">
+ <resourceLocationUri
+ uri="img/">
+ </resourceLocationUri>
+ <themeid
+ refid="reindeer">
+ </themeid>
+ </themecontribution>
+ </extension>
+</plugin>
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/pom.xml b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/pom.xml
new file mode 100644
index 0000000..cf0ff90
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.osbp.vaaclipse.ui.preferences.addon</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/ExportPreferencesHandler.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/ExportPreferencesHandler.java
new file mode 100644
index 0000000..559c7a6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/ExportPreferencesHandler.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.impexp.ExportPreferences;
+
+/**
+ * @author rushan
+ *
+ */
+public class ExportPreferencesHandler {
+
+ @CanExecute
+ public boolean canExecute(@Optional PreferencesAuthorization prefAuthService) {
+ boolean isAllowed = true;
+ if (prefAuthService != null) {
+ isAllowed = prefAuthService.exportAllowed();
+ }
+ return isAllowed;
+ }
+
+ @Execute
+ public void execute(@Optional PreferencesAuthorization prefAuthService,
+ IEclipseContext context) {
+ if (!canExecute(prefAuthService))
+ return;
+
+ ContextInjectionFactory.make(ExportPreferences.class, context);
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/ImportPreferencesHandler.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/ImportPreferencesHandler.java
new file mode 100644
index 0000000..1a062c9
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/ImportPreferencesHandler.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.impexp.ImportPreferences;
+
+/**
+ * @author rushan
+ *
+ */
+public class ImportPreferencesHandler {
+
+ @CanExecute
+ public boolean canExecute(@Optional PreferencesAuthorization prefAuthService) {
+ boolean isAllowed = true;
+ if (prefAuthService != null) {
+ isAllowed = prefAuthService.importAllowed();
+ }
+ return isAllowed;
+ }
+
+ @Execute
+ public void execute(@Optional PreferencesAuthorization prefAuthService,
+ IEclipseContext context) {
+ if (!canExecute(prefAuthService))
+ return;
+
+ ContextInjectionFactory.make(ImportPreferences.class, context);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/OpenPreferencesDialogHandler.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/OpenPreferencesDialogHandler.java
new file mode 100644
index 0000000..def9806
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/OpenPreferencesDialogHandler.java
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.PreferencesDialog;
+
+import com.vaadin.ui.UI;
+
+import e4modelextension.VaaclipseApplication;
+
+/**
+ * @author rushan
+ *
+ */
+public class OpenPreferencesDialogHandler {
+
+ @Execute
+ public void execute(IEclipseContext context, MApplication app, UI ui) {
+
+ context.set(VaaclipseApplication.class, (VaaclipseApplication) app);
+ PreferencesDialog prefDlg = ContextInjectionFactory.make(
+ PreferencesDialog.class, context);
+ prefDlg.getWindow().center();
+ ui.addWindow(prefDlg.getWindow());
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/PreferencesAddon.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/PreferencesAddon.java
new file mode 100644
index 0000000..0d9ce26
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/PreferencesAddon.java
@@ -0,0 +1,200 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.eclipse.core.internal.preferences.PreferencesService;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IPreferencesService;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.contributions.IContributionFactory;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.MContribution;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.util.PrefHelper;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesFactory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.util.PreferencesSwitch;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.prefs.Preferences;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import e4modelextension.VaaclipseApplication;
+
+/**
+ * @author rushan
+ *
+ */
+public class PreferencesAddon {
+
+ @Inject
+ MApplication app;
+
+ @Inject
+ IEclipseContext context;
+
+ Map<String, Bundle> bundlesByName = new HashMap<>();
+ Logger logger = LoggerFactory.getLogger(PreferencesAddon.class);
+
+ @SuppressWarnings("restriction")
+ IPreferencesService equinoxPrefService = PreferencesService.getDefault();
+ IEclipsePreferences root = equinoxPrefService.getRootNode();
+
+ private PreferencesAuthorization authService;
+
+ private VaaclipseApplication vaaApp;
+
+ @PostConstruct
+ void init() {
+ vaaApp = (VaaclipseApplication) app;
+ context.set(VaaclipseApplication.class, vaaApp);
+
+ BundleContext bundleContext = FrameworkUtil.getBundle(
+ PreferencesAddon.class).getBundleContext();
+
+ obtainPreferencesAuthService(bundleContext);
+
+ for (Bundle b : bundleContext.getBundles()) {
+ bundlesByName.put(b.getSymbolicName(), b);
+ }
+
+ for (PreferencesCategory c : vaaApp.getPreferencesCategories()) {
+ setupPreferences(c, "");
+ }
+
+ for (PreferencesPage page : vaaApp.getPreferencesPages()) {
+ setTypedDefaultValues(page);
+ initContributions(page);
+ }
+
+ logger.info("Preferences adon activated");
+ }
+
+ private void setupPreferences(PreferencesCategory category,
+ String currentPath) {
+
+ String catPath = currentPath + "/" + category.getId();
+
+ if (category.getPage() != null) {
+ for (FieldEditor<?> editor : category.getPage().getChildren()) {
+
+ Bundle bundle = bundlesByName.get(editor.getBundle());
+ if (bundle != null) {
+ String absolutePreferencePath = PrefHelper
+ .toEquinoxPreferencePath(bundle, catPath);
+
+ Preferences pref = root.node(absolutePreferencePath);
+ editor.setPreferences(pref);
+ editor.setEquinoxPath(absolutePreferencePath);
+ } else {
+ logger.warn("Could not find bundle {} for editor {}",
+ editor.getBundle(), editor);
+ }
+ }
+
+ }
+
+ for (PreferencesCategory childCat : category.getChildCategories()) {
+ setupPreferences(childCat, catPath);
+ }
+ }
+
+ private void obtainPreferencesAuthService(BundleContext bundleContext) {
+
+ ServiceReference<PreferencesAuthorization> ref = bundleContext
+ .getServiceReference(PreferencesAuthorization.class);
+ if (ref != null) {
+ authService = bundleContext.getService(ref);
+ context.set(PreferencesAuthorization.class, authService);
+ }
+
+ ServiceReference<PreferencesFactory> prefFactoryRef = bundleContext
+ .getServiceReference(PreferencesFactory.class);
+ if (prefFactoryRef != null) {
+ PreferencesFactory service = bundleContext
+ .getService(prefFactoryRef);
+ context.set(PreferencesFactory.class, service);
+ }
+ }
+
+ private void setTypedDefaultValues(PreferencesPage page) {
+ for (FieldEditor<?> ed : page.getChildren()) {
+ FieldEditor<Object> editor = (FieldEditor<Object>) ed;
+
+ PreferencesSwitch<?> sw = new PreferencesSwitch() {
+ @Override
+ public Object caseBooleanFieldEditor(BooleanFieldEditor object) {
+ if (object.getDefaultValue() == null)
+ return false;
+ return Boolean.valueOf(object.getDefaultValue());
+ }
+
+ @Override
+ public Object caseScaleFieldEditor(ScaleFieldEditor object) {
+ if (object.getDefaultValue() == null)
+ return 0;
+ return Integer.valueOf(object.getDefaultValue());
+ }
+
+ @Override
+ public Object caseIntegerFieldEditor(IntegerFieldEditor object) {
+ if (object.getDefaultValue() == null)
+ return 0;
+ return Integer.valueOf(object.getDefaultValue());
+ }
+ };
+ Object converted = sw.doSwitch(editor);
+ if (converted == null) {
+ converted = editor.getDefaultValue();
+ if (converted == null)
+ converted = "";
+ }
+ editor.setDefaultValueTyped(converted);
+ editor.setDefaultValue(converted.toString());
+ }
+ }
+
+ @SuppressWarnings("restriction")
+ private void initContributions(PreferencesPage page) {
+ for (FieldEditor<?> ed : page.getChildren()) {
+ if (ed instanceof MContribution) {
+ MContribution editorWithContribution = (MContribution) ed;
+ String contributorURI = editorWithContribution
+ .getContributionURI();
+ if (contributorURI != null) {
+ IEclipseContext childContext = context.createChild();
+ PrefHelper.populateInterfaces(
+ (FieldEditor<?>) editorWithContribution,
+ childContext, editorWithContribution.getClass()
+ .getInterfaces());
+ IContributionFactory contributionFactory = (IContributionFactory) childContext
+ .get(IContributionFactory.class.getName());
+ Object editorContribution = contributionFactory.create(
+ contributorURI, childContext);
+ editorWithContribution.setObject(editorContribution);
+ }
+ }
+ }
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/PreferencesAuthorization.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/PreferencesAuthorization.java
new file mode 100644
index 0000000..f799c60
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/PreferencesAuthorization.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+
+public interface PreferencesAuthorization {
+
+ /**
+ * Returns true if the preference page may be showed for the current user
+ *
+ * @param pageId
+ * @param user
+ * @return
+ **/
+ boolean isAllowed(PreferencesCategory category);
+
+ boolean exportAllowed();
+
+ boolean importAllowed();
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/PreferencesEvents.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/PreferencesEvents.java
new file mode 100644
index 0000000..e387bdf
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/PreferencesEvents.java
@@ -0,0 +1,22 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon;
+
+/**
+ * @author rushan
+ *
+ */
+public class PreferencesEvents {
+
+ public static final String PREFERENCES_APPLIED = "PREFERENCES_CHANGED";
+ public static final String PREFERENCES_TO_DEFAULTS = "PREFERENCES_TO_DEFAULTS";
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/BooleanFieldEditorRenderer.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/BooleanFieldEditorRenderer.java
new file mode 100644
index 0000000..d494606
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/BooleanFieldEditorRenderer.java
@@ -0,0 +1,74 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import javax.inject.Inject;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle;
+
+import com.vaadin.ui.CheckBox;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Label;
+
+/**
+ * @author rushan
+ *
+ */
+public class BooleanFieldEditorRenderer extends FieldEditorRenderer<Boolean> {
+
+ @Inject
+ BooleanFieldEditor booleanFieldEditor;
+ private CheckBox cb;
+
+ @Override
+ public Boolean getValue() {
+ return getPreferences().getBoolean(
+ booleanFieldEditor.getPreferenceName(),
+ booleanFieldEditor.getDefaultValueTyped());
+ }
+
+ @Override
+ public void setValue(Boolean value) {
+ getPreferences().putBoolean(booleanFieldEditor.getPreferenceName(),
+ value);
+ }
+
+ @Override
+ public void render() {
+ renderInternal(booleanFieldEditor);
+
+ cb = new CheckBox();
+ cb.setValue(getValue());
+
+ if (booleanFieldEditor.getStyle() == BooleanFieldStyle.DEFAULT) {
+ cb.setCaption(booleanFieldEditor.getLabel());
+ component = cb;
+ } else if (booleanFieldEditor.getStyle() == BooleanFieldStyle.SEPARATE_LABEL) {
+
+ HorizontalLayout hl = new HorizontalLayout();
+
+ Label separateLabel = new Label(booleanFieldEditor.getLabel());
+ separateLabel.addStyleName("boolean-separate-label");
+ cb.addStyleName("boolean-separate-checkbox");
+ hl.addComponent(separateLabel);
+ hl.addComponent(cb);
+
+ component = hl;
+ }
+ }
+
+ @Override
+ public void save() {
+ setValue(cb.getValue());
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ComboFieldEditorRenderer.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ComboFieldEditorRenderer.java
new file mode 100644
index 0000000..8859f29
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ComboFieldEditorRenderer.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import com.vaadin.ui.AbstractSelect;
+import com.vaadin.ui.ComboBox;
+
+/**
+ * @author rushan
+ *
+ */
+public class ComboFieldEditorRenderer extends ListFieldEditorRenderer {
+
+ @Override
+ public AbstractSelect createSelect() {
+ return new ComboBox();
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/FieldEditorRenderer.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/FieldEditorRenderer.java
new file mode 100644
index 0000000..b0c3742
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/FieldEditorRenderer.java
@@ -0,0 +1,73 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import javax.inject.Inject;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.exception.ValidationFailedException;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+import org.osgi.service.prefs.Preferences;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Label;
+
+/**
+ * @author rushan
+ *
+ */
+public abstract class FieldEditorRenderer<T> {
+
+ @Inject
+ PreferencesPage page;
+
+ Component component;
+
+ @Inject
+ FieldEditor<?> basicInterfaceToEditor;
+
+ public abstract void render();
+
+ protected void renderInternal(FieldEditor<T> editor) {
+
+ // layout.setWidth("100%");
+
+ for (String style : editor.getTags()) {
+ component.addStyleName(style);
+ }
+ }
+
+ protected CssLayout createCssLayoutWithCaption() {
+ CssLayout layout = new CssLayout();
+ layout.addComponent(new Label(basicInterfaceToEditor.getLabel()));
+ this.component = layout;
+ return layout;
+ }
+
+ public Component getComponent() {
+ return component;
+ }
+
+ public Preferences getPreferences() {
+ return (Preferences) basicInterfaceToEditor.getPreferences();
+ }
+
+ public abstract T getValue();
+
+ public abstract void setValue(T value);
+
+ public abstract void save();
+
+ public void validate() throws ValidationFailedException {
+
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/IntegerFieldEditorRenderer.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/IntegerFieldEditorRenderer.java
new file mode 100644
index 0000000..a4e3c43
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/IntegerFieldEditorRenderer.java
@@ -0,0 +1,90 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import javax.inject.Inject;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.exception.ValidationFailedException;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.TextField;
+
+/**
+ * @author rushan
+ *
+ */
+public class IntegerFieldEditorRenderer extends FieldEditorRenderer<Integer> {
+
+ @Inject
+ IntegerFieldEditor editor;
+
+ TextField textField;
+
+ @Override
+ public void render() {
+ CssLayout layout = createCssLayoutWithCaption();
+ textField = new TextField();
+ if (getValue() != null)
+ textField.setValue(getValue().toString());
+ textField.setWidth("100%");
+ layout.addComponent(textField);
+ }
+
+ @Override
+ public Integer getValue() {
+ return getPreferences().getInt(editor.getPreferenceName(),
+ editor.getDefaultValueTyped());
+ }
+
+ @Override
+ public void setValue(Integer value) {
+ this.getPreferences().putInt(editor.getPreferenceName(), value);
+ }
+
+ @Override
+ public void validate() throws ValidationFailedException {
+
+ if (textField.getValue() != null) {
+ int value;
+ try {
+ value = Integer.parseInt(textField.getValue());
+ } catch (NumberFormatException e) {
+ throw new ValidationFailedException(editor.getLabel(),
+ "The value should be integer value");
+ }
+
+ if ((editor.getMinValidValue() != null && value < editor
+ .getMinValidValue())
+ || (editor.getMaxValidValue() != null && value > editor
+ .getMaxValidValue()))
+ throw new ValidationFailedException(editor.getLabel(),
+ String.format("Value should be in range (%s, %s)",
+ editor.getMinValidValue() != null ? editor
+ .getMinValidValue().toString() : "?",
+ editor.getMaxValidValue() != null ? editor
+ .getMaxValidValue().toString() : "?"));
+ }
+ }
+
+ @Override
+ public void save() {
+ String value = textField.getValue();
+ if (value != null) {
+ try {
+ int intValue = Integer.parseInt(value);
+ setValue(intValue);
+ } catch (NumberFormatException e) {
+
+ }
+ }
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ListEditorRenderer.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ListEditorRenderer.java
new file mode 100644
index 0000000..a9f05aa
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ListEditorRenderer.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.util.EmfHelper;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold;
+
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.ListSelect;
+
+/**
+ * @author rushan
+ *
+ */
+public class ListEditorRenderer extends FieldEditorRenderer<String> {
+
+ private CssLayout buttonPanel;
+ private Button addButton;
+ private Button removeButton;
+ private Button upButton;
+ private Button downButton;
+
+ @Inject
+ ListEditor editor;
+
+ ListSelect select;
+
+ @Inject
+ IEclipseContext context;
+
+ @Override
+ public void render() {
+ select = new ListSelect();
+ refreshSelect();
+
+ CssLayout layout = new CssLayout();
+ layout.setWidth("100%");
+
+ layout.addComponent(new Label(editor.getLabel()));
+
+ HorizontalLayout row = new HorizontalLayout();
+ row.setWidth("100%");
+ layout.addComponent(row);
+
+ row.addComponent(select);
+ select.setWidth("100%");
+
+ buttonPanel = new CssLayout();
+ buttonPanel.setSizeFull();
+ row.addComponent(buttonPanel);
+
+ row.setExpandRatio(select, 8);
+ row.setExpandRatio(buttonPanel, 2);
+
+ createButtons();
+ component = layout;
+ }
+
+ private void refreshSelect() {
+
+ String value = getValue();
+ if (value != null) {
+ String[] values = value.split(";");
+ select.removeAllItems();
+ for (String v : values) {
+ select.addItem(v);
+ }
+ }
+
+ }
+
+ @Override
+ public void save() {
+
+ String value = "";
+ for (Object v : select.getItemIds()) {
+ value += v.toString() + ";";
+ }
+
+ setValue(value);
+ }
+
+ public static class DefaultListFold extends EmfHelper.EInterface implements
+ ListFold {
+
+ @Override
+ public void apply(String value, StringBuffer prev) {
+ prev.append(";" + value);
+ }
+ }
+
+ public String buildValue() {
+
+ ListFold op = editor.getListFold();
+ if (op == null) {
+ op = new DefaultListFold();
+ }
+
+ StringBuffer str = new StringBuffer();
+ for (Object s : select.getItemIds()) {
+ op.apply(s.toString(), str);
+ }
+
+ return str.toString();
+ }
+
+ private void createButtons() {
+ addButton = addButton("Add", "add-button", new ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ ListCrud crud = editor.getListCrud();
+ if (crud != null) {
+ String newValue = crud.addNewValue(buildValue());
+ select.addItem(newValue);
+ }
+ }
+ });
+
+ removeButton = addButton("Remove", "remove-button",
+ new ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ if (select.getValue() != null) {
+ select.removeItem(select.getValue());
+ }
+ }
+ });
+ upButton = addButton("Up", "up-button", new ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ swap(true);
+ }
+ });
+ downButton = addButton("Down", "down-button", new ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ swap(false);
+ }
+ });
+
+ // buttonPanel.setExpandRatio(addButton, 0);
+ // buttonPanel.setExpandRatio(removeButton, 0);
+ // buttonPanel.setExpandRatio(upButton, 0);
+ // buttonPanel.setExpandRatio(downButton, 1);
+ }
+
+ private Button addButton(String name, String style, ClickListener listener) {
+ Button button = new Button(name);
+ button.addStyleName(style);
+ button.setWidth("80px");
+ buttonPanel.addComponent(button);
+ button.addClickListener(listener);
+ return button;
+ }
+
+ private void swap(boolean up) {
+ Object selectedValue = select.getValue();
+ if (selectedValue == null)
+ return;
+
+ int index = -1;
+ List<Object> list = new ArrayList<>(select.getItemIds());
+ for (int i = 0; i < list.size(); i++) {
+ if (selectedValue.equals(list.get(i))) {
+ index = i;
+ break;
+ }
+ }
+
+ if (index < 0)
+ return;
+
+ int target = up ? index - 1 : index + 1;
+
+ if (target < 0)
+ target = list.size() - 1;
+ else if (target >= list.size())
+ target = 0;
+
+ if (index >= 0) {
+ Object selected = list.remove(index);
+ list.add(target, selected);
+ }
+
+ select.removeAllItems();
+
+ for (Object o : list) {
+ select.addItem(o);
+ }
+
+ select.select(selectedValue);
+ }
+
+ @Override
+ public String getValue() {
+ return getPreferences().get(editor.getPreferenceName(),
+ editor.getDefaultValue());
+ }
+
+ @Override
+ public void setValue(String value) {
+ getPreferences().put(editor.getPreferenceName(), value);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ListFieldEditorRenderer.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ListFieldEditorRenderer.java
new file mode 100644
index 0000000..233f5c8
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ListFieldEditorRenderer.java
@@ -0,0 +1,75 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import javax.inject.Inject;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor;
+
+import com.vaadin.data.Item;
+import com.vaadin.ui.AbstractSelect;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Label;
+
+/**
+ * @author rushan
+ *
+ */
+public abstract class ListFieldEditorRenderer extends
+ FieldEditorRenderer<String> {
+ @Inject
+ ListFieldEditor editor;
+
+ AbstractSelect select;
+
+ public abstract AbstractSelect createSelect();
+
+ @Override
+ public void render() {
+ select = createSelect();
+
+ CssLayout layout = new CssLayout();
+ layout.addComponent(new Label(editor.getLabel()));
+ layout.addComponent(select);
+
+ refreshSelect();
+ component = layout;
+ }
+
+ protected void refreshSelect() {
+ select.removeAllItems();
+ for (Entry entry : editor.getEntries()) {
+ Item item = select.addItem(entry.getValue());
+ select.setItemCaption(entry.getValue(), entry.getName());
+ }
+ String value = getValue();
+ if (value != null)
+ select.select(value);
+ }
+
+ @Override
+ public String getValue() {
+ return getPreferences().get(editor.getPreferenceName(),
+ editor.getDefaultValue());
+ }
+
+ @Override
+ public void setValue(String value) {
+ getPreferences().put(editor.getPreferenceName(), value);
+ }
+
+ @Override
+ public void save() {
+ if (select.getValue() != null)
+ setValue(select.getValue().toString());
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/PreferencesDialog.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/PreferencesDialog.java
new file mode 100644
index 0000000..f928790
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/PreferencesDialog.java
@@ -0,0 +1,596 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.PreferencesAuthorization;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.PreferencesEvents;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.exception.ValidationFailedException;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.util.ModelHelper;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.util.PrefHelper;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.prefs.BackingStoreException;
+import org.osgi.service.prefs.Preferences;
+import org.eclipse.osbp.vaaclipse.publicapi.resources.BundleResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.vaadin.data.Item;
+import com.vaadin.event.FieldEvents.TextChangeEvent;
+import com.vaadin.event.FieldEvents.TextChangeListener;
+import com.vaadin.event.ItemClickEvent;
+import com.vaadin.server.Sizeable;
+import com.vaadin.shared.MouseEventDetails.MouseButton;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.HorizontalSplitPanel;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.Notification;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.Tree;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.Window;
+
+import e4modelextension.VaaclipseApplication;
+
+/**
+ * @author rushan
+ *
+ */
+public class PreferencesDialog {
+
+ static final String PAGE_HEADER_ERROR_TEXT = "page-header-error-text";
+
+ @Inject
+ IEventBroker eventBroker;
+
+ @Inject
+ VaaclipseApplication app;
+
+ @Inject
+ IEclipseContext context;
+
+ @Inject
+ @Optional
+ PreferencesCategory selectedCategory;
+
+ @Inject
+ @Optional
+ PreferencesAuthorization authService;
+
+ Logger logger = LoggerFactory.getLogger(PreferencesDialog.class);
+
+ @Inject
+ UI ui;
+
+ TextField filterField = new TextField();
+
+ private Tree tree;
+
+ private Window window;
+
+ HorizontalSplitPanel splitPanel = new HorizontalSplitPanel();
+
+ private Panel treePanel;
+
+ private VerticalLayout rightSide;
+
+ private CssLayout leftSide;
+
+ private Button filterButton = new Button();
+ private Button clearFilterButton = new Button();
+
+ private CssLayout pageHeader;
+
+ private CssLayout pageContent;
+
+ private CssLayout pageBottom;
+
+ private Button restoreDefaults;
+
+ private Button apply;
+
+ private VerticalLayout root;
+
+ private CssLayout dlgButtonPanel;
+
+ private Button cancelButton;
+
+ private Button okButton;
+
+ private Label pageHeaderText;
+
+ private BundleContext bundleContext;
+
+ private String errorMessage;
+
+ List<PreferencesPage> visitedPages = new ArrayList<>();
+
+ private HashSet<PreferencesCategory> visibleCategories;
+
+ private List<PreferencesCategory> categoryList = new ArrayList<>(100);
+
+ public Window getWindow() {
+ return window;
+ }
+
+ public PreferencesCategory getSelectedCategory() {
+ return selectedCategory;
+ }
+
+ public PreferencesPage getCurrentPage() {
+ return selectedCategory.getPage();
+ }
+
+ @PostConstruct
+ public void init() {
+ if (selectedCategory == null
+ && !app.getPreferencesCategories().isEmpty()) {
+ selectedCategory = app.getPreferencesCategories().get(0);
+ }
+
+ createWindow();
+ createSearchField();
+ createTree();
+
+ addListeners();
+ }
+
+ public void createWindow() {
+ window = new Window();
+ window.setCaption("Preferences");
+ window.addStyleName("preferences-dialog");
+ window.setWidth("800px");
+ window.setHeight("600px");
+
+ splitPanel.setSizeFull();
+
+ dlgButtonPanel = new CssLayout();
+ dlgButtonPanel.setWidth("100%");
+ dlgButtonPanel.addStyleName("dlg-button-panel");
+
+ // dlgButtonPanel.addComponent(new Label("<hr/>", ContentMode.HTML));
+
+ cancelButton = new Button("Cancel");
+ cancelButton.addStyleName("cancel-button");
+ dlgButtonPanel.addComponent(cancelButton);
+ okButton = new Button("OK");
+ okButton.addStyleName("ok-button");
+ dlgButtonPanel.addComponent(okButton);
+
+ root = new VerticalLayout();
+ root.setSizeFull();
+ window.setContent(root);
+ root.addComponent(splitPanel);
+ root.addComponent(dlgButtonPanel);
+ root.setExpandRatio(splitPanel, 10);
+ root.setExpandRatio(dlgButtonPanel, 0);
+
+ treePanel = new Panel();
+ treePanel.addStyleName("categories-panel");
+ treePanel.addStyleName("borderless");
+ treePanel.setSizeFull();
+
+ leftSide = new CssLayout();
+ leftSide.addStyleName("categories");
+ leftSide.setSizeFull();
+ // filterField.setWidth("70%");
+ filterField.addStyleName("categories-filter");
+ leftSide.addComponent(filterField);
+
+ filterButton
+ .setIcon(BundleResource
+ .valueOf("platform:/plugin/org.eclipse.osbp.vaaclipse.ui.preferences.addon/img/find.png"));
+ filterButton.addStyleName("vaaclipsebutton");
+ filterButton.addStyleName("icon-only");
+ filterButton.addStyleName("filter-category-button");
+
+ clearFilterButton
+ .setIcon(BundleResource
+ .valueOf("platform:/plugin/org.eclipse.osbp.vaaclipse.ui.preferences.addon/img/clear.png"));
+ clearFilterButton.addStyleName("vaaclipsebutton");
+ clearFilterButton.addStyleName("icon-only");
+ clearFilterButton.addStyleName("clear-filter-button");
+
+ leftSide.addComponent(clearFilterButton);
+ leftSide.addComponent(filterButton);
+ leftSide.addComponent(treePanel);
+
+ rightSide = new VerticalLayout();
+ rightSide.setSizeFull();
+ // rightSide.setMargin(new MarginInfo(true, true, false, true));
+
+ pageHeader = new CssLayout();
+ pageHeader.addStyleName("page-header-panel");
+ pageHeader.setWidth("100%");
+ pageHeaderText = new Label("Page");
+ pageHeaderText.addStyleName("page-header-text");
+ pageHeader.addComponent(pageHeaderText);
+ rightSide.addComponent(pageHeader);
+
+ pageContent = new CssLayout();
+ // pageContent.setSizeFull();
+ Panel pageContentPanel = new Panel(pageContent);// wrap page content to
+ // panel - if content is
+ // too large, scrolling
+ // needed
+ pageContentPanel.setSizeFull();
+ rightSide.addComponent(pageContentPanel);
+
+ pageBottom = new CssLayout();
+ pageBottom.addStyleName("page-bottom-panel");
+ pageBottom.setWidth("100%");
+ rightSide.addComponent(pageBottom);
+
+ apply = new Button("Apply");
+ apply.addStyleName("apply");
+ pageBottom.addComponent(apply);
+
+ restoreDefaults = new Button("RestoreDefaults");
+ restoreDefaults.addStyleName("restore-defaults");
+ pageBottom.addComponent(restoreDefaults);
+
+ splitPanel.addComponent(leftSide);
+ splitPanel.addComponent(rightSide);
+ splitPanel.setSplitPosition(30, Sizeable.Unit.PERCENTAGE);
+
+ rightSide.setExpandRatio(pageHeader, 0);
+ rightSide.setExpandRatio(pageContentPanel, 1);
+ rightSide.setExpandRatio(pageBottom, 0);
+
+ clearFilterButton.addClickListener(new ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ filterField.setValue("");
+ refreshTree();
+ }
+ });
+
+ filterButton.addClickListener(new ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ refreshTree();
+ }
+ });
+ }
+
+ public void createSearchField() {
+ filterField.addTextChangeListener(new TextChangeListener() {
+
+ @Override
+ public void textChange(TextChangeEvent event) {
+ refreshTree();
+ }
+ });
+ }
+
+ private void createTree() {
+ tree = new Tree();
+ tree.setSizeFull();
+ tree.setImmediate(true);
+ treePanel.setContent(tree);
+
+ tree.addContainerProperty("name", String.class, "NoName");
+ tree.setItemCaptionPropertyId("name");
+
+ ModelHelper.buildChildCategoryListIncludeThisList(
+ app.getPreferencesCategories(), categoryList);
+
+ refreshTree();
+
+ tree.addItemClickListener(new ItemClickEvent.ItemClickListener() {
+
+ public void itemClick(final ItemClickEvent event) {
+ if (event.getButton() == MouseButton.LEFT) {
+ PreferencesCategory selectedCat = (PreferencesCategory) event
+ .getItemId();
+ if (selectedCat != null) {
+ openPreferencePageForCategory(selectedCat);
+ }
+ }
+ }
+ });
+
+ if (selectedCategory != null) {
+ tree.select(selectedCategory);
+ openPreferencePageForCategory(selectedCategory);
+ }
+ }
+
+ private void refreshTree() {
+ tree.removeAllItems();
+
+ EList<PreferencesCategory> catList = app.getPreferencesCategories();
+
+ markVisibility();
+
+ fillCategories(catList, null);
+
+ for (Object id : tree.rootItemIds()) {
+ tree.expandItemsRecursively(id);
+ }
+ }
+
+ private void markVisibility() {
+ visibleCategories = new HashSet<PreferencesCategory>();
+
+ String filterValue = filterField.getValue();
+ if (filterValue.isEmpty()) {
+ return;
+ }
+ for (PreferencesCategory category : categoryList) {
+ if (category != null && category.getName().contains(filterValue)) {
+ do {
+ visibleCategories.add(category);
+ category = category.getParentCategory();
+ } while (category != null);
+ }
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ private void fillCategories(List<PreferencesCategory> list,
+ PreferencesCategory parentCat) {
+ String search = filterField.getValue().trim();
+ for (PreferencesCategory c : list) {
+
+ if (authService != null && c.getParentCategory() != null
+ && "user".equals(c.getParentCategory().getId())
+ && !authService.isAllowed(c)) {
+ continue;
+ }
+
+ if (c.getName() == null)
+ c.setName("No Name");
+ if (filterField.getValue().isEmpty()
+ || visibleCategories.contains(c)) {
+
+ Item catItem = tree.addItem(c);
+ catItem.getItemProperty("name").setValue(c.getName());
+ if (c.getChildCategories().isEmpty())
+ tree.setChildrenAllowed(c, false);
+
+ if (parentCat != null)
+ tree.setParent(c, parentCat);
+
+ fillCategories(c.getChildCategories(), c);
+ }
+ }
+ }
+
+ private void openPreferencePageForCategory(PreferencesCategory selectedCat) {
+ selectedCategory = selectedCat;
+ refreshHeaderMessage();
+
+ pageContent.removeAllComponents();
+
+ if (selectedCat.getPage() != null) {
+ IEclipseContext pageContext = context.createChild();
+ pageContext.set(CssLayout.class, pageContent);
+ pageContext.set(PreferencesPage.class, selectedCat.getPage());
+ PreferencesPageRenderer pageRenderer = ContextInjectionFactory
+ .make(PreferencesPageRenderer.class, pageContext);
+ pageRenderer.render();
+ visitedPages.add(selectedCat.getPage());
+ } else if (!selectedCat.getChildCategories().isEmpty()) {
+ pageContent
+ .addComponent(new Label(
+ "Expand the tree to edit a preferences for a specific feature"));
+ }
+ }
+
+ private void addListeners() {
+
+ restoreDefaults.addClickListener(new ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ restoreDefaults();
+ }
+ });
+
+ apply.addClickListener(new ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ applyPressed();
+ }
+ });
+
+ okButton.addClickListener(new ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ okPressed();
+ }
+ });
+
+ cancelButton.addClickListener(new ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ cancelPressed();
+ }
+ });
+ }
+
+ public void setErrorMessage(String errorMessage) {
+ this.errorMessage = errorMessage;
+ refreshHeaderMessage();
+ }
+
+ public void clearErrorMessage() {
+ this.errorMessage = null;
+ refreshHeaderMessage();
+ }
+
+ public void refreshHeaderMessage() {
+ if (errorMessage != null) {
+ pageHeaderText.addStyleName(PAGE_HEADER_ERROR_TEXT);
+ pageHeaderText.setValue(errorMessage);
+ } else {
+ pageHeaderText.removeStyleName(PAGE_HEADER_ERROR_TEXT);
+ pageHeaderText.setValue(selectedCategory.getName());
+ }
+ }
+
+ private void restoreDefaults() {
+ PreferencesPage currentPage = getCurrentPage();
+ if (currentPage != null) {
+ try {
+ restoreDefaultsOnPage(currentPage);
+ } catch (Exception e) {
+ Notification.show("Error restoring defaults",
+ "Restoring defaults on this page failed",
+ Notification.Type.ERROR_MESSAGE);
+ return;
+ }
+ fireEvent(PreferencesEvents.PREFERENCES_TO_DEFAULTS, currentPage);
+
+ // Refresh the current page (it should be rerendered)
+ openPreferencePageForCategory(getSelectedCategory());
+ }
+ }
+
+ private void okPressed() {
+
+ Exception exception = null;
+ for (PreferencesPage page : visitedPages) {
+ try {
+ applyChangesOnPage(page);
+ } catch (ValidationFailedException validationException) {
+ setErrorMessage(validationException.getLocalizedMessage());
+ Notification.show("Validation failed",
+ validationException.getLocalizedMessage(),
+ Notification.Type.WARNING_MESSAGE);
+ return;
+ } catch (Exception e) {
+ exception = e;
+ }
+ }
+ if (exception != null) {
+ String errorMessage = "Saving changes was failed on some pages";
+ setErrorMessage(errorMessage);
+ Notification.show("Error apply changes", errorMessage,
+ Notification.Type.ERROR_MESSAGE);
+ return;
+ } else {
+ fireEvent(PreferencesEvents.PREFERENCES_APPLIED,
+ (PreferencesPage[]) visitedPages
+ .toArray(new PreferencesPage[visitedPages.size()]));
+ }
+
+ clearErrorMessage();
+
+ ui.removeWindow(window);
+ }
+
+ private void cancelPressed() {
+ ui.removeWindow(window);
+ }
+
+ private void applyPressed() {
+ PreferencesPage currentPage = getCurrentPage();
+ if (currentPage != null) {
+ try {
+ applyChangesOnPage(currentPage);
+ } catch (ValidationFailedException validationException) {
+ setErrorMessage(validationException.getLocalizedMessage());
+ Notification.show("Validation failed",
+ "The preferences is not correct",
+ Notification.Type.WARNING_MESSAGE);
+ return;
+ } catch (Exception e) {
+ setErrorMessage("Applying changes on this page failed");
+ Notification.show("Error apply changes",
+ "Applying changes on this page failed",
+ Notification.Type.ERROR_MESSAGE);
+ return;
+ }
+ clearErrorMessage();
+ fireEvent(PreferencesEvents.PREFERENCES_APPLIED, currentPage);
+ }
+ }
+
+ private void applyChangesOnPage(PreferencesPage page)
+ throws BackingStoreException, ValidationFailedException {
+ PreferencesPageRenderer pageRenderer = (PreferencesPageRenderer) page
+ .getRenderer();
+
+ pageRenderer.validate();
+
+ try {
+ pageRenderer.save();
+ } catch (Exception e) {
+ logger.error(
+ "Error copy changes from UI to preferences for category {}",
+ selectedCategory.getName(), e);
+ throw e;
+ }
+
+ try {
+ PrefHelper.flush(page);
+ } catch (BackingStoreException e) {
+ logger.error("Error flushing changes for category {}", page
+ .getCategory().getName(), e);
+ throw e;
+ }
+ }
+
+ private void restoreDefaultsOnPage(PreferencesPage page)
+ throws BackingStoreException {
+
+ try {
+ for (FieldEditor<?> fieldEditor : page.getChildren()) {
+ String defaultValue = fieldEditor.getDefaultValue();
+ if (defaultValue != null)
+ ((Preferences) fieldEditor.getPreferences()).put(
+ fieldEditor.getPreferenceName(), defaultValue);
+ }
+ } catch (Exception e) {
+ logger.error(
+ "Error copy default values from model to preferences for category {}",
+ page.getCategory().getName(), e);
+ throw e;
+ }
+
+ try {
+ PrefHelper.flush(page);
+ } catch (BackingStoreException e) {
+ logger.error("Error flushing changes for category {}", page
+ .getCategory().getName(), e);
+ throw e;
+ }
+ }
+
+ private void fireEvent(String topic, PreferencesPage... pages) {
+ eventBroker.send(topic, pages);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/PreferencesPageRenderer.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/PreferencesPageRenderer.java
new file mode 100644
index 0000000..10f7cb0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/PreferencesPageRenderer.java
@@ -0,0 +1,169 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.contributions.IContributionFactory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.exception.ValidationFailedException;
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.util.PrefHelper;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ComboFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.RadioGroupFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.util.PreferencesSwitch;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Label;
+
+import e4modelextension.VaaclipseApplication;
+
+/**
+ * @author rushan
+ *
+ */
+public class PreferencesPageRenderer {
+
+ @Inject
+ VaaclipseApplication app;
+
+ @Inject
+ CssLayout pageLayout;
+
+ @Inject
+ PreferencesPage page;
+
+ @Inject
+ IEclipseContext context;
+
+ Logger logger = LoggerFactory.getLogger(PreferencesPageRenderer.class);
+
+ @PostConstruct
+ public void init() {
+ page.setRenderer(this);
+ }
+
+ @SuppressWarnings("restriction")
+ public void render() {
+ pageLayout.addStyleName("preferences-page");
+
+ for (FieldEditor<?> editor : page.getChildren()) {
+ Class<? extends FieldEditorRenderer<?>> rendererClass = getRendererClass(editor);
+ if (rendererClass != null) {
+ IEclipseContext rendererContext = context.createChild();
+
+ Class<?>[] interfaces = editor.getClass().getInterfaces();
+ PrefHelper.populateInterfaces(editor, rendererContext,
+ interfaces);
+ FieldEditorRenderer<?> fieldRenderer = ContextInjectionFactory
+ .make(rendererClass, rendererContext);
+ fieldRenderer.render();
+ Component fieldComponent = fieldRenderer.getComponent();
+ editor.setWidget(fieldComponent);
+ editor.setRenderer(fieldRenderer);
+ } else {
+ logger.warn("{} editor has no renderer. It is not rendered.",
+ editor);
+ }
+ }
+
+ // If there are contribution let it to layout this page
+ if (page.getContributionURI() != null) {
+ IContributionFactory contributionFactory = (IContributionFactory) context
+ .get(IContributionFactory.class.getName());
+ Object pageContribution = contributionFactory.create(
+ page.getContributionURI(), context);
+ page.setObject(pageContribution);
+ } else {
+ // If there are no contribution class for this page, adding with
+ // default layout and style 'field-editor'
+ Label pageDesc = new Label(page.getDescription());
+ pageDesc.addStyleName("field-editor");
+ pageLayout.addComponent(pageDesc);
+ for (FieldEditor<?> editor : page.getChildren()) {
+ Component fieldComponent = (Component) editor.getWidget();
+ fieldComponent.addStyleName("field-editor");
+ pageLayout.addComponent(fieldComponent);
+ }
+ }
+ }
+
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ private Class<? extends FieldEditorRenderer<?>> getRendererClass(
+ FieldEditor<?> editor) {
+
+ PreferencesSwitch<?> switcher = new PreferencesSwitch() {
+ @Override
+ public Object caseBooleanFieldEditor(BooleanFieldEditor object) {
+ return BooleanFieldEditorRenderer.class;
+ }
+
+ @Override
+ public Object caseComboFieldEditor(ComboFieldEditor object) {
+ return ComboFieldEditorRenderer.class;
+ }
+
+ @Override
+ public Object caseListEditor(ListEditor object) {
+ return ListEditorRenderer.class;
+ }
+
+ @Override
+ public Object caseScaleFieldEditor(ScaleFieldEditor object) {
+ return ScaleFieldEditorRenderer.class;
+ }
+
+ @Override
+ public Object caseRadioGroupFieldEditor(RadioGroupFieldEditor object) {
+ return RadioGroupFieldEditorRenderer.class;
+ }
+
+ @Override
+ public Object caseStringFieldEditor(StringFieldEditor object) {
+ return StringFieldEditorRenderer.class;
+ }
+
+ @Override
+ public Object caseIntegerFieldEditor(IntegerFieldEditor object) {
+ return IntegerFieldEditorRenderer.class;
+ }
+ };
+ return (Class<? extends FieldEditorRenderer<?>>) switcher
+ .doSwitch(editor);
+ }
+
+ public void save() {
+ for (FieldEditor<?> editor : page.getChildren()) {
+ FieldEditorRenderer<?> renderer = (FieldEditorRenderer<?>) editor
+ .getRenderer();
+ renderer.save();
+ }
+ }
+
+ public void validate() throws ValidationFailedException {
+ for (FieldEditor<?> editor : page.getChildren()) {
+ FieldEditorRenderer<?> renderer = (FieldEditorRenderer<?>) editor
+ .getRenderer();
+ renderer.validate();
+ }
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/RadioGroupFieldEditorRenderer.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/RadioGroupFieldEditorRenderer.java
new file mode 100644
index 0000000..9a4c83f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/RadioGroupFieldEditorRenderer.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import com.vaadin.ui.AbstractSelect;
+import com.vaadin.ui.OptionGroup;
+
+/**
+ * @author rushan
+ *
+ */
+public class RadioGroupFieldEditorRenderer extends ListFieldEditorRenderer {
+
+ @Override
+ public AbstractSelect createSelect() {
+ return new OptionGroup();
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ScaleFieldEditorRenderer.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ScaleFieldEditorRenderer.java
new file mode 100644
index 0000000..1758e9f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/ScaleFieldEditorRenderer.java
@@ -0,0 +1,75 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import javax.inject.Inject;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor;
+
+import com.vaadin.shared.ui.slider.SliderOrientation;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.Slider;
+import com.vaadin.ui.Slider.ValueOutOfBoundsException;
+
+/**
+ * @author rushan
+ *
+ */
+public class ScaleFieldEditorRenderer extends FieldEditorRenderer<Integer> {
+
+ @Inject
+ ScaleFieldEditor editor;
+
+ Slider slider;
+
+ @Override
+ public void render() {
+ CssLayout layout = new CssLayout();
+ layout.setWidth("100%");
+ layout.addComponent(new Label(editor.getLabel()));
+ slider = new Slider();
+ slider.setWidth("100%");
+ if (editor.getMaxValue() != null)
+ slider.setMax(editor.getMaxValue().doubleValue());
+ if (editor.getMinValue() != null)
+ slider.setMin(editor.getMinValue().doubleValue());
+
+ try {
+ slider.setValue(getValue().doubleValue());
+ } catch (ValueOutOfBoundsException vo) {
+
+ }
+
+ slider.setOrientation(SliderOrientation.HORIZONTAL);
+ layout.addComponent(slider);
+ this.component = layout;
+ }
+
+ @Override
+ public Integer getValue() {
+ return getPreferences().getInt(editor.getPreferenceName(),
+ editor.getDefaultValueTyped());
+ }
+
+ @Override
+ public void setValue(Integer value) {
+ this.getPreferences().putInt(editor.getPreferenceName(), value);
+ }
+
+ @Override
+ public void save() {
+ if (slider.getValue() != null) {
+ setValue(slider.getValue().intValue());
+ }
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/StringFieldEditorRenderer.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/StringFieldEditorRenderer.java
new file mode 100644
index 0000000..6ba794f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/StringFieldEditorRenderer.java
@@ -0,0 +1,74 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal;
+
+import javax.inject.Inject;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.exception.ValidationFailedException;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor;
+
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.TextField;
+
+/**
+ * @author rushan
+ *
+ */
+public class StringFieldEditorRenderer extends FieldEditorRenderer<String> {
+
+ @Inject
+ StringFieldEditor editor;
+ private TextField field;
+
+ @Override
+ public void render() {
+
+ field = new TextField();
+ field.setValue(getValue());
+ // field.setCaption(editor.getLabel());
+
+ CssLayout layout = new CssLayout();
+ Label label = new Label(editor.getLabel());
+ layout.addComponent(label);
+ layout.addComponent(field);
+
+ component = layout;
+ }
+
+ @Override
+ public String getValue() {
+ return getPreferences().get(editor.getPreferenceName(),
+ editor.getDefaultValueTyped());
+ }
+
+ @Override
+ public void setValue(String value) {
+ if (value != null)
+ getPreferences().put(editor.getPreferenceName(), value);
+ }
+
+ @Override
+ public void validate() throws ValidationFailedException {
+ if (field.getValue() != null && editor.getMaxLength() != null) {
+ if (field.getValue().length() > editor.getMaxLength()) {
+ throw new ValidationFailedException(editor.getLabel(),
+ "The length of text should not be greater than "
+ + editor.getMaxLength());
+ }
+ }
+ }
+
+ @Override
+ public void save() {
+ setValue(field.getValue());
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/exception/ValidationFailedException.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/exception/ValidationFailedException.java
new file mode 100644
index 0000000..e67dfdd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/exception/ValidationFailedException.java
@@ -0,0 +1,21 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.exception;
+
+/**
+ * @author rushan
+ *
+ */
+public class ValidationFailedException extends Exception {
+ public ValidationFailedException(String label, String msg) {
+ super(String.format("Field '%s' is not valid. %s", label, msg));
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/impexp/BasicImpExp.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/impexp/BasicImpExp.java
new file mode 100644
index 0000000..67f0bf4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/impexp/BasicImpExp.java
@@ -0,0 +1,225 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.impexp;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.eclipse.core.runtime.preferences.IPreferenceFilter;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog.ComponentProvider;
+
+import com.vaadin.data.util.BeanItemContainer;
+import com.vaadin.ui.CheckBox;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.Table;
+import com.vaadin.ui.Table.ColumnGenerator;
+import com.vaadin.ui.UI;
+
+import e4modelextension.VaaclipseApplication;
+
+/**
+ * @author rushan
+ *
+ */
+public abstract class BasicImpExp implements ComponentProvider {
+
+ public static final int IMP_EXP = 0;
+ public static final int CANCEL = 1;
+ public static final int MAX_DESCRIPTION_LENGTH = 75;
+
+ @Inject
+ VaaclipseApplication app;
+
+ OptionDialog dlg;
+ Table table;
+
+ List<CheckBox> checkBoxes = new ArrayList<>();
+ HashMap<String, Bundle> bundlesByName;
+ private BeanItemContainer<PreferencesPage> container;
+
+ private Label statusLabel;
+
+ @PostConstruct
+ public void init(UI ui) {
+
+ BundleContext bundleContext = FrameworkUtil.getBundle(this.getClass())
+ .getBundleContext();
+ bundlesByName = new HashMap<>();
+ for (Bundle b : bundleContext.getBundles()) {
+ bundlesByName.put(b.getSymbolicName(), b);
+ }
+
+ dlg = new OptionDialog();
+ dlg.addStyleName("preferences-export-import-dialog");
+
+ dlg.addOption(IMP_EXP, getActionName());
+ dlg.addOption(CANCEL, "Close");
+
+ dlg.setCaption(getActionName() + " Preferences");
+ dlg.setWidth("600px");
+ dlg.setHeight("450px");
+ dlg.setComponentProvider(this);
+ ui.addWindow(dlg);
+ }
+
+ @Override
+ public void setMessage(String message) {
+ }
+
+ @Override
+ public void optionSelected(OptionDialog optionDialog, int optionId) {
+ if (optionId == IMP_EXP) {
+ doAction();
+ } else {
+ dlg.close();
+ }
+ }
+
+ protected abstract void doAction();
+
+ protected abstract String getActionName();
+
+ protected void createPreferencesTable(CssLayout layout) {
+ createPreferencesTable(layout, app.getPreferencesPages());
+ }
+
+ protected void createPreferencesTable(CssLayout layout,
+ List<PreferencesPage> pageList) {
+
+ container = new BeanItemContainer<>(PreferencesPage.class);
+ container.addNestedContainerProperty("category.name");
+
+ refreshPreferences(pageList);
+
+ table = new Table();
+ table.setSizeFull();
+ table.setContainerDataSource(container);
+
+ table.addGeneratedColumn("description", new ColumnGenerator() {
+
+ @Override
+ public Object generateCell(Table source, Object itemId,
+ Object columnId) {
+ PreferencesPage page = (PreferencesPage) itemId;
+ String d = page.getDescription();
+ if (d.length() > MAX_DESCRIPTION_LENGTH) {
+ d = d.substring(0, MAX_DESCRIPTION_LENGTH).trim() + "...";
+ }
+ return d;
+ }
+ });
+
+ table.addGeneratedColumn("include", new ColumnGenerator() {
+
+ @Override
+ public Object generateCell(Table source, Object itemId,
+ Object columnId) {
+ CheckBox cb = new CheckBox();
+ cb.setData(itemId);
+ checkBoxes.add(cb);
+ return cb;
+ }
+ });
+
+ table.setColumnHeader("include", " ");
+ table.setColumnHeader("category.name", "Name");
+ table.setColumnHeader("description", "Description");
+ table.setVisibleColumns("include", "category.name", "description");
+
+ Panel panel = new Panel(table);
+ panel.setWidth("100%");
+ panel.setHeight("200px");
+ layout.addComponent(panel);
+ }
+
+ protected void createStatusLabel(CssLayout layout, String string) {
+ statusLabel = new Label("Press Export to export preferences");
+ statusLabel.addStyleName("status-label");
+ layout.addComponent(statusLabel);
+ }
+
+ protected void setStatusText(String statusText) {
+ // layout.removeComponent(statusLabel);
+ // statusLabel = new Label(statusText);
+ // statusLabel.addStyleName("status-label");
+ // layout.addComponent(statusLabel);
+
+ statusLabel.setValue(statusText);
+ }
+
+ protected void refreshPreferences(List<PreferencesPage> pageList) {
+ container.removeAllItems();
+
+ for (PreferencesPage page : pageList) {
+ container.addBean(page);
+ }
+ }
+
+ protected List<PreferencesPage> getSelectedPages() {
+ List<PreferencesPage> list = new ArrayList<>();
+ for (CheckBox cb : checkBoxes) {
+ if (cb.getValue()) {
+ PreferencesPage page = (PreferencesPage) cb.getData();
+ list.add(page);
+ }
+ }
+ return list;
+ }
+
+ protected IPreferenceFilter createFilter(List<PreferencesPage> selectedPages) {
+ final Set<String> set = new HashSet<>();
+ for (PreferencesPage p : selectedPages) {
+ for (FieldEditor<?> e : p.getChildren()) {
+ set.add(e.getEquinoxPath());
+ }
+ }
+
+ return new IPreferenceFilter() {
+
+ @Override
+ public String[] getScopes() {
+ return (String[]) set.toArray(new String[set.size()]);
+ }
+
+ @Override
+ public Map<?, ?> getMapping(String scope) {
+ return null;
+ }
+ };
+ }
+
+ protected StringBuffer toTextWithCatName(List<PreferencesPage> selectedPages) {
+ StringBuffer prefNames = new StringBuffer();
+ for (PreferencesPage page : selectedPages) {
+ String name = page.getCategory().getName();
+ if (name == null)
+ name = "NoName";
+ prefNames.append(name + ", ");
+ }
+ prefNames.delete(prefNames.length() - 2, prefNames.length() - 1);
+ return prefNames;
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/impexp/ExportPreferences.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/impexp/ExportPreferences.java
new file mode 100644
index 0000000..bc5dd93
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/impexp/ExportPreferences.java
@@ -0,0 +1,122 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.impexp;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.util.List;
+
+import org.eclipse.core.internal.preferences.PreferencesService;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IPreferenceFilter;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.vaadin.server.FileDownloader;
+import com.vaadin.server.StreamResource;
+import com.vaadin.server.StreamResource.StreamSource;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.themes.BaseTheme;
+
+/**
+ * @author rushan
+ *
+ */
+public class ExportPreferences extends BasicImpExp {
+
+ Logger logger = LoggerFactory.getLogger(ExportPreferences.class);
+ private CssLayout layout;
+ private Button downloadButton;
+ private byte[] preferencesBytes;
+
+ @Override
+ public Component getComponent(OptionDialog optionDialog) {
+
+ layout = new CssLayout();
+ layout.addStyleName("export");
+ layout.addComponent(new Label("Select preferences to export"));
+ createPreferencesTable(layout);
+
+ createStatusLabel(layout, "Press Export to export preferences");
+
+ return layout;
+ }
+
+ @SuppressWarnings("serial")
+ private StreamResource createResource() {
+ return new StreamResource(new StreamSource() {
+ @Override
+ public InputStream getStream() {
+ if (preferencesBytes != null) {
+ ByteArrayInputStream is = new ByteArrayInputStream(
+ preferencesBytes);
+ return is;
+ } else
+ return null;
+ }
+ }, "preferences.epf");
+ }
+
+ @SuppressWarnings("restriction")
+ @Override
+ protected void doAction() {
+ // dlg.close();
+
+ List<PreferencesPage> selectedPages = getSelectedPages();
+ if (selectedPages.isEmpty()) {
+ setStatusText("Preferences doesn't selected. Please select preferences above.");
+ return;
+ }
+
+ IEclipsePreferences root = PreferencesService.getDefault()
+ .getRootNode();
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream(200);
+
+ try {
+ PreferencesService.getDefault().exportPreferences(root,
+ new IPreferenceFilter[] { createFilter(selectedPages) },
+ baos);
+ } catch (CoreException e) {
+ logger.error("Exception when export preferences", e);
+ return;
+ }
+
+ preferencesBytes = baos.toByteArray();
+
+ StringBuffer exportedPrefNames = toTextWithCatName(selectedPages);
+
+ setStatusText("Preferences was exported: "
+ + exportedPrefNames.toString());
+
+ if (downloadButton == null) {
+ downloadButton = new Button(BaseTheme.BUTTON_LINK);
+ downloadButton.addStyleName("download-button");
+ downloadButton.setCaption("Download preferences.epf");
+ layout.addComponent(downloadButton);
+
+ FileDownloader fileDownloader = new FileDownloader(createResource());
+ fileDownloader.extend(downloadButton);
+ }
+ }
+
+ @Override
+ protected String getActionName() {
+ return "Export";
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/impexp/ImportPreferences.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/impexp/ImportPreferences.java
new file mode 100644
index 0000000..345d248
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/impexp/ImportPreferences.java
@@ -0,0 +1,159 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.impexp;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.inject.Inject;
+
+import org.eclipse.core.internal.preferences.PreferencesService;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.preferences.IExportedPreferences;
+import org.eclipse.core.runtime.preferences.IPreferenceFilter;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesFactory;
+import org.osgi.service.prefs.BackingStoreException;
+import org.eclipse.osbp.vaadin.optiondialog.OptionDialog;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.Upload;
+import com.vaadin.ui.Upload.Receiver;
+import com.vaadin.ui.Upload.SucceededEvent;
+import com.vaadin.ui.Upload.SucceededListener;
+
+/**
+ * @author rushan
+ *
+ */
+@SuppressWarnings({ "serial", "restriction" })
+public class ImportPreferences extends BasicImpExp implements
+ SucceededListener, Receiver {
+
+ private ByteArrayOutputStream baos;
+ Logger logger = LoggerFactory.getLogger(ImportPreferences.class);
+ private byte[] byteArray;
+
+ @Inject
+ PreferencesFactory factory;
+ private IExportedPreferences toImport;
+
+ @Override
+ public Component getComponent(OptionDialog optionDialog) {
+
+ CssLayout layout = new CssLayout();
+ layout.addStyleName("import");
+
+ Upload upload = new Upload("Select file with preferences for upload",
+ this);
+ upload.setWidth("100%");
+ upload.setButtonCaption("Upload");
+ upload.addSucceededListener(this);
+ layout.addComponent(upload);
+
+ layout.addComponent(new Label("Select preferences to import"));
+ createPreferencesTable(layout, new ArrayList<PreferencesPage>());
+
+ createStatusLabel(layout, "Choose file with preferences");
+
+ return layout;
+ }
+
+ @Override
+ protected void doAction() {
+
+ if (toImport == null) {
+ setStatusText("No uploaded preferences for import. Upload preferences file.");
+ return;
+ }
+
+ List<PreferencesPage> selectedPages = getSelectedPages();
+ if (selectedPages.isEmpty()) {
+ setStatusText("Nothing selected to import");
+ return;
+ }
+
+ try {
+ PreferencesService.getDefault().applyPreferences(toImport,
+ new IPreferenceFilter[] { createFilter(selectedPages) });
+ } catch (CoreException e) {
+ logger.error("Error when import preferences", e);
+ setStatusText("Import preferences failed");
+ return;
+ }
+
+ setStatusText("Preferences imported: "
+ + toTextWithCatName(selectedPages));
+ }
+
+ @Override
+ protected String getActionName() {
+ return "Import";
+ }
+
+ @Override
+ public void uploadSucceeded(SucceededEvent event) {
+ byteArray = baos.toByteArray();
+ try {
+ toImport = PreferencesService.getDefault().readPreferences(
+ new ByteArrayInputStream(byteArray));
+ } catch (CoreException e) {
+ logger.error("Error when importing preferences", e);
+ return;
+ }
+
+ // Search pages that preferences contains in this preferences for import
+ List<PreferencesPage> pages = findPagesInPreferencesForImport(toImport);
+ refreshPreferences(pages);
+ setStatusText("Preferences file loaded. Please select preferences to import and press Import");
+ }
+
+ List<PreferencesPage> findPagesInPreferencesForImport(
+ IExportedPreferences toImport) {
+ Set<PreferencesPage> pages = new LinkedHashSet<>();
+ for (PreferencesPage page : app.getPreferencesPages()) {
+ if (page.getCategory() != null) {
+ for (FieldEditor<?> editor : page.getChildren()) {
+ try {
+ boolean nodeExists = toImport.nodeExists(editor
+ .getEquinoxPath());
+ if (nodeExists) {
+ pages.add(page);
+ }
+ } catch (BackingStoreException e) {
+ logger.error("Error read from preferences for import",
+ e);
+ }
+ }
+ }
+ }
+ return new ArrayList<>(pages);
+ }
+
+ @Override
+ public OutputStream receiveUpload(String filename, String mimeType) {
+
+ baos = new ByteArrayOutputStream(200);
+ return baos;
+
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/service/PreferenceProvider.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/service/PreferenceProvider.java
new file mode 100644
index 0000000..8be19a0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/service/PreferenceProvider.java
@@ -0,0 +1,56 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service;
+
+import java.util.UUID;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.osgi.service.prefs.Preferences;
+import org.osgi.service.prefs.PreferencesService;
+import org.eclipse.osbp.vaaclipse.publicapi.preferences.IPreferenceProvider;
+
+public class PreferenceProvider implements IPreferenceProvider {
+
+ @Inject
+ @Named("userId")
+ @Optional
+ String userId;
+
+ @Inject
+ private PreferencesService delegate;
+
+ @PostConstruct
+ public void init() {
+ if (userId == null) {
+ userId = UUID.randomUUID().toString();
+ }
+ }
+
+ @Override
+ public Preferences getSystemPreferences() {
+ return delegate.getSystemPreferences();
+ }
+
+ @Override
+ public Preferences getUserPreferences() {
+ return getUserPreferences(userId);
+ }
+
+ @Override
+ public Preferences getUserPreferences(String userId) {
+ return delegate.getUserPreferences(userId);
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/service/PreferenceProviderContextFunction.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/service/PreferenceProviderContextFunction.java
new file mode 100644
index 0000000..7e8df1d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/service/PreferenceProviderContextFunction.java
@@ -0,0 +1,33 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.service;
+
+import org.eclipse.e4.core.contexts.ContextFunction;
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IContextFunction;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.osgi.service.component.annotations.Component;
+import org.eclipse.osbp.vaaclipse.publicapi.preferences.IPreferenceProvider;
+
+/**
+ * Use this class to obtain an instance of {@link IPreferenceProvider}.
+ */
+@Component(service = IContextFunction.class, property = { "service.context.key=org.eclipse.osbp.vaaclipse.publicapi.preferences.IPreferenceProvider" })
+public class PreferenceProviderContextFunction extends ContextFunction {
+ @Override
+ public Object compute(IEclipseContext context, String contextKey) {
+ PreferenceProvider broker = ContextInjectionFactory.make(
+ PreferenceProvider.class, context);
+ context.set(IPreferenceProvider.class, broker);
+ context.set(PreferenceProvider.class, broker);
+ return broker;
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/util/EmfHelper.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/util/EmfHelper.java
new file mode 100644
index 0000000..194a6a1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/util/EmfHelper.java
@@ -0,0 +1,130 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.util;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.resource.Resource;
+
+/**
+ * @author rushan
+ *
+ */
+public class EmfHelper {
+
+ public static class EInterface implements EObject {
+
+ @Override
+ public EList<Adapter> eAdapters() {
+ return null;
+ }
+
+ @Override
+ public boolean eDeliver() {
+ return false;
+ }
+
+ @Override
+ public void eSetDeliver(boolean deliver) {
+ }
+
+ @Override
+ public void eNotify(Notification notification) {
+ }
+
+ @Override
+ public EClass eClass() {
+ return null;
+ }
+
+ @Override
+ public Resource eResource() {
+ return null;
+ }
+
+ @Override
+ public EObject eContainer() {
+ return null;
+ }
+
+ @Override
+ public EStructuralFeature eContainingFeature() {
+ return null;
+ }
+
+ @Override
+ public EReference eContainmentFeature() {
+ return null;
+ }
+
+ @Override
+ public EList<EObject> eContents() {
+ return null;
+ }
+
+ @Override
+ public TreeIterator<EObject> eAllContents() {
+ return null;
+ }
+
+ @Override
+ public boolean eIsProxy() {
+ return false;
+ }
+
+ @Override
+ public EList<EObject> eCrossReferences() {
+ return null;
+ }
+
+ @Override
+ public Object eGet(EStructuralFeature feature) {
+ return null;
+ }
+
+ @Override
+ public Object eGet(EStructuralFeature feature, boolean resolve) {
+ return null;
+ }
+
+ @Override
+ public void eSet(EStructuralFeature feature, Object newValue) {
+
+ }
+
+ @Override
+ public boolean eIsSet(EStructuralFeature feature) {
+ return false;
+ }
+
+ @Override
+ public void eUnset(EStructuralFeature feature) {
+
+ }
+
+ @Override
+ public Object eInvoke(EOperation operation, EList<?> arguments)
+ throws InvocationTargetException {
+ return null;
+ }
+
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/util/ModelHelper.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/util/ModelHelper.java
new file mode 100644
index 0000000..7f22af4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/util/ModelHelper.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.util;
+
+import java.util.List;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+
+/**
+ * @author rushan
+ *
+ */
+public class ModelHelper {
+
+ public static void buildChildCategoryListIncludeThis(
+ PreferencesCategory category, List<PreferencesCategory> childList) {
+ childList.add(category);
+ for (PreferencesCategory child : category.getChildCategories()) {
+ buildChildCategoryListIncludeThis(child, childList);
+ }
+ }
+
+ public static void buildChildCategoryListIncludeThisList(
+ List<PreferencesCategory> list, List<PreferencesCategory> childList) {
+ for (PreferencesCategory c : list) {
+ buildChildCategoryListIncludeThis(c, childList);
+ }
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/util/PrefHelper.java b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/util/PrefHelper.java
new file mode 100644
index 0000000..645c1d5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.addon/src/org/eclipse/osbp/vaaclipse/ui/preferences/addon/internal/util/PrefHelper.java
@@ -0,0 +1,73 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.addon.internal.util;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+import org.osgi.framework.Bundle;
+import org.osgi.service.prefs.BackingStoreException;
+import org.osgi.service.prefs.Preferences;
+
+/**
+ * @author rushan
+ *
+ */
+public class PrefHelper {
+ @SuppressWarnings("unchecked")
+ public static void populateInterfaces(FieldEditor<?> editor,
+ IEclipseContext rendererContext, Class<?>[] interfaces) {
+ for (Class<?> i : interfaces) {
+ if (FieldEditor.class.isAssignableFrom(i)) {
+ Class<FieldEditor<?>> editorInterface = (Class<FieldEditor<?>>) i;
+ rendererContext.set(editorInterface, editor);
+ populateInterfaces(editor, rendererContext, i.getInterfaces());
+ }
+ }
+ }
+
+ public static String toEquinoxPath(Bundle bundle,
+ PreferencesCategory category) {
+ return toEquinoxPreferencePath(bundle, getAbsolutePath(category));
+ }
+
+ public static String toEquinoxPreferencePath(Bundle bundle, String catPath) {
+ return "/configuration/org.eclipse.core.runtime.preferences.OSGiPreferences."
+ + bundle.getBundleId() + catPath;
+ }
+
+ public static String getAbsolutePath(PreferencesCategory cat) {
+ if (cat.getParentCategory() == null)
+ return "/" + cat.getId();
+ return getAbsolutePath(cat.getParentCategory()) + "/" + cat.getId();
+ }
+
+ public static void flush(PreferencesPage page) throws BackingStoreException {
+ Set<Preferences> list = getPreferencesSet(page);
+
+ for (Preferences p : list) {
+ p.flush();
+ }
+ }
+
+ public static Set<Preferences> getPreferencesSet(PreferencesPage page) {
+ Set<Preferences> list = new HashSet<>();
+ for (FieldEditor<?> editor : page.getChildren()) {
+ Preferences pref = (Preferences) editor.getPreferences();
+ list.add(pref);
+ }
+ return list;
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/.project b/org.eclipse.osbp.vaaclipse.ui.preferences.model/.project
new file mode 100644
index 0000000..8cf6277
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse.ui.preferences.model</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.ui.preferences.model/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..8e70ba0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/META-INF/MANIFEST.MF
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.ui.preferences.model
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.ui.preferences.model;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: Eclipse OSBP
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.osbp.vaaclipse.ui.preferences.model;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.ui.preferences.model.util;version="0.9.0"
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.e4.ui.model.workbench;visibility:=reexport
+Bundle-ActivationPolicy: lazy
+Import-Package: org.osgi.service.component.annotations,
+ org.osgi.service.prefs
+Bundle-Activator: internal.Activator
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.html b/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.ini b/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.mappings b/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.properties b/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.properties
new file mode 100644
index 0000000..91d8bfb
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.ui.preferences.model
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/build.properties b/org.eclipse.osbp.vaaclipse.ui.preferences.model/build.properties
new file mode 100644
index 0000000..da0146c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/build.properties
@@ -0,0 +1,14 @@
+#
+
+bin.includes = about.properties, about.mappings, about.ini, about.html, .,\
+ model/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties,\
+ license.html,\
+ epl-v10.html
+jars.compile.order = .
+source.. = src/
+output.. = target/classes/
+src.includes = about.properties, about.mappings, about.ini, about.html, epl-v10.html,\
+ license.html
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/epl-v10.html b/org.eclipse.osbp.vaaclipse.ui.preferences.model/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/license.html b/org.eclipse.osbp.vaaclipse.ui.preferences.model/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.vaaclipse.ui.preferences.model/model/preferences.ecore b/org.eclipse.osbp.vaaclipse.ui.preferences.model/model/preferences.ecore
new file mode 100644
index 0000000..0a58066
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/model/preferences.ecore
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="preferences" nsURI="http://www.osbp.org/vaaclipse/ui/preferences"
+ nsPrefix="preferences">
+ <eClassifiers xsi:type="ecore:EClass" name="PreferencesCategory" eSuperTypes="platform:/plugin/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore#//ApplicationElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ defaultValueLiteral="No Name"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="childCategories" upperBound="-1"
+ eType="#//PreferencesCategory" containment="true" eOpposite="#//PreferencesCategory/parentCategory"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parentCategory" eType="#//PreferencesCategory"
+ eOpposite="#//PreferencesCategory/childCategories"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="page" eType="#//PreferencesPage"
+ containment="true" eOpposite="#//PreferencesPage/category"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PreferencesPage">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="category" eType="#//PreferencesCategory"
+ eOpposite="#//PreferencesCategory/page"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eGenericSuperTypes eClassifier="ecore:EClass platform:/plugin/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore#//ui/ElementContainer">
+ <eTypeArguments eClassifier="#//FieldEditor">
+ <eTypeArguments/>
+ </eTypeArguments>
+ </eGenericSuperTypes>
+ <eGenericSuperTypes eClassifier="ecore:EClass platform:/plugin/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore#//Contribution"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FieldEditor" eSuperTypes="platform:/plugin/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore#//ui/UIElement">
+ <eTypeParameters name="T"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="label" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ defaultValueLiteral=""/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="preferenceName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValueTyped">
+ <eGenericType eTypeParameter="#//FieldEditor/T"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="bundle" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="preferences" eType="#//Preferences"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="equinoxPath" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BooleanFieldEditor">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="style" eType="#//BooleanFieldStyle"/>
+ <eGenericSuperTypes eClassifier="#//FieldEditor">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"/>
+ </eGenericSuperTypes>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="BooleanFieldStyle">
+ <eLiterals name="DEFAULT"/>
+ <eLiterals name="SEPARATE_LABEL" value="1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ListFieldEditor" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
+ eType="#//Entry"/>
+ <eGenericSuperTypes eClassifier="#//FieldEditor">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eGenericSuperTypes>
+ <eGenericSuperTypes eClassifier="ecore:EClass platform:/plugin/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore#//Contribution"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Entry">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ComboFieldEditor" eSuperTypes="#//ListFieldEditor"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ListEditor">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="listCrud" eType="#//ListCrud"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="listFold" eType="#//ListFold"/>
+ <eGenericSuperTypes eClassifier="#//FieldEditor">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eGenericSuperTypes>
+ <eGenericSuperTypes eClassifier="ecore:EClass platform:/plugin/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore#//Contribution"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RadioGroupFieldEditor" eSuperTypes="#//ListFieldEditor"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ScaleFieldEditor">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="minValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
+ defaultValueLiteral="0"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
+ defaultValueLiteral="100"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="incrementValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
+ defaultValueLiteral="1"/>
+ <eGenericSuperTypes eClassifier="#//FieldEditor">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
+ </eGenericSuperTypes>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StringFieldEditor">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxLength" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
+ <eGenericSuperTypes eClassifier="#//FieldEditor">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eGenericSuperTypes>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IntegerFieldEditor">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="minValidValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxValidValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
+ <eGenericSuperTypes eClassifier="#//FieldEditor">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
+ </eGenericSuperTypes>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FileFieldEditor">
+ <eGenericSuperTypes eClassifier="#//FieldEditor">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eGenericSuperTypes>
+ <eGenericSuperTypes eClassifier="ecore:EClass platform:/plugin/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore#//Contribution"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DirectoryFieldEditor">
+ <eGenericSuperTypes eClassifier="#//FieldEditor">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eGenericSuperTypes>
+ <eGenericSuperTypes eClassifier="ecore:EClass platform:/plugin/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore#//Contribution"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ListCrud" abstract="true" interface="true">
+ <eOperations name="addNewValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+ <eParameters name="values" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="StringBuffer" instanceClassName="java.lang.StringBuffer"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="Preferences" instanceClassName="org.osgi.service.prefs.Preferences"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ListFold">
+ <eOperations name="apply">
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="prev" eType="#//StringBuffer"/>
+ </eOperations>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/model/preferences.genmodel b/org.eclipse.osbp.vaaclipse.ui.preferences.model/model/preferences.genmodel
new file mode 100644
index 0000000..de89c84
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/model/preferences.genmodel
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.osbp.vaaclipse.ui.preferences.model/src"
+ modelPluginID="org.eclipse.osbp.vaaclipse.ui.preferences.model" modelName="Preferences"
+ rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" importerID="org.eclipse.emf.importer.ecore"
+ complianceLevel="7.0" copyrightFields="false" usedGenPackages="../../org.eclipse.e4.ui.model.workbench/model/UIElements.genmodel#//application"
+ importOrganizing="true">
+ <foreignModel>preferences.ecore</foreignModel>
+ <genPackages prefix="Preferences" basePackage="org.eclipse.osbp.vaaclipse.ui" disposableProviderFactory="true"
+ interfacePackageSuffix="model" metaDataPackageSuffix="model.metadata" classPackageSuffix="model.impl"
+ utilityPackageSuffix="model.util" providerPackageSuffix="model.provider" presentationPackageSuffix="model.presentation"
+ testsPackageSuffix="model.tests" childCreationExtenders="true" ecorePackage="preferences.ecore#/">
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="preferences.ecore#//BooleanFieldStyle">
+ <genEnumLiterals ecoreEnumLiteral="preferences.ecore#//BooleanFieldStyle/DEFAULT"/>
+ <genEnumLiterals ecoreEnumLiteral="preferences.ecore#//BooleanFieldStyle/SEPARATE_LABEL"/>
+ </genEnums>
+ <genDataTypes ecoreDataType="preferences.ecore#//StringBuffer"/>
+ <genDataTypes ecoreDataType="preferences.ecore#//Preferences"/>
+ <genClasses image="false" ecoreClass="preferences.ecore#//PreferencesCategory">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//PreferencesCategory/name"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference preferences.ecore#//PreferencesCategory/childCategories"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference preferences.ecore#//PreferencesCategory/parentCategory"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference preferences.ecore#//PreferencesCategory/page"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//PreferencesCategory/id"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="preferences.ecore#//PreferencesPage">
+ <genFeatures notify="false" createChild="false" propertyCategory="" propertyDescription=""
+ propertySortChoices="true" ecoreFeature="ecore:EReference preferences.ecore#//PreferencesPage/category"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//PreferencesPage/description"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="preferences.ecore#//FieldEditor">
+ <genTypeParameters ecoreTypeParameter="preferences.ecore#//FieldEditor/T"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//FieldEditor/label"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//FieldEditor/preferenceName"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//FieldEditor/defaultValue"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//FieldEditor/defaultValueTyped"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//FieldEditor/bundle"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//FieldEditor/preferences"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//FieldEditor/equinoxPath"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="preferences.ecore#//BooleanFieldEditor">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//BooleanFieldEditor/style"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="preferences.ecore#//ListFieldEditor">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference preferences.ecore#//ListFieldEditor/entries"/>
+ </genClasses>
+ <genClasses ecoreClass="preferences.ecore#//Entry">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//Entry/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//Entry/value"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="preferences.ecore#//ComboFieldEditor"/>
+ <genClasses image="false" ecoreClass="preferences.ecore#//ListEditor">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference preferences.ecore#//ListEditor/listCrud"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference preferences.ecore#//ListEditor/listFold"/>
+ </genClasses>
+ <genClasses ecoreClass="preferences.ecore#//RadioGroupFieldEditor"/>
+ <genClasses ecoreClass="preferences.ecore#//ScaleFieldEditor">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//ScaleFieldEditor/minValue"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//ScaleFieldEditor/maxValue"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//ScaleFieldEditor/incrementValue"/>
+ </genClasses>
+ <genClasses ecoreClass="preferences.ecore#//StringFieldEditor">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//StringFieldEditor/maxLength"/>
+ </genClasses>
+ <genClasses ecoreClass="preferences.ecore#//IntegerFieldEditor">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//IntegerFieldEditor/minValidValue"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute preferences.ecore#//IntegerFieldEditor/maxValidValue"/>
+ </genClasses>
+ <genClasses ecoreClass="preferences.ecore#//FileFieldEditor"/>
+ <genClasses ecoreClass="preferences.ecore#//DirectoryFieldEditor"/>
+ <genClasses image="false" ecoreClass="preferences.ecore#//ListCrud">
+ <genOperations ecoreOperation="preferences.ecore#//ListCrud/addNewValue">
+ <genParameters ecoreParameter="preferences.ecore#//ListCrud/addNewValue/values"/>
+ </genOperations>
+ </genClasses>
+ <genClasses ecoreClass="preferences.ecore#//ListFold">
+ <genOperations ecoreOperation="preferences.ecore#//ListFold/apply">
+ <genParameters ecoreParameter="preferences.ecore#//ListFold/apply/value"/>
+ <genParameters ecoreParameter="preferences.ecore#//ListFold/apply/prev"/>
+ </genOperations>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/plugin.properties b/org.eclipse.osbp.vaaclipse.ui.preferences.model/plugin.properties
new file mode 100644
index 0000000..a598247
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Preferences Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/plugin.xml b/org.eclipse.osbp.vaaclipse.ui.preferences.model/plugin.xml
new file mode 100644
index 0000000..2843b53
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <!-- @generated preferences -->
+ <package
+ uri="http://www.osbp.org/vaaclipse/ui/preferences"
+ class="org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage"
+ genModel="model/preferences.genmodel"/>
+ </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/pom.xml b/org.eclipse.osbp.vaaclipse.ui.preferences.model/pom.xml
new file mode 100644
index 0000000..7d626ba
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.osbp.vaaclipse.ui.preferences.model</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/internal/Activator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/internal/Activator.java
new file mode 100644
index 0000000..36a0cfa
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/internal/Activator.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package internal;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesFactoryImpl;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesFactory;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
+
+/**
+ * @author rushan
+ *
+ */
+public class Activator implements BundleActivator {
+
+ private ServiceRegistration<PreferencesFactory> factoryRegistraction;
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ PreferencesFactory factory = new PreferencesFactoryImpl();
+ factoryRegistraction = context.registerService(
+ PreferencesFactory.class, factory, null);
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ factoryRegistraction.unregister();
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/BooleanFieldEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/BooleanFieldEditor.java
new file mode 100644
index 0000000..58e2979
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/BooleanFieldEditor.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Boolean Field Editor</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor#getStyle
+ * <em>Style</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getBooleanFieldEditor()
+ * @model superTypes=
+ * "org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor<org.eclipse.emf.ecore.EBooleanObject>"
+ * @generated
+ */
+public interface BooleanFieldEditor extends FieldEditor<Boolean> {
+ /**
+ * Returns the value of the '<em><b>Style</b></em>' attribute. The literals
+ * are from the enumeration
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Style</em>' attribute isn't clear, there
+ * really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Style</em>' attribute.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle
+ * @see #setStyle(BooleanFieldStyle)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getBooleanFieldEditor_Style()
+ * @model
+ * @generated
+ */
+ BooleanFieldStyle getStyle();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor#getStyle
+ * <em>Style</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Style</em>' attribute.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle
+ * @see #getStyle()
+ * @generated
+ */
+ void setStyle(BooleanFieldStyle value);
+
+} // BooleanFieldEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/BooleanFieldStyle.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/BooleanFieldStyle.java
new file mode 100644
index 0000000..26081bc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/BooleanFieldStyle.java
@@ -0,0 +1,217 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc --> A representation of the literals of the enumeration '
+ * <em><b>Boolean Field Style</b></em>', and utility methods for working with
+ * them. <!-- end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getBooleanFieldStyle()
+ * @model
+ * @generated
+ */
+public enum BooleanFieldStyle implements Enumerator {
+ /**
+ * The '<em><b>DEFAULT</b></em>' literal object. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see #DEFAULT_VALUE
+ * @generated
+ * @ordered
+ */
+ DEFAULT(0, "DEFAULT", "DEFAULT"),
+
+ /**
+ * The '<em><b>SEPARATE LABEL</b></em>' literal object. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @see #SEPARATE_LABEL_VALUE
+ * @generated
+ * @ordered
+ */
+ SEPARATE_LABEL(1, "SEPARATE_LABEL", "SEPARATE_LABEL");
+
+ /**
+ * The '<em><b>DEFAULT</b></em>' literal value. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>DEFAULT</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @see #DEFAULT
+ * @model
+ * @generated
+ * @ordered
+ */
+ public static final int DEFAULT_VALUE = 0;
+
+ /**
+ * The '<em><b>SEPARATE LABEL</b></em>' literal value. <!-- begin-user-doc
+ * -->
+ * <p>
+ * If the meaning of '<em><b>SEPARATE LABEL</b></em>' literal object isn't
+ * clear, there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @see #SEPARATE_LABEL
+ * @model
+ * @generated
+ * @ordered
+ */
+ public static final int SEPARATE_LABEL_VALUE = 1;
+
+ /**
+ * An array of all the '<em><b>Boolean Field Style</b></em>' enumerators.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private static final BooleanFieldStyle[] VALUES_ARRAY = new BooleanFieldStyle[] {
+ DEFAULT, SEPARATE_LABEL, };
+
+ /**
+ * A public read-only list of all the '<em><b>Boolean Field Style</b></em>'
+ * enumerators. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final List<BooleanFieldStyle> VALUES = Collections
+ .unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Boolean Field Style</b></em>' literal with the
+ * specified literal value. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static BooleanFieldStyle get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ BooleanFieldStyle result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Boolean Field Style</b></em>' literal with the
+ * specified name. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static BooleanFieldStyle getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ BooleanFieldStyle result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Boolean Field Style</b></em>' literal with the
+ * specified integer value. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static BooleanFieldStyle get(int value) {
+ switch (value) {
+ case DEFAULT_VALUE:
+ return DEFAULT;
+ case SEPARATE_LABEL_VALUE:
+ return SEPARATE_LABEL;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ private BooleanFieldStyle(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string
+ * representation. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} // BooleanFieldStyle
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ComboFieldEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ComboFieldEditor.java
new file mode 100644
index 0000000..a44cb00
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ComboFieldEditor.java
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Combo Field Editor</b></em>'. <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getComboFieldEditor()
+ * @model
+ * @generated
+ */
+public interface ComboFieldEditor extends ListFieldEditor {
+} // ComboFieldEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/DirectoryFieldEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/DirectoryFieldEditor.java
new file mode 100644
index 0000000..3f1495e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/DirectoryFieldEditor.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Directory Field Editor</b></em>'. <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getDirectoryFieldEditor()
+ * @model superTypes=
+ * "org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor<org.eclipse.emf.ecore.EString> org.eclipse.e4.ui.model.application.Contribution"
+ * @generated
+ */
+public interface DirectoryFieldEditor extends FieldEditor<String>,
+ MContribution {
+} // DirectoryFieldEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/Entry.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/Entry.java
new file mode 100644
index 0000000..e623a94
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/Entry.java
@@ -0,0 +1,92 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Entry</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry#getName <em>Name
+ * </em>}</li>
+ * <li>{@link org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry#getValue <em>
+ * Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getEntry()
+ * @model
+ * @generated
+ */
+public interface Entry extends EObject {
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute. <!--
+ * begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear, there really
+ * should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getEntry_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry#getName
+ * <em>Name</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute. <!--
+ * begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear, there
+ * really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(String)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getEntry_Value()
+ * @model
+ * @generated
+ */
+ String getValue();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry#getValue
+ * <em>Value</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(String value);
+
+} // Entry
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/FieldEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/FieldEditor.java
new file mode 100644
index 0000000..0d80468
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/FieldEditor.java
@@ -0,0 +1,262 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.osgi.service.prefs.Preferences;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Field Editor</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getLabel
+ * <em>Label</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getPreferenceName
+ * <em>Preference Name</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getDefaultValue
+ * <em>Default Value</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getDefaultValueTyped
+ * <em>Default Value Typed</em>}</li>
+ * <li>{@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getBundle
+ * <em>Bundle</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getPreferences
+ * <em>Preferences</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getEquinoxPath
+ * <em>Equinox Path</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getFieldEditor()
+ * @model
+ * @generated
+ */
+public interface FieldEditor<T> extends EObject, MUIElement {
+ /**
+ * Returns the value of the '<em><b>Label</b></em>' attribute. The default
+ * value is <code>""</code>. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Label</em>' attribute isn't clear, there
+ * really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Label</em>' attribute.
+ * @see #setLabel(String)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getFieldEditor_Label()
+ * @model default=""
+ * @generated
+ */
+ String getLabel();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getLabel
+ * <em>Label</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Label</em>' attribute.
+ * @see #getLabel()
+ * @generated
+ */
+ void setLabel(String value);
+
+ /**
+ * Returns the value of the '<em><b>Preference Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Preference Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Preference Name</em>' attribute.
+ * @see #setPreferenceName(String)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getFieldEditor_PreferenceName()
+ * @model
+ * @generated
+ */
+ String getPreferenceName();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getPreferenceName
+ * <em>Preference Name</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Preference Name</em>' attribute.
+ * @see #getPreferenceName()
+ * @generated
+ */
+ void setPreferenceName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Default Value</b></em>' attribute. <!--
+ * begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Default Value</em>' attribute.
+ * @see #setDefaultValue(String)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getFieldEditor_DefaultValue()
+ * @model
+ * @generated
+ */
+ String getDefaultValue();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getDefaultValue
+ * <em>Default Value</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Default Value</em>' attribute.
+ * @see #getDefaultValue()
+ * @generated
+ */
+ void setDefaultValue(String value);
+
+ /**
+ * Returns the value of the '<em><b>Default Value Typed</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Value Typed</em>' attribute isn't
+ * clear, there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Default Value Typed</em>' attribute.
+ * @see #setDefaultValueTyped(Object)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getFieldEditor_DefaultValueTyped()
+ * @model
+ * @generated
+ */
+ T getDefaultValueTyped();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getDefaultValueTyped
+ * <em>Default Value Typed</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Default Value Typed</em>' attribute.
+ * @see #getDefaultValueTyped()
+ * @generated
+ */
+ void setDefaultValueTyped(T value);
+
+ /**
+ * Returns the value of the '<em><b>Bundle</b></em>' attribute. <!--
+ * begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Bundle</em>' attribute isn't clear, there
+ * really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Bundle</em>' attribute.
+ * @see #setBundle(String)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getFieldEditor_Bundle()
+ * @model
+ * @generated
+ */
+ String getBundle();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getBundle
+ * <em>Bundle</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @param value
+ * the new value of the '<em>Bundle</em>' attribute.
+ * @see #getBundle()
+ * @generated
+ */
+ void setBundle(String value);
+
+ /**
+ * Returns the value of the '<em><b>Preferences</b></em>' attribute. <!--
+ * begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Preferences</em>' attribute isn't clear, there
+ * really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Preferences</em>' attribute.
+ * @see #setPreferences(Preferences)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getFieldEditor_Preferences()
+ * @model dataType="org.eclipse.osbp.vaaclipse.ui.preferences.model.Preferences"
+ * @generated
+ */
+ Preferences getPreferences();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getPreferences
+ * <em>Preferences</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Preferences</em>' attribute.
+ * @see #getPreferences()
+ * @generated
+ */
+ void setPreferences(Preferences value);
+
+ /**
+ * Returns the value of the '<em><b>Equinox Path</b></em>' attribute. <!--
+ * begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Equinox Path</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Equinox Path</em>' attribute.
+ * @see #setEquinoxPath(String)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getFieldEditor_EquinoxPath()
+ * @model
+ * @generated
+ */
+ String getEquinoxPath();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getEquinoxPath
+ * <em>Equinox Path</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Equinox Path</em>' attribute.
+ * @see #getEquinoxPath()
+ * @generated
+ */
+ void setEquinoxPath(String value);
+
+} // FieldEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/FileFieldEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/FileFieldEditor.java
new file mode 100644
index 0000000..7face91
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/FileFieldEditor.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>File Field Editor</b></em>'. <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getFileFieldEditor()
+ * @model superTypes=
+ * "org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor<org.eclipse.emf.ecore.EString> org.eclipse.e4.ui.model.application.Contribution"
+ * @generated
+ */
+public interface FileFieldEditor extends FieldEditor<String>, MContribution {
+} // FileFieldEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/IntegerFieldEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/IntegerFieldEditor.java
new file mode 100644
index 0000000..5f835d4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/IntegerFieldEditor.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Integer Field Editor</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor#getMinValidValue
+ * <em>Min Valid Value</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor#getMaxValidValue
+ * <em>Max Valid Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getIntegerFieldEditor()
+ * @model superTypes=
+ * "org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor<org.eclipse.emf.ecore.EIntegerObject>"
+ * @generated
+ */
+public interface IntegerFieldEditor extends FieldEditor<Integer> {
+ /**
+ * Returns the value of the '<em><b>Min Valid Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Min Valid Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Min Valid Value</em>' attribute.
+ * @see #setMinValidValue(Integer)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getIntegerFieldEditor_MinValidValue()
+ * @model
+ * @generated
+ */
+ Integer getMinValidValue();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor#getMinValidValue
+ * <em>Min Valid Value</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Min Valid Value</em>' attribute.
+ * @see #getMinValidValue()
+ * @generated
+ */
+ void setMinValidValue(Integer value);
+
+ /**
+ * Returns the value of the '<em><b>Max Valid Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Max Valid Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Max Valid Value</em>' attribute.
+ * @see #setMaxValidValue(Integer)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getIntegerFieldEditor_MaxValidValue()
+ * @model
+ * @generated
+ */
+ Integer getMaxValidValue();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor#getMaxValidValue
+ * <em>Max Valid Value</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Max Valid Value</em>' attribute.
+ * @see #getMaxValidValue()
+ * @generated
+ */
+ void setMaxValidValue(Integer value);
+
+} // IntegerFieldEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListCrud.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListCrud.java
new file mode 100644
index 0000000..ebe9265
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListCrud.java
@@ -0,0 +1,33 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>List Crud</b></em>'. <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getListCrud()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface ListCrud extends EObject {
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @model
+ * @generated
+ */
+ String addNewValue(String values);
+
+} // ListCrud
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListEditor.java
new file mode 100644
index 0000000..643000b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListEditor.java
@@ -0,0 +1,97 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>List Editor</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor#getListCrud
+ * <em>List Crud</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor#getListFold
+ * <em>List Fold</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getListEditor()
+ * @model superTypes=
+ * "org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor<org.eclipse.emf.ecore.EString> org.eclipse.e4.ui.model.application.Contribution"
+ * @generated
+ */
+public interface ListEditor extends FieldEditor<String>, MContribution {
+ /**
+ * Returns the value of the '<em><b>List Crud</b></em>' reference. <!--
+ * begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>List Crud</em>' reference isn't clear, there
+ * really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>List Crud</em>' reference.
+ * @see #setListCrud(ListCrud)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getListEditor_ListCrud()
+ * @model
+ * @generated
+ */
+ ListCrud getListCrud();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor#getListCrud
+ * <em>List Crud</em>}' reference. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @param value
+ * the new value of the '<em>List Crud</em>' reference.
+ * @see #getListCrud()
+ * @generated
+ */
+ void setListCrud(ListCrud value);
+
+ /**
+ * Returns the value of the '<em><b>List Fold</b></em>' reference. <!--
+ * begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>List Fold</em>' reference isn't clear, there
+ * really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>List Fold</em>' reference.
+ * @see #setListFold(ListFold)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getListEditor_ListFold()
+ * @model
+ * @generated
+ */
+ ListFold getListFold();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor#getListFold
+ * <em>List Fold</em>}' reference. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @param value
+ * the new value of the '<em>List Fold</em>' reference.
+ * @see #getListFold()
+ * @generated
+ */
+ void setListFold(ListFold value);
+
+} // ListEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListFieldEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListFieldEditor.java
new file mode 100644
index 0000000..afa23ce
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListFieldEditor.java
@@ -0,0 +1,54 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>List Field Editor</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor#getEntries
+ * <em>Entries</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getListFieldEditor()
+ * @model abstract="true" superTypes=
+ * "org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor<org.eclipse.emf.ecore.EString> org.eclipse.e4.ui.model.application.Contribution"
+ * @generated
+ */
+public interface ListFieldEditor extends FieldEditor<String>, MContribution {
+ /**
+ * Returns the value of the '<em><b>Entries</b></em>' reference list. The
+ * list contents are of type
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry}. <!--
+ * begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Entries</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Entries</em>' reference list.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getListFieldEditor_Entries()
+ * @model
+ * @generated
+ */
+ EList<Entry> getEntries();
+
+} // ListFieldEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListFold.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListFold.java
new file mode 100644
index 0000000..51d4782
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ListFold.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>List Fold</b></em>'. <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getListFold()
+ * @model
+ * @generated
+ */
+public interface ListFold extends EObject {
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @model
+ * prevDataType="org.eclipse.osbp.vaaclipse.ui.preferences.model.StringBuffer"
+ * @generated
+ */
+ void apply(String value, StringBuffer prev);
+
+} // ListFold
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/PreferencesCategory.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/PreferencesCategory.java
new file mode 100644
index 0000000..69e414e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/PreferencesCategory.java
@@ -0,0 +1,196 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import org.eclipse.e4.ui.model.application.MApplicationElement;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Category</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getName
+ * <em>Name</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getChildCategories
+ * <em>Child Categories</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getParentCategory
+ * <em>Parent Category</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getPage
+ * <em>Page</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getId
+ * <em>Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getPreferencesCategory()
+ * @model
+ * @generated
+ */
+public interface PreferencesCategory extends EObject, MApplicationElement {
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute. The default
+ * value is <code>"No Name"</code>. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear, there really
+ * should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getPreferencesCategory_Name()
+ * @model default="No Name"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getName
+ * <em>Name</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Child Categories</b></em>' containment
+ * reference list. The list contents are of type
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory}.
+ * It is bidirectional and its opposite is '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getParentCategory
+ * <em>Parent Category</em>}'. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Child Categories</em>' containment reference
+ * list isn't clear, there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Child Categories</em>' containment
+ * reference list.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getPreferencesCategory_ChildCategories()
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getParentCategory
+ * @model opposite="parentCategory" containment="true"
+ * @generated
+ */
+ EList<PreferencesCategory> getChildCategories();
+
+ /**
+ * Returns the value of the '<em><b>Parent Category</b></em>' container
+ * reference. It is bidirectional and its opposite is '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getChildCategories
+ * <em>Child Categories</em>}'. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Parent Category</em>' container reference
+ * isn't clear, there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Parent Category</em>' container reference.
+ * @see #setParentCategory(PreferencesCategory)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getPreferencesCategory_ParentCategory()
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getChildCategories
+ * @model opposite="childCategories" transient="false"
+ * @generated
+ */
+ PreferencesCategory getParentCategory();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getParentCategory
+ * <em>Parent Category</em>}' container reference. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Parent Category</em>' container
+ * reference.
+ * @see #getParentCategory()
+ * @generated
+ */
+ void setParentCategory(PreferencesCategory value);
+
+ /**
+ * Returns the value of the '<em><b>Page</b></em>' containment reference. It
+ * is bidirectional and its opposite is '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage#getCategory
+ * <em>Category</em>}'. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Page</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Page</em>' containment reference.
+ * @see #setPage(PreferencesPage)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getPreferencesCategory_Page()
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage#getCategory
+ * @model opposite="category" containment="true"
+ * @generated
+ */
+ PreferencesPage getPage();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getPage
+ * <em>Page</em>}' containment reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Page</em>' containment reference.
+ * @see #getPage()
+ * @generated
+ */
+ void setPage(PreferencesPage value);
+
+ /**
+ * Returns the value of the '<em><b>Id</b></em>' attribute. <!--
+ * begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Id</em>' attribute isn't clear, there really
+ * should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Id</em>' attribute.
+ * @see #setId(String)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getPreferencesCategory_Id()
+ * @model
+ * @generated
+ */
+ String getId();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getId
+ * <em>Id</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Id</em>' attribute.
+ * @see #getId()
+ * @generated
+ */
+ void setId(String value);
+
+} // PreferencesCategory
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/PreferencesPage.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/PreferencesPage.java
new file mode 100644
index 0000000..5b6736e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/PreferencesPage.java
@@ -0,0 +1,104 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Page</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage#getCategory
+ * <em>Category</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage#getDescription
+ * <em>Description</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getPreferencesPage()
+ * @model
+ * @generated
+ */
+public interface PreferencesPage extends EObject,
+ MElementContainer<FieldEditor<?>>, MContribution {
+ /**
+ * Returns the value of the '<em><b>Category</b></em>' container reference.
+ * It is bidirectional and its opposite is '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getPage
+ * <em>Page</em>}'. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Category</em>' container reference isn't
+ * clear, there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Category</em>' container reference.
+ * @see #setCategory(PreferencesCategory)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getPreferencesPage_Category()
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getPage
+ * @model opposite="page" transient="false"
+ * @generated
+ */
+ PreferencesCategory getCategory();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage#getCategory
+ * <em>Category</em>}' container reference. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Category</em>' container reference.
+ * @see #getCategory()
+ * @generated
+ */
+ void setCategory(PreferencesCategory value);
+
+ /**
+ * Returns the value of the '<em><b>Description</b></em>' attribute. <!--
+ * begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Description</em>' attribute isn't clear, there
+ * really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Description</em>' attribute.
+ * @see #setDescription(String)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getPreferencesPage_Description()
+ * @model
+ * @generated
+ */
+ String getDescription();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage#getDescription
+ * <em>Description</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Description</em>' attribute.
+ * @see #getDescription()
+ * @generated
+ */
+ void setDescription(String value);
+
+} // PreferencesPage
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/RadioGroupFieldEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/RadioGroupFieldEditor.java
new file mode 100644
index 0000000..ce79721
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/RadioGroupFieldEditor.java
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Radio Group Field Editor</b></em>'. <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getRadioGroupFieldEditor()
+ * @model
+ * @generated
+ */
+public interface RadioGroupFieldEditor extends ListFieldEditor {
+} // RadioGroupFieldEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ScaleFieldEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ScaleFieldEditor.java
new file mode 100644
index 0000000..2b22d67
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/ScaleFieldEditor.java
@@ -0,0 +1,128 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>Scale Field Editor</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getMinValue
+ * <em>Min Value</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getMaxValue
+ * <em>Max Value</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getIncrementValue
+ * <em>Increment Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getScaleFieldEditor()
+ * @model superTypes=
+ * "org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor<org.eclipse.emf.ecore.EIntegerObject>"
+ * @generated
+ */
+public interface ScaleFieldEditor extends FieldEditor<Integer> {
+ /**
+ * Returns the value of the '<em><b>Min Value</b></em>' attribute. The
+ * default value is <code>"0"</code>. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Min Value</em>' attribute isn't clear, there
+ * really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Min Value</em>' attribute.
+ * @see #setMinValue(Integer)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getScaleFieldEditor_MinValue()
+ * @model default="0"
+ * @generated
+ */
+ Integer getMinValue();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getMinValue
+ * <em>Min Value</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @param value
+ * the new value of the '<em>Min Value</em>' attribute.
+ * @see #getMinValue()
+ * @generated
+ */
+ void setMinValue(Integer value);
+
+ /**
+ * Returns the value of the '<em><b>Max Value</b></em>' attribute. The
+ * default value is <code>"100"</code>. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Max Value</em>' attribute isn't clear, there
+ * really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Max Value</em>' attribute.
+ * @see #setMaxValue(Integer)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getScaleFieldEditor_MaxValue()
+ * @model default="100"
+ * @generated
+ */
+ Integer getMaxValue();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getMaxValue
+ * <em>Max Value</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @param value
+ * the new value of the '<em>Max Value</em>' attribute.
+ * @see #getMaxValue()
+ * @generated
+ */
+ void setMaxValue(Integer value);
+
+ /**
+ * Returns the value of the '<em><b>Increment Value</b></em>' attribute. The
+ * default value is <code>"1"</code>. <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Increment Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Increment Value</em>' attribute.
+ * @see #setIncrementValue(Integer)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getScaleFieldEditor_IncrementValue()
+ * @model default="1"
+ * @generated
+ */
+ Integer getIncrementValue();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getIncrementValue
+ * <em>Increment Value</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Increment Value</em>' attribute.
+ * @see #getIncrementValue()
+ * @generated
+ */
+ void setIncrementValue(Integer value);
+
+} // ScaleFieldEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/StringFieldEditor.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/StringFieldEditor.java
new file mode 100644
index 0000000..29bc184
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/StringFieldEditor.java
@@ -0,0 +1,62 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model;
+
+/**
+ * <!-- begin-user-doc --> A representation of the model object '
+ * <em><b>String Field Editor</b></em>'. <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor#getMaxLength
+ * <em>Max Length</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getStringFieldEditor()
+ * @model superTypes=
+ * "org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor<org.eclipse.emf.ecore.EString>"
+ * @generated
+ */
+public interface StringFieldEditor extends FieldEditor<String> {
+ /**
+ * Returns the value of the '<em><b>Max Length</b></em>' attribute. <!--
+ * begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Max Length</em>' attribute isn't clear, there
+ * really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @return the value of the '<em>Max Length</em>' attribute.
+ * @see #setMaxLength(Integer)
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#getStringFieldEditor_MaxLength()
+ * @model
+ * @generated
+ */
+ Integer getMaxLength();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor#getMaxLength
+ * <em>Max Length</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @param value
+ * the new value of the '<em>Max Length</em>' attribute.
+ * @see #getMaxLength()
+ * @generated
+ */
+ void setMaxLength(Integer value);
+
+} // StringFieldEditor
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/BooleanFieldEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/BooleanFieldEditorImpl.java
new file mode 100644
index 0000000..02ea97c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/BooleanFieldEditorImpl.java
@@ -0,0 +1,188 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Boolean Field Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.BooleanFieldEditorImpl#getStyle
+ * <em>Style</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class BooleanFieldEditorImpl extends FieldEditorImpl<Boolean> implements
+ BooleanFieldEditor {
+ /**
+ * The default value of the '{@link #getStyle() <em>Style</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStyle()
+ * @generated
+ * @ordered
+ */
+ protected static final BooleanFieldStyle STYLE_EDEFAULT = BooleanFieldStyle.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getStyle() <em>Style</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStyle()
+ * @generated
+ * @ordered
+ */
+ protected BooleanFieldStyle style = STYLE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected BooleanFieldEditorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PreferencesPackage.Literals.BOOLEAN_FIELD_EDITOR;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc --> This is specialized for the
+ * more specific type known in this context.
+ *
+ * @generated
+ */
+ @Override
+ public void setDefaultValueTyped(Boolean newDefaultValueTyped) {
+ super.setDefaultValueTyped(newDefaultValueTyped);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public BooleanFieldStyle getStyle() {
+ return style;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setStyle(BooleanFieldStyle newStyle) {
+ BooleanFieldStyle oldStyle = style;
+ style = newStyle == null ? STYLE_EDEFAULT : newStyle;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.BOOLEAN_FIELD_EDITOR__STYLE, oldStyle,
+ style));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PreferencesPackage.BOOLEAN_FIELD_EDITOR__STYLE:
+ return getStyle();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PreferencesPackage.BOOLEAN_FIELD_EDITOR__STYLE:
+ setStyle((BooleanFieldStyle) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.BOOLEAN_FIELD_EDITOR__STYLE:
+ setStyle(STYLE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.BOOLEAN_FIELD_EDITOR__STYLE:
+ return style != STYLE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (style: ");
+ result.append(style);
+ result.append(')');
+ return result.toString();
+ }
+
+} // BooleanFieldEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ComboFieldEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ComboFieldEditorImpl.java
new file mode 100644
index 0000000..af3e420
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ComboFieldEditorImpl.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ComboFieldEditor;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Combo Field Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class ComboFieldEditorImpl extends ListFieldEditorImpl implements
+ ComboFieldEditor {
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ComboFieldEditorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PreferencesPackage.Literals.COMBO_FIELD_EDITOR;
+ }
+
+} // ComboFieldEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/DirectoryFieldEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/DirectoryFieldEditorImpl.java
new file mode 100644
index 0000000..8a55b93
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/DirectoryFieldEditorImpl.java
@@ -0,0 +1,295 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.DirectoryFieldEditor;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Directory Field Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.DirectoryFieldEditorImpl#getContributionURI
+ * <em>Contribution URI</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.DirectoryFieldEditorImpl#getObject
+ * <em>Object</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DirectoryFieldEditorImpl extends FieldEditorImpl<String> implements
+ DirectoryFieldEditor {
+ /**
+ * The default value of the '{@link #getContributionURI()
+ * <em>Contribution URI</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getContributionURI()
+ * @generated
+ * @ordered
+ */
+ protected static final String CONTRIBUTION_URI_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getContributionURI()
+ * <em>Contribution URI</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getContributionURI()
+ * @generated
+ * @ordered
+ */
+ protected String contributionURI = CONTRIBUTION_URI_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getObject() <em>Object</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getObject()
+ * @generated
+ * @ordered
+ */
+ protected static final Object OBJECT_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getObject() <em>Object</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getObject()
+ * @generated
+ * @ordered
+ */
+ protected Object object = OBJECT_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected DirectoryFieldEditorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PreferencesPackage.Literals.DIRECTORY_FIELD_EDITOR;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc --> This is specialized for the
+ * more specific type known in this context.
+ *
+ * @generated
+ */
+ @Override
+ public void setDefaultValueTyped(String newDefaultValueTyped) {
+ super.setDefaultValueTyped(newDefaultValueTyped);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getContributionURI() {
+ return contributionURI;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setContributionURI(String newContributionURI) {
+ String oldContributionURI = contributionURI;
+ contributionURI = newContributionURI;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(
+ this,
+ Notification.SET,
+ PreferencesPackage.DIRECTORY_FIELD_EDITOR__CONTRIBUTION_URI,
+ oldContributionURI, contributionURI));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Object getObject() {
+ return object;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setObject(Object newObject) {
+ Object oldObject = object;
+ object = newObject;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.DIRECTORY_FIELD_EDITOR__OBJECT,
+ oldObject, object));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PreferencesPackage.DIRECTORY_FIELD_EDITOR__CONTRIBUTION_URI:
+ return getContributionURI();
+ case PreferencesPackage.DIRECTORY_FIELD_EDITOR__OBJECT:
+ return getObject();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PreferencesPackage.DIRECTORY_FIELD_EDITOR__CONTRIBUTION_URI:
+ setContributionURI((String) newValue);
+ return;
+ case PreferencesPackage.DIRECTORY_FIELD_EDITOR__OBJECT:
+ setObject(newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.DIRECTORY_FIELD_EDITOR__CONTRIBUTION_URI:
+ setContributionURI(CONTRIBUTION_URI_EDEFAULT);
+ return;
+ case PreferencesPackage.DIRECTORY_FIELD_EDITOR__OBJECT:
+ setObject(OBJECT_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.DIRECTORY_FIELD_EDITOR__CONTRIBUTION_URI:
+ return CONTRIBUTION_URI_EDEFAULT == null ? contributionURI != null
+ : !CONTRIBUTION_URI_EDEFAULT.equals(contributionURI);
+ case PreferencesPackage.DIRECTORY_FIELD_EDITOR__OBJECT:
+ return OBJECT_EDEFAULT == null ? object != null : !OBJECT_EDEFAULT
+ .equals(object);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == MContribution.class) {
+ switch (derivedFeatureID) {
+ case PreferencesPackage.DIRECTORY_FIELD_EDITOR__CONTRIBUTION_URI:
+ return ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI;
+ case PreferencesPackage.DIRECTORY_FIELD_EDITOR__OBJECT:
+ return ApplicationPackageImpl.CONTRIBUTION__OBJECT;
+ default:
+ return -1;
+ }
+ }
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+ if (baseClass == MContribution.class) {
+ switch (baseFeatureID) {
+ case ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI:
+ return PreferencesPackage.DIRECTORY_FIELD_EDITOR__CONTRIBUTION_URI;
+ case ApplicationPackageImpl.CONTRIBUTION__OBJECT:
+ return PreferencesPackage.DIRECTORY_FIELD_EDITOR__OBJECT;
+ default:
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (contributionURI: ");
+ result.append(contributionURI);
+ result.append(", object: ");
+ result.append(object);
+ result.append(')');
+ return result.toString();
+ }
+
+} // DirectoryFieldEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/EntryImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/EntryImpl.java
new file mode 100644
index 0000000..a24c45e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/EntryImpl.java
@@ -0,0 +1,234 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Entry</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.EntryImpl#getName
+ * <em>Name</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.EntryImpl#getValue
+ * <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class EntryImpl extends MinimalEObjectImpl.Container implements Entry {
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected String value = VALUE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected EntryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PreferencesPackage.Literals.ENTRY;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.ENTRY__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setValue(String newValue) {
+ String oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.ENTRY__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PreferencesPackage.ENTRY__NAME:
+ return getName();
+ case PreferencesPackage.ENTRY__VALUE:
+ return getValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PreferencesPackage.ENTRY__NAME:
+ setName((String) newValue);
+ return;
+ case PreferencesPackage.ENTRY__VALUE:
+ setValue((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.ENTRY__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case PreferencesPackage.ENTRY__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.ENTRY__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT
+ .equals(name);
+ case PreferencesPackage.ENTRY__VALUE:
+ return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT
+ .equals(value);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+} // EntryImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/FieldEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/FieldEditorImpl.java
new file mode 100644
index 0000000..edf327d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/FieldEditorImpl.java
@@ -0,0 +1,527 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UIElementImpl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+import org.osgi.service.prefs.Preferences;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Field Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl#getLabel
+ * <em>Label</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl#getPreferenceName
+ * <em>Preference Name</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl#getDefaultValue
+ * <em>Default Value</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl#getDefaultValueTyped
+ * <em>Default Value Typed</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl#getBundle
+ * <em>Bundle</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl#getPreferences
+ * <em>Preferences</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl#getEquinoxPath
+ * <em>Equinox Path</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FieldEditorImpl<T> extends UIElementImpl implements FieldEditor<T> {
+ /**
+ * The default value of the '{@link #getLabel() <em>Label</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getLabel()
+ * @generated
+ * @ordered
+ */
+ protected static final String LABEL_EDEFAULT = "";
+
+ /**
+ * The cached value of the '{@link #getLabel() <em>Label</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getLabel()
+ * @generated
+ * @ordered
+ */
+ protected String label = LABEL_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getPreferenceName()
+ * <em>Preference Name</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getPreferenceName()
+ * @generated
+ * @ordered
+ */
+ protected static final String PREFERENCE_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getPreferenceName()
+ * <em>Preference Name</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getPreferenceName()
+ * @generated
+ * @ordered
+ */
+ protected String preferenceName = PREFERENCE_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultValue()
+ * <em>Default Value</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getDefaultValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultValue()
+ * <em>Default Value</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getDefaultValue()
+ * @generated
+ * @ordered
+ */
+ protected String defaultValue = DEFAULT_VALUE_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getDefaultValueTyped()
+ * <em>Default Value Typed</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getDefaultValueTyped()
+ * @generated
+ * @ordered
+ */
+ protected T defaultValueTyped;
+
+ /**
+ * The default value of the '{@link #getBundle() <em>Bundle</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getBundle()
+ * @generated
+ * @ordered
+ */
+ protected static final String BUNDLE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getBundle() <em>Bundle</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getBundle()
+ * @generated
+ * @ordered
+ */
+ protected String bundle = BUNDLE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getPreferences() <em>Preferences</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getPreferences()
+ * @generated
+ * @ordered
+ */
+ protected static final Preferences PREFERENCES_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getPreferences() <em>Preferences</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getPreferences()
+ * @generated
+ * @ordered
+ */
+ protected Preferences preferences = PREFERENCES_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getEquinoxPath() <em>Equinox Path</em>}
+ * ' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEquinoxPath()
+ * @generated
+ * @ordered
+ */
+ protected static final String EQUINOX_PATH_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getEquinoxPath() <em>Equinox Path</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEquinoxPath()
+ * @generated
+ * @ordered
+ */
+ protected String equinoxPath = EQUINOX_PATH_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected FieldEditorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PreferencesPackage.Literals.FIELD_EDITOR;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getLabel() {
+ return label;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setLabel(String newLabel) {
+ String oldLabel = label;
+ label = newLabel;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.FIELD_EDITOR__LABEL, oldLabel, label));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getPreferenceName() {
+ return preferenceName;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setPreferenceName(String newPreferenceName) {
+ String oldPreferenceName = preferenceName;
+ preferenceName = newPreferenceName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.FIELD_EDITOR__PREFERENCE_NAME,
+ oldPreferenceName, preferenceName));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setDefaultValue(String newDefaultValue) {
+ String oldDefaultValue = defaultValue;
+ defaultValue = newDefaultValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.FIELD_EDITOR__DEFAULT_VALUE,
+ oldDefaultValue, defaultValue));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public T getDefaultValueTyped() {
+ return defaultValueTyped;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setDefaultValueTyped(T newDefaultValueTyped) {
+ T oldDefaultValueTyped = defaultValueTyped;
+ defaultValueTyped = newDefaultValueTyped;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.FIELD_EDITOR__DEFAULT_VALUE_TYPED,
+ oldDefaultValueTyped, defaultValueTyped));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getBundle() {
+ return bundle;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setBundle(String newBundle) {
+ String oldBundle = bundle;
+ bundle = newBundle;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.FIELD_EDITOR__BUNDLE, oldBundle, bundle));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Preferences getPreferences() {
+ return preferences;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setPreferences(Preferences newPreferences) {
+ Preferences oldPreferences = preferences;
+ preferences = newPreferences;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.FIELD_EDITOR__PREFERENCES,
+ oldPreferences, preferences));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getEquinoxPath() {
+ return equinoxPath;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setEquinoxPath(String newEquinoxPath) {
+ String oldEquinoxPath = equinoxPath;
+ equinoxPath = newEquinoxPath;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.FIELD_EDITOR__EQUINOX_PATH,
+ oldEquinoxPath, equinoxPath));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PreferencesPackage.FIELD_EDITOR__LABEL:
+ return getLabel();
+ case PreferencesPackage.FIELD_EDITOR__PREFERENCE_NAME:
+ return getPreferenceName();
+ case PreferencesPackage.FIELD_EDITOR__DEFAULT_VALUE:
+ return getDefaultValue();
+ case PreferencesPackage.FIELD_EDITOR__DEFAULT_VALUE_TYPED:
+ return getDefaultValueTyped();
+ case PreferencesPackage.FIELD_EDITOR__BUNDLE:
+ return getBundle();
+ case PreferencesPackage.FIELD_EDITOR__PREFERENCES:
+ return getPreferences();
+ case PreferencesPackage.FIELD_EDITOR__EQUINOX_PATH:
+ return getEquinoxPath();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PreferencesPackage.FIELD_EDITOR__LABEL:
+ setLabel((String) newValue);
+ return;
+ case PreferencesPackage.FIELD_EDITOR__PREFERENCE_NAME:
+ setPreferenceName((String) newValue);
+ return;
+ case PreferencesPackage.FIELD_EDITOR__DEFAULT_VALUE:
+ setDefaultValue((String) newValue);
+ return;
+ case PreferencesPackage.FIELD_EDITOR__DEFAULT_VALUE_TYPED:
+ setDefaultValueTyped((T) newValue);
+ return;
+ case PreferencesPackage.FIELD_EDITOR__BUNDLE:
+ setBundle((String) newValue);
+ return;
+ case PreferencesPackage.FIELD_EDITOR__PREFERENCES:
+ setPreferences((Preferences) newValue);
+ return;
+ case PreferencesPackage.FIELD_EDITOR__EQUINOX_PATH:
+ setEquinoxPath((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.FIELD_EDITOR__LABEL:
+ setLabel(LABEL_EDEFAULT);
+ return;
+ case PreferencesPackage.FIELD_EDITOR__PREFERENCE_NAME:
+ setPreferenceName(PREFERENCE_NAME_EDEFAULT);
+ return;
+ case PreferencesPackage.FIELD_EDITOR__DEFAULT_VALUE:
+ setDefaultValue(DEFAULT_VALUE_EDEFAULT);
+ return;
+ case PreferencesPackage.FIELD_EDITOR__DEFAULT_VALUE_TYPED:
+ setDefaultValueTyped((T) null);
+ return;
+ case PreferencesPackage.FIELD_EDITOR__BUNDLE:
+ setBundle(BUNDLE_EDEFAULT);
+ return;
+ case PreferencesPackage.FIELD_EDITOR__PREFERENCES:
+ setPreferences(PREFERENCES_EDEFAULT);
+ return;
+ case PreferencesPackage.FIELD_EDITOR__EQUINOX_PATH:
+ setEquinoxPath(EQUINOX_PATH_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.FIELD_EDITOR__LABEL:
+ return LABEL_EDEFAULT == null ? label != null : !LABEL_EDEFAULT
+ .equals(label);
+ case PreferencesPackage.FIELD_EDITOR__PREFERENCE_NAME:
+ return PREFERENCE_NAME_EDEFAULT == null ? preferenceName != null
+ : !PREFERENCE_NAME_EDEFAULT.equals(preferenceName);
+ case PreferencesPackage.FIELD_EDITOR__DEFAULT_VALUE:
+ return DEFAULT_VALUE_EDEFAULT == null ? defaultValue != null
+ : !DEFAULT_VALUE_EDEFAULT.equals(defaultValue);
+ case PreferencesPackage.FIELD_EDITOR__DEFAULT_VALUE_TYPED:
+ return defaultValueTyped != null;
+ case PreferencesPackage.FIELD_EDITOR__BUNDLE:
+ return BUNDLE_EDEFAULT == null ? bundle != null : !BUNDLE_EDEFAULT
+ .equals(bundle);
+ case PreferencesPackage.FIELD_EDITOR__PREFERENCES:
+ return PREFERENCES_EDEFAULT == null ? preferences != null
+ : !PREFERENCES_EDEFAULT.equals(preferences);
+ case PreferencesPackage.FIELD_EDITOR__EQUINOX_PATH:
+ return EQUINOX_PATH_EDEFAULT == null ? equinoxPath != null
+ : !EQUINOX_PATH_EDEFAULT.equals(equinoxPath);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (label: ");
+ result.append(label);
+ result.append(", preferenceName: ");
+ result.append(preferenceName);
+ result.append(", defaultValue: ");
+ result.append(defaultValue);
+ result.append(", defaultValueTyped: ");
+ result.append(defaultValueTyped);
+ result.append(", bundle: ");
+ result.append(bundle);
+ result.append(", preferences: ");
+ result.append(preferences);
+ result.append(", equinoxPath: ");
+ result.append(equinoxPath);
+ result.append(')');
+ return result.toString();
+ }
+
+} // FieldEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/FileFieldEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/FileFieldEditorImpl.java
new file mode 100644
index 0000000..4819ad3
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/FileFieldEditorImpl.java
@@ -0,0 +1,293 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FileFieldEditor;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>File Field Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FileFieldEditorImpl#getContributionURI
+ * <em>Contribution URI</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FileFieldEditorImpl#getObject
+ * <em>Object</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FileFieldEditorImpl extends FieldEditorImpl<String> implements
+ FileFieldEditor {
+ /**
+ * The default value of the '{@link #getContributionURI()
+ * <em>Contribution URI</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getContributionURI()
+ * @generated
+ * @ordered
+ */
+ protected static final String CONTRIBUTION_URI_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getContributionURI()
+ * <em>Contribution URI</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getContributionURI()
+ * @generated
+ * @ordered
+ */
+ protected String contributionURI = CONTRIBUTION_URI_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getObject() <em>Object</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getObject()
+ * @generated
+ * @ordered
+ */
+ protected static final Object OBJECT_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getObject() <em>Object</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getObject()
+ * @generated
+ * @ordered
+ */
+ protected Object object = OBJECT_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected FileFieldEditorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PreferencesPackage.Literals.FILE_FIELD_EDITOR;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc --> This is specialized for the
+ * more specific type known in this context.
+ *
+ * @generated
+ */
+ @Override
+ public void setDefaultValueTyped(String newDefaultValueTyped) {
+ super.setDefaultValueTyped(newDefaultValueTyped);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getContributionURI() {
+ return contributionURI;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setContributionURI(String newContributionURI) {
+ String oldContributionURI = contributionURI;
+ contributionURI = newContributionURI;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.FILE_FIELD_EDITOR__CONTRIBUTION_URI,
+ oldContributionURI, contributionURI));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Object getObject() {
+ return object;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setObject(Object newObject) {
+ Object oldObject = object;
+ object = newObject;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.FILE_FIELD_EDITOR__OBJECT, oldObject,
+ object));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PreferencesPackage.FILE_FIELD_EDITOR__CONTRIBUTION_URI:
+ return getContributionURI();
+ case PreferencesPackage.FILE_FIELD_EDITOR__OBJECT:
+ return getObject();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PreferencesPackage.FILE_FIELD_EDITOR__CONTRIBUTION_URI:
+ setContributionURI((String) newValue);
+ return;
+ case PreferencesPackage.FILE_FIELD_EDITOR__OBJECT:
+ setObject(newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.FILE_FIELD_EDITOR__CONTRIBUTION_URI:
+ setContributionURI(CONTRIBUTION_URI_EDEFAULT);
+ return;
+ case PreferencesPackage.FILE_FIELD_EDITOR__OBJECT:
+ setObject(OBJECT_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.FILE_FIELD_EDITOR__CONTRIBUTION_URI:
+ return CONTRIBUTION_URI_EDEFAULT == null ? contributionURI != null
+ : !CONTRIBUTION_URI_EDEFAULT.equals(contributionURI);
+ case PreferencesPackage.FILE_FIELD_EDITOR__OBJECT:
+ return OBJECT_EDEFAULT == null ? object != null : !OBJECT_EDEFAULT
+ .equals(object);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == MContribution.class) {
+ switch (derivedFeatureID) {
+ case PreferencesPackage.FILE_FIELD_EDITOR__CONTRIBUTION_URI:
+ return ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI;
+ case PreferencesPackage.FILE_FIELD_EDITOR__OBJECT:
+ return ApplicationPackageImpl.CONTRIBUTION__OBJECT;
+ default:
+ return -1;
+ }
+ }
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+ if (baseClass == MContribution.class) {
+ switch (baseFeatureID) {
+ case ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI:
+ return PreferencesPackage.FILE_FIELD_EDITOR__CONTRIBUTION_URI;
+ case ApplicationPackageImpl.CONTRIBUTION__OBJECT:
+ return PreferencesPackage.FILE_FIELD_EDITOR__OBJECT;
+ default:
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (contributionURI: ");
+ result.append(contributionURI);
+ result.append(", object: ");
+ result.append(object);
+ result.append(')');
+ return result.toString();
+ }
+
+} // FileFieldEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/IntegerFieldEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/IntegerFieldEditorImpl.java
new file mode 100644
index 0000000..75c3628
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/IntegerFieldEditorImpl.java
@@ -0,0 +1,251 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Integer Field Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.IntegerFieldEditorImpl#getMinValidValue
+ * <em>Min Valid Value</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.IntegerFieldEditorImpl#getMaxValidValue
+ * <em>Max Valid Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class IntegerFieldEditorImpl extends FieldEditorImpl<Integer> implements
+ IntegerFieldEditor {
+ /**
+ * The default value of the '{@link #getMinValidValue()
+ * <em>Min Valid Value</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getMinValidValue()
+ * @generated
+ * @ordered
+ */
+ protected static final Integer MIN_VALID_VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getMinValidValue()
+ * <em>Min Valid Value</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getMinValidValue()
+ * @generated
+ * @ordered
+ */
+ protected Integer minValidValue = MIN_VALID_VALUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getMaxValidValue()
+ * <em>Max Valid Value</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getMaxValidValue()
+ * @generated
+ * @ordered
+ */
+ protected static final Integer MAX_VALID_VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getMaxValidValue()
+ * <em>Max Valid Value</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getMaxValidValue()
+ * @generated
+ * @ordered
+ */
+ protected Integer maxValidValue = MAX_VALID_VALUE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected IntegerFieldEditorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PreferencesPackage.Literals.INTEGER_FIELD_EDITOR;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc --> This is specialized for the
+ * more specific type known in this context.
+ *
+ * @generated
+ */
+ @Override
+ public void setDefaultValueTyped(Integer newDefaultValueTyped) {
+ super.setDefaultValueTyped(newDefaultValueTyped);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Integer getMinValidValue() {
+ return minValidValue;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setMinValidValue(Integer newMinValidValue) {
+ Integer oldMinValidValue = minValidValue;
+ minValidValue = newMinValidValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.INTEGER_FIELD_EDITOR__MIN_VALID_VALUE,
+ oldMinValidValue, minValidValue));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Integer getMaxValidValue() {
+ return maxValidValue;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setMaxValidValue(Integer newMaxValidValue) {
+ Integer oldMaxValidValue = maxValidValue;
+ maxValidValue = newMaxValidValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.INTEGER_FIELD_EDITOR__MAX_VALID_VALUE,
+ oldMaxValidValue, maxValidValue));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PreferencesPackage.INTEGER_FIELD_EDITOR__MIN_VALID_VALUE:
+ return getMinValidValue();
+ case PreferencesPackage.INTEGER_FIELD_EDITOR__MAX_VALID_VALUE:
+ return getMaxValidValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PreferencesPackage.INTEGER_FIELD_EDITOR__MIN_VALID_VALUE:
+ setMinValidValue((Integer) newValue);
+ return;
+ case PreferencesPackage.INTEGER_FIELD_EDITOR__MAX_VALID_VALUE:
+ setMaxValidValue((Integer) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.INTEGER_FIELD_EDITOR__MIN_VALID_VALUE:
+ setMinValidValue(MIN_VALID_VALUE_EDEFAULT);
+ return;
+ case PreferencesPackage.INTEGER_FIELD_EDITOR__MAX_VALID_VALUE:
+ setMaxValidValue(MAX_VALID_VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.INTEGER_FIELD_EDITOR__MIN_VALID_VALUE:
+ return MIN_VALID_VALUE_EDEFAULT == null ? minValidValue != null
+ : !MIN_VALID_VALUE_EDEFAULT.equals(minValidValue);
+ case PreferencesPackage.INTEGER_FIELD_EDITOR__MAX_VALID_VALUE:
+ return MAX_VALID_VALUE_EDEFAULT == null ? maxValidValue != null
+ : !MAX_VALID_VALUE_EDEFAULT.equals(maxValidValue);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (minValidValue: ");
+ result.append(minValidValue);
+ result.append(", maxValidValue: ");
+ result.append(maxValidValue);
+ result.append(')');
+ return result.toString();
+ }
+
+} // IntegerFieldEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ListEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ListEditorImpl.java
new file mode 100644
index 0000000..def2517
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ListEditorImpl.java
@@ -0,0 +1,429 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>List Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListEditorImpl#getContributionURI
+ * <em>Contribution URI</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListEditorImpl#getObject
+ * <em>Object</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListEditorImpl#getListCrud
+ * <em>List Crud</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListEditorImpl#getListFold
+ * <em>List Fold</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ListEditorImpl extends FieldEditorImpl<String> implements
+ ListEditor {
+ /**
+ * The default value of the '{@link #getContributionURI()
+ * <em>Contribution URI</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getContributionURI()
+ * @generated
+ * @ordered
+ */
+ protected static final String CONTRIBUTION_URI_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getContributionURI()
+ * <em>Contribution URI</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getContributionURI()
+ * @generated
+ * @ordered
+ */
+ protected String contributionURI = CONTRIBUTION_URI_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getObject() <em>Object</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getObject()
+ * @generated
+ * @ordered
+ */
+ protected static final Object OBJECT_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getObject() <em>Object</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getObject()
+ * @generated
+ * @ordered
+ */
+ protected Object object = OBJECT_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getListCrud() <em>List Crud</em>}'
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getListCrud()
+ * @generated
+ * @ordered
+ */
+ protected ListCrud listCrud;
+
+ /**
+ * The cached value of the '{@link #getListFold() <em>List Fold</em>}'
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getListFold()
+ * @generated
+ * @ordered
+ */
+ protected ListFold listFold;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ListEditorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PreferencesPackage.Literals.LIST_EDITOR;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc --> This is specialized for the
+ * more specific type known in this context.
+ *
+ * @generated
+ */
+ @Override
+ public void setDefaultValueTyped(String newDefaultValueTyped) {
+ super.setDefaultValueTyped(newDefaultValueTyped);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getContributionURI() {
+ return contributionURI;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setContributionURI(String newContributionURI) {
+ String oldContributionURI = contributionURI;
+ contributionURI = newContributionURI;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.LIST_EDITOR__CONTRIBUTION_URI,
+ oldContributionURI, contributionURI));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Object getObject() {
+ return object;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setObject(Object newObject) {
+ Object oldObject = object;
+ object = newObject;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.LIST_EDITOR__OBJECT, oldObject, object));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ListCrud getListCrud() {
+ if (listCrud != null && listCrud.eIsProxy()) {
+ InternalEObject oldListCrud = (InternalEObject) listCrud;
+ listCrud = (ListCrud) eResolveProxy(oldListCrud);
+ if (listCrud != oldListCrud) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+ PreferencesPackage.LIST_EDITOR__LIST_CRUD,
+ oldListCrud, listCrud));
+ }
+ }
+ return listCrud;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ListCrud basicGetListCrud() {
+ return listCrud;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setListCrud(ListCrud newListCrud) {
+ ListCrud oldListCrud = listCrud;
+ listCrud = newListCrud;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.LIST_EDITOR__LIST_CRUD, oldListCrud,
+ listCrud));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ListFold getListFold() {
+ if (listFold != null && listFold.eIsProxy()) {
+ InternalEObject oldListFold = (InternalEObject) listFold;
+ listFold = (ListFold) eResolveProxy(oldListFold);
+ if (listFold != oldListFold) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+ PreferencesPackage.LIST_EDITOR__LIST_FOLD,
+ oldListFold, listFold));
+ }
+ }
+ return listFold;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ListFold basicGetListFold() {
+ return listFold;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setListFold(ListFold newListFold) {
+ ListFold oldListFold = listFold;
+ listFold = newListFold;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.LIST_EDITOR__LIST_FOLD, oldListFold,
+ listFold));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PreferencesPackage.LIST_EDITOR__CONTRIBUTION_URI:
+ return getContributionURI();
+ case PreferencesPackage.LIST_EDITOR__OBJECT:
+ return getObject();
+ case PreferencesPackage.LIST_EDITOR__LIST_CRUD:
+ if (resolve)
+ return getListCrud();
+ return basicGetListCrud();
+ case PreferencesPackage.LIST_EDITOR__LIST_FOLD:
+ if (resolve)
+ return getListFold();
+ return basicGetListFold();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PreferencesPackage.LIST_EDITOR__CONTRIBUTION_URI:
+ setContributionURI((String) newValue);
+ return;
+ case PreferencesPackage.LIST_EDITOR__OBJECT:
+ setObject(newValue);
+ return;
+ case PreferencesPackage.LIST_EDITOR__LIST_CRUD:
+ setListCrud((ListCrud) newValue);
+ return;
+ case PreferencesPackage.LIST_EDITOR__LIST_FOLD:
+ setListFold((ListFold) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.LIST_EDITOR__CONTRIBUTION_URI:
+ setContributionURI(CONTRIBUTION_URI_EDEFAULT);
+ return;
+ case PreferencesPackage.LIST_EDITOR__OBJECT:
+ setObject(OBJECT_EDEFAULT);
+ return;
+ case PreferencesPackage.LIST_EDITOR__LIST_CRUD:
+ setListCrud((ListCrud) null);
+ return;
+ case PreferencesPackage.LIST_EDITOR__LIST_FOLD:
+ setListFold((ListFold) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.LIST_EDITOR__CONTRIBUTION_URI:
+ return CONTRIBUTION_URI_EDEFAULT == null ? contributionURI != null
+ : !CONTRIBUTION_URI_EDEFAULT.equals(contributionURI);
+ case PreferencesPackage.LIST_EDITOR__OBJECT:
+ return OBJECT_EDEFAULT == null ? object != null : !OBJECT_EDEFAULT
+ .equals(object);
+ case PreferencesPackage.LIST_EDITOR__LIST_CRUD:
+ return listCrud != null;
+ case PreferencesPackage.LIST_EDITOR__LIST_FOLD:
+ return listFold != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == MContribution.class) {
+ switch (derivedFeatureID) {
+ case PreferencesPackage.LIST_EDITOR__CONTRIBUTION_URI:
+ return ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI;
+ case PreferencesPackage.LIST_EDITOR__OBJECT:
+ return ApplicationPackageImpl.CONTRIBUTION__OBJECT;
+ default:
+ return -1;
+ }
+ }
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+ if (baseClass == MContribution.class) {
+ switch (baseFeatureID) {
+ case ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI:
+ return PreferencesPackage.LIST_EDITOR__CONTRIBUTION_URI;
+ case ApplicationPackageImpl.CONTRIBUTION__OBJECT:
+ return PreferencesPackage.LIST_EDITOR__OBJECT;
+ default:
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (contributionURI: ");
+ result.append(contributionURI);
+ result.append(", object: ");
+ result.append(object);
+ result.append(')');
+ return result.toString();
+ }
+
+} // ListEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ListFieldEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ListFieldEditorImpl.java
new file mode 100644
index 0000000..d6e3029
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ListFieldEditorImpl.java
@@ -0,0 +1,338 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>List Field Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFieldEditorImpl#getContributionURI
+ * <em>Contribution URI</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFieldEditorImpl#getObject
+ * <em>Object</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFieldEditorImpl#getEntries
+ * <em>Entries</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class ListFieldEditorImpl extends FieldEditorImpl<String>
+ implements ListFieldEditor {
+ /**
+ * The default value of the '{@link #getContributionURI()
+ * <em>Contribution URI</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getContributionURI()
+ * @generated
+ * @ordered
+ */
+ protected static final String CONTRIBUTION_URI_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getContributionURI()
+ * <em>Contribution URI</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getContributionURI()
+ * @generated
+ * @ordered
+ */
+ protected String contributionURI = CONTRIBUTION_URI_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getObject() <em>Object</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getObject()
+ * @generated
+ * @ordered
+ */
+ protected static final Object OBJECT_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getObject() <em>Object</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getObject()
+ * @generated
+ * @ordered
+ */
+ protected Object object = OBJECT_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getEntries() <em>Entries</em>}'
+ * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEntries()
+ * @generated
+ * @ordered
+ */
+ protected EList<Entry> entries;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ListFieldEditorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PreferencesPackage.Literals.LIST_FIELD_EDITOR;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc --> This is specialized for the
+ * more specific type known in this context.
+ *
+ * @generated
+ */
+ @Override
+ public void setDefaultValueTyped(String newDefaultValueTyped) {
+ super.setDefaultValueTyped(newDefaultValueTyped);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getContributionURI() {
+ return contributionURI;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setContributionURI(String newContributionURI) {
+ String oldContributionURI = contributionURI;
+ contributionURI = newContributionURI;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.LIST_FIELD_EDITOR__CONTRIBUTION_URI,
+ oldContributionURI, contributionURI));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Object getObject() {
+ return object;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setObject(Object newObject) {
+ Object oldObject = object;
+ object = newObject;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.LIST_FIELD_EDITOR__OBJECT, oldObject,
+ object));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<Entry> getEntries() {
+ if (entries == null) {
+ entries = new EObjectResolvingEList<Entry>(Entry.class, this,
+ PreferencesPackage.LIST_FIELD_EDITOR__ENTRIES);
+ }
+ return entries;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PreferencesPackage.LIST_FIELD_EDITOR__CONTRIBUTION_URI:
+ return getContributionURI();
+ case PreferencesPackage.LIST_FIELD_EDITOR__OBJECT:
+ return getObject();
+ case PreferencesPackage.LIST_FIELD_EDITOR__ENTRIES:
+ return getEntries();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PreferencesPackage.LIST_FIELD_EDITOR__CONTRIBUTION_URI:
+ setContributionURI((String) newValue);
+ return;
+ case PreferencesPackage.LIST_FIELD_EDITOR__OBJECT:
+ setObject(newValue);
+ return;
+ case PreferencesPackage.LIST_FIELD_EDITOR__ENTRIES:
+ getEntries().clear();
+ getEntries().addAll((Collection<? extends Entry>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.LIST_FIELD_EDITOR__CONTRIBUTION_URI:
+ setContributionURI(CONTRIBUTION_URI_EDEFAULT);
+ return;
+ case PreferencesPackage.LIST_FIELD_EDITOR__OBJECT:
+ setObject(OBJECT_EDEFAULT);
+ return;
+ case PreferencesPackage.LIST_FIELD_EDITOR__ENTRIES:
+ getEntries().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.LIST_FIELD_EDITOR__CONTRIBUTION_URI:
+ return CONTRIBUTION_URI_EDEFAULT == null ? contributionURI != null
+ : !CONTRIBUTION_URI_EDEFAULT.equals(contributionURI);
+ case PreferencesPackage.LIST_FIELD_EDITOR__OBJECT:
+ return OBJECT_EDEFAULT == null ? object != null : !OBJECT_EDEFAULT
+ .equals(object);
+ case PreferencesPackage.LIST_FIELD_EDITOR__ENTRIES:
+ return entries != null && !entries.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == MContribution.class) {
+ switch (derivedFeatureID) {
+ case PreferencesPackage.LIST_FIELD_EDITOR__CONTRIBUTION_URI:
+ return ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI;
+ case PreferencesPackage.LIST_FIELD_EDITOR__OBJECT:
+ return ApplicationPackageImpl.CONTRIBUTION__OBJECT;
+ default:
+ return -1;
+ }
+ }
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+ if (baseClass == MContribution.class) {
+ switch (baseFeatureID) {
+ case ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI:
+ return PreferencesPackage.LIST_FIELD_EDITOR__CONTRIBUTION_URI;
+ case ApplicationPackageImpl.CONTRIBUTION__OBJECT:
+ return PreferencesPackage.LIST_FIELD_EDITOR__OBJECT;
+ default:
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (contributionURI: ");
+ result.append(contributionURI);
+ result.append(", object: ");
+ result.append(object);
+ result.append(')');
+ return result.toString();
+ }
+
+} // ListFieldEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ListFoldImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ListFoldImpl.java
new file mode 100644
index 0000000..2c45a1b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ListFoldImpl.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>List Fold</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class ListFoldImpl extends MinimalEObjectImpl.Container implements
+ ListFold {
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ListFoldImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PreferencesPackage.Literals.LIST_FOLD;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void apply(String value, StringBuffer prev) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+} // ListFoldImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesCategoryImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesCategoryImpl.java
new file mode 100644
index 0000000..50c0363
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesCategoryImpl.java
@@ -0,0 +1,500 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationElementImpl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Category</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesCategoryImpl#getName
+ * <em>Name</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesCategoryImpl#getChildCategories
+ * <em>Child Categories</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesCategoryImpl#getParentCategory
+ * <em>Parent Category</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesCategoryImpl#getPage
+ * <em>Page</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesCategoryImpl#getId
+ * <em>Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PreferencesCategoryImpl extends ApplicationElementImpl implements
+ PreferencesCategory {
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = "No Name";
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getChildCategories()
+ * <em>Child Categories</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getChildCategories()
+ * @generated
+ * @ordered
+ */
+ protected EList<PreferencesCategory> childCategories;
+
+ /**
+ * The cached value of the '{@link #getPage() <em>Page</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getPage()
+ * @generated
+ * @ordered
+ */
+ protected PreferencesPage page;
+
+ /**
+ * The default value of the '{@link #getId() <em>Id</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getId()
+ * @generated
+ * @ordered
+ */
+ protected static final String ID_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getId() <em>Id</em>}' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getId()
+ * @generated
+ * @ordered
+ */
+ protected String id = ID_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected PreferencesCategoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PreferencesPackage.Literals.PREFERENCES_CATEGORY;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.PREFERENCES_CATEGORY__NAME, oldName,
+ name));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EList<PreferencesCategory> getChildCategories() {
+ if (childCategories == null) {
+ childCategories = new EObjectContainmentWithInverseEList<PreferencesCategory>(
+ PreferencesCategory.class, this,
+ PreferencesPackage.PREFERENCES_CATEGORY__CHILD_CATEGORIES,
+ PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY);
+ }
+ return childCategories;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public PreferencesCategory getParentCategory() {
+ if (eContainerFeatureID() != PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY)
+ return null;
+ return (PreferencesCategory) eInternalContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetParentCategory(
+ PreferencesCategory newParentCategory, NotificationChain msgs) {
+ msgs = eBasicSetContainer((InternalEObject) newParentCategory,
+ PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY, msgs);
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setParentCategory(PreferencesCategory newParentCategory) {
+ if (newParentCategory != eInternalContainer()
+ || (eContainerFeatureID() != PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY && newParentCategory != null)) {
+ if (EcoreUtil.isAncestor(this, newParentCategory))
+ throw new IllegalArgumentException(
+ "Recursive containment not allowed for " + toString());
+ NotificationChain msgs = null;
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ if (newParentCategory != null)
+ msgs = ((InternalEObject) newParentCategory)
+ .eInverseAdd(
+ this,
+ PreferencesPackage.PREFERENCES_CATEGORY__CHILD_CATEGORIES,
+ PreferencesCategory.class, msgs);
+ msgs = basicSetParentCategory(newParentCategory, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ } else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY,
+ newParentCategory, newParentCategory));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public PreferencesPage getPage() {
+ return page;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetPage(PreferencesPage newPage,
+ NotificationChain msgs) {
+ PreferencesPage oldPage = page;
+ page = newPage;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this,
+ Notification.SET,
+ PreferencesPackage.PREFERENCES_CATEGORY__PAGE, oldPage,
+ newPage);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setPage(PreferencesPage newPage) {
+ if (newPage != page) {
+ NotificationChain msgs = null;
+ if (page != null)
+ msgs = ((InternalEObject) page).eInverseRemove(this,
+ PreferencesPackage.PREFERENCES_PAGE__CATEGORY,
+ PreferencesPage.class, msgs);
+ if (newPage != null)
+ msgs = ((InternalEObject) newPage).eInverseAdd(this,
+ PreferencesPackage.PREFERENCES_PAGE__CATEGORY,
+ PreferencesPage.class, msgs);
+ msgs = basicSetPage(newPage, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ } else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.PREFERENCES_CATEGORY__PAGE, newPage,
+ newPage));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setId(String newId) {
+ String oldId = id;
+ id = newId;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.PREFERENCES_CATEGORY__ID, oldId, id));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd,
+ int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PreferencesPackage.PREFERENCES_CATEGORY__CHILD_CATEGORIES:
+ return ((InternalEList<InternalEObject>) (InternalEList<?>) getChildCategories())
+ .basicAdd(otherEnd, msgs);
+ case PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY:
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return basicSetParentCategory((PreferencesCategory) otherEnd, msgs);
+ case PreferencesPackage.PREFERENCES_CATEGORY__PAGE:
+ if (page != null)
+ msgs = ((InternalEObject) page)
+ .eInverseRemove(
+ this,
+ EOPPOSITE_FEATURE_BASE
+ - PreferencesPackage.PREFERENCES_CATEGORY__PAGE,
+ null, msgs);
+ return basicSetPage((PreferencesPage) otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd,
+ int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PreferencesPackage.PREFERENCES_CATEGORY__CHILD_CATEGORIES:
+ return ((InternalEList<?>) getChildCategories()).basicRemove(
+ otherEnd, msgs);
+ case PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY:
+ return basicSetParentCategory(null, msgs);
+ case PreferencesPackage.PREFERENCES_CATEGORY__PAGE:
+ return basicSetPage(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(
+ NotificationChain msgs) {
+ switch (eContainerFeatureID()) {
+ case PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY:
+ return eInternalContainer().eInverseRemove(this,
+ PreferencesPackage.PREFERENCES_CATEGORY__CHILD_CATEGORIES,
+ PreferencesCategory.class, msgs);
+ }
+ return super.eBasicRemoveFromContainerFeature(msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PreferencesPackage.PREFERENCES_CATEGORY__NAME:
+ return getName();
+ case PreferencesPackage.PREFERENCES_CATEGORY__CHILD_CATEGORIES:
+ return getChildCategories();
+ case PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY:
+ return getParentCategory();
+ case PreferencesPackage.PREFERENCES_CATEGORY__PAGE:
+ return getPage();
+ case PreferencesPackage.PREFERENCES_CATEGORY__ID:
+ return getId();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PreferencesPackage.PREFERENCES_CATEGORY__NAME:
+ setName((String) newValue);
+ return;
+ case PreferencesPackage.PREFERENCES_CATEGORY__CHILD_CATEGORIES:
+ getChildCategories().clear();
+ getChildCategories().addAll(
+ (Collection<? extends PreferencesCategory>) newValue);
+ return;
+ case PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY:
+ setParentCategory((PreferencesCategory) newValue);
+ return;
+ case PreferencesPackage.PREFERENCES_CATEGORY__PAGE:
+ setPage((PreferencesPage) newValue);
+ return;
+ case PreferencesPackage.PREFERENCES_CATEGORY__ID:
+ setId((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.PREFERENCES_CATEGORY__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case PreferencesPackage.PREFERENCES_CATEGORY__CHILD_CATEGORIES:
+ getChildCategories().clear();
+ return;
+ case PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY:
+ setParentCategory((PreferencesCategory) null);
+ return;
+ case PreferencesPackage.PREFERENCES_CATEGORY__PAGE:
+ setPage((PreferencesPage) null);
+ return;
+ case PreferencesPackage.PREFERENCES_CATEGORY__ID:
+ setId(ID_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.PREFERENCES_CATEGORY__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT
+ .equals(name);
+ case PreferencesPackage.PREFERENCES_CATEGORY__CHILD_CATEGORIES:
+ return childCategories != null && !childCategories.isEmpty();
+ case PreferencesPackage.PREFERENCES_CATEGORY__PARENT_CATEGORY:
+ return getParentCategory() != null;
+ case PreferencesPackage.PREFERENCES_CATEGORY__PAGE:
+ return page != null;
+ case PreferencesPackage.PREFERENCES_CATEGORY__ID:
+ return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", id: ");
+ result.append(id);
+ result.append(')');
+ return result.toString();
+ }
+
+} // PreferencesCategoryImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesFactoryImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesFactoryImpl.java
new file mode 100644
index 0000000..d8909a2
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesFactoryImpl.java
@@ -0,0 +1,373 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.*;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesFactory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+import org.osgi.service.prefs.Preferences;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Factory</b>. <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+public class PreferencesFactoryImpl extends EFactoryImpl implements
+ PreferencesFactory {
+ /**
+ * Creates the default factory implementation. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ public static PreferencesFactory init() {
+ try {
+ PreferencesFactory thePreferencesFactory = (PreferencesFactory) EPackage.Registry.INSTANCE
+ .getEFactory(PreferencesPackage.eNS_URI);
+ if (thePreferencesFactory != null) {
+ return thePreferencesFactory;
+ }
+ } catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new PreferencesFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ public PreferencesFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case PreferencesPackage.PREFERENCES_CATEGORY:
+ return createPreferencesCategory();
+ case PreferencesPackage.PREFERENCES_PAGE:
+ return createPreferencesPage();
+ case PreferencesPackage.FIELD_EDITOR:
+ return createFieldEditor();
+ case PreferencesPackage.BOOLEAN_FIELD_EDITOR:
+ return createBooleanFieldEditor();
+ case PreferencesPackage.ENTRY:
+ return createEntry();
+ case PreferencesPackage.COMBO_FIELD_EDITOR:
+ return createComboFieldEditor();
+ case PreferencesPackage.LIST_EDITOR:
+ return createListEditor();
+ case PreferencesPackage.RADIO_GROUP_FIELD_EDITOR:
+ return createRadioGroupFieldEditor();
+ case PreferencesPackage.SCALE_FIELD_EDITOR:
+ return createScaleFieldEditor();
+ case PreferencesPackage.STRING_FIELD_EDITOR:
+ return createStringFieldEditor();
+ case PreferencesPackage.INTEGER_FIELD_EDITOR:
+ return createIntegerFieldEditor();
+ case PreferencesPackage.FILE_FIELD_EDITOR:
+ return createFileFieldEditor();
+ case PreferencesPackage.DIRECTORY_FIELD_EDITOR:
+ return createDirectoryFieldEditor();
+ case PreferencesPackage.LIST_FOLD:
+ return createListFold();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName()
+ + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue) {
+ switch (eDataType.getClassifierID()) {
+ case PreferencesPackage.BOOLEAN_FIELD_STYLE:
+ return createBooleanFieldStyleFromString(eDataType, initialValue);
+ case PreferencesPackage.STRING_BUFFER:
+ return createStringBufferFromString(eDataType, initialValue);
+ case PreferencesPackage.PREFERENCES:
+ return createPreferencesFromString(eDataType, initialValue);
+ default:
+ throw new IllegalArgumentException("The datatype '"
+ + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue) {
+ switch (eDataType.getClassifierID()) {
+ case PreferencesPackage.BOOLEAN_FIELD_STYLE:
+ return convertBooleanFieldStyleToString(eDataType, instanceValue);
+ case PreferencesPackage.STRING_BUFFER:
+ return convertStringBufferToString(eDataType, instanceValue);
+ case PreferencesPackage.PREFERENCES:
+ return convertPreferencesToString(eDataType, instanceValue);
+ default:
+ throw new IllegalArgumentException("The datatype '"
+ + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public PreferencesCategory createPreferencesCategory() {
+ PreferencesCategoryImpl preferencesCategory = new PreferencesCategoryImpl();
+ return preferencesCategory;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public PreferencesPage createPreferencesPage() {
+ PreferencesPageImpl preferencesPage = new PreferencesPageImpl();
+ return preferencesPage;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public <T> FieldEditor<T> createFieldEditor() {
+ FieldEditorImpl<T> fieldEditor = new FieldEditorImpl<T>();
+ return fieldEditor;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public BooleanFieldEditor createBooleanFieldEditor() {
+ BooleanFieldEditorImpl booleanFieldEditor = new BooleanFieldEditorImpl();
+ return booleanFieldEditor;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Entry createEntry() {
+ EntryImpl entry = new EntryImpl();
+ return entry;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ComboFieldEditor createComboFieldEditor() {
+ ComboFieldEditorImpl comboFieldEditor = new ComboFieldEditorImpl();
+ return comboFieldEditor;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ListEditor createListEditor() {
+ ListEditorImpl listEditor = new ListEditorImpl();
+ return listEditor;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public RadioGroupFieldEditor createRadioGroupFieldEditor() {
+ RadioGroupFieldEditorImpl radioGroupFieldEditor = new RadioGroupFieldEditorImpl();
+ return radioGroupFieldEditor;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ScaleFieldEditor createScaleFieldEditor() {
+ ScaleFieldEditorImpl scaleFieldEditor = new ScaleFieldEditorImpl();
+ return scaleFieldEditor;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public StringFieldEditor createStringFieldEditor() {
+ StringFieldEditorImpl stringFieldEditor = new StringFieldEditorImpl();
+ return stringFieldEditor;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public IntegerFieldEditor createIntegerFieldEditor() {
+ IntegerFieldEditorImpl integerFieldEditor = new IntegerFieldEditorImpl();
+ return integerFieldEditor;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public FileFieldEditor createFileFieldEditor() {
+ FileFieldEditorImpl fileFieldEditor = new FileFieldEditorImpl();
+ return fileFieldEditor;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public DirectoryFieldEditor createDirectoryFieldEditor() {
+ DirectoryFieldEditorImpl directoryFieldEditor = new DirectoryFieldEditorImpl();
+ return directoryFieldEditor;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ListFold createListFold() {
+ ListFoldImpl listFold = new ListFoldImpl();
+ return listFold;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public BooleanFieldStyle createBooleanFieldStyleFromString(
+ EDataType eDataType, String initialValue) {
+ BooleanFieldStyle result = BooleanFieldStyle.get(initialValue);
+ if (result == null)
+ throw new IllegalArgumentException("The value '" + initialValue
+ + "' is not a valid enumerator of '" + eDataType.getName()
+ + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String convertBooleanFieldStyleToString(EDataType eDataType,
+ Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public StringBuffer createStringBufferFromString(EDataType eDataType,
+ String initialValue) {
+ return (StringBuffer) super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String convertStringBufferToString(EDataType eDataType,
+ Object instanceValue) {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Preferences createPreferencesFromString(EDataType eDataType,
+ String initialValue) {
+ return (Preferences) super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String convertPreferencesToString(EDataType eDataType,
+ Object instanceValue) {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public PreferencesPackage getPreferencesPackage() {
+ return (PreferencesPackage) getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static PreferencesPackage getPackage() {
+ return PreferencesPackage.eINSTANCE;
+ }
+
+} // PreferencesFactoryImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesPackageImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesPackageImpl.java
new file mode 100644
index 0000000..253d483
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesPackageImpl.java
@@ -0,0 +1,1090 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EGenericType;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.ETypeParameter;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ComboFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.DirectoryFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FileFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.RadioGroupFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesFactory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+import org.osgi.service.prefs.Preferences;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Package</b>. <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+public class PreferencesPackageImpl extends EPackageImpl implements
+ PreferencesPackage {
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass preferencesCategoryEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass preferencesPageEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass fieldEditorEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass booleanFieldEditorEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass listFieldEditorEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass entryEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass comboFieldEditorEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass listEditorEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass radioGroupFieldEditorEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass scaleFieldEditorEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass stringFieldEditorEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass integerFieldEditorEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass fileFieldEditorEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass directoryFieldEditorEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass listCrudEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EClass listFoldEClass = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EEnum booleanFieldStyleEEnum = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EDataType stringBufferEDataType = null;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private EDataType preferencesEDataType = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the
+ * package package URI value.
+ * <p>
+ * Note: the correct way to create the package is via the static factory
+ * method {@link #init init()}, which also performs initialization of the
+ * package, or returns the registered package, if one already exists. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private PreferencesPackageImpl() {
+ super(eNS_URI, PreferencesFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model,
+ * and for any others upon which it depends.
+ *
+ * <p>
+ * This method is used to initialize {@link PreferencesPackage#eINSTANCE}
+ * when that field is accessed. Clients should not invoke it directly.
+ * Instead, they should simply access that field to obtain the package. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static PreferencesPackage init() {
+ if (isInited)
+ return (PreferencesPackage) EPackage.Registry.INSTANCE
+ .getEPackage(PreferencesPackage.eNS_URI);
+
+ // Obtain or create and register package
+ PreferencesPackageImpl thePreferencesPackage = (PreferencesPackageImpl) (EPackage.Registry.INSTANCE
+ .get(eNS_URI) instanceof PreferencesPackageImpl ? EPackage.Registry.INSTANCE
+ .get(eNS_URI) : new PreferencesPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ ApplicationPackageImpl.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ thePreferencesPackage.createPackageContents();
+
+ // Initialize created meta-data
+ thePreferencesPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ thePreferencesPackage.freeze();
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(PreferencesPackage.eNS_URI,
+ thePreferencesPackage);
+ return thePreferencesPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getPreferencesCategory() {
+ return preferencesCategoryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getPreferencesCategory_Name() {
+ return (EAttribute) preferencesCategoryEClass.getEStructuralFeatures()
+ .get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getPreferencesCategory_ChildCategories() {
+ return (EReference) preferencesCategoryEClass.getEStructuralFeatures()
+ .get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getPreferencesCategory_ParentCategory() {
+ return (EReference) preferencesCategoryEClass.getEStructuralFeatures()
+ .get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getPreferencesCategory_Page() {
+ return (EReference) preferencesCategoryEClass.getEStructuralFeatures()
+ .get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getPreferencesCategory_Id() {
+ return (EAttribute) preferencesCategoryEClass.getEStructuralFeatures()
+ .get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getPreferencesPage() {
+ return preferencesPageEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getPreferencesPage_Category() {
+ return (EReference) preferencesPageEClass.getEStructuralFeatures().get(
+ 0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getPreferencesPage_Description() {
+ return (EAttribute) preferencesPageEClass.getEStructuralFeatures().get(
+ 1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getFieldEditor() {
+ return fieldEditorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getFieldEditor_Label() {
+ return (EAttribute) fieldEditorEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getFieldEditor_PreferenceName() {
+ return (EAttribute) fieldEditorEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getFieldEditor_DefaultValue() {
+ return (EAttribute) fieldEditorEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getFieldEditor_DefaultValueTyped() {
+ return (EAttribute) fieldEditorEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getFieldEditor_Bundle() {
+ return (EAttribute) fieldEditorEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getFieldEditor_Preferences() {
+ return (EAttribute) fieldEditorEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getFieldEditor_EquinoxPath() {
+ return (EAttribute) fieldEditorEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getBooleanFieldEditor() {
+ return booleanFieldEditorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getBooleanFieldEditor_Style() {
+ return (EAttribute) booleanFieldEditorEClass.getEStructuralFeatures()
+ .get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getListFieldEditor() {
+ return listFieldEditorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getListFieldEditor_Entries() {
+ return (EReference) listFieldEditorEClass.getEStructuralFeatures().get(
+ 0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getEntry() {
+ return entryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getEntry_Name() {
+ return (EAttribute) entryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getEntry_Value() {
+ return (EAttribute) entryEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getComboFieldEditor() {
+ return comboFieldEditorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getListEditor() {
+ return listEditorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getListEditor_ListCrud() {
+ return (EReference) listEditorEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EReference getListEditor_ListFold() {
+ return (EReference) listEditorEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getRadioGroupFieldEditor() {
+ return radioGroupFieldEditorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getScaleFieldEditor() {
+ return scaleFieldEditorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getScaleFieldEditor_MinValue() {
+ return (EAttribute) scaleFieldEditorEClass.getEStructuralFeatures()
+ .get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getScaleFieldEditor_MaxValue() {
+ return (EAttribute) scaleFieldEditorEClass.getEStructuralFeatures()
+ .get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getScaleFieldEditor_IncrementValue() {
+ return (EAttribute) scaleFieldEditorEClass.getEStructuralFeatures()
+ .get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getStringFieldEditor() {
+ return stringFieldEditorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getStringFieldEditor_MaxLength() {
+ return (EAttribute) stringFieldEditorEClass.getEStructuralFeatures()
+ .get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getIntegerFieldEditor() {
+ return integerFieldEditorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getIntegerFieldEditor_MinValidValue() {
+ return (EAttribute) integerFieldEditorEClass.getEStructuralFeatures()
+ .get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EAttribute getIntegerFieldEditor_MaxValidValue() {
+ return (EAttribute) integerFieldEditorEClass.getEStructuralFeatures()
+ .get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getFileFieldEditor() {
+ return fileFieldEditorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getDirectoryFieldEditor() {
+ return directoryFieldEditorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getListCrud() {
+ return listCrudEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EClass getListFold() {
+ return listFoldEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EEnum getBooleanFieldStyle() {
+ return booleanFieldStyleEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EDataType getStringBuffer() {
+ return stringBufferEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EDataType getPreferences() {
+ return preferencesEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public PreferencesFactory getPreferencesFactory() {
+ return (PreferencesFactory) getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is guarded to
+ * have no affect on any invocation but its first. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated)
+ return;
+ isCreated = true;
+
+ // Create classes and their features
+ preferencesCategoryEClass = createEClass(PREFERENCES_CATEGORY);
+ createEAttribute(preferencesCategoryEClass, PREFERENCES_CATEGORY__NAME);
+ createEReference(preferencesCategoryEClass,
+ PREFERENCES_CATEGORY__CHILD_CATEGORIES);
+ createEReference(preferencesCategoryEClass,
+ PREFERENCES_CATEGORY__PARENT_CATEGORY);
+ createEReference(preferencesCategoryEClass, PREFERENCES_CATEGORY__PAGE);
+ createEAttribute(preferencesCategoryEClass, PREFERENCES_CATEGORY__ID);
+
+ preferencesPageEClass = createEClass(PREFERENCES_PAGE);
+ createEReference(preferencesPageEClass, PREFERENCES_PAGE__CATEGORY);
+ createEAttribute(preferencesPageEClass, PREFERENCES_PAGE__DESCRIPTION);
+
+ fieldEditorEClass = createEClass(FIELD_EDITOR);
+ createEAttribute(fieldEditorEClass, FIELD_EDITOR__LABEL);
+ createEAttribute(fieldEditorEClass, FIELD_EDITOR__PREFERENCE_NAME);
+ createEAttribute(fieldEditorEClass, FIELD_EDITOR__DEFAULT_VALUE);
+ createEAttribute(fieldEditorEClass, FIELD_EDITOR__DEFAULT_VALUE_TYPED);
+ createEAttribute(fieldEditorEClass, FIELD_EDITOR__BUNDLE);
+ createEAttribute(fieldEditorEClass, FIELD_EDITOR__PREFERENCES);
+ createEAttribute(fieldEditorEClass, FIELD_EDITOR__EQUINOX_PATH);
+
+ booleanFieldEditorEClass = createEClass(BOOLEAN_FIELD_EDITOR);
+ createEAttribute(booleanFieldEditorEClass, BOOLEAN_FIELD_EDITOR__STYLE);
+
+ listFieldEditorEClass = createEClass(LIST_FIELD_EDITOR);
+ createEReference(listFieldEditorEClass, LIST_FIELD_EDITOR__ENTRIES);
+
+ entryEClass = createEClass(ENTRY);
+ createEAttribute(entryEClass, ENTRY__NAME);
+ createEAttribute(entryEClass, ENTRY__VALUE);
+
+ comboFieldEditorEClass = createEClass(COMBO_FIELD_EDITOR);
+
+ listEditorEClass = createEClass(LIST_EDITOR);
+ createEReference(listEditorEClass, LIST_EDITOR__LIST_CRUD);
+ createEReference(listEditorEClass, LIST_EDITOR__LIST_FOLD);
+
+ radioGroupFieldEditorEClass = createEClass(RADIO_GROUP_FIELD_EDITOR);
+
+ scaleFieldEditorEClass = createEClass(SCALE_FIELD_EDITOR);
+ createEAttribute(scaleFieldEditorEClass, SCALE_FIELD_EDITOR__MIN_VALUE);
+ createEAttribute(scaleFieldEditorEClass, SCALE_FIELD_EDITOR__MAX_VALUE);
+ createEAttribute(scaleFieldEditorEClass,
+ SCALE_FIELD_EDITOR__INCREMENT_VALUE);
+
+ stringFieldEditorEClass = createEClass(STRING_FIELD_EDITOR);
+ createEAttribute(stringFieldEditorEClass,
+ STRING_FIELD_EDITOR__MAX_LENGTH);
+
+ integerFieldEditorEClass = createEClass(INTEGER_FIELD_EDITOR);
+ createEAttribute(integerFieldEditorEClass,
+ INTEGER_FIELD_EDITOR__MIN_VALID_VALUE);
+ createEAttribute(integerFieldEditorEClass,
+ INTEGER_FIELD_EDITOR__MAX_VALID_VALUE);
+
+ fileFieldEditorEClass = createEClass(FILE_FIELD_EDITOR);
+
+ directoryFieldEditorEClass = createEClass(DIRECTORY_FIELD_EDITOR);
+
+ listCrudEClass = createEClass(LIST_CRUD);
+
+ listFoldEClass = createEClass(LIST_FOLD);
+
+ // Create enums
+ booleanFieldStyleEEnum = createEEnum(BOOLEAN_FIELD_STYLE);
+
+ // Create data types
+ stringBufferEDataType = createEDataType(STRING_BUFFER);
+ preferencesEDataType = createEDataType(PREFERENCES);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized)
+ return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ ApplicationPackageImpl theApplicationPackage = (ApplicationPackageImpl) EPackage.Registry.INSTANCE
+ .getEPackage(ApplicationPackageImpl.eNS_URI);
+ UiPackageImpl theUiPackage = (UiPackageImpl) EPackage.Registry.INSTANCE
+ .getEPackage(UiPackageImpl.eNS_URI);
+
+ // Create type parameters
+ ETypeParameter fieldEditorEClass_T = addETypeParameter(
+ fieldEditorEClass, "T");
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ preferencesCategoryEClass.getESuperTypes().add(
+ theApplicationPackage.getApplicationElement());
+ EGenericType g1 = createEGenericType(theUiPackage.getElementContainer());
+ EGenericType g2 = createEGenericType(this.getFieldEditor());
+ g1.getETypeArguments().add(g2);
+ EGenericType g3 = createEGenericType();
+ g2.getETypeArguments().add(g3);
+ preferencesPageEClass.getEGenericSuperTypes().add(g1);
+ g1 = createEGenericType(theApplicationPackage.getContribution());
+ preferencesPageEClass.getEGenericSuperTypes().add(g1);
+ fieldEditorEClass.getESuperTypes().add(theUiPackage.getUIElement());
+ g1 = createEGenericType(this.getFieldEditor());
+ g2 = createEGenericType(ecorePackage.getEBooleanObject());
+ g1.getETypeArguments().add(g2);
+ booleanFieldEditorEClass.getEGenericSuperTypes().add(g1);
+ g1 = createEGenericType(this.getFieldEditor());
+ g2 = createEGenericType(ecorePackage.getEString());
+ g1.getETypeArguments().add(g2);
+ listFieldEditorEClass.getEGenericSuperTypes().add(g1);
+ g1 = createEGenericType(theApplicationPackage.getContribution());
+ listFieldEditorEClass.getEGenericSuperTypes().add(g1);
+ comboFieldEditorEClass.getESuperTypes().add(this.getListFieldEditor());
+ g1 = createEGenericType(this.getFieldEditor());
+ g2 = createEGenericType(ecorePackage.getEString());
+ g1.getETypeArguments().add(g2);
+ listEditorEClass.getEGenericSuperTypes().add(g1);
+ g1 = createEGenericType(theApplicationPackage.getContribution());
+ listEditorEClass.getEGenericSuperTypes().add(g1);
+ radioGroupFieldEditorEClass.getESuperTypes().add(
+ this.getListFieldEditor());
+ g1 = createEGenericType(this.getFieldEditor());
+ g2 = createEGenericType(ecorePackage.getEIntegerObject());
+ g1.getETypeArguments().add(g2);
+ scaleFieldEditorEClass.getEGenericSuperTypes().add(g1);
+ g1 = createEGenericType(this.getFieldEditor());
+ g2 = createEGenericType(ecorePackage.getEString());
+ g1.getETypeArguments().add(g2);
+ stringFieldEditorEClass.getEGenericSuperTypes().add(g1);
+ g1 = createEGenericType(this.getFieldEditor());
+ g2 = createEGenericType(ecorePackage.getEIntegerObject());
+ g1.getETypeArguments().add(g2);
+ integerFieldEditorEClass.getEGenericSuperTypes().add(g1);
+ g1 = createEGenericType(this.getFieldEditor());
+ g2 = createEGenericType(ecorePackage.getEString());
+ g1.getETypeArguments().add(g2);
+ fileFieldEditorEClass.getEGenericSuperTypes().add(g1);
+ g1 = createEGenericType(theApplicationPackage.getContribution());
+ fileFieldEditorEClass.getEGenericSuperTypes().add(g1);
+ g1 = createEGenericType(this.getFieldEditor());
+ g2 = createEGenericType(ecorePackage.getEString());
+ g1.getETypeArguments().add(g2);
+ directoryFieldEditorEClass.getEGenericSuperTypes().add(g1);
+ g1 = createEGenericType(theApplicationPackage.getContribution());
+ directoryFieldEditorEClass.getEGenericSuperTypes().add(g1);
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(preferencesCategoryEClass, PreferencesCategory.class,
+ "PreferencesCategory", !IS_ABSTRACT, !IS_INTERFACE,
+ IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getPreferencesCategory_Name(),
+ ecorePackage.getEString(), "name", "No Name", 0, 1,
+ PreferencesCategory.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+ initEReference(getPreferencesCategory_ChildCategories(),
+ this.getPreferencesCategory(),
+ this.getPreferencesCategory_ParentCategory(),
+ "childCategories", null, 0, -1, PreferencesCategory.class,
+ !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+ !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+ initEReference(getPreferencesCategory_ParentCategory(),
+ this.getPreferencesCategory(),
+ this.getPreferencesCategory_ChildCategories(),
+ "parentCategory", null, 0, 1, PreferencesCategory.class,
+ !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+ !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+ initEReference(getPreferencesCategory_Page(),
+ this.getPreferencesPage(), this.getPreferencesPage_Category(),
+ "page", null, 0, 1, PreferencesCategory.class, !IS_TRANSIENT,
+ !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPreferencesCategory_Id(), ecorePackage.getEString(),
+ "id", null, 0, 1, PreferencesCategory.class, !IS_TRANSIENT,
+ !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+
+ initEClass(preferencesPageEClass, PreferencesPage.class,
+ "PreferencesPage", !IS_ABSTRACT, !IS_INTERFACE,
+ IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getPreferencesPage_Category(),
+ this.getPreferencesCategory(),
+ this.getPreferencesCategory_Page(), "category", null, 0, 1,
+ PreferencesPage.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPreferencesPage_Description(),
+ ecorePackage.getEString(), "description", null, 0, 1,
+ PreferencesPage.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+
+ initEClass(fieldEditorEClass, FieldEditor.class, "FieldEditor",
+ !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getFieldEditor_Label(), ecorePackage.getEString(),
+ "label", "", 0, 1, FieldEditor.class, !IS_TRANSIENT,
+ !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getFieldEditor_PreferenceName(),
+ ecorePackage.getEString(), "preferenceName", null, 0, 1,
+ FieldEditor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+ !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getFieldEditor_DefaultValue(),
+ ecorePackage.getEString(), "defaultValue", null, 0, 1,
+ FieldEditor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+ !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ g1 = createEGenericType(fieldEditorEClass_T);
+ initEAttribute(getFieldEditor_DefaultValueTyped(), g1,
+ "defaultValueTyped", null, 0, 1, FieldEditor.class,
+ !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+ !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getFieldEditor_Bundle(), ecorePackage.getEString(),
+ "bundle", null, 0, 1, FieldEditor.class, !IS_TRANSIENT,
+ !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getFieldEditor_Preferences(), this.getPreferences(),
+ "preferences", null, 0, 1, FieldEditor.class, !IS_TRANSIENT,
+ !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getFieldEditor_EquinoxPath(), ecorePackage.getEString(),
+ "equinoxPath", null, 0, 1, FieldEditor.class, !IS_TRANSIENT,
+ !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+
+ initEClass(booleanFieldEditorEClass, BooleanFieldEditor.class,
+ "BooleanFieldEditor", !IS_ABSTRACT, !IS_INTERFACE,
+ IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getBooleanFieldEditor_Style(),
+ this.getBooleanFieldStyle(), "style", null, 0, 1,
+ BooleanFieldEditor.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+
+ initEClass(listFieldEditorEClass, ListFieldEditor.class,
+ "ListFieldEditor", IS_ABSTRACT, !IS_INTERFACE,
+ IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getListFieldEditor_Entries(), this.getEntry(), null,
+ "entries", null, 0, -1, ListFieldEditor.class, !IS_TRANSIENT,
+ !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(entryEClass, Entry.class, "Entry", !IS_ABSTRACT,
+ !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getEntry_Name(), ecorePackage.getEString(), "name",
+ null, 0, 1, Entry.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+ initEAttribute(getEntry_Value(), ecorePackage.getEString(), "value",
+ null, 0, 1, Entry.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+
+ initEClass(comboFieldEditorEClass, ComboFieldEditor.class,
+ "ComboFieldEditor", !IS_ABSTRACT, !IS_INTERFACE,
+ IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(listEditorEClass, ListEditor.class, "ListEditor",
+ !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getListEditor_ListCrud(), this.getListCrud(), null,
+ "listCrud", null, 0, 1, ListEditor.class, !IS_TRANSIENT,
+ !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getListEditor_ListFold(), this.getListFold(), null,
+ "listFold", null, 0, 1, ListEditor.class, !IS_TRANSIENT,
+ !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(radioGroupFieldEditorEClass, RadioGroupFieldEditor.class,
+ "RadioGroupFieldEditor", !IS_ABSTRACT, !IS_INTERFACE,
+ IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(scaleFieldEditorEClass, ScaleFieldEditor.class,
+ "ScaleFieldEditor", !IS_ABSTRACT, !IS_INTERFACE,
+ IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getScaleFieldEditor_MinValue(),
+ ecorePackage.getEIntegerObject(), "minValue", "0", 0, 1,
+ ScaleFieldEditor.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+ initEAttribute(getScaleFieldEditor_MaxValue(),
+ ecorePackage.getEIntegerObject(), "maxValue", "100", 0, 1,
+ ScaleFieldEditor.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+ initEAttribute(getScaleFieldEditor_IncrementValue(),
+ ecorePackage.getEIntegerObject(), "incrementValue", "1", 0, 1,
+ ScaleFieldEditor.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+
+ initEClass(stringFieldEditorEClass, StringFieldEditor.class,
+ "StringFieldEditor", !IS_ABSTRACT, !IS_INTERFACE,
+ IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getStringFieldEditor_MaxLength(),
+ ecorePackage.getEIntegerObject(), "maxLength", null, 0, 1,
+ StringFieldEditor.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+
+ initEClass(integerFieldEditorEClass, IntegerFieldEditor.class,
+ "IntegerFieldEditor", !IS_ABSTRACT, !IS_INTERFACE,
+ IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getIntegerFieldEditor_MinValidValue(),
+ ecorePackage.getEIntegerObject(), "minValidValue", null, 0, 1,
+ IntegerFieldEditor.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+ initEAttribute(getIntegerFieldEditor_MaxValidValue(),
+ ecorePackage.getEIntegerObject(), "maxValidValue", null, 0, 1,
+ IntegerFieldEditor.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+
+ initEClass(fileFieldEditorEClass, FileFieldEditor.class,
+ "FileFieldEditor", !IS_ABSTRACT, !IS_INTERFACE,
+ IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(directoryFieldEditorEClass, DirectoryFieldEditor.class,
+ "DirectoryFieldEditor", !IS_ABSTRACT, !IS_INTERFACE,
+ IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(listCrudEClass, ListCrud.class, "ListCrud", IS_ABSTRACT,
+ IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ EOperation op = addEOperation(listCrudEClass,
+ ecorePackage.getEString(), "addNewValue", 0, 1, IS_UNIQUE,
+ IS_ORDERED);
+ addEParameter(op, ecorePackage.getEString(), "values", 0, 1, IS_UNIQUE,
+ IS_ORDERED);
+
+ initEClass(listFoldEClass, ListFold.class, "ListFold", !IS_ABSTRACT,
+ !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ op = addEOperation(listFoldEClass, null, "apply", 0, 1, IS_UNIQUE,
+ IS_ORDERED);
+ addEParameter(op, ecorePackage.getEString(), "value", 0, 1, IS_UNIQUE,
+ IS_ORDERED);
+ addEParameter(op, this.getStringBuffer(), "prev", 0, 1, IS_UNIQUE,
+ IS_ORDERED);
+
+ // Initialize enums and add enum literals
+ initEEnum(booleanFieldStyleEEnum, BooleanFieldStyle.class,
+ "BooleanFieldStyle");
+ addEEnumLiteral(booleanFieldStyleEEnum, BooleanFieldStyle.DEFAULT);
+ addEEnumLiteral(booleanFieldStyleEEnum,
+ BooleanFieldStyle.SEPARATE_LABEL);
+
+ // Initialize data types
+ initEDataType(stringBufferEDataType, StringBuffer.class,
+ "StringBuffer", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(preferencesEDataType, Preferences.class, "Preferences",
+ IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} // PreferencesPackageImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesPageImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesPageImpl.java
new file mode 100644
index 0000000..f560a15
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/PreferencesPageImpl.java
@@ -0,0 +1,502 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MContribution;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+
+import org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Page</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPageImpl#getContributionURI
+ * <em>Contribution URI</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPageImpl#getObject
+ * <em>Object</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPageImpl#getCategory
+ * <em>Category</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPageImpl#getDescription
+ * <em>Description</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PreferencesPageImpl extends ElementContainerImpl<FieldEditor<?>>
+ implements PreferencesPage {
+ /**
+ * The default value of the '{@link #getContributionURI()
+ * <em>Contribution URI</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getContributionURI()
+ * @generated
+ * @ordered
+ */
+ protected static final String CONTRIBUTION_URI_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getContributionURI()
+ * <em>Contribution URI</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getContributionURI()
+ * @generated
+ * @ordered
+ */
+ protected String contributionURI = CONTRIBUTION_URI_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getObject() <em>Object</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getObject()
+ * @generated
+ * @ordered
+ */
+ protected static final Object OBJECT_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getObject() <em>Object</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getObject()
+ * @generated
+ * @ordered
+ */
+ protected Object object = OBJECT_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDescription() <em>Description</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected static final String DESCRIPTION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDescription() <em>Description</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected String description = DESCRIPTION_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected PreferencesPageImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PreferencesPackage.Literals.PREFERENCES_PAGE;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc --> This is specialized for the
+ * more specific element type known in this context.
+ *
+ * @generated
+ */
+ @Override
+ public List<FieldEditor<?>> getChildren() {
+ if (children == null) {
+ children = new EObjectContainmentWithInverseEList<FieldEditor<?>>(
+ FieldEditor.class, this,
+ PreferencesPackage.PREFERENCES_PAGE__CHILDREN,
+ UiPackageImpl.UI_ELEMENT__PARENT) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public Class<?> getInverseFeatureClass() {
+ return MUIElement.class;
+ }
+ };
+ }
+ return children;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc --> This is specialized for the
+ * more specific type known in this context.
+ *
+ * @generated
+ */
+ @Override
+ public void setSelectedElement(FieldEditor<?> newSelectedElement) {
+ super.setSelectedElement(newSelectedElement);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getContributionURI() {
+ return contributionURI;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setContributionURI(String newContributionURI) {
+ String oldContributionURI = contributionURI;
+ contributionURI = newContributionURI;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.PREFERENCES_PAGE__CONTRIBUTION_URI,
+ oldContributionURI, contributionURI));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Object getObject() {
+ return object;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setObject(Object newObject) {
+ Object oldObject = object;
+ object = newObject;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.PREFERENCES_PAGE__OBJECT, oldObject,
+ object));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public PreferencesCategory getCategory() {
+ if (eContainerFeatureID() != PreferencesPackage.PREFERENCES_PAGE__CATEGORY)
+ return null;
+ return (PreferencesCategory) eInternalContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public NotificationChain basicSetCategory(PreferencesCategory newCategory,
+ NotificationChain msgs) {
+ msgs = eBasicSetContainer((InternalEObject) newCategory,
+ PreferencesPackage.PREFERENCES_PAGE__CATEGORY, msgs);
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setCategory(PreferencesCategory newCategory) {
+ if (newCategory != eInternalContainer()
+ || (eContainerFeatureID() != PreferencesPackage.PREFERENCES_PAGE__CATEGORY && newCategory != null)) {
+ if (EcoreUtil.isAncestor(this, newCategory))
+ throw new IllegalArgumentException(
+ "Recursive containment not allowed for " + toString());
+ NotificationChain msgs = null;
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ if (newCategory != null)
+ msgs = ((InternalEObject) newCategory).eInverseAdd(this,
+ PreferencesPackage.PREFERENCES_CATEGORY__PAGE,
+ PreferencesCategory.class, msgs);
+ msgs = basicSetCategory(newCategory, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ } else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.PREFERENCES_PAGE__CATEGORY, newCategory,
+ newCategory));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setDescription(String newDescription) {
+ String oldDescription = description;
+ description = newDescription;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.PREFERENCES_PAGE__DESCRIPTION,
+ oldDescription, description));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd,
+ int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PreferencesPackage.PREFERENCES_PAGE__CATEGORY:
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return basicSetCategory((PreferencesCategory) otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd,
+ int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PreferencesPackage.PREFERENCES_PAGE__CATEGORY:
+ return basicSetCategory(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(
+ NotificationChain msgs) {
+ switch (eContainerFeatureID()) {
+ case PreferencesPackage.PREFERENCES_PAGE__CATEGORY:
+ return eInternalContainer().eInverseRemove(this,
+ PreferencesPackage.PREFERENCES_CATEGORY__PAGE,
+ PreferencesCategory.class, msgs);
+ }
+ return super.eBasicRemoveFromContainerFeature(msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PreferencesPackage.PREFERENCES_PAGE__CONTRIBUTION_URI:
+ return getContributionURI();
+ case PreferencesPackage.PREFERENCES_PAGE__OBJECT:
+ return getObject();
+ case PreferencesPackage.PREFERENCES_PAGE__CATEGORY:
+ return getCategory();
+ case PreferencesPackage.PREFERENCES_PAGE__DESCRIPTION:
+ return getDescription();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PreferencesPackage.PREFERENCES_PAGE__CONTRIBUTION_URI:
+ setContributionURI((String) newValue);
+ return;
+ case PreferencesPackage.PREFERENCES_PAGE__OBJECT:
+ setObject(newValue);
+ return;
+ case PreferencesPackage.PREFERENCES_PAGE__CATEGORY:
+ setCategory((PreferencesCategory) newValue);
+ return;
+ case PreferencesPackage.PREFERENCES_PAGE__DESCRIPTION:
+ setDescription((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.PREFERENCES_PAGE__CONTRIBUTION_URI:
+ setContributionURI(CONTRIBUTION_URI_EDEFAULT);
+ return;
+ case PreferencesPackage.PREFERENCES_PAGE__OBJECT:
+ setObject(OBJECT_EDEFAULT);
+ return;
+ case PreferencesPackage.PREFERENCES_PAGE__CATEGORY:
+ setCategory((PreferencesCategory) null);
+ return;
+ case PreferencesPackage.PREFERENCES_PAGE__DESCRIPTION:
+ setDescription(DESCRIPTION_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.PREFERENCES_PAGE__CONTRIBUTION_URI:
+ return CONTRIBUTION_URI_EDEFAULT == null ? contributionURI != null
+ : !CONTRIBUTION_URI_EDEFAULT.equals(contributionURI);
+ case PreferencesPackage.PREFERENCES_PAGE__OBJECT:
+ return OBJECT_EDEFAULT == null ? object != null : !OBJECT_EDEFAULT
+ .equals(object);
+ case PreferencesPackage.PREFERENCES_PAGE__CATEGORY:
+ return getCategory() != null;
+ case PreferencesPackage.PREFERENCES_PAGE__DESCRIPTION:
+ return DESCRIPTION_EDEFAULT == null ? description != null
+ : !DESCRIPTION_EDEFAULT.equals(description);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == MContribution.class) {
+ switch (derivedFeatureID) {
+ case PreferencesPackage.PREFERENCES_PAGE__CONTRIBUTION_URI:
+ return ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI;
+ case PreferencesPackage.PREFERENCES_PAGE__OBJECT:
+ return ApplicationPackageImpl.CONTRIBUTION__OBJECT;
+ default:
+ return -1;
+ }
+ }
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+ if (baseClass == MContribution.class) {
+ switch (baseFeatureID) {
+ case ApplicationPackageImpl.CONTRIBUTION__CONTRIBUTION_URI:
+ return PreferencesPackage.PREFERENCES_PAGE__CONTRIBUTION_URI;
+ case ApplicationPackageImpl.CONTRIBUTION__OBJECT:
+ return PreferencesPackage.PREFERENCES_PAGE__OBJECT;
+ default:
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (contributionURI: ");
+ result.append(contributionURI);
+ result.append(", object: ");
+ result.append(object);
+ result.append(", description: ");
+ result.append(description);
+ result.append(')');
+ return result.toString();
+ }
+
+} // PreferencesPageImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/RadioGroupFieldEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/RadioGroupFieldEditorImpl.java
new file mode 100644
index 0000000..e04d1aa
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/RadioGroupFieldEditorImpl.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.RadioGroupFieldEditor;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Radio Group Field Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class RadioGroupFieldEditorImpl extends ListFieldEditorImpl implements
+ RadioGroupFieldEditor {
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected RadioGroupFieldEditorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PreferencesPackage.Literals.RADIO_GROUP_FIELD_EDITOR;
+ }
+
+} // RadioGroupFieldEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ScaleFieldEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ScaleFieldEditorImpl.java
new file mode 100644
index 0000000..5b98eb5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/ScaleFieldEditorImpl.java
@@ -0,0 +1,308 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Scale Field Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ScaleFieldEditorImpl#getMinValue
+ * <em>Min Value</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ScaleFieldEditorImpl#getMaxValue
+ * <em>Max Value</em>}</li>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ScaleFieldEditorImpl#getIncrementValue
+ * <em>Increment Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ScaleFieldEditorImpl extends FieldEditorImpl<Integer> implements
+ ScaleFieldEditor {
+ /**
+ * The default value of the '{@link #getMinValue() <em>Min Value</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getMinValue()
+ * @generated
+ * @ordered
+ */
+ protected static final Integer MIN_VALUE_EDEFAULT = new Integer(0);
+
+ /**
+ * The cached value of the '{@link #getMinValue() <em>Min Value</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getMinValue()
+ * @generated
+ * @ordered
+ */
+ protected Integer minValue = MIN_VALUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getMaxValue() <em>Max Value</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getMaxValue()
+ * @generated
+ * @ordered
+ */
+ protected static final Integer MAX_VALUE_EDEFAULT = new Integer(100);
+
+ /**
+ * The cached value of the '{@link #getMaxValue() <em>Max Value</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getMaxValue()
+ * @generated
+ * @ordered
+ */
+ protected Integer maxValue = MAX_VALUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getIncrementValue()
+ * <em>Increment Value</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getIncrementValue()
+ * @generated
+ * @ordered
+ */
+ protected static final Integer INCREMENT_VALUE_EDEFAULT = new Integer(1);
+
+ /**
+ * The cached value of the '{@link #getIncrementValue()
+ * <em>Increment Value</em>}' attribute. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see #getIncrementValue()
+ * @generated
+ * @ordered
+ */
+ protected Integer incrementValue = INCREMENT_VALUE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ScaleFieldEditorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PreferencesPackage.Literals.SCALE_FIELD_EDITOR;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc --> This is specialized for the
+ * more specific type known in this context.
+ *
+ * @generated
+ */
+ @Override
+ public void setDefaultValueTyped(Integer newDefaultValueTyped) {
+ super.setDefaultValueTyped(newDefaultValueTyped);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Integer getMinValue() {
+ return minValue;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setMinValue(Integer newMinValue) {
+ Integer oldMinValue = minValue;
+ minValue = newMinValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.SCALE_FIELD_EDITOR__MIN_VALUE,
+ oldMinValue, minValue));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Integer getMaxValue() {
+ return maxValue;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setMaxValue(Integer newMaxValue) {
+ Integer oldMaxValue = maxValue;
+ maxValue = newMaxValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.SCALE_FIELD_EDITOR__MAX_VALUE,
+ oldMaxValue, maxValue));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Integer getIncrementValue() {
+ return incrementValue;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setIncrementValue(Integer newIncrementValue) {
+ Integer oldIncrementValue = incrementValue;
+ incrementValue = newIncrementValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.SCALE_FIELD_EDITOR__INCREMENT_VALUE,
+ oldIncrementValue, incrementValue));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PreferencesPackage.SCALE_FIELD_EDITOR__MIN_VALUE:
+ return getMinValue();
+ case PreferencesPackage.SCALE_FIELD_EDITOR__MAX_VALUE:
+ return getMaxValue();
+ case PreferencesPackage.SCALE_FIELD_EDITOR__INCREMENT_VALUE:
+ return getIncrementValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PreferencesPackage.SCALE_FIELD_EDITOR__MIN_VALUE:
+ setMinValue((Integer) newValue);
+ return;
+ case PreferencesPackage.SCALE_FIELD_EDITOR__MAX_VALUE:
+ setMaxValue((Integer) newValue);
+ return;
+ case PreferencesPackage.SCALE_FIELD_EDITOR__INCREMENT_VALUE:
+ setIncrementValue((Integer) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.SCALE_FIELD_EDITOR__MIN_VALUE:
+ setMinValue(MIN_VALUE_EDEFAULT);
+ return;
+ case PreferencesPackage.SCALE_FIELD_EDITOR__MAX_VALUE:
+ setMaxValue(MAX_VALUE_EDEFAULT);
+ return;
+ case PreferencesPackage.SCALE_FIELD_EDITOR__INCREMENT_VALUE:
+ setIncrementValue(INCREMENT_VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.SCALE_FIELD_EDITOR__MIN_VALUE:
+ return MIN_VALUE_EDEFAULT == null ? minValue != null
+ : !MIN_VALUE_EDEFAULT.equals(minValue);
+ case PreferencesPackage.SCALE_FIELD_EDITOR__MAX_VALUE:
+ return MAX_VALUE_EDEFAULT == null ? maxValue != null
+ : !MAX_VALUE_EDEFAULT.equals(maxValue);
+ case PreferencesPackage.SCALE_FIELD_EDITOR__INCREMENT_VALUE:
+ return INCREMENT_VALUE_EDEFAULT == null ? incrementValue != null
+ : !INCREMENT_VALUE_EDEFAULT.equals(incrementValue);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (minValue: ");
+ result.append(minValue);
+ result.append(", maxValue: ");
+ result.append(maxValue);
+ result.append(", incrementValue: ");
+ result.append(incrementValue);
+ result.append(')');
+ return result.toString();
+ }
+
+} // ScaleFieldEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/StringFieldEditorImpl.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/StringFieldEditorImpl.java
new file mode 100644
index 0000000..f0dab7a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/impl/StringFieldEditorImpl.java
@@ -0,0 +1,188 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>String Field Editor</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.StringFieldEditorImpl#getMaxLength
+ * <em>Max Length</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StringFieldEditorImpl extends FieldEditorImpl<String> implements
+ StringFieldEditor {
+ /**
+ * The default value of the '{@link #getMaxLength() <em>Max Length</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getMaxLength()
+ * @generated
+ * @ordered
+ */
+ protected static final Integer MAX_LENGTH_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getMaxLength() <em>Max Length</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getMaxLength()
+ * @generated
+ * @ordered
+ */
+ protected Integer maxLength = MAX_LENGTH_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected StringFieldEditorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PreferencesPackage.Literals.STRING_FIELD_EDITOR;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc --> This is specialized for the
+ * more specific type known in this context.
+ *
+ * @generated
+ */
+ @Override
+ public void setDefaultValueTyped(String newDefaultValueTyped) {
+ super.setDefaultValueTyped(newDefaultValueTyped);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Integer getMaxLength() {
+ return maxLength;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setMaxLength(Integer newMaxLength) {
+ Integer oldMaxLength = maxLength;
+ maxLength = newMaxLength;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ PreferencesPackage.STRING_FIELD_EDITOR__MAX_LENGTH,
+ oldMaxLength, maxLength));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PreferencesPackage.STRING_FIELD_EDITOR__MAX_LENGTH:
+ return getMaxLength();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PreferencesPackage.STRING_FIELD_EDITOR__MAX_LENGTH:
+ setMaxLength((Integer) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.STRING_FIELD_EDITOR__MAX_LENGTH:
+ setMaxLength(MAX_LENGTH_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PreferencesPackage.STRING_FIELD_EDITOR__MAX_LENGTH:
+ return MAX_LENGTH_EDEFAULT == null ? maxLength != null
+ : !MAX_LENGTH_EDEFAULT.equals(maxLength);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (maxLength: ");
+ result.append(maxLength);
+ result.append(')');
+ return result.toString();
+ }
+
+} // StringFieldEditorImpl
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/metadata/PreferencesFactory.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/metadata/PreferencesFactory.java
new file mode 100644
index 0000000..df68ed6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/metadata/PreferencesFactory.java
@@ -0,0 +1,182 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata;
+
+import org.eclipse.emf.ecore.EFactory;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ComboFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.DirectoryFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.FileFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.RadioGroupFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor;
+
+/**
+ * <!-- begin-user-doc --> The <b>Factory</b> for the model. It provides a
+ * create method for each non-abstract class of the model. <!-- end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage
+ * @generated
+ */
+public interface PreferencesFactory extends EFactory {
+ /**
+ * The singleton instance of the factory. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ PreferencesFactory eINSTANCE = org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesFactoryImpl
+ .init();
+
+ /**
+ * Returns a new object of class '<em>Category</em>'. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Category</em>'.
+ * @generated
+ */
+ PreferencesCategory createPreferencesCategory();
+
+ /**
+ * Returns a new object of class '<em>Page</em>'. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Page</em>'.
+ * @generated
+ */
+ PreferencesPage createPreferencesPage();
+
+ /**
+ * Returns a new object of class '<em>Field Editor</em>'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Field Editor</em>'.
+ * @generated
+ */
+ <T> FieldEditor<T> createFieldEditor();
+
+ /**
+ * Returns a new object of class '<em>Boolean Field Editor</em>'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Boolean Field Editor</em>'.
+ * @generated
+ */
+ BooleanFieldEditor createBooleanFieldEditor();
+
+ /**
+ * Returns a new object of class '<em>Entry</em>'. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Entry</em>'.
+ * @generated
+ */
+ Entry createEntry();
+
+ /**
+ * Returns a new object of class '<em>Combo Field Editor</em>'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Combo Field Editor</em>'.
+ * @generated
+ */
+ ComboFieldEditor createComboFieldEditor();
+
+ /**
+ * Returns a new object of class '<em>List Editor</em>'. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>List Editor</em>'.
+ * @generated
+ */
+ ListEditor createListEditor();
+
+ /**
+ * Returns a new object of class '<em>Radio Group Field Editor</em>'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Radio Group Field Editor</em>'.
+ * @generated
+ */
+ RadioGroupFieldEditor createRadioGroupFieldEditor();
+
+ /**
+ * Returns a new object of class '<em>Scale Field Editor</em>'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Scale Field Editor</em>'.
+ * @generated
+ */
+ ScaleFieldEditor createScaleFieldEditor();
+
+ /**
+ * Returns a new object of class '<em>String Field Editor</em>'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>String Field Editor</em>'.
+ * @generated
+ */
+ StringFieldEditor createStringFieldEditor();
+
+ /**
+ * Returns a new object of class '<em>Integer Field Editor</em>'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Integer Field Editor</em>'.
+ * @generated
+ */
+ IntegerFieldEditor createIntegerFieldEditor();
+
+ /**
+ * Returns a new object of class '<em>File Field Editor</em>'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>File Field Editor</em>'.
+ * @generated
+ */
+ FileFieldEditor createFileFieldEditor();
+
+ /**
+ * Returns a new object of class '<em>Directory Field Editor</em>'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>Directory Field Editor</em>'.
+ * @generated
+ */
+ DirectoryFieldEditor createDirectoryFieldEditor();
+
+ /**
+ * Returns a new object of class '<em>List Fold</em>'. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @return a new object of class '<em>List Fold</em>'.
+ * @generated
+ */
+ ListFold createListFold();
+
+ /**
+ * Returns the package supported by this factory. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the package supported by this factory.
+ * @generated
+ */
+ PreferencesPackage getPreferencesPackage();
+
+} // PreferencesFactory
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/metadata/PreferencesPackage.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/metadata/PreferencesPackage.java
new file mode 100644
index 0000000..db5cf11
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/metadata/PreferencesPackage.java
@@ -0,0 +1,4246 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata;
+
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc --> The <b>Package</b> for the model. It contains
+ * accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface PreferencesPackage extends EPackage {
+ /**
+ * The package name. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String eNAME = "preferences";
+
+ /**
+ * The package namespace URI. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String eNS_URI = "http://www.osbp.org/vaaclipse/ui/preferences";
+
+ /**
+ * The package namespace name. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ String eNS_PREFIX = "preferences";
+
+ /**
+ * The singleton instance of the package. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ PreferencesPackage eINSTANCE = org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl
+ .init();
+
+ /**
+ * The meta object id for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesCategoryImpl
+ * <em>Category</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesCategoryImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getPreferencesCategory()
+ * @generated
+ */
+ int PREFERENCES_CATEGORY = 0;
+
+ /**
+ * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_CATEGORY__ELEMENT_ID = ApplicationPackageImpl.APPLICATION_ELEMENT__ELEMENT_ID;
+
+ /**
+ * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_CATEGORY__PERSISTED_STATE = ApplicationPackageImpl.APPLICATION_ELEMENT__PERSISTED_STATE;
+
+ /**
+ * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_CATEGORY__TAGS = ApplicationPackageImpl.APPLICATION_ELEMENT__TAGS;
+
+ /**
+ * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_CATEGORY__CONTRIBUTOR_URI = ApplicationPackageImpl.APPLICATION_ELEMENT__CONTRIBUTOR_URI;
+
+ /**
+ * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_CATEGORY__TRANSIENT_DATA = ApplicationPackageImpl.APPLICATION_ELEMENT__TRANSIENT_DATA;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_CATEGORY__NAME = ApplicationPackageImpl.APPLICATION_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Child Categories</b></em>' containment
+ * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_CATEGORY__CHILD_CATEGORIES = ApplicationPackageImpl.APPLICATION_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Parent Category</b></em>' container
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_CATEGORY__PARENT_CATEGORY = ApplicationPackageImpl.APPLICATION_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Page</b></em>' containment reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_CATEGORY__PAGE = ApplicationPackageImpl.APPLICATION_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_CATEGORY__ID = ApplicationPackageImpl.APPLICATION_ELEMENT_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>Category</em>' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_CATEGORY_FEATURE_COUNT = ApplicationPackageImpl.APPLICATION_ELEMENT_FEATURE_COUNT + 5;
+
+ /**
+ * The meta object id for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPageImpl
+ * <em>Page</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPageImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getPreferencesPage()
+ * @generated
+ */
+ int PREFERENCES_PAGE = 1;
+
+ /**
+ * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__ELEMENT_ID = UiPackageImpl.ELEMENT_CONTAINER__ELEMENT_ID;
+
+ /**
+ * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__PERSISTED_STATE = UiPackageImpl.ELEMENT_CONTAINER__PERSISTED_STATE;
+
+ /**
+ * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__TAGS = UiPackageImpl.ELEMENT_CONTAINER__TAGS;
+
+ /**
+ * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__CONTRIBUTOR_URI = UiPackageImpl.ELEMENT_CONTAINER__CONTRIBUTOR_URI;
+
+ /**
+ * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__TRANSIENT_DATA = UiPackageImpl.ELEMENT_CONTAINER__TRANSIENT_DATA;
+
+ /**
+ * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__WIDGET = UiPackageImpl.ELEMENT_CONTAINER__WIDGET;
+
+ /**
+ * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__RENDERER = UiPackageImpl.ELEMENT_CONTAINER__RENDERER;
+
+ /**
+ * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__TO_BE_RENDERED = UiPackageImpl.ELEMENT_CONTAINER__TO_BE_RENDERED;
+
+ /**
+ * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__ON_TOP = UiPackageImpl.ELEMENT_CONTAINER__ON_TOP;
+
+ /**
+ * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__VISIBLE = UiPackageImpl.ELEMENT_CONTAINER__VISIBLE;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__PARENT = UiPackageImpl.ELEMENT_CONTAINER__PARENT;
+
+ /**
+ * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__CONTAINER_DATA = UiPackageImpl.ELEMENT_CONTAINER__CONTAINER_DATA;
+
+ /**
+ * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__CUR_SHARED_REF = UiPackageImpl.ELEMENT_CONTAINER__CUR_SHARED_REF;
+
+ /**
+ * The feature id for the '<em><b>Visible When</b></em>' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__VISIBLE_WHEN = UiPackageImpl.ELEMENT_CONTAINER__VISIBLE_WHEN;
+
+ /**
+ * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__ACCESSIBILITY_PHRASE = UiPackageImpl.ELEMENT_CONTAINER__ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__LOCALIZED_ACCESSIBILITY_PHRASE = UiPackageImpl.ELEMENT_CONTAINER__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Children</b></em>' containment reference
+ * list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__CHILDREN = UiPackageImpl.ELEMENT_CONTAINER__CHILDREN;
+
+ /**
+ * The feature id for the '<em><b>Selected Element</b></em>' reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__SELECTED_ELEMENT = UiPackageImpl.ELEMENT_CONTAINER__SELECTED_ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Contribution URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__CONTRIBUTION_URI = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Object</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__OBJECT = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Category</b></em>' container reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__CATEGORY = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE__DESCRIPTION = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Page</em>' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int PREFERENCES_PAGE_FEATURE_COUNT = UiPackageImpl.ELEMENT_CONTAINER_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl
+ * <em>Field Editor</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getFieldEditor()
+ * @generated
+ */
+ int FIELD_EDITOR = 2;
+
+ /**
+ * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__ELEMENT_ID = UiPackageImpl.UI_ELEMENT__ELEMENT_ID;
+
+ /**
+ * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__PERSISTED_STATE = UiPackageImpl.UI_ELEMENT__PERSISTED_STATE;
+
+ /**
+ * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__TAGS = UiPackageImpl.UI_ELEMENT__TAGS;
+
+ /**
+ * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__CONTRIBUTOR_URI = UiPackageImpl.UI_ELEMENT__CONTRIBUTOR_URI;
+
+ /**
+ * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__TRANSIENT_DATA = UiPackageImpl.UI_ELEMENT__TRANSIENT_DATA;
+
+ /**
+ * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__WIDGET = UiPackageImpl.UI_ELEMENT__WIDGET;
+
+ /**
+ * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__RENDERER = UiPackageImpl.UI_ELEMENT__RENDERER;
+
+ /**
+ * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__TO_BE_RENDERED = UiPackageImpl.UI_ELEMENT__TO_BE_RENDERED;
+
+ /**
+ * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__ON_TOP = UiPackageImpl.UI_ELEMENT__ON_TOP;
+
+ /**
+ * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__VISIBLE = UiPackageImpl.UI_ELEMENT__VISIBLE;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__PARENT = UiPackageImpl.UI_ELEMENT__PARENT;
+
+ /**
+ * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__CONTAINER_DATA = UiPackageImpl.UI_ELEMENT__CONTAINER_DATA;
+
+ /**
+ * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__CUR_SHARED_REF = UiPackageImpl.UI_ELEMENT__CUR_SHARED_REF;
+
+ /**
+ * The feature id for the '<em><b>Visible When</b></em>' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__VISIBLE_WHEN = UiPackageImpl.UI_ELEMENT__VISIBLE_WHEN;
+
+ /**
+ * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__ACCESSIBILITY_PHRASE = UiPackageImpl.UI_ELEMENT__ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = UiPackageImpl.UI_ELEMENT__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__LABEL = UiPackageImpl.UI_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__PREFERENCE_NAME = UiPackageImpl.UI_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__DEFAULT_VALUE = UiPackageImpl.UI_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__DEFAULT_VALUE_TYPED = UiPackageImpl.UI_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__BUNDLE = UiPackageImpl.UI_ELEMENT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__PREFERENCES = UiPackageImpl.UI_ELEMENT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR__EQUINOX_PATH = UiPackageImpl.UI_ELEMENT_FEATURE_COUNT + 6;
+
+ /**
+ * The number of structural features of the '<em>Field Editor</em>' class.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FIELD_EDITOR_FEATURE_COUNT = UiPackageImpl.UI_ELEMENT_FEATURE_COUNT + 7;
+
+ /**
+ * The meta object id for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.BooleanFieldEditorImpl
+ * <em>Boolean Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.BooleanFieldEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getBooleanFieldEditor()
+ * @generated
+ */
+ int BOOLEAN_FIELD_EDITOR = 3;
+
+ /**
+ * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__ELEMENT_ID = FIELD_EDITOR__ELEMENT_ID;
+
+ /**
+ * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__PERSISTED_STATE = FIELD_EDITOR__PERSISTED_STATE;
+
+ /**
+ * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__TAGS = FIELD_EDITOR__TAGS;
+
+ /**
+ * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__CONTRIBUTOR_URI = FIELD_EDITOR__CONTRIBUTOR_URI;
+
+ /**
+ * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__TRANSIENT_DATA = FIELD_EDITOR__TRANSIENT_DATA;
+
+ /**
+ * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__WIDGET = FIELD_EDITOR__WIDGET;
+
+ /**
+ * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__RENDERER = FIELD_EDITOR__RENDERER;
+
+ /**
+ * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__TO_BE_RENDERED = FIELD_EDITOR__TO_BE_RENDERED;
+
+ /**
+ * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__ON_TOP = FIELD_EDITOR__ON_TOP;
+
+ /**
+ * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__VISIBLE = FIELD_EDITOR__VISIBLE;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__PARENT = FIELD_EDITOR__PARENT;
+
+ /**
+ * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__CONTAINER_DATA = FIELD_EDITOR__CONTAINER_DATA;
+
+ /**
+ * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__CUR_SHARED_REF = FIELD_EDITOR__CUR_SHARED_REF;
+
+ /**
+ * The feature id for the '<em><b>Visible When</b></em>' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__VISIBLE_WHEN = FIELD_EDITOR__VISIBLE_WHEN;
+
+ /**
+ * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__ACCESSIBILITY_PHRASE = FIELD_EDITOR__ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__LABEL = FIELD_EDITOR__LABEL;
+
+ /**
+ * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__PREFERENCE_NAME = FIELD_EDITOR__PREFERENCE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__DEFAULT_VALUE = FIELD_EDITOR__DEFAULT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__DEFAULT_VALUE_TYPED = FIELD_EDITOR__DEFAULT_VALUE_TYPED;
+
+ /**
+ * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__BUNDLE = FIELD_EDITOR__BUNDLE;
+
+ /**
+ * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__PREFERENCES = FIELD_EDITOR__PREFERENCES;
+
+ /**
+ * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__EQUINOX_PATH = FIELD_EDITOR__EQUINOX_PATH;
+
+ /**
+ * The feature id for the '<em><b>Style</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR__STYLE = FIELD_EDITOR_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Boolean Field Editor</em>'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_FIELD_EDITOR_FEATURE_COUNT = FIELD_EDITOR_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFieldEditorImpl
+ * <em>List Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFieldEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getListFieldEditor()
+ * @generated
+ */
+ int LIST_FIELD_EDITOR = 4;
+
+ /**
+ * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__ELEMENT_ID = FIELD_EDITOR__ELEMENT_ID;
+
+ /**
+ * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__PERSISTED_STATE = FIELD_EDITOR__PERSISTED_STATE;
+
+ /**
+ * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__TAGS = FIELD_EDITOR__TAGS;
+
+ /**
+ * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__CONTRIBUTOR_URI = FIELD_EDITOR__CONTRIBUTOR_URI;
+
+ /**
+ * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__TRANSIENT_DATA = FIELD_EDITOR__TRANSIENT_DATA;
+
+ /**
+ * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__WIDGET = FIELD_EDITOR__WIDGET;
+
+ /**
+ * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__RENDERER = FIELD_EDITOR__RENDERER;
+
+ /**
+ * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__TO_BE_RENDERED = FIELD_EDITOR__TO_BE_RENDERED;
+
+ /**
+ * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__ON_TOP = FIELD_EDITOR__ON_TOP;
+
+ /**
+ * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__VISIBLE = FIELD_EDITOR__VISIBLE;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__PARENT = FIELD_EDITOR__PARENT;
+
+ /**
+ * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__CONTAINER_DATA = FIELD_EDITOR__CONTAINER_DATA;
+
+ /**
+ * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__CUR_SHARED_REF = FIELD_EDITOR__CUR_SHARED_REF;
+
+ /**
+ * The feature id for the '<em><b>Visible When</b></em>' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__VISIBLE_WHEN = FIELD_EDITOR__VISIBLE_WHEN;
+
+ /**
+ * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__ACCESSIBILITY_PHRASE = FIELD_EDITOR__ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__LABEL = FIELD_EDITOR__LABEL;
+
+ /**
+ * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__PREFERENCE_NAME = FIELD_EDITOR__PREFERENCE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__DEFAULT_VALUE = FIELD_EDITOR__DEFAULT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__DEFAULT_VALUE_TYPED = FIELD_EDITOR__DEFAULT_VALUE_TYPED;
+
+ /**
+ * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__BUNDLE = FIELD_EDITOR__BUNDLE;
+
+ /**
+ * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__PREFERENCES = FIELD_EDITOR__PREFERENCES;
+
+ /**
+ * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__EQUINOX_PATH = FIELD_EDITOR__EQUINOX_PATH;
+
+ /**
+ * The feature id for the '<em><b>Contribution URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__CONTRIBUTION_URI = FIELD_EDITOR_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Object</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__OBJECT = FIELD_EDITOR_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Entries</b></em>' reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR__ENTRIES = FIELD_EDITOR_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>List Field Editor</em>'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FIELD_EDITOR_FEATURE_COUNT = FIELD_EDITOR_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.EntryImpl
+ * <em>Entry</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.EntryImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getEntry()
+ * @generated
+ */
+ int ENTRY = 5;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ENTRY__NAME = 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ENTRY__VALUE = 1;
+
+ /**
+ * The number of structural features of the '<em>Entry</em>' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int ENTRY_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ComboFieldEditorImpl
+ * <em>Combo Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ComboFieldEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getComboFieldEditor()
+ * @generated
+ */
+ int COMBO_FIELD_EDITOR = 6;
+
+ /**
+ * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__ELEMENT_ID = LIST_FIELD_EDITOR__ELEMENT_ID;
+
+ /**
+ * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__PERSISTED_STATE = LIST_FIELD_EDITOR__PERSISTED_STATE;
+
+ /**
+ * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__TAGS = LIST_FIELD_EDITOR__TAGS;
+
+ /**
+ * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__CONTRIBUTOR_URI = LIST_FIELD_EDITOR__CONTRIBUTOR_URI;
+
+ /**
+ * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__TRANSIENT_DATA = LIST_FIELD_EDITOR__TRANSIENT_DATA;
+
+ /**
+ * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__WIDGET = LIST_FIELD_EDITOR__WIDGET;
+
+ /**
+ * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__RENDERER = LIST_FIELD_EDITOR__RENDERER;
+
+ /**
+ * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__TO_BE_RENDERED = LIST_FIELD_EDITOR__TO_BE_RENDERED;
+
+ /**
+ * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__ON_TOP = LIST_FIELD_EDITOR__ON_TOP;
+
+ /**
+ * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__VISIBLE = LIST_FIELD_EDITOR__VISIBLE;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__PARENT = LIST_FIELD_EDITOR__PARENT;
+
+ /**
+ * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__CONTAINER_DATA = LIST_FIELD_EDITOR__CONTAINER_DATA;
+
+ /**
+ * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__CUR_SHARED_REF = LIST_FIELD_EDITOR__CUR_SHARED_REF;
+
+ /**
+ * The feature id for the '<em><b>Visible When</b></em>' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__VISIBLE_WHEN = LIST_FIELD_EDITOR__VISIBLE_WHEN;
+
+ /**
+ * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__ACCESSIBILITY_PHRASE = LIST_FIELD_EDITOR__ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = LIST_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__LABEL = LIST_FIELD_EDITOR__LABEL;
+
+ /**
+ * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__PREFERENCE_NAME = LIST_FIELD_EDITOR__PREFERENCE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__DEFAULT_VALUE = LIST_FIELD_EDITOR__DEFAULT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__DEFAULT_VALUE_TYPED = LIST_FIELD_EDITOR__DEFAULT_VALUE_TYPED;
+
+ /**
+ * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__BUNDLE = LIST_FIELD_EDITOR__BUNDLE;
+
+ /**
+ * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__PREFERENCES = LIST_FIELD_EDITOR__PREFERENCES;
+
+ /**
+ * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__EQUINOX_PATH = LIST_FIELD_EDITOR__EQUINOX_PATH;
+
+ /**
+ * The feature id for the '<em><b>Contribution URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__CONTRIBUTION_URI = LIST_FIELD_EDITOR__CONTRIBUTION_URI;
+
+ /**
+ * The feature id for the '<em><b>Object</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__OBJECT = LIST_FIELD_EDITOR__OBJECT;
+
+ /**
+ * The feature id for the '<em><b>Entries</b></em>' reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR__ENTRIES = LIST_FIELD_EDITOR__ENTRIES;
+
+ /**
+ * The number of structural features of the '<em>Combo Field Editor</em>'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int COMBO_FIELD_EDITOR_FEATURE_COUNT = LIST_FIELD_EDITOR_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListEditorImpl
+ * <em>List Editor</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getListEditor()
+ * @generated
+ */
+ int LIST_EDITOR = 7;
+
+ /**
+ * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__ELEMENT_ID = FIELD_EDITOR__ELEMENT_ID;
+
+ /**
+ * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__PERSISTED_STATE = FIELD_EDITOR__PERSISTED_STATE;
+
+ /**
+ * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__TAGS = FIELD_EDITOR__TAGS;
+
+ /**
+ * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__CONTRIBUTOR_URI = FIELD_EDITOR__CONTRIBUTOR_URI;
+
+ /**
+ * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__TRANSIENT_DATA = FIELD_EDITOR__TRANSIENT_DATA;
+
+ /**
+ * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__WIDGET = FIELD_EDITOR__WIDGET;
+
+ /**
+ * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__RENDERER = FIELD_EDITOR__RENDERER;
+
+ /**
+ * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__TO_BE_RENDERED = FIELD_EDITOR__TO_BE_RENDERED;
+
+ /**
+ * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__ON_TOP = FIELD_EDITOR__ON_TOP;
+
+ /**
+ * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__VISIBLE = FIELD_EDITOR__VISIBLE;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__PARENT = FIELD_EDITOR__PARENT;
+
+ /**
+ * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__CONTAINER_DATA = FIELD_EDITOR__CONTAINER_DATA;
+
+ /**
+ * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__CUR_SHARED_REF = FIELD_EDITOR__CUR_SHARED_REF;
+
+ /**
+ * The feature id for the '<em><b>Visible When</b></em>' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__VISIBLE_WHEN = FIELD_EDITOR__VISIBLE_WHEN;
+
+ /**
+ * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__ACCESSIBILITY_PHRASE = FIELD_EDITOR__ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__LABEL = FIELD_EDITOR__LABEL;
+
+ /**
+ * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__PREFERENCE_NAME = FIELD_EDITOR__PREFERENCE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__DEFAULT_VALUE = FIELD_EDITOR__DEFAULT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__DEFAULT_VALUE_TYPED = FIELD_EDITOR__DEFAULT_VALUE_TYPED;
+
+ /**
+ * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__BUNDLE = FIELD_EDITOR__BUNDLE;
+
+ /**
+ * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__PREFERENCES = FIELD_EDITOR__PREFERENCES;
+
+ /**
+ * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__EQUINOX_PATH = FIELD_EDITOR__EQUINOX_PATH;
+
+ /**
+ * The feature id for the '<em><b>Contribution URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__CONTRIBUTION_URI = FIELD_EDITOR_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Object</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__OBJECT = FIELD_EDITOR_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>List Crud</b></em>' reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__LIST_CRUD = FIELD_EDITOR_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>List Fold</b></em>' reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR__LIST_FOLD = FIELD_EDITOR_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>List Editor</em>' class.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_EDITOR_FEATURE_COUNT = FIELD_EDITOR_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.RadioGroupFieldEditorImpl
+ * <em>Radio Group Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.RadioGroupFieldEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getRadioGroupFieldEditor()
+ * @generated
+ */
+ int RADIO_GROUP_FIELD_EDITOR = 8;
+
+ /**
+ * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__ELEMENT_ID = LIST_FIELD_EDITOR__ELEMENT_ID;
+
+ /**
+ * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__PERSISTED_STATE = LIST_FIELD_EDITOR__PERSISTED_STATE;
+
+ /**
+ * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__TAGS = LIST_FIELD_EDITOR__TAGS;
+
+ /**
+ * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__CONTRIBUTOR_URI = LIST_FIELD_EDITOR__CONTRIBUTOR_URI;
+
+ /**
+ * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__TRANSIENT_DATA = LIST_FIELD_EDITOR__TRANSIENT_DATA;
+
+ /**
+ * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__WIDGET = LIST_FIELD_EDITOR__WIDGET;
+
+ /**
+ * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__RENDERER = LIST_FIELD_EDITOR__RENDERER;
+
+ /**
+ * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__TO_BE_RENDERED = LIST_FIELD_EDITOR__TO_BE_RENDERED;
+
+ /**
+ * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__ON_TOP = LIST_FIELD_EDITOR__ON_TOP;
+
+ /**
+ * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__VISIBLE = LIST_FIELD_EDITOR__VISIBLE;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__PARENT = LIST_FIELD_EDITOR__PARENT;
+
+ /**
+ * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__CONTAINER_DATA = LIST_FIELD_EDITOR__CONTAINER_DATA;
+
+ /**
+ * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__CUR_SHARED_REF = LIST_FIELD_EDITOR__CUR_SHARED_REF;
+
+ /**
+ * The feature id for the '<em><b>Visible When</b></em>' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__VISIBLE_WHEN = LIST_FIELD_EDITOR__VISIBLE_WHEN;
+
+ /**
+ * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__ACCESSIBILITY_PHRASE = LIST_FIELD_EDITOR__ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = LIST_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__LABEL = LIST_FIELD_EDITOR__LABEL;
+
+ /**
+ * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__PREFERENCE_NAME = LIST_FIELD_EDITOR__PREFERENCE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__DEFAULT_VALUE = LIST_FIELD_EDITOR__DEFAULT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__DEFAULT_VALUE_TYPED = LIST_FIELD_EDITOR__DEFAULT_VALUE_TYPED;
+
+ /**
+ * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__BUNDLE = LIST_FIELD_EDITOR__BUNDLE;
+
+ /**
+ * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__PREFERENCES = LIST_FIELD_EDITOR__PREFERENCES;
+
+ /**
+ * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__EQUINOX_PATH = LIST_FIELD_EDITOR__EQUINOX_PATH;
+
+ /**
+ * The feature id for the '<em><b>Contribution URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__CONTRIBUTION_URI = LIST_FIELD_EDITOR__CONTRIBUTION_URI;
+
+ /**
+ * The feature id for the '<em><b>Object</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__OBJECT = LIST_FIELD_EDITOR__OBJECT;
+
+ /**
+ * The feature id for the '<em><b>Entries</b></em>' reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR__ENTRIES = LIST_FIELD_EDITOR__ENTRIES;
+
+ /**
+ * The number of structural features of the '
+ * <em>Radio Group Field Editor</em>' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int RADIO_GROUP_FIELD_EDITOR_FEATURE_COUNT = LIST_FIELD_EDITOR_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ScaleFieldEditorImpl
+ * <em>Scale Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ScaleFieldEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getScaleFieldEditor()
+ * @generated
+ */
+ int SCALE_FIELD_EDITOR = 9;
+
+ /**
+ * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__ELEMENT_ID = FIELD_EDITOR__ELEMENT_ID;
+
+ /**
+ * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__PERSISTED_STATE = FIELD_EDITOR__PERSISTED_STATE;
+
+ /**
+ * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__TAGS = FIELD_EDITOR__TAGS;
+
+ /**
+ * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__CONTRIBUTOR_URI = FIELD_EDITOR__CONTRIBUTOR_URI;
+
+ /**
+ * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__TRANSIENT_DATA = FIELD_EDITOR__TRANSIENT_DATA;
+
+ /**
+ * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__WIDGET = FIELD_EDITOR__WIDGET;
+
+ /**
+ * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__RENDERER = FIELD_EDITOR__RENDERER;
+
+ /**
+ * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__TO_BE_RENDERED = FIELD_EDITOR__TO_BE_RENDERED;
+
+ /**
+ * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__ON_TOP = FIELD_EDITOR__ON_TOP;
+
+ /**
+ * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__VISIBLE = FIELD_EDITOR__VISIBLE;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__PARENT = FIELD_EDITOR__PARENT;
+
+ /**
+ * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__CONTAINER_DATA = FIELD_EDITOR__CONTAINER_DATA;
+
+ /**
+ * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__CUR_SHARED_REF = FIELD_EDITOR__CUR_SHARED_REF;
+
+ /**
+ * The feature id for the '<em><b>Visible When</b></em>' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__VISIBLE_WHEN = FIELD_EDITOR__VISIBLE_WHEN;
+
+ /**
+ * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__ACCESSIBILITY_PHRASE = FIELD_EDITOR__ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__LABEL = FIELD_EDITOR__LABEL;
+
+ /**
+ * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__PREFERENCE_NAME = FIELD_EDITOR__PREFERENCE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__DEFAULT_VALUE = FIELD_EDITOR__DEFAULT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__DEFAULT_VALUE_TYPED = FIELD_EDITOR__DEFAULT_VALUE_TYPED;
+
+ /**
+ * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__BUNDLE = FIELD_EDITOR__BUNDLE;
+
+ /**
+ * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__PREFERENCES = FIELD_EDITOR__PREFERENCES;
+
+ /**
+ * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__EQUINOX_PATH = FIELD_EDITOR__EQUINOX_PATH;
+
+ /**
+ * The feature id for the '<em><b>Min Value</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__MIN_VALUE = FIELD_EDITOR_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Max Value</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__MAX_VALUE = FIELD_EDITOR_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Increment Value</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR__INCREMENT_VALUE = FIELD_EDITOR_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Scale Field Editor</em>'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int SCALE_FIELD_EDITOR_FEATURE_COUNT = FIELD_EDITOR_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.StringFieldEditorImpl
+ * <em>String Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.StringFieldEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getStringFieldEditor()
+ * @generated
+ */
+ int STRING_FIELD_EDITOR = 10;
+
+ /**
+ * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__ELEMENT_ID = FIELD_EDITOR__ELEMENT_ID;
+
+ /**
+ * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__PERSISTED_STATE = FIELD_EDITOR__PERSISTED_STATE;
+
+ /**
+ * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__TAGS = FIELD_EDITOR__TAGS;
+
+ /**
+ * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__CONTRIBUTOR_URI = FIELD_EDITOR__CONTRIBUTOR_URI;
+
+ /**
+ * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__TRANSIENT_DATA = FIELD_EDITOR__TRANSIENT_DATA;
+
+ /**
+ * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__WIDGET = FIELD_EDITOR__WIDGET;
+
+ /**
+ * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__RENDERER = FIELD_EDITOR__RENDERER;
+
+ /**
+ * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__TO_BE_RENDERED = FIELD_EDITOR__TO_BE_RENDERED;
+
+ /**
+ * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__ON_TOP = FIELD_EDITOR__ON_TOP;
+
+ /**
+ * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__VISIBLE = FIELD_EDITOR__VISIBLE;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__PARENT = FIELD_EDITOR__PARENT;
+
+ /**
+ * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__CONTAINER_DATA = FIELD_EDITOR__CONTAINER_DATA;
+
+ /**
+ * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__CUR_SHARED_REF = FIELD_EDITOR__CUR_SHARED_REF;
+
+ /**
+ * The feature id for the '<em><b>Visible When</b></em>' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__VISIBLE_WHEN = FIELD_EDITOR__VISIBLE_WHEN;
+
+ /**
+ * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__ACCESSIBILITY_PHRASE = FIELD_EDITOR__ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__LABEL = FIELD_EDITOR__LABEL;
+
+ /**
+ * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__PREFERENCE_NAME = FIELD_EDITOR__PREFERENCE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__DEFAULT_VALUE = FIELD_EDITOR__DEFAULT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__DEFAULT_VALUE_TYPED = FIELD_EDITOR__DEFAULT_VALUE_TYPED;
+
+ /**
+ * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__BUNDLE = FIELD_EDITOR__BUNDLE;
+
+ /**
+ * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__PREFERENCES = FIELD_EDITOR__PREFERENCES;
+
+ /**
+ * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__EQUINOX_PATH = FIELD_EDITOR__EQUINOX_PATH;
+
+ /**
+ * The feature id for the '<em><b>Max Length</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR__MAX_LENGTH = FIELD_EDITOR_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>String Field Editor</em>'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int STRING_FIELD_EDITOR_FEATURE_COUNT = FIELD_EDITOR_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.IntegerFieldEditorImpl
+ * <em>Integer Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.IntegerFieldEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getIntegerFieldEditor()
+ * @generated
+ */
+ int INTEGER_FIELD_EDITOR = 11;
+
+ /**
+ * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__ELEMENT_ID = FIELD_EDITOR__ELEMENT_ID;
+
+ /**
+ * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__PERSISTED_STATE = FIELD_EDITOR__PERSISTED_STATE;
+
+ /**
+ * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__TAGS = FIELD_EDITOR__TAGS;
+
+ /**
+ * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__CONTRIBUTOR_URI = FIELD_EDITOR__CONTRIBUTOR_URI;
+
+ /**
+ * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__TRANSIENT_DATA = FIELD_EDITOR__TRANSIENT_DATA;
+
+ /**
+ * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__WIDGET = FIELD_EDITOR__WIDGET;
+
+ /**
+ * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__RENDERER = FIELD_EDITOR__RENDERER;
+
+ /**
+ * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__TO_BE_RENDERED = FIELD_EDITOR__TO_BE_RENDERED;
+
+ /**
+ * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__ON_TOP = FIELD_EDITOR__ON_TOP;
+
+ /**
+ * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__VISIBLE = FIELD_EDITOR__VISIBLE;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__PARENT = FIELD_EDITOR__PARENT;
+
+ /**
+ * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__CONTAINER_DATA = FIELD_EDITOR__CONTAINER_DATA;
+
+ /**
+ * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__CUR_SHARED_REF = FIELD_EDITOR__CUR_SHARED_REF;
+
+ /**
+ * The feature id for the '<em><b>Visible When</b></em>' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__VISIBLE_WHEN = FIELD_EDITOR__VISIBLE_WHEN;
+
+ /**
+ * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__ACCESSIBILITY_PHRASE = FIELD_EDITOR__ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__LABEL = FIELD_EDITOR__LABEL;
+
+ /**
+ * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__PREFERENCE_NAME = FIELD_EDITOR__PREFERENCE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__DEFAULT_VALUE = FIELD_EDITOR__DEFAULT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__DEFAULT_VALUE_TYPED = FIELD_EDITOR__DEFAULT_VALUE_TYPED;
+
+ /**
+ * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__BUNDLE = FIELD_EDITOR__BUNDLE;
+
+ /**
+ * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__PREFERENCES = FIELD_EDITOR__PREFERENCES;
+
+ /**
+ * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__EQUINOX_PATH = FIELD_EDITOR__EQUINOX_PATH;
+
+ /**
+ * The feature id for the '<em><b>Min Valid Value</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__MIN_VALID_VALUE = FIELD_EDITOR_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Max Valid Value</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR__MAX_VALID_VALUE = FIELD_EDITOR_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Integer Field Editor</em>'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int INTEGER_FIELD_EDITOR_FEATURE_COUNT = FIELD_EDITOR_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FileFieldEditorImpl
+ * <em>File Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FileFieldEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getFileFieldEditor()
+ * @generated
+ */
+ int FILE_FIELD_EDITOR = 12;
+
+ /**
+ * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__ELEMENT_ID = FIELD_EDITOR__ELEMENT_ID;
+
+ /**
+ * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__PERSISTED_STATE = FIELD_EDITOR__PERSISTED_STATE;
+
+ /**
+ * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__TAGS = FIELD_EDITOR__TAGS;
+
+ /**
+ * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__CONTRIBUTOR_URI = FIELD_EDITOR__CONTRIBUTOR_URI;
+
+ /**
+ * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__TRANSIENT_DATA = FIELD_EDITOR__TRANSIENT_DATA;
+
+ /**
+ * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__WIDGET = FIELD_EDITOR__WIDGET;
+
+ /**
+ * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__RENDERER = FIELD_EDITOR__RENDERER;
+
+ /**
+ * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__TO_BE_RENDERED = FIELD_EDITOR__TO_BE_RENDERED;
+
+ /**
+ * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__ON_TOP = FIELD_EDITOR__ON_TOP;
+
+ /**
+ * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__VISIBLE = FIELD_EDITOR__VISIBLE;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__PARENT = FIELD_EDITOR__PARENT;
+
+ /**
+ * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__CONTAINER_DATA = FIELD_EDITOR__CONTAINER_DATA;
+
+ /**
+ * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__CUR_SHARED_REF = FIELD_EDITOR__CUR_SHARED_REF;
+
+ /**
+ * The feature id for the '<em><b>Visible When</b></em>' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__VISIBLE_WHEN = FIELD_EDITOR__VISIBLE_WHEN;
+
+ /**
+ * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__ACCESSIBILITY_PHRASE = FIELD_EDITOR__ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__LABEL = FIELD_EDITOR__LABEL;
+
+ /**
+ * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__PREFERENCE_NAME = FIELD_EDITOR__PREFERENCE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__DEFAULT_VALUE = FIELD_EDITOR__DEFAULT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__DEFAULT_VALUE_TYPED = FIELD_EDITOR__DEFAULT_VALUE_TYPED;
+
+ /**
+ * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__BUNDLE = FIELD_EDITOR__BUNDLE;
+
+ /**
+ * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__PREFERENCES = FIELD_EDITOR__PREFERENCES;
+
+ /**
+ * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__EQUINOX_PATH = FIELD_EDITOR__EQUINOX_PATH;
+
+ /**
+ * The feature id for the '<em><b>Contribution URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__CONTRIBUTION_URI = FIELD_EDITOR_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Object</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR__OBJECT = FIELD_EDITOR_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>File Field Editor</em>'
+ * class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int FILE_FIELD_EDITOR_FEATURE_COUNT = FIELD_EDITOR_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.DirectoryFieldEditorImpl
+ * <em>Directory Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.DirectoryFieldEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getDirectoryFieldEditor()
+ * @generated
+ */
+ int DIRECTORY_FIELD_EDITOR = 13;
+
+ /**
+ * The feature id for the '<em><b>Element Id</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__ELEMENT_ID = FIELD_EDITOR__ELEMENT_ID;
+
+ /**
+ * The feature id for the '<em><b>Persisted State</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__PERSISTED_STATE = FIELD_EDITOR__PERSISTED_STATE;
+
+ /**
+ * The feature id for the '<em><b>Tags</b></em>' attribute list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__TAGS = FIELD_EDITOR__TAGS;
+
+ /**
+ * The feature id for the '<em><b>Contributor URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__CONTRIBUTOR_URI = FIELD_EDITOR__CONTRIBUTOR_URI;
+
+ /**
+ * The feature id for the '<em><b>Transient Data</b></em>' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__TRANSIENT_DATA = FIELD_EDITOR__TRANSIENT_DATA;
+
+ /**
+ * The feature id for the '<em><b>Widget</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__WIDGET = FIELD_EDITOR__WIDGET;
+
+ /**
+ * The feature id for the '<em><b>Renderer</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__RENDERER = FIELD_EDITOR__RENDERER;
+
+ /**
+ * The feature id for the '<em><b>To Be Rendered</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__TO_BE_RENDERED = FIELD_EDITOR__TO_BE_RENDERED;
+
+ /**
+ * The feature id for the '<em><b>On Top</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__ON_TOP = FIELD_EDITOR__ON_TOP;
+
+ /**
+ * The feature id for the '<em><b>Visible</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__VISIBLE = FIELD_EDITOR__VISIBLE;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' container reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__PARENT = FIELD_EDITOR__PARENT;
+
+ /**
+ * The feature id for the '<em><b>Container Data</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__CONTAINER_DATA = FIELD_EDITOR__CONTAINER_DATA;
+
+ /**
+ * The feature id for the '<em><b>Cur Shared Ref</b></em>' reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__CUR_SHARED_REF = FIELD_EDITOR__CUR_SHARED_REF;
+
+ /**
+ * The feature id for the '<em><b>Visible When</b></em>' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__VISIBLE_WHEN = FIELD_EDITOR__VISIBLE_WHEN;
+
+ /**
+ * The feature id for the '<em><b>Accessibility Phrase</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__ACCESSIBILITY_PHRASE = FIELD_EDITOR__ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Localized Accessibility Phrase</b></em>'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE = FIELD_EDITOR__LOCALIZED_ACCESSIBILITY_PHRASE;
+
+ /**
+ * The feature id for the '<em><b>Label</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__LABEL = FIELD_EDITOR__LABEL;
+
+ /**
+ * The feature id for the '<em><b>Preference Name</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__PREFERENCE_NAME = FIELD_EDITOR__PREFERENCE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Value</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__DEFAULT_VALUE = FIELD_EDITOR__DEFAULT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Default Value Typed</b></em>' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__DEFAULT_VALUE_TYPED = FIELD_EDITOR__DEFAULT_VALUE_TYPED;
+
+ /**
+ * The feature id for the '<em><b>Bundle</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__BUNDLE = FIELD_EDITOR__BUNDLE;
+
+ /**
+ * The feature id for the '<em><b>Preferences</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__PREFERENCES = FIELD_EDITOR__PREFERENCES;
+
+ /**
+ * The feature id for the '<em><b>Equinox Path</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__EQUINOX_PATH = FIELD_EDITOR__EQUINOX_PATH;
+
+ /**
+ * The feature id for the '<em><b>Contribution URI</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__CONTRIBUTION_URI = FIELD_EDITOR_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Object</b></em>' attribute. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR__OBJECT = FIELD_EDITOR_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Directory Field Editor</em>
+ * ' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int DIRECTORY_FIELD_EDITOR_FEATURE_COUNT = FIELD_EDITOR_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud
+ * <em>List Crud</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getListCrud()
+ * @generated
+ */
+ int LIST_CRUD = 14;
+
+ /**
+ * The number of structural features of the '<em>List Crud</em>' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_CRUD_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFoldImpl
+ * <em>List Fold</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFoldImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getListFold()
+ * @generated
+ */
+ int LIST_FOLD = 15;
+
+ /**
+ * The number of structural features of the '<em>List Fold</em>' class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ * @ordered
+ */
+ int LIST_FOLD_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle
+ * <em>Boolean Field Style</em>}' enum. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getBooleanFieldStyle()
+ * @generated
+ */
+ int BOOLEAN_FIELD_STYLE = 16;
+
+ /**
+ * The meta object id for the '<em>String Buffer</em>' data type. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see java.lang.StringBuffer
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getStringBuffer()
+ * @generated
+ */
+ int STRING_BUFFER = 17;
+
+ /**
+ * The meta object id for the '<em>Preferences</em>' data type. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.osgi.service.prefs.Preferences
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getPreferences()
+ * @generated
+ */
+ int PREFERENCES = 18;
+
+ /**
+ * Returns the meta object for class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory
+ * <em>Category</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Category</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory
+ * @generated
+ */
+ EClass getPreferencesCategory();
+
+ /**
+ * Returns the meta object for the attribute '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getName
+ * <em>Name</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getName()
+ * @see #getPreferencesCategory()
+ * @generated
+ */
+ EAttribute getPreferencesCategory_Name();
+
+ /**
+ * Returns the meta object for the containment reference list '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getChildCategories
+ * <em>Child Categories</em>}'. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @return the meta object for the containment reference list '
+ * <em>Child Categories</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getChildCategories()
+ * @see #getPreferencesCategory()
+ * @generated
+ */
+ EReference getPreferencesCategory_ChildCategories();
+
+ /**
+ * Returns the meta object for the container reference '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getParentCategory
+ * <em>Parent Category</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the container reference '
+ * <em>Parent Category</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getParentCategory()
+ * @see #getPreferencesCategory()
+ * @generated
+ */
+ EReference getPreferencesCategory_ParentCategory();
+
+ /**
+ * Returns the meta object for the containment reference '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getPage
+ * <em>Page</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the containment reference '<em>Page</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getPage()
+ * @see #getPreferencesCategory()
+ * @generated
+ */
+ EReference getPreferencesCategory_Page();
+
+ /**
+ * Returns the meta object for the attribute '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getId
+ * <em>Id</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Id</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory#getId()
+ * @see #getPreferencesCategory()
+ * @generated
+ */
+ EAttribute getPreferencesCategory_Id();
+
+ /**
+ * Returns the meta object for class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage
+ * <em>Page</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Page</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage
+ * @generated
+ */
+ EClass getPreferencesPage();
+
+ /**
+ * Returns the meta object for the container reference '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage#getCategory
+ * <em>Category</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the container reference '<em>Category</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage#getCategory()
+ * @see #getPreferencesPage()
+ * @generated
+ */
+ EReference getPreferencesPage_Category();
+
+ /**
+ * Returns the meta object for the attribute '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage#getDescription
+ * <em>Description</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Description</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage#getDescription()
+ * @see #getPreferencesPage()
+ * @generated
+ */
+ EAttribute getPreferencesPage_Description();
+
+ /**
+ * Returns the meta object for class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor
+ * <em>Field Editor</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Field Editor</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor
+ * @generated
+ */
+ EClass getFieldEditor();
+
+ /**
+ * Returns the meta object for the attribute '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getLabel
+ * <em>Label</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Label</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getLabel()
+ * @see #getFieldEditor()
+ * @generated
+ */
+ EAttribute getFieldEditor_Label();
+
+ /**
+ * Returns the meta object for the attribute '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getPreferenceName
+ * <em>Preference Name</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Preference Name</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getPreferenceName()
+ * @see #getFieldEditor()
+ * @generated
+ */
+ EAttribute getFieldEditor_PreferenceName();
+
+ /**
+ * Returns the meta object for the attribute '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getDefaultValue
+ * <em>Default Value</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Default Value</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getDefaultValue()
+ * @see #getFieldEditor()
+ * @generated
+ */
+ EAttribute getFieldEditor_DefaultValue();
+
+ /**
+ * Returns the meta object for the attribute '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getDefaultValueTyped
+ * <em>Default Value Typed</em>}'. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @return the meta object for the attribute '<em>Default Value Typed</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getDefaultValueTyped()
+ * @see #getFieldEditor()
+ * @generated
+ */
+ EAttribute getFieldEditor_DefaultValueTyped();
+
+ /**
+ * Returns the meta object for the attribute '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getBundle
+ * <em>Bundle</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Bundle</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getBundle()
+ * @see #getFieldEditor()
+ * @generated
+ */
+ EAttribute getFieldEditor_Bundle();
+
+ /**
+ * Returns the meta object for the attribute '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getPreferences
+ * <em>Preferences</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Preferences</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getPreferences()
+ * @see #getFieldEditor()
+ * @generated
+ */
+ EAttribute getFieldEditor_Preferences();
+
+ /**
+ * Returns the meta object for the attribute '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getEquinoxPath
+ * <em>Equinox Path</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Equinox Path</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor#getEquinoxPath()
+ * @see #getFieldEditor()
+ * @generated
+ */
+ EAttribute getFieldEditor_EquinoxPath();
+
+ /**
+ * Returns the meta object for class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor
+ * <em>Boolean Field Editor</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for class '<em>Boolean Field Editor</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor
+ * @generated
+ */
+ EClass getBooleanFieldEditor();
+
+ /**
+ * Returns the meta object for the attribute '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor#getStyle
+ * <em>Style</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Style</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor#getStyle()
+ * @see #getBooleanFieldEditor()
+ * @generated
+ */
+ EAttribute getBooleanFieldEditor_Style();
+
+ /**
+ * Returns the meta object for class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor
+ * <em>List Field Editor</em>}'. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @return the meta object for class '<em>List Field Editor</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor
+ * @generated
+ */
+ EClass getListFieldEditor();
+
+ /**
+ * Returns the meta object for the reference list '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor#getEntries
+ * <em>Entries</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the reference list '<em>Entries</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor#getEntries()
+ * @see #getListFieldEditor()
+ * @generated
+ */
+ EReference getListFieldEditor_Entries();
+
+ /**
+ * Returns the meta object for class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry <em>Entry</em>}
+ * '. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>Entry</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry
+ * @generated
+ */
+ EClass getEntry();
+
+ /**
+ * Returns the meta object for the attribute '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry#getName
+ * <em>Name</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry#getName()
+ * @see #getEntry()
+ * @generated
+ */
+ EAttribute getEntry_Name();
+
+ /**
+ * Returns the meta object for the attribute '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry#getValue
+ * <em>Value</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry#getValue()
+ * @see #getEntry()
+ * @generated
+ */
+ EAttribute getEntry_Value();
+
+ /**
+ * Returns the meta object for class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ComboFieldEditor
+ * <em>Combo Field Editor</em>}'. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @return the meta object for class '<em>Combo Field Editor</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ComboFieldEditor
+ * @generated
+ */
+ EClass getComboFieldEditor();
+
+ /**
+ * Returns the meta object for class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor
+ * <em>List Editor</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>List Editor</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor
+ * @generated
+ */
+ EClass getListEditor();
+
+ /**
+ * Returns the meta object for the reference '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor#getListCrud
+ * <em>List Crud</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the reference '<em>List Crud</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor#getListCrud()
+ * @see #getListEditor()
+ * @generated
+ */
+ EReference getListEditor_ListCrud();
+
+ /**
+ * Returns the meta object for the reference '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor#getListFold
+ * <em>List Fold</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the reference '<em>List Fold</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor#getListFold()
+ * @see #getListEditor()
+ * @generated
+ */
+ EReference getListEditor_ListFold();
+
+ /**
+ * Returns the meta object for class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.RadioGroupFieldEditor
+ * <em>Radio Group Field Editor</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for class '<em>Radio Group Field Editor</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.RadioGroupFieldEditor
+ * @generated
+ */
+ EClass getRadioGroupFieldEditor();
+
+ /**
+ * Returns the meta object for class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor
+ * <em>Scale Field Editor</em>}'. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @return the meta object for class '<em>Scale Field Editor</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor
+ * @generated
+ */
+ EClass getScaleFieldEditor();
+
+ /**
+ * Returns the meta object for the attribute '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getMinValue
+ * <em>Min Value</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Min Value</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getMinValue()
+ * @see #getScaleFieldEditor()
+ * @generated
+ */
+ EAttribute getScaleFieldEditor_MinValue();
+
+ /**
+ * Returns the meta object for the attribute '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getMaxValue
+ * <em>Max Value</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Max Value</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getMaxValue()
+ * @see #getScaleFieldEditor()
+ * @generated
+ */
+ EAttribute getScaleFieldEditor_MaxValue();
+
+ /**
+ * Returns the meta object for the attribute '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getIncrementValue
+ * <em>Increment Value</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Increment Value</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor#getIncrementValue()
+ * @see #getScaleFieldEditor()
+ * @generated
+ */
+ EAttribute getScaleFieldEditor_IncrementValue();
+
+ /**
+ * Returns the meta object for class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor
+ * <em>String Field Editor</em>}'. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @return the meta object for class '<em>String Field Editor</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor
+ * @generated
+ */
+ EClass getStringFieldEditor();
+
+ /**
+ * Returns the meta object for the attribute '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor#getMaxLength
+ * <em>Max Length</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Max Length</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor#getMaxLength()
+ * @see #getStringFieldEditor()
+ * @generated
+ */
+ EAttribute getStringFieldEditor_MaxLength();
+
+ /**
+ * Returns the meta object for class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor
+ * <em>Integer Field Editor</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for class '<em>Integer Field Editor</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor
+ * @generated
+ */
+ EClass getIntegerFieldEditor();
+
+ /**
+ * Returns the meta object for the attribute '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor#getMinValidValue
+ * <em>Min Valid Value</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Min Valid Value</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor#getMinValidValue()
+ * @see #getIntegerFieldEditor()
+ * @generated
+ */
+ EAttribute getIntegerFieldEditor_MinValidValue();
+
+ /**
+ * Returns the meta object for the attribute '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor#getMaxValidValue
+ * <em>Max Valid Value</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for the attribute '<em>Max Valid Value</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor#getMaxValidValue()
+ * @see #getIntegerFieldEditor()
+ * @generated
+ */
+ EAttribute getIntegerFieldEditor_MaxValidValue();
+
+ /**
+ * Returns the meta object for class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FileFieldEditor
+ * <em>File Field Editor</em>}'. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @return the meta object for class '<em>File Field Editor</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FileFieldEditor
+ * @generated
+ */
+ EClass getFileFieldEditor();
+
+ /**
+ * Returns the meta object for class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.DirectoryFieldEditor
+ * <em>Directory Field Editor</em>}'. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the meta object for class '<em>Directory Field Editor</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.DirectoryFieldEditor
+ * @generated
+ */
+ EClass getDirectoryFieldEditor();
+
+ /**
+ * Returns the meta object for class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud
+ * <em>List Crud</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>List Crud</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud
+ * @generated
+ */
+ EClass getListCrud();
+
+ /**
+ * Returns the meta object for class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold
+ * <em>List Fold</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for class '<em>List Fold</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold
+ * @generated
+ */
+ EClass getListFold();
+
+ /**
+ * Returns the meta object for enum '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle
+ * <em>Boolean Field Style</em>}'. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @return the meta object for enum '<em>Boolean Field Style</em>'.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle
+ * @generated
+ */
+ EEnum getBooleanFieldStyle();
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.StringBuffer
+ * <em>String Buffer</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for data type '<em>String Buffer</em>'.
+ * @see java.lang.StringBuffer
+ * @model instanceClass="java.lang.StringBuffer"
+ * @generated
+ */
+ EDataType getStringBuffer();
+
+ /**
+ * Returns the meta object for data type '
+ * {@link org.osgi.service.prefs.Preferences <em>Preferences</em>}'. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the meta object for data type '<em>Preferences</em>'.
+ * @see org.osgi.service.prefs.Preferences
+ * @model instanceClass="org.osgi.service.prefs.Preferences"
+ * @generated
+ */
+ EDataType getPreferences();
+
+ /**
+ * Returns the factory that creates the instances of the model. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ PreferencesFactory getPreferencesFactory();
+
+ /**
+ * <!-- begin-user-doc --> Defines literals for the meta objects that
+ * represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesCategoryImpl
+ * <em>Category</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesCategoryImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getPreferencesCategory()
+ * @generated
+ */
+ EClass PREFERENCES_CATEGORY = eINSTANCE.getPreferencesCategory();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute
+ * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute PREFERENCES_CATEGORY__NAME = eINSTANCE
+ .getPreferencesCategory_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Child Categories</b></em>'
+ * containment reference list feature. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ EReference PREFERENCES_CATEGORY__CHILD_CATEGORIES = eINSTANCE
+ .getPreferencesCategory_ChildCategories();
+
+ /**
+ * The meta object literal for the '<em><b>Parent Category</b></em>'
+ * container reference feature. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ EReference PREFERENCES_CATEGORY__PARENT_CATEGORY = eINSTANCE
+ .getPreferencesCategory_ParentCategory();
+
+ /**
+ * The meta object literal for the '<em><b>Page</b></em>' containment
+ * reference feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference PREFERENCES_CATEGORY__PAGE = eINSTANCE
+ .getPreferencesCategory_Page();
+
+ /**
+ * The meta object literal for the '<em><b>Id</b></em>' attribute
+ * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute PREFERENCES_CATEGORY__ID = eINSTANCE
+ .getPreferencesCategory_Id();
+
+ /**
+ * The meta object literal for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPageImpl
+ * <em>Page</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPageImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getPreferencesPage()
+ * @generated
+ */
+ EClass PREFERENCES_PAGE = eINSTANCE.getPreferencesPage();
+
+ /**
+ * The meta object literal for the '<em><b>Category</b></em>' container
+ * reference feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference PREFERENCES_PAGE__CATEGORY = eINSTANCE
+ .getPreferencesPage_Category();
+
+ /**
+ * The meta object literal for the '<em><b>Description</b></em>'
+ * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute PREFERENCES_PAGE__DESCRIPTION = eINSTANCE
+ .getPreferencesPage_Description();
+
+ /**
+ * The meta object literal for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl
+ * <em>Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FieldEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getFieldEditor()
+ * @generated
+ */
+ EClass FIELD_EDITOR = eINSTANCE.getFieldEditor();
+
+ /**
+ * The meta object literal for the '<em><b>Label</b></em>' attribute
+ * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute FIELD_EDITOR__LABEL = eINSTANCE.getFieldEditor_Label();
+
+ /**
+ * The meta object literal for the '<em><b>Preference Name</b></em>'
+ * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute FIELD_EDITOR__PREFERENCE_NAME = eINSTANCE
+ .getFieldEditor_PreferenceName();
+
+ /**
+ * The meta object literal for the '<em><b>Default Value</b></em>'
+ * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute FIELD_EDITOR__DEFAULT_VALUE = eINSTANCE
+ .getFieldEditor_DefaultValue();
+
+ /**
+ * The meta object literal for the '<em><b>Default Value Typed</b></em>'
+ * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute FIELD_EDITOR__DEFAULT_VALUE_TYPED = eINSTANCE
+ .getFieldEditor_DefaultValueTyped();
+
+ /**
+ * The meta object literal for the '<em><b>Bundle</b></em>' attribute
+ * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute FIELD_EDITOR__BUNDLE = eINSTANCE.getFieldEditor_Bundle();
+
+ /**
+ * The meta object literal for the '<em><b>Preferences</b></em>'
+ * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute FIELD_EDITOR__PREFERENCES = eINSTANCE
+ .getFieldEditor_Preferences();
+
+ /**
+ * The meta object literal for the '<em><b>Equinox Path</b></em>'
+ * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute FIELD_EDITOR__EQUINOX_PATH = eINSTANCE
+ .getFieldEditor_EquinoxPath();
+
+ /**
+ * The meta object literal for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.BooleanFieldEditorImpl
+ * <em>Boolean Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.BooleanFieldEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getBooleanFieldEditor()
+ * @generated
+ */
+ EClass BOOLEAN_FIELD_EDITOR = eINSTANCE.getBooleanFieldEditor();
+
+ /**
+ * The meta object literal for the '<em><b>Style</b></em>' attribute
+ * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute BOOLEAN_FIELD_EDITOR__STYLE = eINSTANCE
+ .getBooleanFieldEditor_Style();
+
+ /**
+ * The meta object literal for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFieldEditorImpl
+ * <em>List Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFieldEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getListFieldEditor()
+ * @generated
+ */
+ EClass LIST_FIELD_EDITOR = eINSTANCE.getListFieldEditor();
+
+ /**
+ * The meta object literal for the '<em><b>Entries</b></em>' reference
+ * list feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference LIST_FIELD_EDITOR__ENTRIES = eINSTANCE
+ .getListFieldEditor_Entries();
+
+ /**
+ * The meta object literal for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.EntryImpl
+ * <em>Entry</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.EntryImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getEntry()
+ * @generated
+ */
+ EClass ENTRY = eINSTANCE.getEntry();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute
+ * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute ENTRY__NAME = eINSTANCE.getEntry_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute
+ * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute ENTRY__VALUE = eINSTANCE.getEntry_Value();
+
+ /**
+ * The meta object literal for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ComboFieldEditorImpl
+ * <em>Combo Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ComboFieldEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getComboFieldEditor()
+ * @generated
+ */
+ EClass COMBO_FIELD_EDITOR = eINSTANCE.getComboFieldEditor();
+
+ /**
+ * The meta object literal for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListEditorImpl
+ * <em>List Editor</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getListEditor()
+ * @generated
+ */
+ EClass LIST_EDITOR = eINSTANCE.getListEditor();
+
+ /**
+ * The meta object literal for the '<em><b>List Crud</b></em>' reference
+ * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference LIST_EDITOR__LIST_CRUD = eINSTANCE.getListEditor_ListCrud();
+
+ /**
+ * The meta object literal for the '<em><b>List Fold</b></em>' reference
+ * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EReference LIST_EDITOR__LIST_FOLD = eINSTANCE.getListEditor_ListFold();
+
+ /**
+ * The meta object literal for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.RadioGroupFieldEditorImpl
+ * <em>Radio Group Field Editor</em>}' class. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.RadioGroupFieldEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getRadioGroupFieldEditor()
+ * @generated
+ */
+ EClass RADIO_GROUP_FIELD_EDITOR = eINSTANCE.getRadioGroupFieldEditor();
+
+ /**
+ * The meta object literal for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ScaleFieldEditorImpl
+ * <em>Scale Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ScaleFieldEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getScaleFieldEditor()
+ * @generated
+ */
+ EClass SCALE_FIELD_EDITOR = eINSTANCE.getScaleFieldEditor();
+
+ /**
+ * The meta object literal for the '<em><b>Min Value</b></em>' attribute
+ * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute SCALE_FIELD_EDITOR__MIN_VALUE = eINSTANCE
+ .getScaleFieldEditor_MinValue();
+
+ /**
+ * The meta object literal for the '<em><b>Max Value</b></em>' attribute
+ * feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute SCALE_FIELD_EDITOR__MAX_VALUE = eINSTANCE
+ .getScaleFieldEditor_MaxValue();
+
+ /**
+ * The meta object literal for the '<em><b>Increment Value</b></em>'
+ * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute SCALE_FIELD_EDITOR__INCREMENT_VALUE = eINSTANCE
+ .getScaleFieldEditor_IncrementValue();
+
+ /**
+ * The meta object literal for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.StringFieldEditorImpl
+ * <em>String Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.StringFieldEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getStringFieldEditor()
+ * @generated
+ */
+ EClass STRING_FIELD_EDITOR = eINSTANCE.getStringFieldEditor();
+
+ /**
+ * The meta object literal for the '<em><b>Max Length</b></em>'
+ * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute STRING_FIELD_EDITOR__MAX_LENGTH = eINSTANCE
+ .getStringFieldEditor_MaxLength();
+
+ /**
+ * The meta object literal for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.IntegerFieldEditorImpl
+ * <em>Integer Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.IntegerFieldEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getIntegerFieldEditor()
+ * @generated
+ */
+ EClass INTEGER_FIELD_EDITOR = eINSTANCE.getIntegerFieldEditor();
+
+ /**
+ * The meta object literal for the '<em><b>Min Valid Value</b></em>'
+ * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute INTEGER_FIELD_EDITOR__MIN_VALID_VALUE = eINSTANCE
+ .getIntegerFieldEditor_MinValidValue();
+
+ /**
+ * The meta object literal for the '<em><b>Max Valid Value</b></em>'
+ * attribute feature. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ EAttribute INTEGER_FIELD_EDITOR__MAX_VALID_VALUE = eINSTANCE
+ .getIntegerFieldEditor_MaxValidValue();
+
+ /**
+ * The meta object literal for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FileFieldEditorImpl
+ * <em>File Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.FileFieldEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getFileFieldEditor()
+ * @generated
+ */
+ EClass FILE_FIELD_EDITOR = eINSTANCE.getFileFieldEditor();
+
+ /**
+ * The meta object literal for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.DirectoryFieldEditorImpl
+ * <em>Directory Field Editor</em>}' class. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.DirectoryFieldEditorImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getDirectoryFieldEditor()
+ * @generated
+ */
+ EClass DIRECTORY_FIELD_EDITOR = eINSTANCE.getDirectoryFieldEditor();
+
+ /**
+ * The meta object literal for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud
+ * <em>List Crud</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getListCrud()
+ * @generated
+ */
+ EClass LIST_CRUD = eINSTANCE.getListCrud();
+
+ /**
+ * The meta object literal for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFoldImpl
+ * <em>List Fold</em>}' class. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.ListFoldImpl
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getListFold()
+ * @generated
+ */
+ EClass LIST_FOLD = eINSTANCE.getListFold();
+
+ /**
+ * The meta object literal for the '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle
+ * <em>Boolean Field Style</em>}' enum. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getBooleanFieldStyle()
+ * @generated
+ */
+ EEnum BOOLEAN_FIELD_STYLE = eINSTANCE.getBooleanFieldStyle();
+
+ /**
+ * The meta object literal for the '<em>String Buffer</em>' data type.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see java.lang.StringBuffer
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getStringBuffer()
+ * @generated
+ */
+ EDataType STRING_BUFFER = eINSTANCE.getStringBuffer();
+
+ /**
+ * The meta object literal for the '<em>Preferences</em>' data type.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see org.osgi.service.prefs.Preferences
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.impl.PreferencesPackageImpl#getPreferences()
+ * @generated
+ */
+ EDataType PREFERENCES = eINSTANCE.getPreferences();
+
+ }
+
+} // PreferencesPackage
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/util/PreferencesAdapterFactory.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/util/PreferencesAdapterFactory.java
new file mode 100644
index 0000000..0e8196d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/util/PreferencesAdapterFactory.java
@@ -0,0 +1,558 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.util;
+
+import org.eclipse.e4.ui.model.application.MApplicationElement;
+import org.eclipse.e4.ui.model.application.MContribution;
+
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MLocalizable;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.*;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> The <b>Adapter Factory</b> for the model. It provides
+ * an adapter <code>createXXX</code> method for each class of the model. <!--
+ * end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage
+ * @generated
+ */
+public class PreferencesAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected static PreferencesPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ public PreferencesAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = PreferencesPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc --> This implementation returns <code>true</code> if
+ * the object is either the model's package or is an instance object of the
+ * model. <!-- end-user-doc -->
+ *
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject) object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected PreferencesSwitch<Adapter> modelSwitch = new PreferencesSwitch<Adapter>() {
+ @Override
+ public Adapter casePreferencesCategory(PreferencesCategory object) {
+ return createPreferencesCategoryAdapter();
+ }
+
+ @Override
+ public Adapter casePreferencesPage(PreferencesPage object) {
+ return createPreferencesPageAdapter();
+ }
+
+ @Override
+ public <T> Adapter caseFieldEditor(FieldEditor<T> object) {
+ return createFieldEditorAdapter();
+ }
+
+ @Override
+ public Adapter caseBooleanFieldEditor(BooleanFieldEditor object) {
+ return createBooleanFieldEditorAdapter();
+ }
+
+ @Override
+ public Adapter caseListFieldEditor(ListFieldEditor object) {
+ return createListFieldEditorAdapter();
+ }
+
+ @Override
+ public Adapter caseEntry(Entry object) {
+ return createEntryAdapter();
+ }
+
+ @Override
+ public Adapter caseComboFieldEditor(ComboFieldEditor object) {
+ return createComboFieldEditorAdapter();
+ }
+
+ @Override
+ public Adapter caseListEditor(ListEditor object) {
+ return createListEditorAdapter();
+ }
+
+ @Override
+ public Adapter caseRadioGroupFieldEditor(RadioGroupFieldEditor object) {
+ return createRadioGroupFieldEditorAdapter();
+ }
+
+ @Override
+ public Adapter caseScaleFieldEditor(ScaleFieldEditor object) {
+ return createScaleFieldEditorAdapter();
+ }
+
+ @Override
+ public Adapter caseStringFieldEditor(StringFieldEditor object) {
+ return createStringFieldEditorAdapter();
+ }
+
+ @Override
+ public Adapter caseIntegerFieldEditor(IntegerFieldEditor object) {
+ return createIntegerFieldEditorAdapter();
+ }
+
+ @Override
+ public Adapter caseFileFieldEditor(FileFieldEditor object) {
+ return createFileFieldEditorAdapter();
+ }
+
+ @Override
+ public Adapter caseDirectoryFieldEditor(DirectoryFieldEditor object) {
+ return createDirectoryFieldEditorAdapter();
+ }
+
+ @Override
+ public Adapter caseListCrud(ListCrud object) {
+ return createListCrudAdapter();
+ }
+
+ @Override
+ public Adapter caseListFold(ListFold object) {
+ return createListFoldAdapter();
+ }
+
+ @Override
+ public Adapter caseApplicationElement(MApplicationElement object) {
+ return createApplicationElementAdapter();
+ }
+
+ @Override
+ public Adapter caseLocalizable(MLocalizable object) {
+ return createLocalizableAdapter();
+ }
+
+ @Override
+ public Adapter caseUIElement(MUIElement object) {
+ return createUIElementAdapter();
+ }
+
+ @Override
+ public <T extends MUIElement> Adapter caseElementContainer(
+ MElementContainer<T> object) {
+ return createElementContainerAdapter();
+ }
+
+ @Override
+ public Adapter caseContribution(MContribution object) {
+ return createContributionAdapter();
+ }
+
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>. <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @param target
+ * the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject) target);
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory
+ * <em>Category</em>}'. <!-- begin-user-doc --> This default implementation
+ * returns null so that we can easily ignore cases; it's useful to ignore a
+ * case when inheritance will catch all the cases anyway. <!-- end-user-doc
+ * -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory
+ * @generated
+ */
+ public Adapter createPreferencesCategoryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage
+ * <em>Page</em>}'. <!-- begin-user-doc --> This default implementation
+ * returns null so that we can easily ignore cases; it's useful to ignore a
+ * case when inheritance will catch all the cases anyway. <!-- end-user-doc
+ * -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage
+ * @generated
+ */
+ public Adapter createPreferencesPageAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor
+ * <em>Field Editor</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor
+ * @generated
+ */
+ public Adapter createFieldEditorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor
+ * <em>Boolean Field Editor</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor
+ * @generated
+ */
+ public Adapter createBooleanFieldEditorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor
+ * <em>List Field Editor</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor
+ * @generated
+ */
+ public Adapter createListFieldEditorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry <em>Entry</em>}
+ * '. <!-- begin-user-doc --> This default implementation returns null so
+ * that we can easily ignore cases; it's useful to ignore a case when
+ * inheritance will catch all the cases anyway. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry
+ * @generated
+ */
+ public Adapter createEntryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ComboFieldEditor
+ * <em>Combo Field Editor</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ComboFieldEditor
+ * @generated
+ */
+ public Adapter createComboFieldEditorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor
+ * <em>List Editor</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor
+ * @generated
+ */
+ public Adapter createListEditorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.RadioGroupFieldEditor
+ * <em>Radio Group Field Editor</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.RadioGroupFieldEditor
+ * @generated
+ */
+ public Adapter createRadioGroupFieldEditorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor
+ * <em>Scale Field Editor</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor
+ * @generated
+ */
+ public Adapter createScaleFieldEditorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor
+ * <em>String Field Editor</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor
+ * @generated
+ */
+ public Adapter createStringFieldEditorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor
+ * <em>Integer Field Editor</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor
+ * @generated
+ */
+ public Adapter createIntegerFieldEditorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FileFieldEditor
+ * <em>File Field Editor</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.FileFieldEditor
+ * @generated
+ */
+ public Adapter createFileFieldEditorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.DirectoryFieldEditor
+ * <em>Directory Field Editor</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.DirectoryFieldEditor
+ * @generated
+ */
+ public Adapter createDirectoryFieldEditorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud
+ * <em>List Crud</em>}'. <!-- begin-user-doc --> This default implementation
+ * returns null so that we can easily ignore cases; it's useful to ignore a
+ * case when inheritance will catch all the cases anyway. <!-- end-user-doc
+ * -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud
+ * @generated
+ */
+ public Adapter createListCrudAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold
+ * <em>List Fold</em>}'. <!-- begin-user-doc --> This default implementation
+ * returns null so that we can easily ignore cases; it's useful to ignore a
+ * case when inheritance will catch all the cases anyway. <!-- end-user-doc
+ * -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold
+ * @generated
+ */
+ public Adapter createListFoldAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.e4.ui.model.application.MApplicationElement
+ * <em>Element</em>}'. <!-- begin-user-doc --> This default implementation
+ * returns null so that we can easily ignore cases; it's useful to ignore a
+ * case when inheritance will catch all the cases anyway. <!-- end-user-doc
+ * -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.MApplicationElement
+ * @generated
+ */
+ public Adapter createApplicationElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.e4.ui.model.application.ui.MLocalizable
+ * <em>Localizable</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.ui.MLocalizable
+ * @generated
+ */
+ public Adapter createLocalizableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.e4.ui.model.application.ui.MUIElement
+ * <em>UI Element</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.ui.MUIElement
+ * @generated
+ */
+ public Adapter createUIElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.e4.ui.model.application.ui.MElementContainer
+ * <em>Element Container</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.ui.MElementContainer
+ * @generated
+ */
+ public Adapter createElementContainerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '
+ * {@link org.eclipse.e4.ui.model.application.MContribution
+ * <em>Contribution</em>}'. <!-- begin-user-doc --> This default
+ * implementation returns null so that we can easily ignore cases; it's
+ * useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.MContribution
+ * @generated
+ */
+ public Adapter createContributionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case. <!-- begin-user-doc --> This
+ * default implementation returns null. <!-- end-user-doc -->
+ *
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} // PreferencesAdapterFactory
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/util/PreferencesSwitch.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/util/PreferencesSwitch.java
new file mode 100644
index 0000000..b92a367
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/util/PreferencesSwitch.java
@@ -0,0 +1,692 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.util;
+
+import org.eclipse.e4.ui.model.application.MApplicationElement;
+import org.eclipse.e4.ui.model.application.MContribution;
+
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MLocalizable;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.*;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+/**
+ * <!-- begin-user-doc --> The <b>Switch</b> for the model's inheritance
+ * hierarchy. It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object and proceeding up the
+ * inheritance hierarchy until a non-null result is returned, which is the
+ * result of the switch. <!-- end-user-doc -->
+ *
+ * @see org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage
+ * @generated
+ */
+public class PreferencesSwitch<T1> extends Switch<T1> {
+ /**
+ * The cached model package <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected static PreferencesPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated
+ */
+ public PreferencesSwitch() {
+ if (modelPackage == null) {
+ modelPackage = PreferencesPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @parameter ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns
+ * a non null result; it yields that result. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @return the first non-null result returned by a <code>caseXXX</code>
+ * call.
+ * @generated
+ */
+ @Override
+ protected T1 doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case PreferencesPackage.PREFERENCES_CATEGORY: {
+ PreferencesCategory preferencesCategory = (PreferencesCategory) theEObject;
+ T1 result = casePreferencesCategory(preferencesCategory);
+ if (result == null)
+ result = caseApplicationElement(preferencesCategory);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PreferencesPackage.PREFERENCES_PAGE: {
+ PreferencesPage preferencesPage = (PreferencesPage) theEObject;
+ T1 result = casePreferencesPage(preferencesPage);
+ if (result == null)
+ result = caseElementContainer(preferencesPage);
+ if (result == null)
+ result = caseContribution(preferencesPage);
+ if (result == null)
+ result = caseUIElement(preferencesPage);
+ if (result == null)
+ result = caseApplicationElement(preferencesPage);
+ if (result == null)
+ result = caseLocalizable(preferencesPage);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PreferencesPackage.FIELD_EDITOR: {
+ FieldEditor<?> fieldEditor = (FieldEditor<?>) theEObject;
+ T1 result = caseFieldEditor(fieldEditor);
+ if (result == null)
+ result = caseUIElement(fieldEditor);
+ if (result == null)
+ result = caseApplicationElement(fieldEditor);
+ if (result == null)
+ result = caseLocalizable(fieldEditor);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PreferencesPackage.BOOLEAN_FIELD_EDITOR: {
+ BooleanFieldEditor booleanFieldEditor = (BooleanFieldEditor) theEObject;
+ T1 result = caseBooleanFieldEditor(booleanFieldEditor);
+ if (result == null)
+ result = caseFieldEditor(booleanFieldEditor);
+ if (result == null)
+ result = caseUIElement(booleanFieldEditor);
+ if (result == null)
+ result = caseApplicationElement(booleanFieldEditor);
+ if (result == null)
+ result = caseLocalizable(booleanFieldEditor);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PreferencesPackage.LIST_FIELD_EDITOR: {
+ ListFieldEditor listFieldEditor = (ListFieldEditor) theEObject;
+ T1 result = caseListFieldEditor(listFieldEditor);
+ if (result == null)
+ result = caseFieldEditor(listFieldEditor);
+ if (result == null)
+ result = caseContribution(listFieldEditor);
+ if (result == null)
+ result = caseUIElement(listFieldEditor);
+ if (result == null)
+ result = caseApplicationElement(listFieldEditor);
+ if (result == null)
+ result = caseLocalizable(listFieldEditor);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PreferencesPackage.ENTRY: {
+ Entry entry = (Entry) theEObject;
+ T1 result = caseEntry(entry);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PreferencesPackage.COMBO_FIELD_EDITOR: {
+ ComboFieldEditor comboFieldEditor = (ComboFieldEditor) theEObject;
+ T1 result = caseComboFieldEditor(comboFieldEditor);
+ if (result == null)
+ result = caseListFieldEditor(comboFieldEditor);
+ if (result == null)
+ result = caseFieldEditor(comboFieldEditor);
+ if (result == null)
+ result = caseContribution(comboFieldEditor);
+ if (result == null)
+ result = caseUIElement(comboFieldEditor);
+ if (result == null)
+ result = caseApplicationElement(comboFieldEditor);
+ if (result == null)
+ result = caseLocalizable(comboFieldEditor);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PreferencesPackage.LIST_EDITOR: {
+ ListEditor listEditor = (ListEditor) theEObject;
+ T1 result = caseListEditor(listEditor);
+ if (result == null)
+ result = caseFieldEditor(listEditor);
+ if (result == null)
+ result = caseContribution(listEditor);
+ if (result == null)
+ result = caseUIElement(listEditor);
+ if (result == null)
+ result = caseApplicationElement(listEditor);
+ if (result == null)
+ result = caseLocalizable(listEditor);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PreferencesPackage.RADIO_GROUP_FIELD_EDITOR: {
+ RadioGroupFieldEditor radioGroupFieldEditor = (RadioGroupFieldEditor) theEObject;
+ T1 result = caseRadioGroupFieldEditor(radioGroupFieldEditor);
+ if (result == null)
+ result = caseListFieldEditor(radioGroupFieldEditor);
+ if (result == null)
+ result = caseFieldEditor(radioGroupFieldEditor);
+ if (result == null)
+ result = caseContribution(radioGroupFieldEditor);
+ if (result == null)
+ result = caseUIElement(radioGroupFieldEditor);
+ if (result == null)
+ result = caseApplicationElement(radioGroupFieldEditor);
+ if (result == null)
+ result = caseLocalizable(radioGroupFieldEditor);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PreferencesPackage.SCALE_FIELD_EDITOR: {
+ ScaleFieldEditor scaleFieldEditor = (ScaleFieldEditor) theEObject;
+ T1 result = caseScaleFieldEditor(scaleFieldEditor);
+ if (result == null)
+ result = caseFieldEditor(scaleFieldEditor);
+ if (result == null)
+ result = caseUIElement(scaleFieldEditor);
+ if (result == null)
+ result = caseApplicationElement(scaleFieldEditor);
+ if (result == null)
+ result = caseLocalizable(scaleFieldEditor);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PreferencesPackage.STRING_FIELD_EDITOR: {
+ StringFieldEditor stringFieldEditor = (StringFieldEditor) theEObject;
+ T1 result = caseStringFieldEditor(stringFieldEditor);
+ if (result == null)
+ result = caseFieldEditor(stringFieldEditor);
+ if (result == null)
+ result = caseUIElement(stringFieldEditor);
+ if (result == null)
+ result = caseApplicationElement(stringFieldEditor);
+ if (result == null)
+ result = caseLocalizable(stringFieldEditor);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PreferencesPackage.INTEGER_FIELD_EDITOR: {
+ IntegerFieldEditor integerFieldEditor = (IntegerFieldEditor) theEObject;
+ T1 result = caseIntegerFieldEditor(integerFieldEditor);
+ if (result == null)
+ result = caseFieldEditor(integerFieldEditor);
+ if (result == null)
+ result = caseUIElement(integerFieldEditor);
+ if (result == null)
+ result = caseApplicationElement(integerFieldEditor);
+ if (result == null)
+ result = caseLocalizable(integerFieldEditor);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PreferencesPackage.FILE_FIELD_EDITOR: {
+ FileFieldEditor fileFieldEditor = (FileFieldEditor) theEObject;
+ T1 result = caseFileFieldEditor(fileFieldEditor);
+ if (result == null)
+ result = caseFieldEditor(fileFieldEditor);
+ if (result == null)
+ result = caseContribution(fileFieldEditor);
+ if (result == null)
+ result = caseUIElement(fileFieldEditor);
+ if (result == null)
+ result = caseApplicationElement(fileFieldEditor);
+ if (result == null)
+ result = caseLocalizable(fileFieldEditor);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PreferencesPackage.DIRECTORY_FIELD_EDITOR: {
+ DirectoryFieldEditor directoryFieldEditor = (DirectoryFieldEditor) theEObject;
+ T1 result = caseDirectoryFieldEditor(directoryFieldEditor);
+ if (result == null)
+ result = caseFieldEditor(directoryFieldEditor);
+ if (result == null)
+ result = caseContribution(directoryFieldEditor);
+ if (result == null)
+ result = caseUIElement(directoryFieldEditor);
+ if (result == null)
+ result = caseApplicationElement(directoryFieldEditor);
+ if (result == null)
+ result = caseLocalizable(directoryFieldEditor);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PreferencesPackage.LIST_CRUD: {
+ ListCrud listCrud = (ListCrud) theEObject;
+ T1 result = caseListCrud(listCrud);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PreferencesPackage.LIST_FOLD: {
+ ListFold listFold = (ListFold) theEObject;
+ T1 result = caseListFold(listFold);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ default:
+ return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Category</em>'. <!-- begin-user-doc --> This implementation returns
+ * null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Category</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 casePreferencesCategory(PreferencesCategory object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Page</em>'. <!-- begin-user-doc --> This implementation returns null;
+ * returning a non-null result will terminate the switch. <!-- end-user-doc
+ * -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Page</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 casePreferencesPage(PreferencesPage object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Field Editor</em>'. <!-- begin-user-doc --> This implementation
+ * returns null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Field Editor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public <T> T1 caseFieldEditor(FieldEditor<T> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Boolean Field Editor</em>'. <!-- begin-user-doc --> This
+ * implementation returns null; returning a non-null result will terminate
+ * the switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Boolean Field Editor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseBooleanFieldEditor(BooleanFieldEditor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>List Field Editor</em>'. <!-- begin-user-doc --> This implementation
+ * returns null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>List Field Editor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseListFieldEditor(ListFieldEditor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Entry</em>'. <!-- begin-user-doc --> This implementation returns
+ * null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Entry</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseEntry(Entry object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Combo Field Editor</em>'. <!-- begin-user-doc --> This implementation
+ * returns null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Combo Field Editor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseComboFieldEditor(ComboFieldEditor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>List Editor</em>'. <!-- begin-user-doc --> This implementation
+ * returns null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>List Editor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseListEditor(ListEditor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Radio Group Field Editor</em>'. <!-- begin-user-doc --> This
+ * implementation returns null; returning a non-null result will terminate
+ * the switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Radio Group Field Editor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseRadioGroupFieldEditor(RadioGroupFieldEditor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Scale Field Editor</em>'. <!-- begin-user-doc --> This implementation
+ * returns null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Scale Field Editor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseScaleFieldEditor(ScaleFieldEditor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>String Field Editor</em>'. <!-- begin-user-doc --> This
+ * implementation returns null; returning a non-null result will terminate
+ * the switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>String Field Editor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseStringFieldEditor(StringFieldEditor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Integer Field Editor</em>'. <!-- begin-user-doc --> This
+ * implementation returns null; returning a non-null result will terminate
+ * the switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Integer Field Editor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIntegerFieldEditor(IntegerFieldEditor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>File Field Editor</em>'. <!-- begin-user-doc --> This implementation
+ * returns null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>File Field Editor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseFileFieldEditor(FileFieldEditor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Directory Field Editor</em>'. <!-- begin-user-doc --> This
+ * implementation returns null; returning a non-null result will terminate
+ * the switch. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Directory Field Editor</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseDirectoryFieldEditor(DirectoryFieldEditor object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>List Crud</em>'. <!-- begin-user-doc --> This implementation returns
+ * null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>List Crud</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseListCrud(ListCrud object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>List Fold</em>'. <!-- begin-user-doc --> This implementation returns
+ * null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>List Fold</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseListFold(ListFold object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Element</em>'. <!-- begin-user-doc --> This implementation returns
+ * null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseApplicationElement(MApplicationElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Localizable</em>'. <!-- begin-user-doc --> This implementation
+ * returns null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Localizable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseLocalizable(MLocalizable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>UI Element</em>'. <!-- begin-user-doc --> This implementation returns
+ * null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>UI Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseUIElement(MUIElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Element Container</em>'. <!-- begin-user-doc --> This implementation
+ * returns null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Element Container</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public <T extends MUIElement> T1 caseElementContainer(
+ MElementContainer<T> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>Contribution</em>'. <!-- begin-user-doc --> This implementation
+ * returns null; returning a non-null result will terminate the switch. <!--
+ * end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>Contribution</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseContribution(MContribution object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '
+ * <em>EObject</em>'. <!-- begin-user-doc --> This implementation returns
+ * null; returning a non-null result will terminate the switch, but this is
+ * the last case anyway. <!-- end-user-doc -->
+ *
+ * @param object
+ * the target of the switch.
+ * @return the result of interpreting the object as an instance of '
+ * <em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T1 defaultCase(EObject object) {
+ return null;
+ }
+
+} // PreferencesSwitch
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/BooleanFieldEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/BooleanFieldEditorValidator.java
new file mode 100644
index 0000000..4f3b8ff
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/BooleanFieldEditorValidator.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldStyle;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.BooleanFieldEditor}. This
+ * doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface BooleanFieldEditorValidator {
+ boolean validate();
+
+ boolean validateStyle(BooleanFieldStyle value);
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ComboFieldEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ComboFieldEditorValidator.java
new file mode 100644
index 0000000..0a67cd1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ComboFieldEditorValidator.java
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ComboFieldEditor}. This
+ * doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface ComboFieldEditorValidator {
+ boolean validate();
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/DirectoryFieldEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/DirectoryFieldEditorValidator.java
new file mode 100644
index 0000000..ec6060e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/DirectoryFieldEditorValidator.java
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.DirectoryFieldEditor}.
+ * This doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface DirectoryFieldEditorValidator {
+ boolean validate();
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/EntryValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/EntryValidator.java
new file mode 100644
index 0000000..e3dceb4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/EntryValidator.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry}. This doesn't
+ * really do anything, and it's not a real EMF artifact. It was generated by the
+ * org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's
+ * code generator can be extended. This can be disabled with -vmargs
+ * -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface EntryValidator {
+ boolean validate();
+
+ boolean validateName(String value);
+
+ boolean validateValue(String value);
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/FieldEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/FieldEditorValidator.java
new file mode 100644
index 0000000..59a0fff
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/FieldEditorValidator.java
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+import org.osgi.service.prefs.Preferences;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FieldEditor}. This doesn't
+ * really do anything, and it's not a real EMF artifact. It was generated by the
+ * org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's
+ * code generator can be extended. This can be disabled with -vmargs
+ * -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface FieldEditorValidator {
+ boolean validate();
+
+ boolean validateLabel(String value);
+
+ boolean validatePreferenceName(String value);
+
+ boolean validateDefaultValue(String value);
+
+ boolean validateDefaultValueTyped(Object value);
+
+ boolean validateBundle(String value);
+
+ boolean validatePreferences(Preferences value);
+
+ boolean validateEquinoxPath(String value);
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/FileFieldEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/FileFieldEditorValidator.java
new file mode 100644
index 0000000..1ece9c7
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/FileFieldEditorValidator.java
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.FileFieldEditor}. This
+ * doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface FileFieldEditorValidator {
+ boolean validate();
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/IntegerFieldEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/IntegerFieldEditorValidator.java
new file mode 100644
index 0000000..9151793
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/IntegerFieldEditorValidator.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.IntegerFieldEditor}. This
+ * doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface IntegerFieldEditorValidator {
+ boolean validate();
+
+ boolean validateMinValidValue(Integer value);
+
+ boolean validateMaxValidValue(Integer value);
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListCrudValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListCrudValidator.java
new file mode 100644
index 0000000..e49b3b7
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListCrudValidator.java
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud}. This doesn't
+ * really do anything, and it's not a real EMF artifact. It was generated by the
+ * org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's
+ * code generator can be extended. This can be disabled with -vmargs
+ * -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface ListCrudValidator {
+ boolean validate();
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListEditorValidator.java
new file mode 100644
index 0000000..c5fedfa
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListEditorValidator.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListCrud;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListEditor}. This doesn't
+ * really do anything, and it's not a real EMF artifact. It was generated by the
+ * org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's
+ * code generator can be extended. This can be disabled with -vmargs
+ * -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface ListEditorValidator {
+ boolean validate();
+
+ boolean validateListCrud(ListCrud value);
+
+ boolean validateListFold(ListFold value);
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListFieldEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListFieldEditorValidator.java
new file mode 100644
index 0000000..374244c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListFieldEditorValidator.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.Entry;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFieldEditor}. This
+ * doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface ListFieldEditorValidator {
+ boolean validate();
+
+ boolean validateEntries(EList<Entry> value);
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListFoldValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListFoldValidator.java
new file mode 100644
index 0000000..6ec8d20
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ListFoldValidator.java
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ListFold}. This doesn't
+ * really do anything, and it's not a real EMF artifact. It was generated by the
+ * org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's
+ * code generator can be extended. This can be disabled with -vmargs
+ * -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface ListFoldValidator {
+ boolean validate();
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/PreferencesCategoryValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/PreferencesCategoryValidator.java
new file mode 100644
index 0000000..9099310
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/PreferencesCategoryValidator.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory}. This
+ * doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface PreferencesCategoryValidator {
+ boolean validate();
+
+ boolean validateName(String value);
+
+ boolean validateChildCategories(EList<PreferencesCategory> value);
+
+ boolean validateParentCategory(PreferencesCategory value);
+
+ boolean validatePage(PreferencesPage value);
+
+ boolean validateId(String value);
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/PreferencesPageValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/PreferencesPageValidator.java
new file mode 100644
index 0000000..8ebc98f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/PreferencesPageValidator.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage}. This
+ * doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface PreferencesPageValidator {
+ boolean validate();
+
+ boolean validateCategory(PreferencesCategory value);
+
+ boolean validateDescription(String value);
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/RadioGroupFieldEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/RadioGroupFieldEditorValidator.java
new file mode 100644
index 0000000..0961d2d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/RadioGroupFieldEditorValidator.java
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.RadioGroupFieldEditor}.
+ * This doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface RadioGroupFieldEditorValidator {
+ boolean validate();
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ScaleFieldEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ScaleFieldEditorValidator.java
new file mode 100644
index 0000000..fdbd6a9
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/ScaleFieldEditorValidator.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.ScaleFieldEditor}. This
+ * doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface ScaleFieldEditorValidator {
+ boolean validate();
+
+ boolean validateMinValue(Integer value);
+
+ boolean validateMaxValue(Integer value);
+
+ boolean validateIncrementValue(Integer value);
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/StringFieldEditorValidator.java b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/StringFieldEditorValidator.java
new file mode 100644
index 0000000..5308b3b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/src/org/eclipse/osbp/vaaclipse/ui/preferences/model/validation/StringFieldEditorValidator.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 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:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;
+
+/**
+ * A sample validator interface for
+ * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.StringFieldEditor}. This
+ * doesn't really do anything, and it's not a real EMF artifact. It was
+ * generated by the org.eclipse.emf.examples.generator.validator plug-in to
+ * illustrate how EMF's code generator can be extended. This can be disabled
+ * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface StringFieldEditorValidator {
+ boolean validate();
+
+ boolean validateMaxLength(Integer value);
+}
diff --git a/org.eclipse.osbp.vaaclipse.ui.preferences.model/text/description.txt b/org.eclipse.osbp.vaaclipse.ui.preferences.model/text/description.txt
new file mode 100644
index 0000000..e250c09
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.ui.preferences.model/text/description.txt
@@ -0,0 +1,76 @@
+Model Preferences
+
+This model description is not a real EMF artifact. It was generated by the
+org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's
+code generator can be extended.
+This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+
+Package preferences <http://www.lunifera.org/vaaclipse/ui/preferences>
+
+ Class PreferencesCategory -> ApplicationElement
+ Attribute name : EString
+ Reference childCategories : PreferencesCategory<<0..*>>
+ Reference parentCategory : PreferencesCategory
+ Reference page : PreferencesPage
+ Attribute id : EString
+
+ Class PreferencesPage -> ElementContainer, Contribution
+ Reference category : PreferencesCategory
+ Attribute description : EString
+
+ Class FieldEditor -> UIElement
+ Attribute label : EString
+ Attribute preferenceName : EString
+ Attribute defaultValue : EString
+ Attribute defaultValueTyped : EJavaObject
+ Attribute bundle : EString
+ Attribute preferences : Preferences
+ Attribute equinoxPath : EString
+
+ Class BooleanFieldEditor -> FieldEditor
+ Attribute style : BooleanFieldStyle
+
+ Class ListFieldEditor -> FieldEditor, Contribution
+ Reference entries : Entry<<0..*>>
+
+ Class Entry
+ Attribute name : EString
+ Attribute value : EString
+
+ Class ComboFieldEditor -> ListFieldEditor
+
+ Class ListEditor -> FieldEditor, Contribution
+ Reference listCrud : ListCrud
+ Reference listFold : ListFold
+
+ Class RadioGroupFieldEditor -> ListFieldEditor
+
+ Class ScaleFieldEditor -> FieldEditor
+ Attribute minValue : EIntegerObject
+ Attribute maxValue : EIntegerObject
+ Attribute incrementValue : EIntegerObject
+
+ Class StringFieldEditor -> FieldEditor
+ Attribute maxLength : EIntegerObject
+
+ Class IntegerFieldEditor -> FieldEditor
+ Attribute minValidValue : EIntegerObject
+ Attribute maxValidValue : EIntegerObject
+
+ Class FileFieldEditor -> FieldEditor, Contribution
+
+ Class DirectoryFieldEditor -> FieldEditor, Contribution
+
+ Class ListCrud
+ Operation addNewValue(EString) : EString
+
+ Class ListFold
+ Operation apply(EString, StringBuffer) : void
+
+ Enum BooleanFieldStyle
+ Literal DEFAULT = 0
+ Literal SEPARATE_LABEL = 1
+
+ DataType StringBuffer <java.lang.StringBuffer>
+
+ DataType Preferences <org.osgi.service.prefs.Preferences>
diff --git a/org.eclipse.osbp.vaaclipse.util/.project b/org.eclipse.osbp.vaaclipse.util/.project
new file mode 100644
index 0000000..eaf2f3d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse.util</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.util/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.util/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..8f6eac1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.util
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.util
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Require-Bundle: org.eclipse.emf.common;bundle-version="2.8.0",
+ org.eclipse.osbp.commons;bundle-version="[0.9.0,0.10.0)"
+Export-Package: org.eclipse.osbp.vaaclipse.util;version="0.9.0"
+Import-Package: javax.annotation
diff --git a/org.eclipse.osbp.vaaclipse.util/about.html b/org.eclipse.osbp.vaaclipse.util/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.util/about.ini b/org.eclipse.osbp.vaaclipse.util/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.util/about.mappings b/org.eclipse.osbp.vaaclipse.util/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.util/about.properties b/org.eclipse.osbp.vaaclipse.util/about.properties
new file mode 100644
index 0000000..bdd9e29
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.util
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.util/build.properties b/org.eclipse.osbp.vaaclipse.util/build.properties
new file mode 100644
index 0000000..ebe504b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ license.html,\
+ epl-v10.html
+src.includes = about.properties, about.mappings, about.ini, about.html, license.html,\
+ epl-v10.html
diff --git a/org.eclipse.osbp.vaaclipse.util/epl-v10.html b/org.eclipse.osbp.vaaclipse.util/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.util/license.html b/org.eclipse.osbp.vaaclipse.util/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.vaaclipse.util/pom.xml b/org.eclipse.osbp.vaaclipse.util/pom.xml
new file mode 100644
index 0000000..abd85bc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.osbp.vaaclipse.util</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.util/src/org/eclipse/osbp/vaaclipse/test/ConvertTest.java b/org.eclipse.osbp.vaaclipse.util/src/org/eclipse/osbp/vaaclipse/test/ConvertTest.java
new file mode 100644
index 0000000..8a0e66c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/src/org/eclipse/osbp/vaaclipse/test/ConvertTest.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ //package org.eclipse.osbp.vaaclipse.test;
+//
+//import org.eclipse.osbp.vaaclipse.util.Utils;
+//
+///**
+// * @author rushan
+// *
+// */
+//public class ConvertTest
+//{
+// final static String uri1 = "platform:/plugin/org.somebundle/img/blabla.png";
+//
+// static final String url1 = "/VAADIN/themes/generated_theme/org.somebundle/img/blabla.png";
+// static final String url2 = "/VAADIN/themes/reindeer/img/blabla.png";
+//
+// public static void main(String[] args)
+// {
+// System.out.println(Utils.restorePath("/VAADIN/themes/reindeer/styles.css", "generated_theme", "path to css"));
+// System.out.println(Utils.restorePath("/VAADIN/themes/generated_theme/styles.css", "generated_theme", "path to css"));
+// System.out.println(Utils.restorePath(url1, "generated_theme", "path to css"));
+// System.out.println(Utils.restorePath(url2, "generated_theme", "path to css"));
+//
+//
+// System.out.println(Utils.convertPath(uri1));
+//
+// System.out.println(Utils.restorePath("/VAADIN/themes/generated_theme/" + Utils.convertPath(uri1), "generated_theme", "path to css").equals(uri1));
+// }
+// }
diff --git a/org.eclipse.osbp.vaaclipse.util/src/org/eclipse/osbp/vaaclipse/util/Utils.java b/org.eclipse.osbp.vaaclipse.util/src/org/eclipse/osbp/vaaclipse/util/Utils.java
new file mode 100644
index 0000000..e940ecb
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.util/src/org/eclipse/osbp/vaaclipse/util/Utils.java
@@ -0,0 +1,16 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.util;
+
+public class Utils {
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/.project b/org.eclipse.osbp.vaaclipse.widgets/.project
new file mode 100644
index 0000000..cfd90bd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse.widgets</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.vaadin.integration.eclipse.addonStylesBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.widgets/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.widgets/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..582d4f8
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.widgets
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.widgets
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Require-Bundle: com.vaadin.client;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.shared;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.themes;bundle-version="[7.5.7,7.7.0)",
+ org.jsoup;bundle-version="1.7.2",
+ dragdroplayouts.osgi;bundle-version="1.1.3"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.osbp.vaaclipse.widgets;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.widgets.common;version="0.9.0"
diff --git a/org.eclipse.osbp.vaaclipse.widgets/WebContent/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.widgets/WebContent/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..679b4d6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/WebContent/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Implementation-Title: org.eclipse.osbp.vaaclipse.widgets
+Implementation-Version: 1.0.0
+Vaadin-Package-Version: 1
+Class-Path:
+Vaadin-Widgetsets: org.eclipse.osbp.vaaclipse.widgets.Org_semanticsoft_vaaclipse_widgetsWidgetset
+
diff --git a/org.eclipse.osbp.vaaclipse.widgets/about.html b/org.eclipse.osbp.vaaclipse.widgets/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgets/about.ini b/org.eclipse.osbp.vaaclipse.widgets/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.widgets/about.mappings b/org.eclipse.osbp.vaaclipse.widgets/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.widgets/about.properties b/org.eclipse.osbp.vaaclipse.widgets/about.properties
new file mode 100644
index 0000000..087da41
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.widgets
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.widgets/build.properties b/org.eclipse.osbp.vaaclipse.widgets/build.properties
new file mode 100644
index 0000000..d1750a9
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ epl-v10.html,\
+ license.html,\
+ .
+src.includes = about.properties, about.mappings, about.ini, about.html, license.html,\
+ epl-v10.html
diff --git a/org.eclipse.osbp.vaaclipse.widgets/epl-v10.html b/org.eclipse.osbp.vaaclipse.widgets/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgets/ivy.xml b/org.eclipse.osbp.vaaclipse.widgets/ivy.xml
new file mode 100644
index 0000000..e470b04
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/ivy.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<!DOCTYPE ivy-module [
+ <!ENTITY vaadin.version "7.3.+">
+]>
+<ivy-module version="2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+ <info organisation="com.example" module="v7proj" />
+ <configurations>
+ <!-- The default configuration, which should be deployed to the server -->
+ <conf name="default" />
+ <!-- A configuration only needed when compiling the widget set. Should
+ not be deployed to the server -->
+ <conf name="widgetset-compile" />
+ </configurations>
+ <dependencies>
+ <!-- The core server part of Vaadin -->
+ <dependency org="com.vaadin" name="vaadin-server" rev="&vaadin.version;"
+ conf="default->default" />
+
+ <!-- Vaadin themes -->
+ <dependency org="com.vaadin" name="vaadin-themes" rev="&vaadin.version;" />
+
+ <!-- Precompiled DefaultWidgetSet -->
+ <dependency org="com.vaadin" name="vaadin-client-compiled"
+ rev="&vaadin.version;" />
+
+ <!-- Vaadin client side, needed for widget set compilation -->
+ <dependency org="com.vaadin" name="vaadin-client" rev="&vaadin.version;" />
+
+ <!-- Compiler for custom widget sets. Should not be deployed -->
+ <dependency org="com.vaadin" name="vaadin-client-compiler"
+ rev="&vaadin.version;" conf="widgetset-compile->default" />
+ </dependencies>
+</ivy-module>
+
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgets/ivysettings.xml b/org.eclipse.osbp.vaaclipse.widgets/ivysettings.xml
new file mode 100644
index 0000000..9c0f653
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/ivysettings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ivysettings>
+ <settings defaultResolver="default" />
+ <resolvers>
+ <chain name="default">
+ <!-- Public Maven repository -->
+ <ibiblio name="public" m2compatible="true" />
+
+ <!-- Vaadin Add-on repository -->
+ <ibiblio name="vaadin-addons" usepoms="true" m2compatible="true"
+ root="http://maven.vaadin.com/vaadin-addons" />
+
+ <!-- Vaadin snapshots repository -->
+ <ibiblio name="vaadin-snapshots" usepoms="true" m2compatible="true"
+ root="https://oss.sonatype.org/content/repositories/vaadin-snapshots" />
+ <!-- Repository used for Vaadin modified smartsprites library -->
+ <dual name="custom-smartsprites">
+ <filesystem name="smartsprites-ivy">
+ <ivy pattern="${basedir}/ivymodule/[module]-ivy-[revision].xml" />
+ </filesystem>
+ <url name="smartsprites-artifact">
+ <artifact
+ pattern="http://dev.vaadin.com/svn/versions/6.8/build/smartsprites/lib/[artifact](-[revision]).[ext]" />
+ </url>
+ </dual>
+ </chain>
+ </resolvers>
+ <modules>
+ <!-- Vaadin patched SmartSprites -->
+ <module organisation="com.carrotsearch" name="smartsprites"
+ revision="0.2.3-itmill" resolver="custom-smartsprites" />
+ </modules>
+
+
+</ivysettings>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgets/license.html b/org.eclipse.osbp.vaaclipse.widgets/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.vaaclipse.widgets/pom-compileWidgetset.xml b/org.eclipse.osbp.vaaclipse.widgets/pom-compileWidgetset.xml
new file mode 100644
index 0000000..e4a2044
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/pom-compileWidgetset.xml
@@ -0,0 +1,211 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.eclipse.osbp</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse.widgets</artifactId>
+ <version>2.7.3-SNAPSHOT</version>
+
+ <properties>
+ <vaaclipse-version>2.7.3-SNAPSHOT</vaaclipse-version>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ <vaadin.version>7.5.7</vaadin.version>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.eclipse.osbp</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse.widgets</artifactId>
+ <version>${vaaclipse-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.vaadin.addons</groupId>
+ <artifactId>contextmenu</artifactId>
+ <version>4.2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.vaadin.addons</groupId>
+ <artifactId>dragdroplayouts</artifactId>
+ <version>1.1.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.vaadin.addon</groupId>
+ <artifactId>easyuploads</artifactId>
+ <version>7.0.1</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-server</artifactId>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-client</artifactId>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-client-compiled</artifactId>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-shared</artifactId>
+ <version>${vaadin.version}</version>
+ </dependency>
+<!-- <dependency> -->
+<!-- <groupId>com.vaadin</groupId> -->
+<!-- <artifactId>vaadin-shared-deps</artifactId> -->
+<!-- <scope>provided</scope> -->
+<!-- <version>1.0.2</version> -->
+<!-- </dependency> -->
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-client-compiler</artifactId>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-themes</artifactId>
+ <version>${vaadin.version}</version>
+ </dependency>
+<!-- <dependency> -->
+<!-- <groupId>commons-io</groupId> -->
+<!-- <artifactId>commons-io</artifactId> -->
+<!-- <version>2.4</version> -->
+<!-- </dependency> -->
+ <!-- <dependency> -->
+ <!-- <groupId>com.vaadin</groupId> -->
+ <!-- <artifactId>vaadin-testbench</artifactId> -->
+ <!-- <version>3.0.4</version> -->
+ <!-- <scope>test</scope> -->
+ <!-- </dependency> -->
+<!-- <dependency> -->
+<!-- <groupId>javax.servlet</groupId> -->
+<!-- <artifactId>servlet-api</artifactId> -->
+<!-- <version>2.5</version> -->
+<!-- <scope>provided</scope> -->
+<!-- </dependency> -->
+ <!-- <dependency> -->
+ <!-- <groupId>junit</groupId> -->
+ <!-- <artifactId>junit</artifactId> -->
+ <!-- <version>LATEST</version> -->
+ <!-- <scope>test</scope> -->
+ <!-- </dependency> -->
+ </dependencies>
+
+ <build>
+ <resources>
+ <resource>
+ <!-- This add sources, .gwt.xml files etc to jar from source directory.
+ Not quite maven convention byt easiest to setup this way. -->
+ <directory>src</directory>
+ </resource>
+ <resource>
+ <directory>src</directory>
+ </resource>
+ </resources>
+ <sourceDirectory>src</sourceDirectory>
+
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.5</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-maven-plugin</artifactId>
+ <version>${vaadin.plugin.version}</version>
+ <configuration>
+ <extraJvmArgs>-Xmx1024M -Xss1024k</extraJvmArgs>
+ <!-- <runTarget>mobilemail</runTarget> -->
+ <!-- We are doing "inplace" but into subdir VAADIN/widgetsets. This
+ way compatible with Vaadin eclipse plugin. -->
+ <webappDirectory>${basedir}/VAADIN/widgetsets
+ </webappDirectory>
+ <hostedWebapp>${basedir}/VAADIN/widgetsets
+ </hostedWebapp>
+ <noServer>true</noServer>
+ <!-- Remove draftCompile when project is ready -->
+ <draftCompile>true</draftCompile>
+ <strict>true</strict>
+ <compileReport>false</compileReport>
+ <style>PRETTY</style>
+ <logLevel>DEBUG</logLevel>
+ <runTarget>http://localhost:8080/</runTarget>
+
+ <!-- Remove these when going to release dependencies -->
+ <force>true</force>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>resources</goal>
+ <goal>compile</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <!-- As we are doing "inplace" GWT compilation, ensure the widgetset -->
+ <!-- directory is cleaned properly -->
+ <plugin>
+ <artifactId>maven-clean-plugin</artifactId>
+ <configuration>
+ <filesets>
+ <fileset>
+ <directory>${basedir}/VAADIN/widgetsets</directory>
+ </fileset>
+ </filesets>
+ </configuration>
+ </plugin>
+ </plugins>
+ <pluginManagement>
+ <plugins>
+ <!--This plugin's configuration is used to store Eclipse m2e settings
+ only. It has no influence on the Maven build itself. -->
+ <plugin>
+ <groupId>org.eclipse.m2e</groupId>
+ <artifactId>lifecycle-mapping</artifactId>
+ <version>1.0.0</version>
+ <configuration>
+ <lifecycleMappingMetadata>
+ <pluginExecutions>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-maven-plugin</artifactId>
+ <versionRange>[2.3.0-1,)</versionRange>
+ <goals>
+ <goal>resources</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore></ignore>
+ </action>
+ </pluginExecution>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-maven-plugin</artifactId>
+ <versionRange>[1.0.2,)</versionRange>
+ <goals>
+ <goal>update-widgetset</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore></ignore>
+ </action>
+ </pluginExecution>
+ </pluginExecutions>
+ </lifecycleMappingMetadata>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+</project>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgets/pom.xml b/org.eclipse.osbp.vaaclipse.widgets/pom.xml
new file mode 100644
index 0000000..ef20a23
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/pom.xml
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.osbp.vaaclipse.widgets</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <properties>
+ <vaaclipse-version>0.9.0-SNAPSHOT</vaaclipse-version>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ <vaadin.version>7.5.7</vaadin.version>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.vaadin.addons</groupId>
+ <artifactId>contextmenu</artifactId>
+ <version>4.2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.vaadin.addons</groupId>
+ <artifactId>dragdroplayouts</artifactId>
+ <version>1.1.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.vaadin.addon</groupId>
+ <artifactId>easyuploads</artifactId>
+ <version>7.4.2</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-server</artifactId>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-client</artifactId>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-client-compiled</artifactId>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-shared</artifactId>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-client-compiler</artifactId>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-themes</artifactId>
+ <version>${vaadin.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <resources>
+ <resource>
+ <!-- This add sources, .gwt.xml files etc to jar from source directory.
+ Not quite maven convention byt easiest to setup this way. -->
+ <directory>src</directory>
+ </resource>
+ <resource>
+ <directory>src</directory>
+ </resource>
+ </resources>
+ <sourceDirectory>src</sourceDirectory>
+
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.5</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-maven-plugin</artifactId>
+ <version>${vaadin.plugin.version}</version>
+ <configuration>
+ <extraJvmArgs>-Xmx1024M -Xss1024k</extraJvmArgs>
+ <!-- <runTarget>mobilemail</runTarget> -->
+ <!-- We are doing "inplace" but into subdir VAADIN/widgetsets. This
+ way compatible with Vaadin eclipse plugin. -->
+ <webappDirectory>${basedir}/VAADIN/widgetsets
+ </webappDirectory>
+ <hostedWebapp>${basedir}/VAADIN/widgetsets
+ </hostedWebapp>
+ <noServer>true</noServer>
+ <!-- Remove draftCompile when project is ready -->
+ <draftCompile>true</draftCompile>
+ <strict>true</strict>
+ <compileReport>false</compileReport>
+ <style>PRETTY</style>
+ <logLevel>DEBUG</logLevel>
+ <runTarget>http://localhost:8080/</runTarget>
+
+ <!-- Remove these when going to release dependencies -->
+ <force>true</force>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>resources</goal>
+ <goal>compile</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <!-- As we are doing "inplace" GWT compilation, ensure the widgetset -->
+ <!-- directory is cleaned properly -->
+ <plugin>
+ <artifactId>maven-clean-plugin</artifactId>
+ <configuration>
+ <filesets>
+ <fileset>
+ <directory>${basedir}/VAADIN/widgetsets</directory>
+ </fileset>
+ </filesets>
+ </configuration>
+ </plugin>
+ </plugins>
+ <pluginManagement>
+ <plugins>
+ <!--This plugin's configuration is used to store Eclipse m2e settings
+ only. It has no influence on the Maven build itself. -->
+ <plugin>
+ <groupId>org.eclipse.m2e</groupId>
+ <artifactId>lifecycle-mapping</artifactId>
+ <version>1.0.0</version>
+ <configuration>
+ <lifecycleMappingMetadata>
+ <pluginExecutions>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-maven-plugin</artifactId>
+ <versionRange>[2.3.0-1,)</versionRange>
+ <goals>
+ <goal>resources</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore/>
+ </action>
+ </pluginExecution>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-maven-plugin</artifactId>
+ <versionRange>[1.0.2,)</versionRange>
+ <goals>
+ <goal>update-widgetset</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore/>
+ </action>
+ </pluginExecution>
+ </pluginExecutions>
+ </lifecycleMappingMetadata>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/com/vaadin/client/ui/dd/VaaclipseDragAndDropManager.java b/org.eclipse.osbp.vaaclipse.widgets/src/com/vaadin/client/ui/dd/VaaclipseDragAndDropManager.java
new file mode 100644
index 0000000..272838f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/com/vaadin/client/ui/dd/VaaclipseDragAndDropManager.java
@@ -0,0 +1,823 @@
+/*
+ * Copyright 2000-2013 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.client.ui.dd;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.core.client.Scheduler.RepeatingCommand;
+import com.google.gwt.dom.client.Element;
+import com.google.gwt.dom.client.EventTarget;
+import com.google.gwt.dom.client.NativeEvent;
+import com.google.gwt.dom.client.Node;
+import com.google.gwt.dom.client.Style;
+import com.google.gwt.dom.client.Style.Display;
+import com.google.gwt.dom.client.Style.Unit;
+import com.google.gwt.event.dom.client.KeyCodes;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.Event;
+import com.google.gwt.user.client.Event.NativePreviewEvent;
+import com.google.gwt.user.client.Event.NativePreviewHandler;
+import com.google.gwt.user.client.Timer;
+import com.google.gwt.user.client.ui.RootPanel;
+import com.google.gwt.user.client.ui.Widget;
+import com.vaadin.client.ApplicationConnection;
+import com.vaadin.client.ComponentConnector;
+import com.vaadin.client.MouseEventDetailsBuilder;
+import com.vaadin.client.Profiler;
+import com.vaadin.client.UIDL;
+import com.vaadin.client.Util;
+import com.vaadin.client.ValueMap;
+import com.vaadin.client.ui.VOverlay;
+import com.vaadin.shared.ApplicationConstants;
+import com.vaadin.shared.MouseEventDetails;
+import com.vaadin.shared.ui.dd.DragEventType;
+
+import fi.jasoft.dragdroplayouts.client.ui.tabsheet.VDDTabSheet;
+
+/**
+ * Helper class to manage the state of drag and drop event on Vaadin client
+ * side. Can be used to implement most of the drag and drop operation
+ * automatically via cross-browser event preview method or just as a helper when
+ * implementing own low level drag and drop operation (like with HTML5 api).
+ * <p>
+ * Singleton. Only one drag and drop operation can be active anyways. Use
+ * {@link #get()} to get instance.
+ *
+ * TODO cancel drag and drop if more than one touches !?
+ */
+public class VaaclipseDragAndDropManager extends VDragAndDropManager {
+
+ public static final String ACTIVE_DRAG_SOURCE_STYLENAME = "v-active-drag-source";
+
+ Logger logger = Logger.getLogger(VaaclipseDragAndDropManager.class
+ .getName());
+
+ private final class DefaultDragAndDropEventHandler implements
+ NativePreviewHandler {
+
+ @Override
+ public void onPreviewNativeEvent(NativePreviewEvent event) {
+ NativeEvent nativeEvent = event.getNativeEvent();
+
+ int typeInt = event.getTypeInt();
+ if (typeInt == Event.ONKEYDOWN) {
+ int keyCode = event.getNativeEvent().getKeyCode();
+ if (keyCode == KeyCodes.KEY_ESCAPE) {
+ // end drag if ESC is hit
+ interruptDrag();
+ event.cancel();
+ event.getNativeEvent().preventDefault();
+ }
+ // no use for handling for any key down event
+ return;
+ }
+
+ currentDrag.setCurrentGwtEvent(nativeEvent);
+ updateDragImagePosition();
+
+ Node targetNode = Node.as(nativeEvent.getEventTarget());
+ Element targetElement;
+ if (Element.is(targetNode)) {
+ targetElement = Element.as(targetNode);
+ } else {
+ targetElement = targetNode.getParentElement();
+ }
+
+ // VConsole.log("Target Element is: " + targetElement);
+ if (targetElement == null)
+ return;
+
+ if (Util.isTouchEvent(nativeEvent)
+ || (dragElement != null && dragElement
+ .isOrHasChild(targetElement))) {
+ // to detect the "real" target, hide dragelement temporary and
+ // use elementFromPoint
+ String display = dragElement.getStyle().getDisplay();
+ dragElement.getStyle().setDisplay(Display.NONE);
+ try {
+ int x = Util.getTouchOrMouseClientX(nativeEvent);
+ int y = Util.getTouchOrMouseClientY(nativeEvent);
+ // Util.browserDebugger();
+ targetElement = Util.getElementFromPoint(x, y);
+ if (targetElement == null) {
+ // ApplicationConnection.getConsole().log(
+ // "Event on dragImage, ignored");
+ event.cancel();
+ nativeEvent.stopPropagation();
+ return;
+
+ } else {
+ // ApplicationConnection.getConsole().log(
+ // "Event on dragImage, target changed");
+ // special handling for events over dragImage
+ // pretty much all events are mousemove althout below
+ // kind of happens mouseover
+ switch (typeInt) {
+ case Event.ONMOUSEOVER:
+ case Event.ONMOUSEOUT:
+ // ApplicationConnection
+ // .getConsole()
+ // .log(
+ // "IGNORING proxy image event, fired because of hack or not significant");
+ return;
+ case Event.ONMOUSEMOVE:
+ case Event.ONTOUCHMOVE:
+ VDropHandler findDragTarget = findDragTarget(targetElement);
+ if (findDragTarget != currentDropHandler) {
+ // dragleave on old
+ if (currentDropHandler != null) {
+ currentDropHandler.dragLeave(currentDrag);
+ currentDrag.getDropDetails().clear();
+ serverCallback = null;
+ }
+ // dragenter on new
+ currentDropHandler = findDragTarget;
+ if (findDragTarget != null) {
+ // ApplicationConnection.getConsole().log(
+ // "DropHandler now"
+ // + currentDropHandler
+ // .getPaintable());
+ }
+
+ if (currentDropHandler != null) {
+ currentDrag
+ .setElementOver((com.google.gwt.user.client.Element) targetElement);
+ currentDropHandler.dragEnter(currentDrag);
+ }
+ } else if (findDragTarget != null) {
+ currentDrag
+ .setElementOver((com.google.gwt.user.client.Element) targetElement);
+ currentDropHandler.dragOver(currentDrag);
+ }
+ // prevent text selection on IE
+ nativeEvent.preventDefault();
+ return;
+ default:
+ // just update element over and let the actual
+ // handling code do the thing
+ // ApplicationConnection.getConsole().log(
+ // "Target just modified on "
+ // + event.getType());
+ currentDrag
+ .setElementOver((com.google.gwt.user.client.Element) targetElement);
+ break;
+ }
+
+ }
+ } catch (RuntimeException e) {
+ // ApplicationConnection.getConsole().log(
+ // "ERROR during elementFromPoint hack.");
+ throw e;
+ } finally {
+ dragElement.getStyle().setProperty("display", display);
+ }
+ }
+
+ switch (typeInt) {
+ case Event.ONMOUSEOVER:
+ VDropHandler target = findDragTarget(targetElement);
+
+ if (target != null && target != currentDropHandler) {
+ if (currentDropHandler != null) {
+ currentDropHandler.dragLeave(currentDrag);
+ currentDrag.getDropDetails().clear();
+ }
+
+ currentDropHandler = target;
+ // ApplicationConnection.getConsole().log(
+ // "DropHandler now"
+ // + currentDropHandler.getPaintable());
+ currentDrag
+ .setElementOver((com.google.gwt.user.client.Element) targetElement);
+ target.dragEnter(currentDrag);
+ } else if (target == null && currentDropHandler != null) {
+ // ApplicationConnection.getConsole().log("Invalid state!?");
+ currentDropHandler.dragLeave(currentDrag);
+ currentDrag.getDropDetails().clear();
+ currentDropHandler = null;
+ }
+ break;
+ case Event.ONMOUSEOUT:
+ Element relatedTarget = Element.as(nativeEvent
+ .getRelatedEventTarget());
+ VDropHandler newDragHanler = findDragTarget(relatedTarget);
+ // VConsole.log("Related Target is: " + relatedTarget);
+ if (dragElement != null
+ && dragElement.isOrHasChild(relatedTarget)) {
+ // ApplicationConnection.getConsole().log(
+ // "Mouse out of dragImage, ignored");
+ return;
+ }
+
+ if (currentDropHandler != null
+ && currentDropHandler != newDragHanler) {
+ currentDropHandler.dragLeave(currentDrag);
+ currentDrag.getDropDetails().clear();
+ currentDropHandler = null;
+ serverCallback = null;
+ }
+ break;
+ case Event.ONMOUSEMOVE:
+ case Event.ONTOUCHMOVE:
+ if (currentDropHandler != null) {
+ currentDrag
+ .setElementOver((com.google.gwt.user.client.Element) targetElement);
+ currentDropHandler.dragOver(currentDrag);
+ }
+ nativeEvent.preventDefault();
+
+ break;
+
+ case Event.ONTOUCHEND:
+ /* Avoid simulated event on drag end */
+ event.getNativeEvent().preventDefault();
+ case Event.ONMOUSEUP:
+ endDrag();
+ break;
+
+ default:
+ break;
+ }
+
+ }
+
+ }
+
+ private static VaaclipseDragAndDropManager instance;
+ private HandlerRegistration handlerRegistration;
+ private VDragEvent currentDrag;
+
+ /**
+ * If dragging is currently on a drophandler, this field has reference to it
+ */
+ private VDropHandler currentDropHandler;
+
+ public VDropHandler getCurrentDropHandler() {
+ return currentDropHandler;
+ }
+
+ /**
+ * If drag and drop operation is not handled by
+ * {@link VaaclipseDragAndDropManager}s internal handler, this can be used
+ * to update current {@link VDropHandler} .
+ *
+ * @param currentDropHandler
+ */
+ public void setCurrentDropHandler(VDropHandler currentDropHandler) {
+ this.currentDropHandler = currentDropHandler;
+ }
+
+ private VDragEventServerCallback serverCallback;
+
+ private HandlerRegistration deferredStartRegistration;
+ private String version = "2";
+
+ public static VaaclipseDragAndDropManager get() {
+ if (instance == null) {
+ instance = GWT.create(VaaclipseDragAndDropManager.class);
+ }
+ return instance;
+ }
+
+ /* Singleton */
+ protected VaaclipseDragAndDropManager() {
+
+ logger.info("VaaclipseDragAndDropManager - version " + version);
+
+ }
+
+ private NativePreviewHandler defaultDragAndDropEventHandler = new DefaultDragAndDropEventHandler();
+
+ /**
+ * Flag to indicate if drag operation has really started or not. Null check
+ * of currentDrag field is not enough as a lazy start may be pending.
+ */
+ private boolean isStarted;
+
+ /**
+ * This method is used to start Vaadin client side drag and drop operation.
+ * Operation may be started by virtually any Widget.
+ * <p>
+ * Cancels possible existing drag. TODO figure out if this is always a bug
+ * if one is active. Maybe a good and cheap lifesaver thought.
+ * <p>
+ * If possible, method automatically detects current {@link VDropHandler}
+ * and fires {@link VDropHandler#dragEnter(VDragEvent)} event on it.
+ * <p>
+ * May also be used to control the drag and drop operation. If this option
+ * is used, {@link VDropHandler} is searched on mouse events and appropriate
+ * methods on it called automatically.
+ *
+ * @param transferable
+ * @param nativeEvent
+ * @param handleDragEvents
+ * if true, {@link VaaclipseDragAndDropManager} handles the drag
+ * and drop operation GWT event preview.
+ * @return
+ */
+ public VDragEvent startDrag(VTransferable transferable,
+ final NativeEvent startEvent, final boolean handleDragEvents) {
+
+ interruptDrag();
+ isStarted = false;
+
+ currentDrag = new VDragEvent(transferable, startEvent);
+ currentDrag.setCurrentGwtEvent(startEvent);
+
+ final Command startDrag = new Command() {
+
+ @Override
+ public void execute() {
+ isStarted = true;
+ addActiveDragSourceStyleName();
+ VDropHandler dh = null;
+ if (startEvent != null) {
+ dh = findDragTarget(Element.as(currentDrag
+ .getCurrentGwtEvent().getEventTarget()));
+ }
+ if (dh != null) {
+ // drag has started on a DropHandler, kind of drag over
+ // happens
+ currentDropHandler = dh;
+ dh.dragEnter(currentDrag);
+ }
+
+ if (handleDragEvents) {
+ handlerRegistration = Event
+ .addNativePreviewHandler(defaultDragAndDropEventHandler);
+ if (dragElement != null
+ && dragElement.getParentElement() == null) {
+ // deferred attaching drag image is on going, we can
+ // hurry with it now
+ lazyAttachDragElement.cancel();
+ lazyAttachDragElement.run();
+ }
+ }
+ // just capture something to prevent text selection in IE
+ Event.setCapture(RootPanel.getBodyElement());
+ }
+
+ private void addActiveDragSourceStyleName() {
+ ComponentConnector dragSource = currentDrag.getTransferable()
+ .getDragSource();
+ dragSource.getWidget().addStyleName(
+ ACTIVE_DRAG_SOURCE_STYLENAME);
+ }
+ };
+
+ final int eventType = Event.as(startEvent).getTypeInt();
+ if (handleDragEvents
+ && (eventType == Event.ONMOUSEDOWN || eventType == Event.ONTOUCHSTART)) {
+ // only really start drag event on mousemove
+ deferredStartRegistration = Event
+ .addNativePreviewHandler(new NativePreviewHandler() {
+
+ @Override
+ public void onPreviewNativeEvent(
+ NativePreviewEvent event) {
+ int typeInt = event.getTypeInt();
+ switch (typeInt) {
+ case Event.ONMOUSEOVER:
+ if (dragElement == null) {
+ break;
+ }
+ EventTarget currentEventTarget = event
+ .getNativeEvent()
+ .getCurrentEventTarget();
+ if (Node.is(currentEventTarget)
+ && !dragElement.isOrHasChild(Node
+ .as(currentEventTarget))) {
+ // drag image appeared below, ignore
+ break;
+ }
+ case Event.ONKEYDOWN:
+ case Event.ONKEYPRESS:
+ case Event.ONKEYUP:
+ case Event.ONBLUR:
+ case Event.ONFOCUS:
+ // don't cancel possible drag start
+ break;
+ case Event.ONMOUSEOUT:
+
+ if (dragElement == null) {
+ break;
+ }
+ EventTarget relatedEventTarget = event
+ .getNativeEvent()
+ .getRelatedEventTarget();
+ if (Node.is(relatedEventTarget)
+ && !dragElement.isOrHasChild(Node
+ .as(relatedEventTarget))) {
+ // drag image appeared below, ignore
+ break;
+ }
+ case Event.ONMOUSEMOVE:
+ case Event.ONTOUCHMOVE:
+ if (deferredStartRegistration != null) {
+ deferredStartRegistration.removeHandler();
+ deferredStartRegistration = null;
+ }
+ currentDrag.setCurrentGwtEvent(event
+ .getNativeEvent());
+ startDrag.execute();
+ break;
+ default:
+ // on any other events, clean up the
+ // deferred drag start
+ if (deferredStartRegistration != null) {
+ deferredStartRegistration.removeHandler();
+ deferredStartRegistration = null;
+ }
+ currentDrag = null;
+ clearDragElement();
+ break;
+ }
+ }
+
+ });
+
+ } else {
+ startDrag.execute();
+ }
+
+ return currentDrag;
+ }
+
+ private void updateDragImagePosition() {
+ if (currentDrag.getCurrentGwtEvent() != null && dragElement != null) {
+ Style style = dragElement.getStyle();
+ int clientY = Util.getTouchOrMouseClientY(currentDrag
+ .getCurrentGwtEvent());
+ int clientX = Util.getTouchOrMouseClientX(currentDrag
+ .getCurrentGwtEvent());
+ style.setTop(clientY, Unit.PX);
+ style.setLeft(clientX, Unit.PX);
+ }
+ }
+
+ public VDropHandler findDragTarget(com.google.gwt.dom.client.Element element) {
+
+ // VConsole.log("findDragTarget: version " + version);
+
+ try {
+ Widget w = Util.findWidget(
+ (com.google.gwt.user.client.Element) element, null);
+ if (w == null) {
+ return null;
+ }
+
+ ComponentConnector dragSource = currentDrag.getTransferable()
+ .getDragSource();
+
+ if (dragSource != null
+ && dragSource.getWidget() instanceof VDDTabSheet) {
+ while (!(w instanceof VDDTabSheet)) {
+ w = w.getParent();
+ if (w == null) {
+ break;
+ }
+ }
+ } else {
+ while (!(w instanceof VHasDropHandler)
+ || !isDropEnabled((VHasDropHandler) w)) {
+ w = w.getParent();
+ if (w == null) {
+ break;
+ }
+ }
+ }
+
+ if (w == null) {
+ return null;
+ } else {
+ VDropHandler dh = ((VHasDropHandler) w).getDropHandler();
+ return dh;
+ }
+ } catch (Exception e) {
+ return null;
+ }
+
+ }
+
+ /**
+ * Checks if the given {@link VHasDropHandler} really is able to accept
+ * drops.
+ */
+ private static boolean isDropEnabled(VHasDropHandler target) {
+ VDropHandler dh = target.getDropHandler();
+ return dh != null && dh.getConnector().isEnabled();
+ }
+
+ /**
+ * Drag is ended (drop happened) on current drop handler. Calls drop method
+ * on current drop handler and does appropriate cleanup.
+ */
+ public void endDrag() {
+ endDrag(true);
+ }
+
+ /**
+ * The drag and drop operation is ended, but drop did not happen. If
+ * operation is currently on a drop handler, its dragLeave method is called
+ * and appropriate cleanup happens.
+ */
+ public void interruptDrag() {
+ endDrag(false);
+ }
+
+ private void endDrag(boolean doDrop) {
+ if (handlerRegistration != null) {
+ handlerRegistration.removeHandler();
+ handlerRegistration = null;
+ }
+ boolean sendTransferableToServer = false;
+ if (currentDropHandler != null) {
+ if (doDrop) {
+ // we have dropped on a drop target
+ sendTransferableToServer = currentDropHandler.drop(currentDrag);
+ if (sendTransferableToServer) {
+ doRequest(DragEventType.DROP);
+ /*
+ * Clean active source class name deferred until response is
+ * handled. E.g. hidden on start, removed in drophandler ->
+ * would flicker in case removed eagerly.
+ */
+ final ComponentConnector dragSource = currentDrag
+ .getTransferable().getDragSource();
+ final ApplicationConnection client = currentDropHandler
+ .getApplicationConnection();
+ Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {
+ @Override
+ public boolean execute() {
+ if (!client.hasActiveRequest()) {
+ removeActiveDragSourceStyleName(dragSource);
+ return false;
+ }
+ return true;
+ }
+
+ }, 30);
+
+ }
+ } else {
+ currentDrag.setCurrentGwtEvent(null);
+ currentDropHandler.dragLeave(currentDrag);
+ }
+ currentDropHandler = null;
+ serverCallback = null;
+ visitId = 0; // reset to ignore ongoing server check
+ }
+
+ /*
+ * Remove class name indicating drag source when server visit is done
+ * iff server visit was not initiated. Otherwise it will be removed once
+ * the server visit is done.
+ */
+ if (!sendTransferableToServer && currentDrag != null) {
+ removeActiveDragSourceStyleName(currentDrag.getTransferable()
+ .getDragSource());
+ }
+
+ currentDrag = null;
+
+ clearDragElement();
+
+ // release the capture (set to prevent text selection in IE)
+ Event.releaseCapture(RootPanel.getBodyElement());
+
+ }
+
+ private void removeActiveDragSourceStyleName(ComponentConnector dragSource) {
+ dragSource.getWidget().removeStyleName(ACTIVE_DRAG_SOURCE_STYLENAME);
+ }
+
+ private void clearDragElement() {
+ if (dragElement != null) {
+ if (dragElement.getParentElement() != null) {
+ dragElement.removeFromParent();
+ }
+ dragElement = null;
+ }
+ }
+
+ private int visitId = 0;
+ private Element dragElement;
+
+ /**
+ * Visits server during drag and drop procedure. Transferable and event type
+ * is given to server side counterpart of DropHandler.
+ *
+ * If another server visit is started before the current is received, the
+ * current is just dropped. TODO consider if callback should have
+ * interrupted() method for cleanup.
+ *
+ * @param acceptCallback
+ */
+ public void visitServer(VDragEventServerCallback acceptCallback) {
+ doRequest(DragEventType.ENTER);
+ serverCallback = acceptCallback;
+ }
+
+ private void doRequest(DragEventType drop) {
+ if (currentDropHandler == null) {
+ return;
+ }
+ ComponentConnector paintable = currentDropHandler.getConnector();
+ ApplicationConnection client = currentDropHandler
+ .getApplicationConnection();
+ /*
+ * For drag events we are using special id that are routed to
+ * "drag service" which then again finds the corresponding DropHandler
+ * on server side.
+ *
+ * TODO add rest of the data in Transferable
+ *
+ * TODO implement partial updates to Transferable (currently the whole
+ * Transferable is sent on each request)
+ */
+ visitId++;
+ client.updateVariable(ApplicationConstants.DRAG_AND_DROP_CONNECTOR_ID,
+ "visitId", visitId, false);
+ client.updateVariable(ApplicationConstants.DRAG_AND_DROP_CONNECTOR_ID,
+ "eventId", currentDrag.getEventId(), false);
+ client.updateVariable(ApplicationConstants.DRAG_AND_DROP_CONNECTOR_ID,
+ "dhowner", paintable, false);
+
+ VTransferable transferable = currentDrag.getTransferable();
+
+ client.updateVariable(ApplicationConstants.DRAG_AND_DROP_CONNECTOR_ID,
+ "component", transferable.getDragSource(), false);
+
+ client.updateVariable(ApplicationConstants.DRAG_AND_DROP_CONNECTOR_ID,
+ "type", drop.ordinal(), false);
+
+ if (currentDrag.getCurrentGwtEvent() != null) {
+ try {
+ MouseEventDetails mouseEventDetails = MouseEventDetailsBuilder
+ .buildMouseEventDetails(currentDrag
+ .getCurrentGwtEvent());
+ currentDrag.getDropDetails().put("mouseEvent",
+ mouseEventDetails.serialize());
+ } catch (Exception e) {
+ // NOP, (at least oophm on Safari) can't serialize html dd event
+ // to mouseevent
+ }
+ } else {
+ currentDrag.getDropDetails().put("mouseEvent", null);
+ }
+ client.updateVariable(ApplicationConstants.DRAG_AND_DROP_CONNECTOR_ID,
+ "evt", currentDrag.getDropDetails(), false);
+
+ client.updateVariable(ApplicationConstants.DRAG_AND_DROP_CONNECTOR_ID,
+ "tra", transferable.getVariableMap(), true);
+
+ }
+
+ public void handleServerResponse(ValueMap valueMap) {
+ if (serverCallback == null) {
+ return;
+ }
+ Profiler.enter("VDragAndDropManager.handleServerResponse");
+
+ UIDL uidl = (UIDL) valueMap.cast();
+ int visitId = uidl.getIntAttribute("visitId");
+
+ if (this.visitId == visitId) {
+ serverCallback.handleResponse(uidl.getBooleanAttribute("accepted"),
+ uidl);
+ serverCallback = null;
+ }
+ runDeferredCommands();
+
+ Profiler.leave("VDragAndDropManager.handleServerResponse");
+ }
+
+ private void runDeferredCommands() {
+ if (deferredCommand != null) {
+ Command command = deferredCommand;
+ deferredCommand = null;
+ command.execute();
+ if (!isBusy()) {
+ runDeferredCommands();
+ }
+ }
+ }
+
+ void setDragElement(Element node) {
+ if (currentDrag != null) {
+ if (dragElement != null && dragElement != node) {
+ clearDragElement();
+ } else if (node == dragElement) {
+ return;
+ }
+
+ dragElement = node;
+ dragElement.addClassName("v-drag-element");
+ updateDragImagePosition();
+
+ if (isStarted) {
+ lazyAttachDragElement.run();
+ } else {
+ /*
+ * To make our default dnd handler as compatible as possible, we
+ * need to defer the appearance of dragElement. Otherwise events
+ * that are derived from sequences of other events might not
+ * fire as domchanged will fire between them or mouse up might
+ * happen on dragElement.
+ */
+ lazyAttachDragElement.schedule(300);
+ }
+ }
+ }
+
+ Element getDragElement() {
+ return dragElement;
+ }
+
+ private final Timer lazyAttachDragElement = new Timer() {
+
+ @Override
+ public void run() {
+ if (dragElement != null && dragElement.getParentElement() == null) {
+ ApplicationConnection connection = getCurrentDragApplicationConnection();
+ Element dragImageParent;
+ if (connection == null) {
+ logger.log(
+ Level.SEVERE,
+ "Could not determine ApplicationConnection for current drag operation. The drag image will likely look broken");
+ dragImageParent = RootPanel.getBodyElement();
+ } else {
+ dragImageParent = VOverlay.getOverlayContainer(connection);
+ }
+ dragImageParent.appendChild(dragElement);
+ }
+
+ }
+ };
+
+ private Command deferredCommand;
+
+ private boolean isBusy() {
+ return serverCallback != null;
+ }
+
+ protected ApplicationConnection getCurrentDragApplicationConnection() {
+ if (currentDrag == null) {
+ return null;
+ }
+
+ final ComponentConnector dragSource = currentDrag.getTransferable()
+ .getDragSource();
+ if (dragSource == null) {
+ return null;
+ }
+ return dragSource.getConnection();
+ }
+
+ /**
+ * Method to que tasks until all dd related server visits are done
+ *
+ * @param command
+ */
+ private void defer(Command command) {
+ deferredCommand = command;
+ }
+
+ /**
+ * Method to execute commands when all existing dd related tasks are
+ * completed (some may require server visit).
+ * <p>
+ * Using this method may be handy if criterion that uses lazy initialization
+ * are used. Check
+ * <p>
+ * TODO Optimization: consider if we actually only need to keep the last
+ * command in queue here.
+ *
+ * @param command
+ */
+ public void executeWhenReady(Command command) {
+ if (isBusy()) {
+ defer(command);
+ } else {
+ command.execute();
+ }
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/FastView.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/FastView.java
new file mode 100644
index 0000000..c66cd2a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/FastView.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets;
+
+import org.eclipse.osbp.vaaclipse.widgets.client.ui.fastview.FastViewState;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.Window;
+
+/**
+ * @author rushan
+ *
+ */
+public class FastView extends Window {
+ @Override
+ protected FastViewState getState() {
+ return (FastViewState) super.getState();
+ }
+
+ public void setSide(Integer side) {
+ this.getState().side = side;
+ }
+
+ public void setTrimmedWindowClientArea(Component component) {
+ this.getState().trimmedWindowClientArea = component;
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/StackWidget.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/StackWidget.java
new file mode 100644
index 0000000..d211832
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/StackWidget.java
@@ -0,0 +1,117 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import com.vaadin.server.PaintException;
+import com.vaadin.server.PaintTarget;
+
+import fi.jasoft.dragdroplayouts.DDTabSheet;
+import fi.jasoft.dragdroplayouts.client.ui.LayoutDragMode;
+
+/**
+ * @author rushan
+ *
+ */
+public class StackWidget extends DDTabSheet {
+ public interface StateListener {
+ void stateChanged(int newState, int oldState);
+ }
+
+ private boolean minMaxEnabled = true;
+ private int state = 0;
+ private List<StateListener> stateListeners = new ArrayList<StateListener>();
+
+ public StackWidget() {
+ this.addStyleName("stackwidget");
+ this.setDragMode(LayoutDragMode.CLONE);
+ }
+
+ /**
+ * The hack that allow avoid bug in DDTabSheet when sometimes draggable tabs
+ * become non draggable
+ */
+ // @Override
+ // public void beforeClientResponse(boolean initial) {
+ // super.beforeClientResponse(initial);
+ //
+ // Iterator<Component> componentIterator = getComponentIterator();
+ // getState().draggable = new ArrayList<Connector>();
+ // while (componentIterator.hasNext()) {
+ // Component c = componentIterator.next();
+ // getState().draggable.add(c);
+ // }
+ // }
+
+ @Override
+ public void changeVariables(Object source, Map<String, Object> variables) {
+ // TODO luna - may cause problems
+ // super.changeVariables(source, variables);
+
+ if (variables.containsKey("vaadock_tabsheet_state")) {
+ int newState = (Integer) variables.get("vaadock_tabsheet_state");
+ int oldState = state;
+ state = newState;
+ fireStateChangedEvent(state, oldState);
+ }
+ }
+
+ public void setState(int state) {
+ this.state = state;
+ this.markAsDirty();
+ }
+
+ @Override
+ public void paintContent(PaintTarget target) throws PaintException {
+ super.paintContent(target);
+
+ target.addAttribute("vaadock_tabsheet_state", state);
+ target.addAttribute("minmax_enabled", this.minMaxEnabled);
+ target.addAttribute("svoi", 5);
+ }
+
+ public boolean isMinMaxEnabled() {
+ return minMaxEnabled;
+ }
+
+ public void setMinMaxEnabled(boolean minMaxEnabled) {
+ this.minMaxEnabled = minMaxEnabled;
+ this.requestRepaint();
+ }
+
+ public List<StateListener> getStateListeners() {
+ return Collections.unmodifiableList(stateListeners);
+ }
+
+ public void addStateListener(StateListener stateListener) {
+ this.stateListeners.add(stateListener);
+ }
+
+ public void removeStateListener(StateListener stateListener) {
+ this.stateListeners.remove(stateListener);
+ }
+
+ public void removeAllStateListeners() {
+ this.stateListeners.clear();
+ }
+
+ private void fireStateChangedEvent(int newState, int oldState) {
+ for (StateListener stateListener : new ArrayList<StateListener>(
+ this.stateListeners)) {
+ stateListener.stateChanged(newState, oldState);
+ }
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/fastview/FastViewConnector.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/fastview/FastViewConnector.java
new file mode 100644
index 0000000..27914e4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/fastview/FastViewConnector.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets.client.ui.fastview;
+
+import java.util.Set;
+
+import org.eclipse.osbp.vaaclipse.widgets.FastView;
+import org.eclipse.osbp.vaaclipse.widgets.common.Side;
+
+import com.google.gwt.user.client.ui.Widget;
+import com.vaadin.client.ComponentConnector;
+import com.vaadin.client.communication.StateChangeEvent;
+import com.vaadin.client.ui.window.WindowConnector;
+import com.vaadin.shared.ui.Connect;
+
+/**
+ * @author rushan
+ *
+ */
+@Connect(FastView.class)
+public class FastViewConnector extends WindowConnector {
+ @Override
+ public VFastView getWidget() {
+ return (VFastView) super.getWidget();
+ }
+
+ @Override
+ public void onStateChanged(StateChangeEvent stateChangeEvent) {
+ super.onStateChanged(stateChangeEvent);
+
+ Set<String> changedProperties = stateChangeEvent.getChangedProperties();
+ if (changedProperties.contains("side")) {
+ getWidget().side = getState().side;
+ getWidget().trimmedWindowClientArea = ((ComponentConnector) getState().trimmedWindowClientArea)
+ .getWidget();
+ setPaneLocation();
+ }
+ }
+
+ @Override
+ public FastViewState getState() {
+ return (FastViewState) super.getState();
+ }
+
+ public void setPaneLocation() {
+ VFastView fastView = getWidget();
+
+ if (fastView.side == null)
+ return;
+
+ // VExtendedVerticalLayout trimmedWindowClientArea =
+ // findTrimmedWindowClientArea(RootPanel.get());
+ Widget trimmedWindowClientArea = fastView.trimmedWindowClientArea;
+
+ if (trimmedWindowClientArea != null) {
+ int x, y;
+ int w = 600, h = 400;
+ if (Side.LEFT.equals(fastView.side)) {
+ x = trimmedWindowClientArea.getAbsoluteLeft();
+ y = trimmedWindowClientArea.getAbsoluteTop();
+ } else if (Side.RIGHT.equals(fastView.side)) {
+ x = trimmedWindowClientArea.getAbsoluteLeft()
+ + trimmedWindowClientArea.getOffsetWidth() - w;
+ y = trimmedWindowClientArea.getAbsoluteTop();
+ } else
+ return;
+
+ fastView.setPopupPosition(x, y);
+ fastView.setWidth(w + "px");
+ fastView.setHeight(h + "px");
+ }
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/fastview/FastViewState.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/fastview/FastViewState.java
new file mode 100644
index 0000000..4f45812
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/fastview/FastViewState.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.widgets.client.ui.fastview;
+
+import com.vaadin.shared.Connector;
+import com.vaadin.shared.ui.window.WindowState;
+
+/**
+ * @author rushan
+ *
+ */
+public class FastViewState extends WindowState {
+ public Integer side;
+ public Connector trimmedWindowClientArea;
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/fastview/VFastView.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/fastview/VFastView.java
new file mode 100644
index 0000000..7dfb4e6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/fastview/VFastView.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets.client.ui.fastview;
+
+import com.google.gwt.user.client.ui.Widget;
+import com.vaadin.client.ui.VWindow;
+
+public class VFastView extends VWindow {
+ Integer side;
+ Widget trimmedWindowClientArea;
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/stackwidget/StackWidgetConnector.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/stackwidget/StackWidgetConnector.java
new file mode 100644
index 0000000..a0d04d5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/stackwidget/StackWidgetConnector.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets.client.ui.stackwidget;
+
+import java.util.logging.Logger;
+
+import org.eclipse.osbp.vaaclipse.widgets.StackWidget;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.ui.Widget;
+import com.vaadin.client.ApplicationConnection;
+import com.vaadin.client.UIDL;
+import com.vaadin.client.communication.StateChangeEvent;
+import com.vaadin.shared.ui.Connect;
+
+import fi.jasoft.dragdroplayouts.client.VDragFilter;
+import fi.jasoft.dragdroplayouts.client.ui.interfaces.DDLayoutState;
+import fi.jasoft.dragdroplayouts.client.ui.tabsheet.DDTabsheetConnector;
+
+/**
+ * @author rushan
+ *
+ */
+@Connect(StackWidget.class)
+public class StackWidgetConnector extends DDTabsheetConnector {
+ Logger logger = Logger.getLogger(StackWidgetConnector.class.getName());
+
+ @Override
+ protected Widget createWidget() {
+ return GWT.create(VStackWidget.class);
+ }
+
+ @Override
+ public VStackWidget getWidget() {
+ return (VStackWidget) super.getWidget();
+ }
+
+ /**
+ * Called whenever an update is received from the server
+ */
+ public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
+ VStackWidget stackWidget = getWidget();
+
+ stackWidget.id = uidl.getId();
+ stackWidget.client = client;
+
+ if (uidl.getIntAttribute("svoi") == 5) {
+ int state = uidl.getIntAttribute("vaadock_tabsheet_state");
+ stackWidget.setState(state);
+ stackWidget.setMinmaxEnabled(uidl
+ .getBooleanAttribute("minmax_enabled"));
+ }
+
+ if (isRealUpdate(uidl) && !uidl.hasAttribute("hidden")) {
+ UIDL acceptCrit = uidl.getChildByTagName("-ac");
+ if (acceptCrit == null) {
+ getWidget().setDropHandler(null);
+ } else {
+ if (getWidget().getDropHandler() == null) {
+ getWidget().setDropHandler(
+ new VStackWidgetDropHandler(getWidget(), this));
+ logger.info("updateFromUIDL: VStackWidgetDropHandler installed");
+ }
+ getWidget().getDropHandler().updateAcceptRules(acceptCrit);
+ }
+ }
+
+ super.updateFromUIDL(uidl, client);
+ }
+
+ @Override
+ public void onStateChanged(StateChangeEvent stateChangeEvent) {
+ super.onStateChanged(stateChangeEvent);
+ getWidget().setDragFilter(new VSWDragFilter(getState().ddState));
+ }
+
+ private class VSWDragFilter extends VDragFilter {
+
+ public VSWDragFilter(DDLayoutState state) {
+ super(state);
+ }
+
+ @Override
+ public boolean isDraggable(Widget widget) {
+ return true;
+ }
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/stackwidget/VStackWidget.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/stackwidget/VStackWidget.java
new file mode 100644
index 0000000..acee73f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/stackwidget/VStackWidget.java
@@ -0,0 +1,792 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets.client.ui.stackwidget;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.osbp.vaaclipse.widgets.common.GeomUtils;
+import org.eclipse.osbp.vaaclipse.widgets.common.Side;
+import org.eclipse.osbp.vaaclipse.widgets.common.Vector;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.dom.client.Node;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.Element;
+import com.google.gwt.user.client.Event;
+import com.google.gwt.user.client.ui.ComplexPanel;
+import com.google.gwt.user.client.ui.RootPanel;
+import com.google.gwt.user.client.ui.Widget;
+import com.vaadin.client.ApplicationConnection;
+import com.vaadin.client.MouseEventDetailsBuilder;
+import com.vaadin.client.Util;
+import com.vaadin.client.ui.dd.VDragEvent;
+import com.vaadin.client.ui.orderedlayout.VAbstractOrderedLayout;
+import com.vaadin.shared.MouseEventDetails;
+import com.vaadin.shared.ui.dd.HorizontalDropLocation;
+
+import fi.jasoft.dragdroplayouts.client.ui.Constants;
+import fi.jasoft.dragdroplayouts.client.ui.VDragDropUtil;
+import fi.jasoft.dragdroplayouts.client.ui.tabsheet.VDDTabSheet;
+
+/**
+ * Client side widget which communicates with the server. Messages from the
+ * server are shown as HTML and mouse clicks are sent to the server.
+ */
+public class VStackWidget extends VDDTabSheet
+// ,DragHandlerFinder
+{
+
+ /** Set the CSS class name to allow styling. */
+ public static final String CLASSNAME = "v-stackwidget";
+
+ public static final String CLICK_EVENT_IDENTIFIER = "click";
+
+ ApplicationConnection client;
+ String id;
+
+ // Minmax button support
+ Element tabs;
+ Element scroller;
+ String originalScrollerMarginLeftAttribute;
+ Element buttonPanel;
+
+ // Docking support
+ ComplexPanel tabBar;
+
+ Integer dockSide;
+
+ Element dockZone1;
+ Element dockZone2;
+ Element dockZone3;
+ Element dockZone4;
+
+ Element dockZoneContainer;
+
+ final String E4_ELEMENT_TYPE = "e4ElementType";
+
+ Element maximizeButton;
+ Element minimizeButton;
+ int state;
+
+ private static final int MINIMIZED = -1;
+ private static final int NORMAL = 0;
+ private static final int MAXIMIZED = 1;
+
+ private boolean minmaxEnabled = true;
+
+ private String baseURL;
+
+ // Relocate of part toolbar support
+ // private boolean toolbarRelocated = false;
+ private Element toolbarElement;
+ private Map<Element, String> overflowRewritedElements;
+
+ /**
+ * The constructor should first call super() to initialize the component and
+ * then handle any initialization relevant to Vaadin.
+ */
+ public VStackWidget() {
+ super();
+
+ this.baseURL = GWT.getHostPageBaseURL();
+
+ // Get the tabBar
+ tabBar = (ComplexPanel) getChildren().get(0);
+
+ tabs = (Element) getElement().getChild(0);
+
+ scroller = DOM.getChild(tabs, 1);
+ for (int i = 0; i < DOM.getChildCount(scroller); i++) {
+ Element child = DOM.getChild(scroller, i);
+ DOM.setStyleAttribute(child, "float", "left");
+ }
+
+ buttonPanel = DOM.createDiv();
+ setStyleName(buttonPanel, "vaadock-tabsheet-button-panel");
+ DOM.appendChild(tabs, buttonPanel);
+
+ maximizeButton = DOM.createButton();
+ setStyleName(maximizeButton, "v-vaadock-tabsheet-maximize-button");
+ DOM.sinkEvents(maximizeButton, Event.ONCLICK);
+ DOM.appendChild(buttonPanel, maximizeButton);
+
+ minimizeButton = DOM.createButton();
+ DOM.sinkEvents(minimizeButton, Event.ONCLICK);
+ setStyleName(minimizeButton, "v-vaadock-tabsheet-minimize-button");
+ DOM.appendChild(buttonPanel, minimizeButton);
+
+ setMinmaxEnabled(true);
+ }
+
+ public boolean isMinmaxEnabled() {
+ return minmaxEnabled;
+ }
+
+ public void setMinmaxEnabled(boolean minmaxEnabled) {
+ this.minmaxEnabled = minmaxEnabled;
+
+ if (this.minmaxEnabled) {
+ DOM.setStyleAttribute(buttonPanel, "display", "");
+ // DOM.setStyleAttribute(scroller, "marginRight", "45px");
+ } else {
+ DOM.setStyleAttribute(buttonPanel, "display", "none");
+ // DOM.setStyleAttribute(scroller, "marginRight", "0px");
+ }
+ }
+
+ @Override
+ public void iLayout() {
+ super.iLayout();
+
+ processPartToolbar();
+ }
+
+ public void processPartToolbar() {
+ updateLocationOfButtonPanel();
+ updateLocationOfPartToolbar();
+ }
+
+ private void updateLocationOfButtonPanel() {
+ if (isMinmaxEnabled()) {
+ int buttonPanelHeight = tabs.getOffsetHeight();
+ int buttonPanelMarginTop = -buttonPanelHeight;
+ // DOM.setStyleAttribute(buttonPanel, "height", buttonPanelHeight
+ // + "px");
+ // DOM.setStyleAttribute(buttonPanel, "marginTop", "0px");
+ }
+ }
+
+ public int getState() {
+ return state;
+ }
+
+ public void setState(int state) {
+ if (!this.isMinmaxEnabled() && state != MINIMIZED && state != NORMAL
+ && state != MAXIMIZED)
+ return;
+
+ this.state = state;
+ // VConsole.log("VStackWidget: state = " + this.state);
+
+ if (this.state == NORMAL) {
+ this.state = NORMAL;
+ setStyleName(maximizeButton, "v-vaadock-tabsheet-maximize-button");
+ setStyleName(minimizeButton, "v-vaadock-tabsheet-minimize-button");
+ maximizeButton.setAttribute("style", "");
+ minimizeButton.setAttribute("style", "");
+ } else if (this.state == MAXIMIZED) {
+ this.state = MAXIMIZED;
+ setStyleName(maximizeButton, "v-vaadock-tabsheet-restore-button");
+ setStyleName(minimizeButton, "v-vaadock-tabsheet-minimize-button");
+ maximizeButton.setAttribute("style", "");
+ minimizeButton.setAttribute("style", "");
+ } else if (this.state == MINIMIZED) {
+ this.state = MINIMIZED;
+ setStyleName(maximizeButton, "v-vaadock-tabsheet-maximize-button");
+ setStyleName(minimizeButton, "v-vaadock-tabsheet-restore-button");
+ maximizeButton.setAttribute("style", "display: none;");
+ minimizeButton.setAttribute("style", "");
+ }
+ }
+
+ @Override
+ public void onBrowserEvent(Event event) {
+ if (event.getTypeInt() == Event.ONCLICK) {
+ if (DOM.eventGetTarget(event) == maximizeButton) {
+ // VConsole.log(event.getType());
+ synchronized (this) {
+ event.stopPropagation();
+
+ if (this.state == MAXIMIZED) {
+ setState(NORMAL);
+ } else if (this.state == NORMAL) {
+ setState(MAXIMIZED);
+ }
+
+ client.updateVariable(this.id, "vaadock_tabsheet_state",
+ new Integer(this.state), true);
+ }
+ } else if (DOM.eventGetTarget(event) == minimizeButton) {
+ // VConsole.log(event.getType());
+ synchronized (this) {
+ event.stopPropagation();
+
+ if (this.state == NORMAL) {
+ setState(MINIMIZED);
+ } else if (this.state == MINIMIZED) {
+ setState(NORMAL);
+ } else if (this.state == MAXIMIZED) {
+ setState(MINIMIZED);
+ }
+
+ client.updateVariable(this.id, "vaadock_tabsheet_state",
+ new Integer(this.state), true);
+ }
+ }
+ }
+
+ super.onBrowserEvent(event);
+
+ }
+
+ // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ // Drag-and-drop support
+ // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ @Override
+ public void deEmphasis() {
+ super.deEmphasis();
+ }
+
+ @Override
+ public void emphasis(com.google.gwt.dom.client.Element element,
+ VDragEvent event) {
+ super.emphasis(element, event);
+ }
+
+ @Override
+ public boolean postDropHook(VDragEvent drag) {
+ removeDockZone();
+ return super.postDropHook(drag);
+ }
+
+ @Override
+ protected void postOverHook(VDragEvent drag) {
+ super.postOverHook(drag);
+ }
+
+ @Override
+ public void postLeaveHook(VDragEvent drag) {
+ super.postLeaveHook(drag);
+ }
+
+ // public VDropHandler findDragTarget(com.google.gwt.dom.client.Element
+ // element) {
+ //
+ // try {
+ // Widget w = Util.findWidget(
+ // (com.google.gwt.user.client.Element) element, null);
+ // if (w == null) {
+ // return null;
+ // }
+ //
+ // VDragEvent event = VDragAndDropManager.get().getDragEvent();
+ // Widget sourceWidget = (Widget) event.getTransferable().getDragSource();
+ // if (sourceWidget != null && sourceWidget instanceof VDDTabSheet)
+ // {
+ // while (!(w instanceof VDDTabSheet) ) {
+ // w = w.getParent();
+ // if (w == null) {
+ // break;
+ // }
+ // }
+ // }
+ // else
+ // {
+ // while (!(w instanceof VHasDropHandler) ) {
+ // w = w.getParent();
+ // if (w == null) {
+ // break;
+ // }
+ // }
+ // }
+ //
+ // if (w == null) {
+ // return null;
+ // } else {
+ // VDropHandler dh = ((VHasDropHandler) w).getDropHandler();
+ // return dh;
+ // }
+ // } catch (Exception e) {
+ // return null;
+ // }
+ //
+ // }
+
+ protected boolean isDockZoneExists() {
+ return dockZone1 != null && dockZoneContainer != null;
+ }
+
+ protected void removeDockZone() {
+ if (isDockZoneExists()) {
+ dockSide = null;
+ DOM.removeChild(dockZoneContainer, dockZone1);
+ DOM.removeChild(dockZoneContainer, dockZone2);
+ DOM.removeChild(dockZoneContainer, dockZone3);
+ DOM.removeChild(dockZoneContainer, dockZone4);
+ dockZone1 = null;
+ dockZone2 = null;
+ dockZone3 = null;
+ dockZone4 = null;
+ dockZoneContainer = null;
+
+ // VConsole.log("removeDockZone: dock zone removed");
+ }
+ }
+
+ public boolean updateRegion(VDragEvent event) {
+ // VConsole.log("updateDropDetails: start");
+ Element element = event.getElementOver();
+ Widget targetWidget = Util.findWidget(element, null);
+
+ if (targetWidget == null) {
+ // VConsole.log("updateDropDetails: targetWidget is null. return.");
+ return false;
+ }
+
+ if (targetWidget != this) {
+ // VConsole.log("updateDropDetails: targetWidget != this");
+ Widget parent = targetWidget.getParent();
+ while (parent != null && parent != this) {
+ parent = parent.getParent();
+ }
+
+ if (parent == null) {
+ // VConsole.log("updateDropDetails: parent not finded");
+ return false;
+ }
+ targetWidget = parent;
+ // VConsole.log("updateDropDetails: parent finded");
+ }
+
+ MouseEventDetails details1 = MouseEventDetailsBuilder
+ .buildMouseEventDetails(event.getCurrentGwtEvent(),
+ getElement());
+
+ int mouseX = details1.getClientX();
+ int mouseY = details1.getClientY();
+
+ int barLeft = tabBar.getAbsoluteLeft();
+ int barTop = tabBar.getAbsoluteTop();
+ int barWidth = tabBar.getOffsetWidth();
+ int barHeight = tabBar.getOffsetHeight();
+
+ boolean overBar = mouseX > barLeft && mouseX < barLeft + barWidth
+ && mouseY > barTop && mouseY < barTop + barHeight;
+
+ if (overBar) {
+ // VConsole.log("updateDropDetails: over bar");
+ removeDockZone();
+
+ event.getDropDetails().put("targetWidgetClassName",
+ targetWidget.getClass().getName());
+ event.getDropDetails().put("dropType", "DropToTabsheetBar");
+ event.getDropDetails().put("targetWidgetAbsoluteLeft",
+ targetWidget.getAbsoluteLeft());
+ event.getDropDetails().put("targetWidgetAbsoluteTop",
+ targetWidget.getAbsoluteTop());
+ event.getDropDetails().put("targetWidgetOffsetWidth",
+ targetWidget.getOffsetWidth());
+ event.getDropDetails().put("targetWidgetOffsetHeight",
+ targetWidget.getOffsetHeight());
+ } else {
+ // VConsole.log("updateDropDetails: not over bar");
+ Object sourceWidget = event.getTransferable().getDragSource();
+ if (!(sourceWidget instanceof VStackWidget)
+ && !(sourceWidget instanceof StackWidgetConnector)) {
+ // VConsole.log("updateDropDetails: return, because the sourceWidget is "
+ // + sourceWidget.getClass().getName());
+ return false;
+ }
+
+ if (sourceWidget instanceof StackWidgetConnector)
+ sourceWidget = ((StackWidgetConnector) sourceWidget)
+ .getWidget();
+
+ // VConsole.log("updateDropDetails: sourceWidget is VStackWidget or StackWidgetConnector");
+
+ VStackWidget targetTabSheet = this;
+
+ if (targetTabSheet == sourceWidget
+ && targetTabSheet.getTabCount() <= 1) {
+ // VConsole.log("updateDropDetails: return, because target is match to source and has only one (current draggable) tab");
+ return false;
+ }
+
+ VAbstractOrderedLayout outerArea = findOuterArea(targetTabSheet);
+
+ Widget boundingWidget = null;
+
+ if (outerArea != null) {
+ // VConsole.log("updateDropDetails: outer area is finded");
+ if (outerArea.getStyleName().contains(
+ "org_eclipse_osbp_vaaclipse_area"))
+ boundingWidget = outerArea;
+ } else {
+ boundingWidget = targetTabSheet;
+ // VConsole.log("updateDropDetails: outer area not finded, boundingWidget = targetTabSheet");
+ }
+
+ if (boundingWidget == null) {
+ // VConsole.log("updateDropDetails: return, because boundingWidget not founded");
+ return false;
+ }
+
+ event.getDropDetails().put("targetWidgetClassName",
+ boundingWidget.getClass().getName());
+ event.getDropDetails().put("dropType", "DropToTabsheetBody");
+ event.getDropDetails().put("targetWidgetAbsoluteLeft",
+ boundingWidget.getAbsoluteLeft());
+ event.getDropDetails().put("targetWidgetAbsoluteTop",
+ boundingWidget.getAbsoluteTop());
+ event.getDropDetails().put("targetWidgetOffsetWidth",
+ boundingWidget.getOffsetWidth());
+ event.getDropDetails().put("targetWidgetOffsetHeight",
+ boundingWidget.getOffsetHeight());
+
+ int x0 = boundingWidget.getAbsoluteLeft();
+ int y0 = boundingWidget.getAbsoluteTop();
+ int dx = boundingWidget.getOffsetWidth();
+ int dy = boundingWidget.getOffsetHeight();
+
+ int docPrcnt = 30;
+ double docX = dx * docPrcnt / 100;
+ double docY = dy * docPrcnt / 100;
+ double d = 1;
+
+ Vector mousePos = Vector.valueOf(mouseX, mouseY);
+
+ Integer side = GeomUtils.findDockSide(x0, y0, dx, dy, docX, docY,
+ mousePos);
+ // VConsole.log("updateDropDetails: finded dock side = " + side +
+ // ", old dock side = " + dockSide);
+ if (side != null) {
+ double _x = 0, _y = 0, _w = 0, _h = 0;
+
+ if (side == Side.LEFT) {
+ _x = d;
+ _y = d;
+ _w = docX - d;
+ _h = dy - 2 * d;
+ } else if (side == Side.TOP) {
+ _x = d;
+ _y = d;
+ _w = dx - 2 * d;
+ _h = docY - d;
+ } else if (side == Side.RIGHT) {
+ _x = dx - docX;
+ _y = d;
+ _w = docX - d;
+ _h = dy - 2 * d;
+ } else if (side == Side.BOTTOM) {
+ _x = d;
+ _y = dy - docY;
+ _w = dx - 2 * d;
+ _h = docY - d;
+ } else if (side == Side.CENTER) {
+ _x = d;
+ _y = d;
+ _w = dx - 2 * d;
+ _h = dy - 2 * d;
+ } else
+ return false;
+
+ _x = x0 + _x;
+ _y = y0 + _y;
+
+ if (dockZone1 == null) {
+ dockZone1 = DOM.createDiv();
+ dockZone2 = DOM.createDiv();
+ dockZone3 = DOM.createDiv();
+ dockZone4 = DOM.createDiv();
+ }
+
+ // VConsole.log("updateDropDetails: x=" + _x + "; y=" + _y +
+ // "; w=" + _w + "; h=" + _h);
+
+ if (side != dockSide) {
+ // VConsole.log("updateDropDetails: dock side will be updated");
+ int l = 3;
+ String style1 = "position: absolute; left: "
+ + _x
+ + "px; top: "
+ + _y
+ + "px; width: "
+ + _w
+ + "px; height: "
+ + l
+ + "px; background-image: url("
+ + baseURL
+ + "VAADIN/themes/dragdrop/vaadock/img/dockzone.png); z-index: 20000;";
+ dockZone1.setAttribute("style", style1);
+
+ String style2 = "position: absolute; left: "
+ + _x
+ + "px; top: "
+ + (_y + _h - l)
+ + "px; width: "
+ + _w
+ + "px; height: "
+ + l
+ + "px; background-image: url("
+ + baseURL
+ + "VAADIN/themes/dragdrop/vaadock/img/dockzone.png); z-index: 20000;";
+ dockZone2.setAttribute("style", style2);
+
+ String style3 = "position: absolute; left: "
+ + _x
+ + "px; top: "
+ + _y
+ + "px; width: "
+ + l
+ + "px; height: "
+ + _h
+ + "px; background-image: url("
+ + baseURL
+ + "VAADIN/themes/dragdrop/vaadock/img/dockzone.png); z-index: 20000;";
+ dockZone3.setAttribute("style", style3);
+
+ String style4 = "position: absolute; left: "
+ + (_x + _w - l)
+ + "px; top: "
+ + _y
+ + "px; width: "
+ + l
+ + "px; height: "
+ + _h
+ + "px; background-image: url("
+ + baseURL
+ + "VAADIN/themes/dragdrop/vaadock/img/dockzone.png); z-index: 20000;";
+ dockZone4.setAttribute("style", style4);
+
+ // setStyleName(dockZone, "v-etot-sukin-syn");
+ // dockZoneContainer = boundingWidget.getElement();
+ dockZoneContainer = RootPanel.get().getElement();
+ DOM.appendChild(dockZoneContainer, dockZone1);
+ DOM.appendChild(dockZoneContainer, dockZone2);
+ DOM.appendChild(dockZoneContainer, dockZone3);
+ DOM.appendChild(dockZoneContainer, dockZone4);
+
+ dockSide = side;
+ }
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Updates the drop details while dragging. This is needed to ensure client
+ * side criterias can validate the drop location.
+ *
+ * @param widget
+ * The container which we are hovering over
+ * @param event
+ * The drag event
+ */
+ @Override
+ public void updateDragDetails(VDragEvent event) {
+ if (!updateRegion(event))
+ return;
+
+ Element element = event.getElementOver();
+ Widget targetWidget = Util.findWidget(element, null);
+
+ // --
+ if (tabBar.getElement().isOrHasChild(element)) {
+
+ if (targetWidget == tabBar) {
+ // Ove3r the spacer
+
+ // Add index
+ event.getDropDetails().put(Constants.DROP_DETAIL_TO,
+ tabBar.getWidgetCount() - 1);
+
+ // Add drop location
+ event.getDropDetails().put(
+ Constants.DROP_DETAIL_HORIZONTAL_DROP_LOCATION,
+ HorizontalDropLocation.RIGHT);
+
+ } else {
+
+ // Add index
+ event.getDropDetails().put(Constants.DROP_DETAIL_TO,
+ getTabPosition(targetWidget));
+
+ // Add drop location
+ HorizontalDropLocation location = VDragDropUtil
+ .getHorizontalDropLocation(element, Util
+ .getTouchOrMouseClientX(event
+ .getCurrentGwtEvent()),
+ getTabLeftRightDropRatio());
+ event.getDropDetails().put(
+ Constants.DROP_DETAIL_HORIZONTAL_DROP_LOCATION,
+ location);
+ }
+ }
+
+ // Add mouse event details
+ MouseEventDetails details = MouseEventDetailsBuilder
+ .buildMouseEventDetails(event.getCurrentGwtEvent(),
+ getElement());
+ event.getDropDetails().put(Constants.DROP_DETAIL_MOUSE_EVENT,
+ details.serialize());
+ }
+
+ private VAbstractOrderedLayout findOuterArea(Widget w) {
+ if (w instanceof VAbstractOrderedLayout) {
+ VAbstractOrderedLayout bl = (VAbstractOrderedLayout) w;
+ String styleName = bl.getStyleName();
+ if (styleName != null
+ && !styleName.isEmpty()
+ && (styleName.contains("org_eclipse_osbp_vaaclipse_area")
+ || styleName
+ .contains("org_eclipse_osbp_vaaclipse_perspective") || styleName
+ .contains("org_eclipse_osbp_vaaclipse_window"))) {
+ return bl;
+ }
+ }
+
+ if (w.getParent() != null)
+ return findOuterArea(w.getParent());
+ else
+ return null;
+ }
+
+ // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ // Part toolbar relocate support
+ // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ private void updateLocationOfPartToolbar() {
+ // if (!getWidgetIterator().hasNext())
+ // return;
+ //
+ // Widget selectedWidget = getCurrentlyDisplayedWidget();
+ //
+ // if (selectedWidget == null || selectedWidget.getElement() == null)
+ // return;
+ //
+ // List pathToToolbar = findToolbarElement(selectedWidget.getElement(),
+ // 12);
+ // if (pathToToolbar.isEmpty())
+ // return;
+ //
+ // toolbarElement = (Element) pathToToolbar.get(pathToToolbar.size() -
+ // 1);
+ //
+ // if (toolbarElement == null)
+ // return;
+
+ // String mR, mT;
+ // try {
+ // mR = DOM.getStyleAttribute(toolbarElement, "marginRight");
+ // mT = DOM.getStyleAttribute(toolbarElement, "marginTop");
+ // } catch (Exception e) {
+ // return;
+ // }
+ //
+ // if (mR != null && mT != null && !mR.trim().isEmpty()
+ // && !mT.trim().isEmpty()) {// toolbar is relocated, check is
+ // // there are space in tabs panel and
+ // // if no, restore location of
+ // // toolbar
+ // if (!hasSpace(toolbarElement)) {
+ // restoreLocationOfPartToolbar();
+ // }
+ // } else {// toolbar is not relocated, check is there are space in tabs
+ // // panel and if yes, move toolbar to tabs panel
+ // if (hasSpace(toolbarElement)) {
+ // if (activeTabIndex >= 0 && this.getParent() != null)
+ // changeLocationOfPartToolbar(selectedWidget, pathToToolbar);
+ // }
+ // }
+ }
+
+ private boolean hasSpace(Element toolbarElement) {
+ Element tb = (Element) tabs.getChild(0);
+ Element spacertd = (Element) tb.getChild(0).getChild(0).getLastChild();
+
+ return tb.getOffsetWidth()
+ - DOM.getElementPropertyInt((Element) spacertd.cast(),
+ "offsetWidth") < getOffsetWidth()
+ - (isMinmaxEnabled() ? buttonPanel.getOffsetWidth() : 0)
+ - toolbarElement.getOffsetWidth() - 10;
+ }
+
+ private void changeLocationOfPartToolbar(Widget selectedWidget,
+ List pathToToolbar) {
+ // overflowRewritedElements = new HashMap<Element, String>();
+ // Element selectedElementParent =
+ // selectedWidget.getParent().getElement();
+ // // Two DOM-elements of selectedWidget.getParent() should be included
+ // to
+ // // overflow rewrite
+ // pathToToolbar.add(0, selectedElementParent.getChild(0));
+ // pathToToolbar.add(0, selectedElementParent);
+ // for (int i = 0; i < pathToToolbar.size(); i++) {
+ // Element element = (Element) pathToToolbar.get(i);
+ // String overflow = DOM.getElementProperty((Element) element,
+ // "overflow");
+ // if (!"".equals(overflow) && !"visible".equals(overflow)
+ // && !"".equals("inherit")) {
+ // DOM.setStyleAttribute(element, "overflow", "visible");
+ // overflowRewritedElements.put(element, overflow);
+ // }
+ // }
+ //
+ // updateGeometry();
+ }
+
+ private void updateGeometry() {
+ // int marginRight = (isMinmaxEnabled() ? buttonPanel.getOffsetWidth() :
+ // 0) + 5;
+ // int marginTop = tabs.getAbsoluteTop() -
+ // toolbarElement.getAbsoluteTop();
+ //
+ // DOM.setStyleAttribute(toolbarElement, "marginRight", marginRight +
+ // "px");
+ // DOM.setStyleAttribute(toolbarElement, "marginTop", marginTop + "px");
+ }
+
+ void restoreLocationOfPartToolbar() {
+ // if (toolbarElement == null)
+ // return;
+ //
+ // DOM.setStyleAttribute(toolbarElement, "marginRight", "");
+ // DOM.setStyleAttribute(toolbarElement, "marginTop", "");
+ //
+ // toolbarElement = null;
+ // overflowRewritedElements = null;
+ }
+
+ /**
+ * Find the toolbar element in rootElement. Searching in first elements
+ * throw first n element Return the path to toolbar element in order from
+ * rootElement to toolbar including rootElement and toolbar
+ *
+ * @return
+ */
+ private List findToolbarElement(Element rootElement, int n) {
+ List pathToParent = new ArrayList();
+ pathToParent.add(rootElement);
+ Element element = rootElement;
+ int depth = 0;
+ while (element.getChildCount() > 0 && ++depth < n) {
+ Node node = element.getChild(0);
+ if (node instanceof Element) {
+ element = (Element) node;
+ pathToParent.add(element);
+ String className = element.getClassName();
+ if (className != null
+ && !className.contains("mparttoolbararea")
+ && className.contains("mparttoolbar"))
+ break;
+ } else
+ return new ArrayList();
+ }
+
+ if (element == null)
+ pathToParent.clear();
+
+ return pathToParent;
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/stackwidget/VStackWidgetDropHandler.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/stackwidget/VStackWidgetDropHandler.java
new file mode 100644
index 0000000..1bf2f5d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/client/ui/stackwidget/VStackWidgetDropHandler.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.widgets.client.ui.stackwidget;
+
+import com.vaadin.client.ComponentConnector;
+import com.vaadin.client.ui.dd.VAcceptCallback;
+import com.vaadin.client.ui.dd.VDragEvent;
+
+import fi.jasoft.dragdroplayouts.client.ui.Constants;
+import fi.jasoft.dragdroplayouts.client.ui.tabsheet.VDDTabsheetDropHandler;
+
+public class VStackWidgetDropHandler extends VDDTabsheetDropHandler {
+
+ private final VStackWidget stackWidget;
+
+ public VStackWidgetDropHandler(VStackWidget stackWidget,
+ ComponentConnector connector) {
+ super(connector);
+ this.stackWidget = stackWidget;
+ }
+
+ @Override
+ public void dragOver(VDragEvent drag) {
+
+ // VConsole.log("Drag Over");
+
+ stackWidget.deEmphasis();
+
+ stackWidget.updateDragDetails(drag);
+
+ stackWidget.postOverHook(drag);
+
+ // Check if we are dropping on our self
+ if (stackWidget.equals(drag.getTransferable().getData(
+ Constants.TRANSFERABLE_DETAIL_COMPONENT))) {
+ return;
+ }
+
+ // Validate the drop
+ validate(new VAcceptCallback() {
+ public void accepted(VDragEvent event) {
+ stackWidget.emphasis(event.getElementOver(), event);
+ }
+ }, drag);
+ };
+
+ @Override
+ public void dragLeave(VDragEvent drag) {
+ // VConsole.log("Drag Leave");
+ stackWidget.deEmphasis();
+ stackWidget.updateDragDetails(drag);
+ stackWidget.postLeaveHook(drag);
+
+ stackWidget.removeDockZone();
+ };
+
+ @Override
+ public boolean drop(VDragEvent event) {
+ if (!stackWidget.updateRegion(event))
+ return false;
+
+ Object sourceWidget = event.getTransferable().getDragSource();
+ if (sourceWidget instanceof StackWidgetConnector) {
+ sourceWidget = ((StackWidgetConnector) sourceWidget).getWidget();
+ VStackWidget stackWidget = (VStackWidget) sourceWidget;
+ stackWidget.restoreLocationOfPartToolbar();
+ }
+
+ return super.drop(event);
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Bounds.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Bounds.java
new file mode 100644
index 0000000..271ecfa
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Bounds.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.osbp.vaaclipse.widgets.common;
+
+/**
+ * @author rushan
+ *
+ */
+public class Bounds {
+ public int x, y, w, h;
+
+ public Bounds(int x, int y, int w, int h) {
+ this.x = x;
+ this.y = y;
+ this.w = w;
+ this.h = h;
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Constants.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Constants.java
new file mode 100644
index 0000000..5e7080e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Constants.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.widgets.common;
+
+/**
+ * @author rushan
+ *
+ */
+public class Constants {
+ public static final String E4_ELEMENT_TYPE = "e4ElementType";
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/GeomUtils.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/GeomUtils.java
new file mode 100644
index 0000000..82269ad
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/GeomUtils.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.widgets.common;
+
+/**
+ * @author rushan
+ *
+ */
+public class GeomUtils {
+
+ public static Integer findDockSide(int x0, int y0, int dx, int dy,
+ double docX, double docY, Vector mousePos) {
+ if (GeometryHelper.containsInRectangle(
+ Vector.valueOf(x0 + docX, y0 + docY),
+ Vector.valueOf(dx - 2 * docX, dy - 2 * docY), mousePos))
+ return Side.CENTER;
+ else if (GeometryHelper.containsInRectangle(
+ Vector.valueOf(x0 + docX, y0 + dy - docY),
+ Vector.valueOf(dx - 2 * docX, docY), mousePos)
+ || GeometryHelper.containsInRightTriangle(
+ Vector.valueOf(x0 + docX, y0 + dy), -docX, -docY,
+ mousePos)
+ || GeometryHelper.containsInRightTriangle(
+ Vector.valueOf(x0 + dx - docX, y0 + dy), docX, -docY,
+ mousePos)) {
+ return Side.BOTTOM;
+ } else if (GeometryHelper.containsInRectangle(
+ Vector.valueOf(x0, y0 + docY), new Vector(docX, dy - 2 * docY),
+ mousePos)
+ || GeometryHelper.containsInRightTriangle(
+ Vector.valueOf(x0, y0 + docY), docX, -docY, mousePos)
+ || GeometryHelper.containsInRightTriangle(
+ Vector.valueOf(x0, y0 + dy - docY), docX, docY,
+ mousePos)) {
+ return Side.LEFT;
+ } else if (GeometryHelper.containsInRectangle(
+ Vector.valueOf(x0 + dx - docX, y0 + docY), new Vector(docX, dy
+ - 2 * docY), mousePos)
+ || GeometryHelper.containsInRightTriangle(
+ Vector.valueOf(x0 + dx, y0 + docY), -docX, -docY,
+ mousePos)
+ || GeometryHelper.containsInRightTriangle(
+ Vector.valueOf(x0 + dx, y0 + dy - docY), -docX, docY,
+ mousePos)) {
+ return Side.RIGHT;
+ } else if (GeometryHelper.containsInRectangle(
+ Vector.valueOf(x0 + docX, y0), new Vector(dy - 2 * docY, docY),
+ mousePos)
+ || GeometryHelper.containsInRightTriangle(
+ Vector.valueOf(x0 + docX, y0), -docX, docY, mousePos)
+ || GeometryHelper.containsInRightTriangle(
+ Vector.valueOf(x0 + dx - docX, y0), docX, docY,
+ mousePos)) {
+ return Side.TOP;
+ } else
+ return null;
+ }
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/GeometryHelper.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/GeometryHelper.java
new file mode 100644
index 0000000..cfe2c95
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/GeometryHelper.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.widgets.common;
+
+/**
+ * @author rushan
+ *
+ */
+public class GeometryHelper {
+ // public static boolean containsInRectangle(Rectangle rect, Vector point)
+ // {
+ // return point.getX() >= rect.getCorner1().getX() && point.getX() <=
+ // rect.getCorner4().getX() &&
+ // point.getY() >= rect.getCorner1().getY() && point.getX() <=
+ // rect.getCorner2().getY();
+ // }
+
+ public static boolean containsInRectangle(Vector start, Vector sides,
+ Vector point) {
+ // return containsInRectangle(new Rectangle(start, sides), point);
+ return point.getX() >= start.getX()
+ && point.getX() <= start.getX() + sides.getX()
+ && point.getY() >= start.getY()
+ && point.getY() <= start.getY() + sides.getY();
+ }
+
+ public static boolean containsInRightTriangle(Vector triangleRigthAngle,
+ double catetX, double catetY, Vector point) {
+ if (catetX < 0) {
+ // coordinate translation
+ catetX = -catetX;
+ triangleRigthAngle = new Vector(-triangleRigthAngle.getX(),
+ triangleRigthAngle.getY());
+ point = new Vector(-point.getX(), point.getY());
+ }
+
+ if (catetY < 0) {
+ // coordinate translation
+ catetY = -catetY;
+ triangleRigthAngle = new Vector(triangleRigthAngle.getX(),
+ -triangleRigthAngle.getY());
+ point = new Vector(point.getX(), -point.getY());
+ }
+
+ return point.getX() >= triangleRigthAngle.getX()
+ && point.getX() <= triangleRigthAngle.getX() + catetX
+ && Math.abs(triangleRigthAngle.getY() - point.getY()) <= (catetY / catetX)
+ * Math.abs(triangleRigthAngle.getX() + catetX
+ - point.getX());
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Rectangle.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Rectangle.java
new file mode 100644
index 0000000..b8707ec
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Rectangle.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.widgets.common;
+
+/**
+ * @author rushan
+ *
+ */
+public class Rectangle {
+ private Vector start, sides;
+
+ public Rectangle(double x, double y, double w, double h) {
+ this.start = new Vector(x, y);
+ this.sides = new Vector(w, h);
+ }
+
+ public Vector getStart() {
+ return start;
+ }
+
+ public Vector getSides() {
+ return sides;
+ }
+
+ public Vector getCorner1() {
+ return start;
+ }
+
+ public Vector getCorner2() {
+ return start.plus(sides.getYProectionVector());
+ }
+
+ public Vector getCorner3() {
+ return start.plus(sides);
+ }
+
+ public Vector getCorner4() {
+ return start.plus(sides.getXProectionVector());
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Side.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Side.java
new file mode 100644
index 0000000..d6bbc60
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Side.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.widgets.common;
+
+/**
+ * Side values from eclipse model's SideValue for using in client and server
+ *
+ * @author rushan
+ *
+ */
+public class Side {
+ public static final Integer TOP = 0;
+
+ public static final Integer BOTTOM = 1;
+
+ public static final Integer LEFT = 2;
+
+ public static final Integer RIGHT = 3;
+
+ public static final Integer CENTER = 100;
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Vector.java b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Vector.java
new file mode 100644
index 0000000..0f52d3a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/common/Vector.java
@@ -0,0 +1,194 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.widgets.common;
+
+/**
+ * @author rushan
+ *
+ */
+public class Vector {
+ private double x;
+ private double y;
+
+ public static Vector ortX = new Vector(1, 0);
+ public static Vector ortY = new Vector(0, 1);
+ public static Vector ZERO = new Vector(0, 0);
+
+ public static Vector vectorX(double x) {
+ return new Vector(x, 0);
+ }
+
+ public static Vector vectorY(double y) {
+ return new Vector(0, y);
+ }
+
+ /**
+ * shortcut for vectorX
+ */
+ public static Vector vX(double x) {
+ return vectorX(x);
+ }
+
+ /**
+ * shortcut for vectorY
+ */
+ public static Vector vY(double y) {
+ return vectorY(y);
+ }
+
+ public Vector(double x, double y) {
+ this.x = x;
+ this.y = y;
+ }
+
+ public static Vector valueOf(double x, double y) {
+ return new Vector(x, y);
+ }
+
+ public double getX() {
+ return x;
+ }
+
+ public void setX(double x) {
+ this.x = x;
+ }
+
+ public double getY() {
+ return y;
+ }
+
+ public void setY(double y) {
+ this.y = y;
+ }
+
+ public void setXY(double x, double y) {
+ setX(x);
+ setY(y);
+ }
+
+ public Vector getXProectionVector() {
+ return Vector.vectorX(this.x);
+ }
+
+ public Vector getYProectionVector() {
+ return Vector.vectorY(this.y);
+ }
+
+ public double getLength() {
+ return Math.sqrt(getX() * getX() + getY() * getY());
+ }
+
+ public Vector opposite() {
+ return new Vector(-this.getX(), -this.getY());
+ }
+
+ public Vector normalize() {
+ double len = getLength();
+ return new Vector(getX() / len, getY() / len);
+ }
+
+ public boolean isNull() {
+ return getX() == 0.0 && getY() == 0.0;
+ }
+
+ public Vector scale(double n) {
+ return new Vector(this.getX() * n, this.getY() * n);
+ }
+
+ public Vector div(double n) {
+ return scale(1 / n);
+ }
+
+ public Vector scaleX(double n) {
+ return new Vector(this.getX() * n, this.getY());
+ }
+
+ public Vector scaleY(double n) {
+ return new Vector(this.getX(), this.getY() * n);
+ }
+
+ public Vector plus(Vector v) {
+ return new Vector(this.getX() + v.getX(), this.getY() + v.getY());
+ }
+
+ public Vector minus(Vector v) {
+ return new Vector(this.getX() - v.getX(), this.getY() - v.getY());
+ }
+
+ public static double dotProduct(Vector v1, Vector v2) {
+ return v1.getX() * v2.getX() + v1.getY() * v2.getY();
+ }
+
+ public static double getAngle(Vector v1, Vector v2) {
+ // косинус угла между векторами
+ double cos = dotProduct(v1, v2) / (v1.getLength() * v2.getLength());
+ return Math.acos(cos);
+ }
+
+ public static Vector[] getOrtogonalOrts(Vector v) {
+ double len = v.getLength();
+ Vector ort1 = new Vector(v.getY() / len, -v.getX() / len);
+ Vector ort2 = new Vector(-v.getY() / len, v.getX() / len);
+ return new Vector[] { ort1, ort2 };
+ }
+
+ @Override
+ public String toString() {
+ return "(" + this.getX() + ", " + this.getY() + ")";
+ }
+
+ private static boolean sameSign(double val1, double val2) {
+ if (val1 == 0 && val2 == 0)
+ return true;
+ if (val1 == 0 && val2 != 0 || val2 == 0 && val1 != 0)
+ return false;
+ return (val1 > 0 && val2 > 0) || (val1 < 0 && val2 < 0);
+ }
+
+ public static boolean isEqual(Vector v1, Vector v2, double E) {
+ return Math.abs(v1.getX() - v2.getX()) < E
+ && Math.abs(v1.getY() - v2.getY()) < E;
+ }
+
+ public static boolean isEqual(Vector v1, Vector v2) {
+ return v1.getX() == v2.getX() && v1.getY() == v2.getY();
+ }
+
+ public static boolean isSameDirection(Vector v1, Vector v2, double E) {
+ if (v1.isNull() || v2.isNull())
+ return false;
+
+ double s = v2.getX() != 0 ? v1.getX() / v2.getX() : v1.getY()
+ / v2.getY();
+ Vector test2 = v2.scale(s);
+ if (isEqual(v1, test2, E)) {
+ // Проверка, что вектора направлены в одну и ту же сторону
+ return sameSign(v1.getX(), v2.getX())
+ && sameSign(v1.getY(), v2.getY());
+ } else
+ return false;
+ }
+
+ public static boolean nonStrictCompare(Vector v1, Vector v2, double E) {
+ if (Math.abs(v1.getX() - v2.getX()) < E)
+ if (Math.abs(v1.getY() - v2.getY()) < E)
+ return true;
+ return false;
+ }
+
+ public static Vector maximum(Vector v1, Vector v2) {
+ return v1.getLength() > v2.getLength() ? v1.getCopy() : v2.getCopy();
+ }
+
+ public Vector getCopy() {
+ return new Vector(getX(), getY());
+ }
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/org_eclipse_osbp_vaaclipse_widgetsWidgetset.gwt.xml b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/org_eclipse_osbp_vaaclipse_widgetsWidgetset.gwt.xml
new file mode 100644
index 0000000..23ea5dd
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/org_eclipse_osbp_vaaclipse_widgetsWidgetset.gwt.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.7.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.7.0/distro-source/core/src/gwt-module.dtd">
+<module>
+ <inherits name="com.vaadin.terminal.gwt.DefaultWidgetSet" />
+ <inherits name="fi.jasoft.dragdroplayouts.DragDropLayoutsWidgetSet" />
+ <stylesheet src="org_eclipse_osbp_vaaclipse/vaaclipse.css" />
+
+ <source path="client" />
+ <source path="common" />
+ <source path="../../../../" />
+
+ <!-- replace-with class="org.eclipse.osbp.vaaclipse.widgets.client.ui.stackwidget.VStackWidgetDragDropMouseHandler">
+ <when-type-is class="fi.jasoft.dragdroplayouts.client.ui.VLayoutDragDropMouseHandler" />
+ </replace-with-->
+
+ <replace-with
+ class="com.vaadin.client.ui.dd.VaaclipseDragAndDropManager">
+ <when-type-is
+ class="com.vaadin.client.ui.dd.VDragAndDropManager" />
+ </replace-with>
+
+</module>
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/button_panel_bgcolor.png b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/button_panel_bgcolor.png
new file mode 100644
index 0000000..ba6ce2d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/button_panel_bgcolor.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/dockzone.png b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/dockzone.png
new file mode 100644
index 0000000..c3028fb
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/dockzone.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/save_workbench_btn.png b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/save_workbench_btn.png
new file mode 100644
index 0000000..9b645ec
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/save_workbench_btn.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/tab-bg.png b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/tab-bg.png
new file mode 100644
index 0000000..ba6ce2d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/tab-bg.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/vaadock_sprites.png b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/vaadock_sprites.png
new file mode 100644
index 0000000..b2517e8
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/img/vaadock_sprites.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/vaaclipse.css b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/vaaclipse.css
new file mode 100644
index 0000000..bb2c3da
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_eclipse_osbp_vaaclipse/vaaclipse.css
@@ -0,0 +1,141 @@
+.v-app .stackwidget .v-tabsheet-tabitemcell,
+.stackwidget .v-tabsheet-spacertd {
+ height: 32px;
+}
+
+.v-app .stackwidget .v-tabsheet-tabitemcell {
+ padding-left: 0px;
+}
+
+.v-app .stackwidget .v-tabsheet-tabitemcell-first {
+ padding-left: 0px;
+}
+
+.v-app .stackwidget .v-tabsheet-tabitem,
+.v-app .stackwidget .v-tabsheet-spacertd div {
+ height: 32px;
+ padding: 0;
+}
+
+.v-app .stackwidget .v-tabsheet-tabitem .v-caption {
+ height: 23px;
+ padding: 9px 8px 0 6px;
+}
+
+.v-app .stackwidget .v-tabsheet-tabitem .v-caption-closable {
+ padding-right: 0;
+ padding-left: 17px;
+}
+.v-app .stackwidget .v-tabsheet-tabitem .v-captiontext {
+ height: 16px;
+}
+
+.v-app .stackwidget .v-caption .v-icon,
+.v-app .stackwidget .v-caption-closable .v-icon {
+ float: left;
+ margin: 0px;
+ padding: 0px;
+}
+
+.v-app .stackwidget .v-caption .v-captiontext,
+.v-app .stackwidget .v-caption-closable .v-captiontext {
+ float: left;
+ margin: 0px;
+ padding: 0px;
+}
+
+.v-app .stackwidget .v-tabsheet-caption-close {
+ float: right;
+ width: 19px;
+ height: 18px;
+ margin: -1px -1px 0;
+ padding-left: 2px;
+}
+
+.v-ie6 .stackwidget .v-tabsheet-caption-close {
+ float: none;
+}
+
+.v-app .stackwidget .v-tabsheet-spacertd div {
+ margin-right: 0px;
+}
+
+/*
+*/
+.v-app .vaadock-tabsheet-button-panel {
+// background-color: transparent;
+// float: right;
+// position: relative;
+// padding: 0 0 0 4px;
+// width: 44px;
+ height: 31px;
+ margin-top: -31px;
+ padding: 0 3px 0 4px;
+ position: relative;
+ float: right;
+ background: transparent url(tabsheet/img/tab-bg.png) repeat-x left -1px;
+ width: 44px;
+ white-space: nowrap;
+ text-align: right;
+}
+
+.reindeer .vaadock-tabsheet-button-panel {
+ background: url("../../../themes/reindeer/common/img/vertical-sprites.png") repeat-x scroll left -1127px transparent;
+}
+
+.v-app .v-vaadock-tabsheet-maximize-button {
+ width: 18px;
+ height: 18px;
+ position: relative;
+ float: right;
+ margin-top: 5px;
+ border : none;
+ background: url(img/vaadock_sprites.png) no-repeat 0 0;
+}
+
+.v-app .v-vaadock-tabsheet-maximize-button:hover {
+ background-position: 0 -18px;
+}
+
+.v-app .v-vaadock-tabsheet-maximize-button:active {
+ background-position: 0 -36px;
+}
+
+.v-app .v-vaadock-tabsheet-minimize-button {
+ width: 18px;
+ height: 18px;
+ position: relative;
+ float: right;
+ margin-right: 20px;
+ margin-top: -18px;
+ border : none;
+ background: url(img/vaadock_sprites.png) no-repeat 0 0;
+ background-position: 0 -54px;
+}
+
+.v-app .v-vaadock-tabsheet-minimize-button:hover {
+ background-position: 0 -72px;
+}
+
+.v-app .v-vaadock-tabsheet-minimize-button:active {
+ background-position: 0 -90px;
+}
+
+.v-app .v-vaadock-tabsheet-restore-button {
+ width: 18px;
+ height: 18px;
+ position: relative;
+ float: right;
+ margin-top: 5px;
+ border : none;
+ background: url(img/vaadock_sprites.png) no-repeat 0 0;
+ background-position: 0 -108px;
+}
+
+.v-app .v-vaadock-tabsheet-restore-button:hover {
+ background-position: 0 -126px;
+}
+
+.v-app .v-vaadock-tabsheet-restore-button:active {
+ background-position: 0 -144px;
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/button_panel_bgcolor.png b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/button_panel_bgcolor.png
new file mode 100644
index 0000000..ba6ce2d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/button_panel_bgcolor.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/dockzone.png b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/dockzone.png
new file mode 100644
index 0000000..c3028fb
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/dockzone.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/save_workbench_btn.png b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/save_workbench_btn.png
new file mode 100644
index 0000000..9b645ec
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/save_workbench_btn.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/tab-bg.png b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/tab-bg.png
new file mode 100644
index 0000000..ba6ce2d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/tab-bg.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/vaadock_sprites.png b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/vaadock_sprites.png
new file mode 100644
index 0000000..b2517e8
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/img/vaadock_sprites.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/vaaclipse.css b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/vaaclipse.css
new file mode 100644
index 0000000..bb2c3da
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgets/src/org/eclipse/osbp/vaaclipse/widgets/public/org_semanticsoft_vaaclipse/vaaclipse.css
@@ -0,0 +1,141 @@
+.v-app .stackwidget .v-tabsheet-tabitemcell,
+.stackwidget .v-tabsheet-spacertd {
+ height: 32px;
+}
+
+.v-app .stackwidget .v-tabsheet-tabitemcell {
+ padding-left: 0px;
+}
+
+.v-app .stackwidget .v-tabsheet-tabitemcell-first {
+ padding-left: 0px;
+}
+
+.v-app .stackwidget .v-tabsheet-tabitem,
+.v-app .stackwidget .v-tabsheet-spacertd div {
+ height: 32px;
+ padding: 0;
+}
+
+.v-app .stackwidget .v-tabsheet-tabitem .v-caption {
+ height: 23px;
+ padding: 9px 8px 0 6px;
+}
+
+.v-app .stackwidget .v-tabsheet-tabitem .v-caption-closable {
+ padding-right: 0;
+ padding-left: 17px;
+}
+.v-app .stackwidget .v-tabsheet-tabitem .v-captiontext {
+ height: 16px;
+}
+
+.v-app .stackwidget .v-caption .v-icon,
+.v-app .stackwidget .v-caption-closable .v-icon {
+ float: left;
+ margin: 0px;
+ padding: 0px;
+}
+
+.v-app .stackwidget .v-caption .v-captiontext,
+.v-app .stackwidget .v-caption-closable .v-captiontext {
+ float: left;
+ margin: 0px;
+ padding: 0px;
+}
+
+.v-app .stackwidget .v-tabsheet-caption-close {
+ float: right;
+ width: 19px;
+ height: 18px;
+ margin: -1px -1px 0;
+ padding-left: 2px;
+}
+
+.v-ie6 .stackwidget .v-tabsheet-caption-close {
+ float: none;
+}
+
+.v-app .stackwidget .v-tabsheet-spacertd div {
+ margin-right: 0px;
+}
+
+/*
+*/
+.v-app .vaadock-tabsheet-button-panel {
+// background-color: transparent;
+// float: right;
+// position: relative;
+// padding: 0 0 0 4px;
+// width: 44px;
+ height: 31px;
+ margin-top: -31px;
+ padding: 0 3px 0 4px;
+ position: relative;
+ float: right;
+ background: transparent url(tabsheet/img/tab-bg.png) repeat-x left -1px;
+ width: 44px;
+ white-space: nowrap;
+ text-align: right;
+}
+
+.reindeer .vaadock-tabsheet-button-panel {
+ background: url("../../../themes/reindeer/common/img/vertical-sprites.png") repeat-x scroll left -1127px transparent;
+}
+
+.v-app .v-vaadock-tabsheet-maximize-button {
+ width: 18px;
+ height: 18px;
+ position: relative;
+ float: right;
+ margin-top: 5px;
+ border : none;
+ background: url(img/vaadock_sprites.png) no-repeat 0 0;
+}
+
+.v-app .v-vaadock-tabsheet-maximize-button:hover {
+ background-position: 0 -18px;
+}
+
+.v-app .v-vaadock-tabsheet-maximize-button:active {
+ background-position: 0 -36px;
+}
+
+.v-app .v-vaadock-tabsheet-minimize-button {
+ width: 18px;
+ height: 18px;
+ position: relative;
+ float: right;
+ margin-right: 20px;
+ margin-top: -18px;
+ border : none;
+ background: url(img/vaadock_sprites.png) no-repeat 0 0;
+ background-position: 0 -54px;
+}
+
+.v-app .v-vaadock-tabsheet-minimize-button:hover {
+ background-position: 0 -72px;
+}
+
+.v-app .v-vaadock-tabsheet-minimize-button:active {
+ background-position: 0 -90px;
+}
+
+.v-app .v-vaadock-tabsheet-restore-button {
+ width: 18px;
+ height: 18px;
+ position: relative;
+ float: right;
+ margin-top: 5px;
+ border : none;
+ background: url(img/vaadock_sprites.png) no-repeat 0 0;
+ background-position: 0 -108px;
+}
+
+.v-app .v-vaadock-tabsheet-restore-button:hover {
+ background-position: 0 -126px;
+}
+
+.v-app .v-vaadock-tabsheet-restore-button:active {
+ background-position: 0 -144px;
+}
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/.project b/org.eclipse.osbp.vaaclipse.widgetset.default/.project
new file mode 100644
index 0000000..e19f3d3
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaaclipse.widgetset.default</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.vaadin.integration.eclipse.addonStylesBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/DebugClient.txt b/org.eclipse.osbp.vaaclipse.widgetset.default/DebugClient.txt
new file mode 100644
index 0000000..64848b7
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/DebugClient.txt
@@ -0,0 +1,35 @@
+How to enable superDev-Mode:
+
+1) Enable following options in Widgetset:
+ <set-configuration-property name="devModeRedirectEnabled"
+ value="true" />
+
+ <add-linker name="xsiframe" />
+
+
+2) Call pom-compileWidgetset.xml to compile widgetset under resources
+
+3) Call pom-superdev.xml - It will download all required depedencies for superDev-Mode under target/superDev-lib
+
+4) Open launchconfig for superDev-Mode and add all jars from target/superDev-lib to classpath
+
+5) Add org.semanticsoft.vaaclipse.widgets and its source folder to class path
+
+6) Add source folder from org.semanticsoft.vaaclipse.widgetset.default to classpath
+
+7) Ensure, that 5) and 6) are located at the beginning of the classpath
+
+8) Start superDev-LaunchConfig
+
+9) Start Vaaclipse Application
+
+10) Open Vaaclipse with {URL}/?superdevmode
+
+11) Open http://localhost:9876/
+ a) Bookmark "Dev Mode on" and "Dev Mode off" in Browser
+
+12) To reload widgetsets in 10) click on Bookmark "Dev Mode on"
+
+13) To debug java code in browser ensure, that Chrome -> Developertools -> Properties -> Sources -> xyz SourceMaps are checked
+
+14) Open Sources Tab in Chrome and find your java sources there
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.widgetset.default/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1f294b4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.widgetset.default
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.widgetset.default
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Vaadin-Resources: resources
+Require-Bundle: com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.client;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.shared;bundle-version="[7.5.7,7.7.0)",
+ org.jsoup;bundle-version="1.7.2"
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/SuperDevMode-BpmnIO-default-widgetset.launch b/org.eclipse.osbp.vaaclipse.widgetset.default/SuperDevMode-BpmnIO-default-widgetset.launch
new file mode 100644
index 0000000..dd7e565
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/SuperDevMode-BpmnIO-default-widgetset.launch
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.osbp.bpm.vaadin.bpmnio"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="false"/>
+<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry containerPath="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7" path="1" type="4"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry path="3" projectName="org.eclipse.osbp.bpm.vaadin.bpmnio" type="1"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/src/main/java" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/src/main/resources" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/ant-1.6.5.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/ant-launcher-1.6.5.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/apache-mime4j-0.6.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/commons-codec-1.8.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/commons-collections-3.1.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/commons-io-2.4.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/commons-lang3-3.1.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/commons-logging-1.1.3.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/cssparser-0.9.11.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/flute-1.3.0.gg2.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/guava-16.0.1.vaadin1.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/httpclient-4.3.1.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/httpcore-4.3.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/httpmime-4.3.1.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/icu4j-50.1.1.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/javax.activation-1.1.0.v201105071233.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/javax.annotation-1.1.0.v201108011116.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/javax.mail.glassfish-1.4.1.v201005082020.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/javax.servlet-3.0.0.v201112011016.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/javax.transaction-1.1.1.v201105210645.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-annotations-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-client-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-continuation-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-http-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-io-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-jndi-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-plus-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-security-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-server-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-servlet-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-servlets-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-util-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-webapp-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jetty-xml-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/json-0.0.20080701.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/jsoup-1.6.3.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/nekohtml-1.9.19.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/org.objectweb.asm-3.1.0.v200803061910.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/sac-1.3.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/serializer-2.7.1.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/servlet-api-2.5.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/streamhtmlparser-jsilver-0.0.10.vaadin1.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/swing-worker-1.1.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/vaadin-client-7.3.8.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/vaadin-client-compiled-7.3.8.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/vaadin-client-compiler-7.3.8.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/vaadin-client-compiler-deps-1.1.0.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/vaadin-sass-compiler-0.9.10.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/vaadin-server-7.3.8.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/vaadin-shared-7.3.8.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/vaadin-shared-deps-1.0.2.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/vaadin-themes-7.3.8.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/validation-api-1.0.0.GA-sources.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/validation-api-1.0.0.GA.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/xercesImpl-2.11.0.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.bpm.vaadin.bpmnio/superDev-lib/xml-apis-1.4.01.jar" path="3" type="2"/> "/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.codeserver.CodeServer"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-logLevel DEBUG org.eclipse.osbp.bpmn.vaadin.bpmnio.BpmnModelerWidgetset"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.osbp.bpm.vaadin.bpmnio"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xss8M -Xmx512M -XX:MaxPermSize=512M"/>
+</launchConfiguration>
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/SuperDevMode-Vaaclipse-default-widgetset.launch b/org.eclipse.osbp.vaaclipse.widgetset.default/SuperDevMode-Vaaclipse-default-widgetset.launch
new file mode 100644
index 0000000..e8fecb8
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/SuperDevMode-Vaaclipse-default-widgetset.launch
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.osbp.vaaclipse.widgetset.default"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="false"/>
+<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry containerPath="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7" path="1" type="4"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry path="3" projectName="org.eclipse.osbp.vaaclipse.widgetset.default" type="1"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgets/src" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/src" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry path="3" projectName="org.eclipse.osbp.vaaclipse.widgets" type="1"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/ant-1.6.5.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/ant-launcher-1.6.5.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/apache-mime4j-0.6.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/commons-codec-1.8.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/commons-collections-3.1.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/commons-io-2.4.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/commons-lang3-3.1.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/commons-logging-1.1.3.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/contextmenu-4.2.1.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/cssparser-0.9.11.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/dragdroplayouts-1.1.1.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/easyuploads-7.0.1.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/flute-1.3.0.gg2.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/guava-16.0.1.vaadin1.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/httpclient-4.3.1.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/httpcore-4.3.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/httpmime-4.3.1.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/icu4j-50.1.1.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/javax.activation-1.1.0.v201105071233.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/javax.annotation-1.1.0.v201108011116.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/javax.mail.glassfish-1.4.1.v201005082020.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/javax.servlet-3.0.0.v201112011016.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/javax.transaction-1.1.1.v201105210645.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-annotations-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-client-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-continuation-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-http-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-io-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-jndi-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-plus-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-security-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-server-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-servlet-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-servlets-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-util-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-webapp-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jetty-xml-8.1.12.v20130726.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/json-0.0.20080701.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/jsoup-1.6.3.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/nekohtml-1.9.19.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/org.objectweb.asm-3.1.0.v200803061910.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/sac-1.3.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/serializer-2.7.1.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/servlet-api-2.5.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/streamhtmlparser-jsilver-0.0.10.vaadin1.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/swing-worker-1.1.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/vaadin-client-7.3.8.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/vaadin-client-compiled-7.3.8.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/vaadin-client-compiler-7.3.8.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/vaadin-client-compiler-deps-1.1.0.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/vaadin-sass-compiler-0.9.10.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/vaadin-server-7.3.8.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/vaadin-shared-7.3.8.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/vaadin-shared-deps-1.0.2.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/vaadin-themes-7.3.8.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/validation-api-1.0.0.GA-sources.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/validation-api-1.0.0.GA.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/xercesImpl-2.11.0.jar" path="3" type="2"/> "/>
+<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaaclipse.widgetset.default/target/superDev-lib/xml-apis-1.4.01.jar" path="3" type="2"/> "/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.codeserver.CodeServer"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-logLevel DEBUG org.eclipse.osbp.vaaclipse.widgetset.DefaultWidgetset"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.osbp.vaaclipse.widgetset.default"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xss8M -Xmx512M -XX:MaxPermSize=512M"/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="/Users/admin/git/vaaclipse/org.eclipse.osbp.vaaclipse.widgetset.default"/>
+</launchConfiguration>
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/about.html b/org.eclipse.osbp.vaaclipse.widgetset.default/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/about.ini b/org.eclipse.osbp.vaaclipse.widgetset.default/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/about.mappings b/org.eclipse.osbp.vaaclipse.widgetset.default/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/about.properties b/org.eclipse.osbp.vaaclipse.widgetset.default/about.properties
new file mode 100644
index 0000000..665d2ce
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaaclipse.widgetset.default
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/build.properties b/org.eclipse.osbp.vaaclipse.widgetset.default/build.properties
new file mode 100644
index 0000000..2ebdb20
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/build.properties
@@ -0,0 +1,11 @@
+source.. = src/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ resources/,\
+ pom.xml,\
+ src/,\
+ build.properties,\
+ epl-v10.html,\
+ license.html
+src.includes = about.properties, about.mappings, about.ini, about.html, epl-v10.html,\
+ license.html
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/epl-v10.html b/org.eclipse.osbp.vaaclipse.widgetset.default/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/license.html b/org.eclipse.osbp.vaaclipse.widgetset.default/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.vaaclipse.widgetset.default/pom-compileWidgetset.xml b/org.eclipse.osbp.vaaclipse.widgetset.default/pom-compileWidgetset.xml
new file mode 100644
index 0000000..1591eca
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/pom-compileWidgetset.xml
@@ -0,0 +1,219 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.semanticsoft</groupId>
+ <artifactId>org.semanticsoft.vaaclipse.widgetset.default</artifactId>
+ <version>2.7.3-SNAPSHOT</version>
+
+ <properties>
+ <vaaclipse-version>2.7.3-SNAPSHOT</vaaclipse-version>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ <vaadin.version>7.5.7</vaadin.version>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.semanticsoft</groupId>
+ <artifactId>org.semanticsoft.vaaclipse.widgets</artifactId>
+ <version>${vaaclipse-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.vaadin.addons</groupId>
+ <artifactId>contextmenu</artifactId>
+ <version>4.2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.vaadin.addons</groupId>
+ <artifactId>dragdroplayouts</artifactId>
+ <version>1.1.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.vaadin.addon</groupId>
+ <artifactId>easyuploads</artifactId>
+ <version>7.0.1</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-server</artifactId>
+ <scope>provided</scope>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-client</artifactId>
+ <scope>provided</scope>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-client-compiled</artifactId>
+ <scope>provided</scope>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-shared</artifactId>
+ <scope>provided</scope>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-shared-deps</artifactId>
+ <scope>provided</scope>
+ <version>1.0.2</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-client-compiler</artifactId>
+ <scope>provided</scope>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-themes</artifactId>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.4</version>
+ </dependency>
+ <!-- <dependency> -->
+ <!-- <groupId>com.vaadin</groupId> -->
+ <!-- <artifactId>vaadin-testbench</artifactId> -->
+ <!-- <version>3.0.4</version> -->
+ <!-- <scope>test</scope> -->
+ <!-- </dependency> -->
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.5</version>
+ <scope>provided</scope>
+ </dependency>
+ <!-- <dependency> -->
+ <!-- <groupId>junit</groupId> -->
+ <!-- <artifactId>junit</artifactId> -->
+ <!-- <version>LATEST</version> -->
+ <!-- <scope>test</scope> -->
+ <!-- </dependency> -->
+ </dependencies>
+
+ <build>
+ <sourceDirectory>src</sourceDirectory>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.5</version>
+ <configuration>
+ <source>1.7</source>
+ <target>1.7</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-maven-plugin</artifactId>
+ <version>${vaadin.plugin.version}</version>
+ <configuration>
+ <extraJvmArgs>-Xmx1024M -Xss1024k</extraJvmArgs>
+ <!-- <runTarget>mobilemail</runTarget> -->
+ <!-- We are doing "inplace" but into subdir VAADIN/widgetsets. This
+ way compatible with Vaadin eclipse plugin. -->
+ <webappDirectory>${basedir}/resources
+ </webappDirectory>
+ <hostedWebapp>${basedir}/resources
+ </hostedWebapp>
+ <noServer>true</noServer>
+ <!-- Remove draftCompile when project is ready -->
+ <draftCompile>true</draftCompile>
+ <strict>true</strict>
+ <compileReport>false</compileReport>
+<!-- <style>PRETTY</style> -->
+ <runTarget>http://localhost:8080/</runTarget>
+
+ <!-- Remove these when going to release dependencies -->
+ <force>true</force>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>resources</goal>
+ <goal>compile</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <!-- As we are doing "inplace" GWT compilation, ensure the widgetset -->
+ <!-- directory is cleaned properly -->
+ <plugin>
+ <artifactId>maven-clean-plugin</artifactId>
+ <configuration>
+ <filesets>
+ <fileset>
+ <directory>/resources</directory>
+ </fileset>
+ </filesets>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <version>2.12</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+ <pluginManagement>
+ <plugins>
+ <!--This plugin's configuration is used to store Eclipse m2e settings
+ only. It has no influence on the Maven build itself. -->
+ <plugin>
+ <groupId>org.eclipse.m2e</groupId>
+ <artifactId>lifecycle-mapping</artifactId>
+ <version>1.0.0</version>
+ <configuration>
+ <lifecycleMappingMetadata>
+ <pluginExecutions>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-maven-plugin</artifactId>
+ <versionRange>[2.3.0-1,)</versionRange>
+ <goals>
+ <goal>resources</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore></ignore>
+ </action>
+ </pluginExecution>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-maven-plugin</artifactId>
+ <versionRange>[1.0.2,)</versionRange>
+ <goals>
+ <goal>update-widgetset</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore></ignore>
+ </action>
+ </pluginExecution>
+ </pluginExecutions>
+ </lifecycleMappingMetadata>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+</project>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/pom-superdev.xml b/org.eclipse.osbp.vaaclipse.widgetset.default/pom-superdev.xml
new file mode 100644
index 0000000..eb4ee6c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/pom-superdev.xml
@@ -0,0 +1,129 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.semanticsoft</groupId>
+ <artifactId>org.semanticsoft.vaaclipse.widgetset.default.superdev</artifactId>
+ <version>2.7.3-SNAPSHOT</version>
+
+ <properties>
+ <vaaclipse-version>2.7.3-SNAPSHOT</vaaclipse-version>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ <vaadin.version>7.5.7</vaadin.version>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.semanticsoft</groupId>
+ <artifactId>org.semanticsoft.vaaclipse.widgets</artifactId>
+ <version>${vaaclipse-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.vaadin.addons</groupId>
+ <artifactId>contextmenu</artifactId>
+ <version>4.2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.vaadin.addons</groupId>
+ <artifactId>dragdroplayouts</artifactId>
+ <version>1.1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.vaadin.addon</groupId>
+ <artifactId>easyuploads</artifactId>
+ <version>7.0.1</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-server</artifactId>
+ <scope>provided</scope>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-client</artifactId>
+ <scope>provided</scope>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-client-compiled</artifactId>
+ <scope>provided</scope>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-shared</artifactId>
+ <scope>provided</scope>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-shared-deps</artifactId>
+ <scope>provided</scope>
+ <version>1.0.2</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-client-compiler</artifactId>
+ <scope>provided</scope>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-themes</artifactId>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.4</version>
+ </dependency>
+ <!-- <dependency> -->
+ <!-- <groupId>com.vaadin</groupId> -->
+ <!-- <artifactId>vaadin-testbench</artifactId> -->
+ <!-- <version>3.0.4</version> -->
+ <!-- <scope>test</scope> -->
+ <!-- </dependency> -->
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.5</version>
+ <scope>provided</scope>
+ </dependency>
+ <!-- <dependency> -->
+ <!-- <groupId>junit</groupId> -->
+ <!-- <artifactId>junit</artifactId> -->
+ <!-- <version>LATEST</version> -->
+ <!-- <scope>test</scope> -->
+ <!-- </dependency> -->
+ </dependencies>
+
+ <build>
+ <defaultGoal>clean dependency:copy-dependencies</defaultGoal>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>2.8</version>
+ <configuration>
+ <outputDirectory>${project.build.directory}/superDev-lib</outputDirectory>
+ <actTransitively>true</actTransitively>
+ <transitive>true</transitive>
+ <includeClassifiers></includeClassifiers>
+ <excludeTransitive>false</excludeTransitive>
+ </configuration>
+ <executions>
+ <execution>
+ <id>copy-dependencies</id>
+ <phase>package</phase>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/pom.xml b/org.eclipse.osbp.vaaclipse.widgetset.default/pom.xml
new file mode 100644
index 0000000..ca7d7b7
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/pom.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>org.eclipse.osbp.vaaclipse.widgetset.default</artifactId>
+ <packaging>eclipse-plugin</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse.widgets</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.vaadin.addons</groupId>
+ <artifactId>contextmenu</artifactId>
+ <version>4.2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.vaadin.addons</groupId>
+ <artifactId>dragdroplayouts</artifactId>
+ <version>1.1.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.vaadin.addon</groupId>
+ <artifactId>easyuploads</artifactId>
+ <version>7.4.2</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-server</artifactId>
+ <scope>provided</scope>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-client</artifactId>
+ <scope>provided</scope>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-client-compiled</artifactId>
+ <scope>provided</scope>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-shared</artifactId>
+ <scope>provided</scope>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-client-compiler</artifactId>
+ <scope>provided</scope>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-themes</artifactId>
+ <version>${vaadin.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.4</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.5</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.5</version>
+ <configuration>
+ <source>1.7</source>
+ <target>1.7</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-maven-plugin</artifactId>
+ <version>${vaadin.plugin.version}</version>
+ <configuration>
+ <extraJvmArgs>-Xmx1024M -Xss1024k</extraJvmArgs>
+ <!-- <runTarget>mobilemail</runTarget> -->
+ <!-- We are doing "inplace" but into subdir VAADIN/widgetsets. This
+ way compatible with Vaadin eclipse plugin. -->
+ <webappDirectory>${basedir}/resources
+ </webappDirectory>
+ <hostedWebapp>${basedir}/resources
+ </hostedWebapp>
+ <noServer>true</noServer>
+ <!-- Remove draftCompile when project is ready -->
+ <draftCompile>true</draftCompile>
+ <strict>true</strict>
+ <compileReport>false</compileReport>
+ <style>PRETTY</style>
+ <runTarget>http://localhost:8080/</runTarget>
+
+ <!-- Remove these when going to release dependencies -->
+ <force>true</force>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>resources</goal>
+ <goal>compile</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <!-- As we are doing "inplace" GWT compilation, ensure the widgetset -->
+ <!-- directory is cleaned properly -->
+ <plugin>
+ <artifactId>maven-clean-plugin</artifactId>
+ <configuration>
+ <filesets>
+ <fileset>
+ <directory>/resources</directory>
+ </fileset>
+ </filesets>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <version>2.12</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+ <pluginManagement>
+ <plugins>
+ <!--This plugin's configuration is used to store Eclipse m2e settings
+ only. It has no influence on the Maven build itself. -->
+ <plugin>
+ <groupId>org.eclipse.m2e</groupId>
+ <artifactId>lifecycle-mapping</artifactId>
+ <version>1.0.0</version>
+ <configuration>
+ <lifecycleMappingMetadata>
+ <pluginExecutions>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-maven-plugin</artifactId>
+ <versionRange>[2.3.0-1,)</versionRange>
+ <goals>
+ <goal>resources</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore/>
+ </action>
+ </pluginExecution>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-maven-plugin</artifactId>
+ <versionRange>[1.0.2,)</versionRange>
+ <goals>
+ <goal>update-widgetset</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore/>
+ </action>
+ </pluginExecution>
+ </pluginExecutions>
+ </lifecycleMappingMetadata>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/src/org/eclipse/osbp/vaaclipse/widgetset/DefaultWidgetset.gwt.xml b/org.eclipse.osbp.vaaclipse.widgetset.default/src/org/eclipse/osbp/vaaclipse/widgetset/DefaultWidgetset.gwt.xml
new file mode 100644
index 0000000..251d981
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/src/org/eclipse/osbp/vaaclipse/widgetset/DefaultWidgetset.gwt.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.7.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.7.0/distro-source/core/src/gwt-module.dtd">
+<module>
+ <inherits name="com.vaadin.DefaultWidgetSet" />
+
+ <inherits name="org.vaadin.peter.contextmenu.ContextmenuWidgetset" />
+<!-- <inherits name="fi.jasoft.dragdroplayouts.DragDropLayoutsWidgetSet" /> -->
+ <inherits
+ name="org.eclipse.osbp.vaaclipse.widgets.org_eclipse_osbp_vaaclipse_widgetsWidgetset" />
+
+<!-- // Enable for super dev mode -->
+<!-- <set-configuration-property name="devModeRedirectEnabled" -->
+<!-- value="true" /> -->
+
+<!-- <add-linker name="xsiframe" /> -->
+</module>
diff --git a/org.eclipse.osbp.vaaclipse.widgetset.default/src/org/eclipse/osbp/vaaclipse/widgetset/WidgetsetUI.java b/org.eclipse.osbp.vaaclipse.widgetset.default/src/org/eclipse/osbp/vaaclipse/widgetset/WidgetsetUI.java
new file mode 100644
index 0000000..56d72d6
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.widgetset.default/src/org/eclipse/osbp/vaaclipse/widgetset/WidgetsetUI.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.osbp.vaaclipse.widgetset;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.UI;
+
+@SuppressWarnings("serial")
+public class WidgetsetUI extends UI {
+ @Override
+ public void init(VaadinRequest request) {
+ Label label = new Label("Hello Vaadin user");
+ setContent(label);
+ }
+
+}
diff --git a/org.eclipse.osbp.vaadin/.project b/org.eclipse.osbp.vaadin/.project
new file mode 100644
index 0000000..20f7fbe
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.vaadin</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.vaadin.integration.eclipse.addonStylesBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.babel.editor.rbeNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaadin/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaadin/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..e4b9b7a
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaadin
+Bundle-SymbolicName: org.eclipse.osbp.vaadin
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Require-Bundle: com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.shared;bundle-version="[7.5.7,7.7.0)",
+ org.jsoup;bundle-version="1.7.2"
+Export-Package: org.eclipse.osbp.vaadin.optiondialog;version="0.9.0"
diff --git a/org.eclipse.osbp.vaadin/about.html b/org.eclipse.osbp.vaadin/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/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 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin/about.ini b/org.eclipse.osbp.vaadin/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaadin/about.mappings b/org.eclipse.osbp.vaadin/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaadin/about.properties b/org.eclipse.osbp.vaadin/about.properties
new file mode 100644
index 0000000..fc6a85b
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# 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:
+# Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaadin
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaadin/build.properties b/org.eclipse.osbp.vaadin/build.properties
new file mode 100644
index 0000000..a138bbd
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ epl-v10.html,\
+ license.html
+src.includes = about.properties, about.mappings, about.ini, about.html, epl-v10.html,\
+ license.html
diff --git a/org.eclipse.osbp.vaadin/epl-v10.html b/org.eclipse.osbp.vaadin/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" 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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to 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.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">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.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>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.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin/license.html b/org.eclipse.osbp.vaadin/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/license.html
@@ -0,0 +1,164 @@
+<!--?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 "CONTENT"). 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
+ ("EPL"). 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, "Program" 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 ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</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 ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</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 "features". Within a Feature, files
+named "feature.xml" 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 ("Included
+Features"). Within a Feature, files named "feature.xml" 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 "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). 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 "src" 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 ("Feature Update License") 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 "license" property of files named "feature.properties"
+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 ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). 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>
+ ("Specification").</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 ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") 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 ("Installable Software Agreement") 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/org.eclipse.osbp.vaadin/pom.xml b/org.eclipse.osbp.vaadin/pom.xml
new file mode 100644
index 0000000..407c03d
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>org.eclipse.osbp.vaadin</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <parent>
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+</project>
diff --git a/org.eclipse.osbp.vaadin/src/org/eclipse/osbp/vaadin/optiondialog/OptionDialog.java b/org.eclipse.osbp.vaadin/src/org/eclipse/osbp/vaadin/optiondialog/OptionDialog.java
new file mode 100644
index 0000000..55d36d0
--- /dev/null
+++ b/org.eclipse.osbp.vaadin/src/org/eclipse/osbp/vaadin/optiondialog/OptionDialog.java
@@ -0,0 +1,248 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/ package org.eclipse.osbp.vaadin.optiondialog;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import com.vaadin.data.util.ObjectProperty;
+import com.vaadin.shared.ui.MarginInfo;
+import com.vaadin.ui.Alignment;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.Window;
+
+public class OptionDialog extends Window {
+
+ public enum OptionsAlign {
+ LEFT, RIGHT, CENTER
+ }
+
+ public static interface OptionListener {
+ void optionSelected(OptionDialog optionDialog, int optionId);
+ }
+
+ public static interface ComponentProvider extends OptionListener {
+ Component getComponent(OptionDialog optionDialog);
+
+ void setMessage(String message);
+ }
+
+ private OptionListener optionListener;
+ private String msg;
+ private boolean modal = true;
+
+ public static final OptionListener CLOSE_LISTENER = new OptionListener() {
+
+ @Override
+ public void optionSelected(OptionDialog optionDialog, int optionId) {
+ optionDialog.close();
+ }
+ };
+
+ private ComponentProvider componentProvider = new ComponentProvider() {
+
+ Label label = new Label();
+
+ @Override
+ public void setMessage(String message) {
+ label.setPropertyDataSource(new ObjectProperty<String>(message,
+ String.class));
+ }
+
+ @Override
+ public Component getComponent(OptionDialog optionDialog) {
+ return label;
+ }
+
+ @Override
+ public void optionSelected(OptionDialog optionDialog, int optionId) {
+
+ }
+ };
+
+ private VerticalLayout content;
+ private HorizontalLayout buttons = new HorizontalLayout();
+ private Map<Button, Integer> button2option = new HashMap<Button, Integer>();
+ private Map<Integer, Button> option2button = new HashMap<Integer, Button>();
+ private Float optionButtonWidth;
+ private Unit optionButtonWidthUnit;
+
+ public OptionDialog() {
+ // msgLabel.setWidth("100%");
+ // buttons.setWidth("100%");
+
+ buttons.setSpacing(true);
+ buttons.setMargin(new MarginInfo(false, true, false, true));
+ setOptionsPanelHeight(50, Unit.PIXELS);
+
+ content = new VerticalLayout();
+ content.setSizeFull();
+ this.setContent(content);
+ Component component = componentProvider.getComponent(this);
+ content.addComponent(component);
+ content.addComponent(buttons);
+ content.setComponentAlignment(component, Alignment.TOP_CENTER);
+ content.setComponentAlignment(buttons, Alignment.BOTTOM_CENTER);
+ content.setExpandRatio(component, 1);
+
+ this.center();
+ this.setWidth("500px");
+ this.setHeight("100px");
+ }
+
+ public String getMessage() {
+ return msg;
+ }
+
+ public void setMessage(String msg) {
+ this.msg = msg;
+ componentProvider.setMessage(this.msg);
+ }
+
+ public ComponentProvider getComponentProvider() {
+ return componentProvider;
+ }
+
+ public Component getComponent() {
+ return this.componentProvider.getComponent(this);
+ }
+
+ public void setComponentProvider(ComponentProvider componentProvider) {
+ if (componentProvider == null)
+ return;
+ Component newComponent = componentProvider.getComponent(this);
+ if (newComponent != null) {
+ Component oldComponent = this.componentProvider.getComponent(this);
+ this.content.removeComponent(oldComponent);
+ newComponent.setSizeFull();
+ this.content.addComponent(newComponent, 0);
+ this.content.setExpandRatio(newComponent, 1);
+ this.content.setComponentAlignment(newComponent,
+ Alignment.TOP_CENTER);
+ this.componentProvider = componentProvider;
+ }
+ }
+
+ public Alignment getOptionButtonsAlignment() {
+ return content.getComponentAlignment(buttons);
+ }
+
+ public void setOptionButtonsAlignment(OptionsAlign align) {
+ if (align == OptionsAlign.LEFT)
+ content.setComponentAlignment(buttons, Alignment.MIDDLE_LEFT);
+ else if (align == OptionsAlign.RIGHT)
+ content.setComponentAlignment(buttons, Alignment.MIDDLE_RIGHT);
+ else if (align == OptionsAlign.CENTER)
+ content.setComponentAlignment(buttons, Alignment.MIDDLE_CENTER);
+ }
+
+ public void setOptionsPanelHeight(float height, Unit unit) {
+ buttons.setHeight(height, unit);
+ }
+
+ public void setOptionButtonsWidth(float width, Unit unit) {
+ this.optionButtonWidth = width;
+ this.optionButtonWidthUnit = unit;
+ Iterator<Component> it = buttons.iterator();
+ while (it.hasNext()) {
+ Component c = it.next();
+ if (c instanceof Button) {
+ c.setWidth(width, unit);
+ }
+ }
+ }
+
+ public void open(UI parentWindow) {
+ parentWindow.addWindow(this);
+ }
+
+ public boolean isModal() {
+ return this.modal;
+ }
+
+ public void setModal(boolean modality) {
+ this.modal = modality;
+ }
+
+ public OptionListener getOptionListener() {
+ return optionListener;
+ }
+
+ public void setOptionListener(OptionListener optionListener) {
+ this.optionListener = optionListener;
+ }
+
+ public void addOption(int optionId, String optionText) {
+ Button button = new Button();
+ button.setCaption(optionText);
+ if (optionButtonWidth != null)
+ button.setWidth(optionButtonWidth, optionButtonWidthUnit);
+ buttons.addComponent(button);
+ buttons.setComponentAlignment(button, Alignment.MIDDLE_CENTER);
+ button2option.put(button, optionId);
+ option2button.put(optionId, button);
+ button.addClickListener(new Button.ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ Integer optionId = button2option.get(event.getButton());
+
+ if (optionListener != null)
+ optionListener.optionSelected(OptionDialog.this, optionId);
+
+ getComponentProvider().optionSelected(OptionDialog.this,
+ optionId);
+ }
+ });
+ }
+
+ public void setOptionEnabled(int optionId, boolean enabled) {
+ Button button = option2button.get(optionId);
+ button.setEnabled(enabled);
+ }
+
+ public Button getOptionButton(int optionId) {
+ return option2button.get(optionId);
+ }
+
+ public static void show(UI parentWindow, String caption, String message,
+ String[] options, int w, int h, Unit units,
+ OptionListener optionListener) {
+ OptionDialog optionDialog = new OptionDialog();
+ if (w > 0 && h > 0) {
+ optionDialog.setWidth(w, units);
+ optionDialog.setHeight(h, units);
+ }
+
+ optionDialog.setModal(optionDialog.modal);
+ optionDialog.setCaption(caption);
+ optionDialog.setMessage(message);
+ optionDialog.setOptionListener(optionListener);
+
+ for (int i = 0; i < options.length; i++) {
+ optionDialog.addOption(i, options[i]);
+ }
+
+ parentWindow.addWindow(optionDialog);
+ }
+
+ public static void show(UI parentWindow, String caption, String message,
+ String[] options, OptionListener optionListener) {
+ show(parentWindow, caption, message, options, -1, -1, null,
+ optionListener);
+ }
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..65d0df2
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2012 Rushan R. Gilmullin and others.
+ * 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:
+ * Rushan R. Gilmullin - initial API and implementation
+ *******************************************************************************/
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.osbp.releng.maven</groupId>
+ <artifactId>org.eclipse.osbp.releng.maven.parent.tycho</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath/>
+ </parent>
+
+ <groupId>org.eclipse.osbp.vaaclipse</groupId>
+ <artifactId>org.eclipse.osbp.vaaclipse</artifactId>
+ <packaging>pom</packaging>
+
+ <properties>
+ <osbp.deployment.p2.name>vaaclipse</osbp.deployment.p2.name>
+ <osbp.build.p2.project.name>org.eclipse.osbp.vaaclipse.p2</osbp.build.p2.project.name>
+ <vaaclipse-version>2.7.3-SNAPSHOT</vaaclipse-version>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ <vaadin.version>7.5.7</vaadin.version>
+ <vaadin.plugin.version>7.5.7</vaadin.plugin.version>
+ <vaadin-icepush-version>0.5.4</vaadin-icepush-version>
+ <icepush-version>3.0.1</icepush-version>
+ <icepush-gwt-version>1.0.0</icepush-gwt-version>
+ </properties>
+
+ <modules>
+ <!-- Bundles -->
+ <module>org.eclipse.osbp.vaaclipse.target.luna</module>
+
+ <module>org.eclipse.osbp.vaaclipse.ui.preferences.addon</module>
+ <module>org.eclipse.osbp.vaaclipse.ui.preferences.model</module>
+
+ <module>org.eclipse.e4.ui.model.workbench.edit</module>
+ <module>org.eclipse.osbp.commons</module>
+ <module>org.eclipse.osbp.e4.injector.objectsuppliers</module>
+ <module>org.eclipse.osbp.e4extension</module>
+ <module>org.eclipse.osbp.e4modelextension</module>
+ <module>org.eclipse.osbp.vaaclipse.additions</module>
+ <module>org.eclipse.osbp.vaaclipse.api</module>
+ <!-- <module>org.eclipse.osbp.vaaclipse.app</module> -->
+ <module>org.eclipse.osbp.vaaclipse.behaviour</module>
+ <module>org.eclipse.osbp.vaaclipse.common.ecview.api</module>
+ <module>org.eclipse.osbp.vaaclipse.contributions</module>
+ <module>org.eclipse.osbp.vaaclipse.emf</module>
+ <module>org.eclipse.osbp.vaaclipse.emf.addon</module>
+ <module>org.eclipse.osbp.vaaclipse.emf.api</module>
+ <module>org.eclipse.osbp.vaaclipse.presentation</module>
+ <module>org.eclipse.osbp.vaaclipse.publicapi</module>
+ <module>org.eclipse.osbp.vaaclipse.resources</module>
+ <module>org.eclipse.osbp.vaaclipse.theme</module>
+ <module>org.eclipse.osbp.vaaclipse.util</module>
+ <module>org.eclipse.osbp.vaaclipse.widgets</module>
+ <module>org.eclipse.osbp.vaaclipse.widgetset.default</module>
+ <module>org.eclipse.osbp.vaadin</module>
+
+ <!-- Features -->
+ <module>org.eclipse.osbp.vaaclipse.feature.core</module>
+ <module>org.eclipse.osbp.vaaclipse.feature.target.core</module>
+ <module>org.eclipse.osbp.vaaclipse.feature.runtime.core</module>
+
+ </modules>
+
+</project>