parallel ip - initial checkin

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/.project b/.project
new file mode 100644
index 0000000..4d66c75
--- /dev/null
+++ b/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.tools</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..ff42ad4
--- /dev/null
+++ b/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/README.md b/README.md
new file mode 100644
index 0000000..35b9391
--- /dev/null
+++ b/README.md
@@ -0,0 +1,4 @@
+vaaclipse-tools
+===============
+
+Vaaclipse Tools
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 (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/jenkins.build.config.xml b/jenkins.build.config.xml
new file mode 100644
index 0000000..fdf6c4e
--- /dev/null
+++ b/jenkins.build.config.xml
@@ -0,0 +1,20 @@
+<?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.vaaclipse</jenkins.build.dependency>
+        </jenkins.build.dependencies>
+</jenkins>
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 &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/.project b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/.project
new file mode 100644
index 0000000..c48e884
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.tools.e4tools.extension</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.tools.e4tools.extension/LICENSE.txt b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/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.tools.e4tools.extension/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..af01d61
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.tools.e4tools.extension
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.tools.e4tools.extension;singleton:=true
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.e4.core.di;bundle-version="1.1.0",
+ org.eclipse.e4.core.services;bundle-version="1.2.0",
+ org.eclipse.e4.tools;bundle-version="0.12.0",
+ org.eclipse.e4.tools.emf.editor3x;bundle-version="0.12.0",
+ org.eclipse.e4.tools.emf.liveeditor;bundle-version="0.12.0",
+ org.eclipse.e4.tools.emf.ui;bundle-version="0.12.0",
+ org.eclipse.e4.ui.services;bundle-version="1.1.0",
+ org.eclipse.e4.ui.workbench;bundle-version="1.1.0",
+ org.eclipse.osbp.e4modelextension;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.emf.databinding;bundle-version="1.2.0",
+ org.eclipse.emf.databinding.edit;bundle-version="1.2.0",
+ org.eclipse.core.databinding.property;bundle-version="1.4.100",
+ org.eclipse.jface;bundle-version="3.8.101",
+ org.eclipse.jface.databinding;bundle-version="1.6.0",
+ org.eclipse.core.resources;bundle-version="3.8.1",
+ org.eclipse.e4.core.contexts;bundle-version="1.3.100"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Import-Package: javax.inject;version="1.0.0",
+ javax.annotation
diff --git a/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/about.html b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/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 (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/about.ini b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/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.tools.e4tools.extension/about.mappings b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/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.tools.e4tools.extension/about.properties b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/about.properties
new file mode 100644
index 0000000..65a723a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/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.tools.e4tools.extension
+
+################ 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.tools.e4tools.extension/build.properties b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/build.properties
new file mode 100644
index 0000000..2e0a3ad
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/build.properties
@@ -0,0 +1,15 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,\
+               about.mappings,\
+               about.ini,\
+               about.html,\
+               META-INF/,\
+               .,\
+               plugin.xml,\
+               LICENSE.txt
+src.includes = about.properties,\
+               about.mappings,\
+               about.ini,\
+               about.html,\
+               LICENSE.txt
diff --git a/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/plugin.xml b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/plugin.xml
new file mode 100644
index 0000000..1ab47fb
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/plugin.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.e4.tools.emf.ui.editors">
+      <editor
+            descriptorClass="org.eclipse.osbp.e4tools.extension.EditorPartDescriptorEditorDesc">
+      </editor>
+      <virtualeditor
+            class="org.eclipse.osbp.e4tools.extension.VEditorPartDescriptor"
+            id="org.eclipse.osbp.e4tools.extension.VaaclipseApplicationEditor.EDITOR_DESCRIPTORS">
+      </virtualeditor>
+      <editor
+            descriptorClass="org.eclipse.osbp.e4tools.extension.VaaclipseApplicationEditorDesc">
+      </editor>
+      <editorfeature
+            class="org.eclipse.osbp.e4tools.extension.EditorFeature">
+      </editorfeature>
+   </extension>
+   
+   <extension
+         point="org.eclipse.e4.tools.emf.ui.editors">
+      <editor
+            descriptorClass="org.eclipse.osbp.e4tools.extension.EditorPartDescriptorEditorDesc">
+      </editor>
+      <virtualeditor
+            class="org.eclipse.osbp.e4tools.extension.VEditorPartDescriptor"
+            id="org.eclipse.osbp.e4tools.extension.VaaclipseApplicationEditor.EDITOR_DESCRIPTORS">
+      </virtualeditor>
+      <editor
+            descriptorClass="org.eclipse.osbp.e4tools.extension.VaaclipseApplicationEditorDesc">
+      </editor>
+      <editorfeature
+            class="org.eclipse.osbp.e4tools.extension.EditorFeature">
+      </editorfeature>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/pom.xml b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/pom.xml
new file mode 100644
index 0000000..66e6455
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/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.tools.e4tools.extension</artifactId>
+    <packaging>eclipse-plugin</packaging>
+    <parent>
+        <groupId>org.eclipse.osbp.vaaclipse.tools</groupId>
+        <artifactId>org.eclipse.osbp.vaaclipse.tools</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/src/org/eclipse/osbp/e4tools/extension/EditorFeature.java b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/src/org/eclipse/osbp/e4tools/extension/EditorFeature.java
new file mode 100644
index 0000000..44f749f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/src/org/eclipse/osbp/e4tools/extension/EditorFeature.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2013 Rushan Gilmullin, Florian Pirchner, Sopot Scela 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 Gilmullin - Initial implementation
+ */
+
+package org.eclipse.osbp.e4tools.extension;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.e4.tools.emf.ui.common.IEditorFeature;
+import org.eclipse.e4.ui.model.fragment.impl.FragmentPackageImpl;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.osbp.vaaclipse.ui.preferences.model.metadata.PreferencesPackage;
+
+import e4modelextension.E4modelextensionPackage;
+
+/**
+ * The Class EditorFeature.
+ */
+@SuppressWarnings("restriction")
+public class EditorFeature implements IEditorFeature {
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.IEditorFeature#getFeatureClasses(org.eclipse.emf.ecore.EClass, org.eclipse.emf.ecore.EStructuralFeature)
+	 */
+	@Override
+	public List<FeatureClass> getFeatureClasses(EClass eClass,
+			EStructuralFeature feature) {
+		if (eClass == FragmentPackageImpl.Literals.MODEL_FRAGMENT) {
+			if (feature == FragmentPackageImpl.Literals.MODEL_FRAGMENT__ELEMENTS) {
+				List<FeatureClass> features = new ArrayList<FeatureClass>(3);
+				features.add(new FeatureClass(
+						E4modelextensionPackage.Literals.EDITOR_PART_DESCRIPTOR
+								.getName(),
+						E4modelextensionPackage.Literals.EDITOR_PART_DESCRIPTOR));
+				features.add(new FeatureClass(
+						PreferencesPackage.Literals.PREFERENCES_CATEGORY
+								.getName(),
+						PreferencesPackage.Literals.PREFERENCES_CATEGORY));
+				features.add(new FeatureClass(
+						PreferencesPackage.Literals.PREFERENCES_PAGE.getName(),
+						PreferencesPackage.Literals.PREFERENCES_PAGE));
+				return features;
+			}
+		}
+		return Collections.emptyList();
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/src/org/eclipse/osbp/e4tools/extension/EditorPartDescriptorEditor.java b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/src/org/eclipse/osbp/e4tools/extension/EditorPartDescriptorEditor.java
new file mode 100644
index 0000000..0a1f730
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/src/org/eclipse/osbp/e4tools/extension/EditorPartDescriptorEditor.java
@@ -0,0 +1,291 @@
+/**
+ * Copyright (c) 2013 Rushan Gilmullin, Florian Pirchner, Sopot Scela 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 Gilmullin - Initial implementation
+ */
+
+ package org.eclipse.osbp.e4tools.extension;
+
+import javax.inject.Inject;
+
+import org.eclipse.core.databinding.observable.list.IObservableList;
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
+import org.eclipse.e4.tools.emf.ui.internal.ResourceProvider;
+import org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.ContributionClassDialog;
+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.impl.ApplicationPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+import org.eclipse.emf.databinding.EMFDataBindingContext;
+import org.eclipse.emf.databinding.edit.EMFEditProperties;
+import org.eclipse.jface.databinding.swt.IWidgetValueProperty;
+import org.eclipse.jface.databinding.swt.WidgetProperties;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+import e4modelextension.E4modelextensionPackage;
+import e4modelextension.EditorPartDescriptor;
+
+/**
+ * The Class EditorPartDescriptorEditor.
+ */
+public class EditorPartDescriptorEditor extends AbstractComponentEditor {
+
+	/** The composite. */
+	private Composite composite;
+	
+	/** The context. */
+	private EMFDataBindingContext context;
+
+	/** The project. */
+	@Inject
+	@Optional
+	private IProject project;
+
+	/** The eclipse context. */
+	@Inject
+	private IEclipseContext eclipseContext;
+
+	/**
+	 * Instantiates a new editor part descriptor editor.
+	 */
+	@Inject
+	public EditorPartDescriptorEditor() {
+		super();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor#getLabel(java.lang.Object)
+	 */
+	@Override
+	public String getLabel(Object element) {
+		return "Editor Descriptor";
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor#getDetailLabel(java.lang.Object)
+	 */
+	@Override
+	public String getDetailLabel(Object element) {
+		EditorPartDescriptor desc = (EditorPartDescriptor) element;
+		return desc.getLabel();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor#getDescription(java.lang.Object)
+	 */
+	@Override
+	public String getDescription(Object element) {
+		return "Editor Descriptor is a template for editor parts";
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor#doGetEditor(org.eclipse.swt.widgets.Composite, java.lang.Object)
+	 */
+	@Override
+	public Composite doGetEditor(Composite parent, Object object) {
+		if (composite == null) {
+			context = new EMFDataBindingContext();
+			composite = createForm(parent, context, getMaster());
+		}
+		getMaster().setValue(object);
+		return composite;
+	}
+
+	/**
+	 * Creates the form.
+	 *
+	 * @param parent
+	 *            the parent
+	 * @param context
+	 *            the context
+	 * @param master
+	 *            the master
+	 * @return the composite
+	 */
+	protected Composite createForm(Composite parent,
+			EMFDataBindingContext context, IObservableValue master) {
+		parent = new Composite(parent, SWT.NONE);
+		parent.setLayout(new GridLayout(3, false));
+
+		IWidgetValueProperty textProp = WidgetProperties.text(SWT.Modify);
+
+		// ------------------------------------------------------------
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText("Id");
+
+			Text t = new Text(parent, SWT.BORDER);
+			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.horizontalSpan = 2;
+			t.setLayoutData(gd);
+			context.bindValue(
+					textProp.observeDelayed(200, t),
+					EMFEditProperties
+							.value(getEditingDomain(),
+									ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID)
+							.observeDetail(master));
+		}
+
+		// ------------------------------------------------------------
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText("Label");
+
+			Text t = new Text(parent, SWT.BORDER);
+			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.horizontalSpan = 2;
+			t.setLayoutData(gd);
+			context.bindValue(
+					textProp.observeDelayed(200, t),
+					EMFEditProperties.value(getEditingDomain(),
+							UiPackageImpl.Literals.UI_LABEL__LABEL)
+							.observeDetail(master));
+		}
+
+		// ------------------------------------------------------------
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText("Tooltip");
+
+			Text t = new Text(parent, SWT.BORDER);
+			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.horizontalSpan = 2;
+			t.setLayoutData(gd);
+			context.bindValue(
+					textProp.observeDelayed(200, t),
+					EMFEditProperties.value(getEditingDomain(),
+							UiPackageImpl.Literals.UI_LABEL__TOOLTIP)
+							.observeDetail(master));
+		}
+
+		// ------------------------------------------------------------
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText("Icon URI");
+
+			Text t = new Text(parent, SWT.BORDER);
+			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+			context.bindValue(
+					textProp.observeDelayed(200, t),
+					EMFEditProperties.value(getEditingDomain(),
+							UiPackageImpl.Literals.UI_LABEL__ICON_URI)
+							.observeDetail(master));
+
+			Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
+			b.setImage(createImage(ResourceProvider.IMG_Obj16_zoom));
+			b.setText("Find");
+		}
+
+		// ------------------------------------------------------------
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText("Content Filter");
+
+			Text t = new Text(parent, SWT.BORDER);
+			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.horizontalSpan = 2;
+			t.setLayoutData(gd);
+			context.bindValue(
+					textProp.observeDelayed(200, t),
+					EMFEditProperties
+							.value(getEditingDomain(),
+									E4modelextensionPackage.Literals.EDITOR_PART_DESCRIPTOR__URI_FILTER)
+							.observeDetail(master));
+		}
+
+		// ------------------------------------------------------------
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText("Class URI");
+
+			Text t = new Text(parent, SWT.BORDER);
+			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+			context.bindValue(
+					textProp.observeDelayed(200, t),
+					EMFEditProperties
+							.value(getEditingDomain(),
+									BasicPackageImpl.Literals.PART_DESCRIPTOR__CONTRIBUTION_URI)
+							.observeDetail(master));
+
+			final Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
+			b.setImage(createImage(ResourceProvider.IMG_Obj16_zoom));
+			b.setText("Find");
+			b.addSelectionListener(new SelectionAdapter() {
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					ContributionClassDialog dialog = new ContributionClassDialog(
+							b.getShell(),
+							eclipseContext,
+							getEditingDomain(),
+							(MPartDescriptor) getMaster().getValue(),
+							BasicPackageImpl.Literals.PART_DESCRIPTOR__CONTRIBUTION_URI,
+							Messages);
+					dialog.open();
+				}
+			});
+		}
+
+		// ------------------------------------------------------------
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText("Part Adding Logic");
+
+			Text t = new Text(parent, SWT.BORDER);
+			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+			context.bindValue(
+					textProp.observeDelayed(200, t),
+					EMFEditProperties
+							.value(getEditingDomain(),
+									E4modelextensionPackage.Literals.EDITOR_PART_DESCRIPTOR__PART_ADDING_LOGIC_URI)
+							.observeDetail(master));
+
+			final Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
+			b.setImage(createImage(ResourceProvider.IMG_Obj16_zoom));
+			b.setText("Find");
+			b.addSelectionListener(new SelectionAdapter() {
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					ContributionClassDialog dialog = new ContributionClassDialog(
+							b.getShell(),
+							eclipseContext,
+							getEditingDomain(),
+							(MPartDescriptor) getMaster().getValue(),
+							E4modelextensionPackage.Literals.EDITOR_PART_DESCRIPTOR__PART_ADDING_LOGIC_URI,
+							Messages);
+					dialog.open();
+				}
+			});
+		}
+
+		return parent;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor#getChildList(java.lang.Object)
+	 */
+	@Override
+	public IObservableList getChildList(Object element) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/src/org/eclipse/osbp/e4tools/extension/EditorPartDescriptorEditorDesc.java b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/src/org/eclipse/osbp/e4tools/extension/EditorPartDescriptorEditorDesc.java
new file mode 100644
index 0000000..3efa8a2
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/src/org/eclipse/osbp/e4tools/extension/EditorPartDescriptorEditorDesc.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2013 Rushan Gilmullin, Florian Pirchner, Sopot Scela 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 Gilmullin - Initial implementation
+ */
+
+ package org.eclipse.osbp.e4tools.extension;
+
+import org.eclipse.e4.tools.emf.ui.common.IEditorDescriptor;
+import org.eclipse.emf.ecore.EClass;
+
+import e4modelextension.E4modelextensionPackage;
+
+/**
+ * The Class EditorPartDescriptorEditorDesc.
+ */
+public class EditorPartDescriptorEditorDesc implements IEditorDescriptor {
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.IEditorDescriptor#getEClass()
+	 */
+	public EClass getEClass() {
+		return E4modelextensionPackage.Literals.EDITOR_PART_DESCRIPTOR;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.IEditorDescriptor#getEditorClass()
+	 */
+	public Class<?> getEditorClass() {
+		return EditorPartDescriptorEditor.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/src/org/eclipse/osbp/e4tools/extension/VEditorPartDescriptor.java b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/src/org/eclipse/osbp/e4tools/extension/VEditorPartDescriptor.java
new file mode 100644
index 0000000..36c58b4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/src/org/eclipse/osbp/e4tools/extension/VEditorPartDescriptor.java
@@ -0,0 +1,232 @@
+/**
+ * Copyright (c) 2013 Rushan Gilmullin, Florian Pirchner, Sopot Scela 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 Gilmullin - Initial implementation
+ */
+ package org.eclipse.osbp.e4tools.extension;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.eclipse.core.databinding.observable.list.IObservableList;
+import org.eclipse.core.databinding.observable.value.WritableValue;
+import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
+import org.eclipse.e4.tools.emf.ui.internal.ObservableColumnLabelProvider;
+import org.eclipse.e4.tools.emf.ui.internal.ResourceProvider;
+import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry;
+import org.eclipse.e4.ui.model.application.commands.MHandler;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.databinding.EMFDataBindingContext;
+import org.eclipse.emf.databinding.edit.EMFEditProperties;
+import org.eclipse.emf.databinding.edit.IEMFEditValueProperty;
+import org.eclipse.emf.edit.command.AddCommand;
+import org.eclipse.emf.edit.command.RemoveCommand;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+
+import e4modelextension.E4modelextensionFactory;
+import e4modelextension.E4modelextensionPackage;
+import e4modelextension.EditorPartDescriptor;
+
+/**
+ * The Class VEditorPartDescriptor.
+ */
+public class VEditorPartDescriptor extends AbstractComponentEditor{
+	
+	/** The composite. */
+	private Composite composite;
+	
+	/** The context. */
+	private EMFDataBindingContext context;
+	
+	/** The viewer. */
+	private TableViewer viewer;
+	
+	/**
+	 * Instantiates a new v editor part descriptor.
+	 */
+	@Inject
+	public VEditorPartDescriptor() {
+		super();
+	}
+
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor#getLabel(java.lang.Object)
+	 */
+	@Override
+	public String getLabel(Object element) {
+		return "Editor Part Descriptors";
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor#getDetailLabel(java.lang.Object)
+	 */
+	@Override
+	public String getDetailLabel(Object element) {
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor#getDescription(java.lang.Object)
+	 */
+	@Override
+	public String getDescription(Object element) {
+		return "Editor Part Descriptors Bla Bla Bla Bla";
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor#doGetEditor(org.eclipse.swt.widgets.Composite, java.lang.Object)
+	 */
+	@Override
+	public Composite doGetEditor(Composite parent, Object object) {
+		if( composite == null ) {
+			context = new EMFDataBindingContext();
+			composite = createForm(parent,context, getMaster());
+		}
+		VirtualEntry<?> o = (VirtualEntry<?>)object;
+		viewer.setInput(o.getList());
+		getMaster().setValue(o.getOriginalParent());
+		return composite;
+	}
+
+	/**
+	 * Creates the form.
+	 *
+	 * @param parent
+	 *            the parent
+	 * @param context
+	 *            the context
+	 * @param master
+	 *            the master
+	 * @return the composite
+	 */
+	private Composite createForm(Composite parent, EMFDataBindingContext context,
+			WritableValue master) {
+		parent = new Composite(parent,SWT.NONE);
+		parent.setLayout(new GridLayout(3, false));
+
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText("Descriptors");
+			l.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
+
+			viewer = new TableViewer(parent);
+			ObservableListContentProvider cp = new ObservableListContentProvider();
+			viewer.setContentProvider(cp);
+			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.heightHint = 300;
+			viewer.getControl().setLayoutData(gd);
+			viewer.getTable().setHeaderVisible(true);
+
+			{
+				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__LABEL);
+					
+				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
+				column.getColumn().setText("Name");
+				column.getColumn().setWidth(200);
+				column.setLabelProvider(new ObservableColumnLabelProvider<MHandler>(prop.observeDetail(cp.getKnownElements())));
+			}
+									
+			Composite buttonComp = new Composite(parent, SWT.NONE);
+			buttonComp.setLayoutData(new GridData(GridData.FILL,GridData.END,false,false));
+			GridLayout gl = new GridLayout();
+			gl.marginLeft=0;
+			gl.marginRight=0;
+			gl.marginWidth=0;
+			gl.marginHeight=0;
+			buttonComp.setLayout(gl);
+
+			Button b;
+			
+			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
+			b.setText("Add ...");
+			b.setImage(createImage(ResourceProvider.IMG_Obj16_table_add));
+			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+			b.addSelectionListener(new SelectionAdapter() {
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					handleAdd();
+				}
+			});
+
+			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
+			b.setText("Remove");
+			b.setImage(createImage(ResourceProvider.IMG_Obj16_table_delete));
+			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+			b.addSelectionListener(new SelectionAdapter() {
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					if( ! viewer.getSelection().isEmpty() ) {
+						List<?> commands = ((IStructuredSelection)viewer.getSelection()).toList();
+						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), E4modelextensionPackage.Literals.VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS, commands);
+						if( cmd.canExecute() ) {
+							getEditingDomain().getCommandStack().execute(cmd);
+						}
+					}
+				}
+			});
+		}
+
+		return parent;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor#getChildList(java.lang.Object)
+	 */
+	@Override
+	public IObservableList getChildList(Object element) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor#getActions(java.lang.Object)
+	 */
+	@Override
+	public List<Action> getActions(Object element) {
+		ArrayList<Action> actions = new ArrayList<Action>(super.getActions(element));
+		actions.add(new Action("Add Editor descriptor part") {
+			@Override
+			public void run() {
+				handleAdd();
+			}
+		});
+		return actions;
+	}
+
+	/**
+	 * Handle add.
+	 */
+	private void handleAdd() {
+		EditorPartDescriptor obj = E4modelextensionFactory.eINSTANCE.createEditorPartDescriptor();
+		Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), E4modelextensionPackage.Literals.VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS, obj);
+		
+		if( cmd.canExecute() ) {
+			getEditingDomain().getCommandStack().execute(cmd);
+//TODO Need to abstract this	editor.setSelection(command);
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/src/org/eclipse/osbp/e4tools/extension/VPreferencesCategoryDescriptor.java b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/src/org/eclipse/osbp/e4tools/extension/VPreferencesCategoryDescriptor.java
new file mode 100644
index 0000000..83e2643
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/src/org/eclipse/osbp/e4tools/extension/VPreferencesCategoryDescriptor.java
@@ -0,0 +1,231 @@
+/**
+ * Copyright (c) 2013 Rushan Gilmullin, Florian Pirchner, Sopot Scela 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 Gilmullin - Initial implementation
+ */
+ package org.eclipse.osbp.e4tools.extension;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.eclipse.core.databinding.observable.list.IObservableList;
+import org.eclipse.core.databinding.observable.value.WritableValue;
+import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
+import org.eclipse.e4.tools.emf.ui.internal.ObservableColumnLabelProvider;
+import org.eclipse.e4.tools.emf.ui.internal.ResourceProvider;
+import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry;
+import org.eclipse.e4.ui.model.application.commands.MHandler;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.databinding.EMFDataBindingContext;
+import org.eclipse.emf.databinding.edit.EMFEditProperties;
+import org.eclipse.emf.databinding.edit.IEMFEditValueProperty;
+import org.eclipse.emf.edit.command.AddCommand;
+import org.eclipse.emf.edit.command.RemoveCommand;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+
+import e4modelextension.E4modelextensionFactory;
+import e4modelextension.E4modelextensionPackage;
+import e4modelextension.EditorPartDescriptor;
+
+/**
+ * The Class VPreferencesCategoryDescriptor.
+ */
+public class VPreferencesCategoryDescriptor extends AbstractComponentEditor{
+	
+	/** The composite. */
+	private Composite composite;
+	
+	/** The context. */
+	private EMFDataBindingContext context;
+	
+	/** The viewer. */
+	private TableViewer viewer;
+	
+	/**
+	 * Instantiates a new v preferences category descriptor.
+	 */
+	@Inject
+	public VPreferencesCategoryDescriptor() {
+		super();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor#getLabel(java.lang.Object)
+	 */
+	@Override
+	public String getLabel(Object element) {
+		return "Preference category";
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor#getDetailLabel(java.lang.Object)
+	 */
+	@Override
+	public String getDetailLabel(Object element) {
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor#getDescription(java.lang.Object)
+	 */
+	@Override
+	public String getDescription(Object element) {
+		return "Preference category";
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor#doGetEditor(org.eclipse.swt.widgets.Composite, java.lang.Object)
+	 */
+	@Override
+	public Composite doGetEditor(Composite parent, Object object) {
+		if( composite == null ) {
+			context = new EMFDataBindingContext();
+			composite = createForm(parent,context, getMaster());
+		}
+		VirtualEntry<?> o = (VirtualEntry<?>)object;
+		viewer.setInput(o.getList());
+		getMaster().setValue(o.getOriginalParent());
+		return composite;
+	}
+
+	/**
+	 * Creates the form.
+	 *
+	 * @param parent
+	 *            the parent
+	 * @param context
+	 *            the context
+	 * @param master
+	 *            the master
+	 * @return the composite
+	 */
+	private Composite createForm(Composite parent, EMFDataBindingContext context,
+			WritableValue master) {
+		parent = new Composite(parent,SWT.NONE);
+		parent.setLayout(new GridLayout(3, false));
+
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText("Descriptors");
+			l.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
+
+			viewer = new TableViewer(parent);
+			ObservableListContentProvider cp = new ObservableListContentProvider();
+			viewer.setContentProvider(cp);
+			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.heightHint = 300;
+			viewer.getControl().setLayoutData(gd);
+			viewer.getTable().setHeaderVisible(true);
+
+			{
+				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__LABEL);
+					
+				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
+				column.getColumn().setText("Name");
+				column.getColumn().setWidth(200);
+				column.setLabelProvider(new ObservableColumnLabelProvider<MHandler>(prop.observeDetail(cp.getKnownElements())));
+			}
+									
+			Composite buttonComp = new Composite(parent, SWT.NONE);
+			buttonComp.setLayoutData(new GridData(GridData.FILL,GridData.END,false,false));
+			GridLayout gl = new GridLayout();
+			gl.marginLeft=0;
+			gl.marginRight=0;
+			gl.marginWidth=0;
+			gl.marginHeight=0;
+			buttonComp.setLayout(gl);
+
+			Button b;
+			
+			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
+			b.setText("Add ...");
+			b.setImage(createImage(ResourceProvider.IMG_Obj16_table_add));
+			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+			b.addSelectionListener(new SelectionAdapter() {
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					handleAdd();
+				}
+			});
+
+			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
+			b.setText("Remove");
+			b.setImage(createImage(ResourceProvider.IMG_Obj16_table_delete));
+			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+			b.addSelectionListener(new SelectionAdapter() {
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					if( ! viewer.getSelection().isEmpty() ) {
+						List<?> commands = ((IStructuredSelection)viewer.getSelection()).toList();
+						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), E4modelextensionPackage.Literals.VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS, commands);
+						if( cmd.canExecute() ) {
+							getEditingDomain().getCommandStack().execute(cmd);
+						}
+					}
+				}
+			});
+		}
+
+		return parent;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor#getChildList(java.lang.Object)
+	 */
+	@Override
+	public IObservableList getChildList(Object element) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor#getActions(java.lang.Object)
+	 */
+	@Override
+	public List<Action> getActions(Object element) {
+		ArrayList<Action> actions = new ArrayList<Action>(super.getActions(element));
+		actions.add(new Action("Add preference category") {
+			@Override
+			public void run() {
+				handleAdd();
+			}
+		});
+		return actions;
+	}
+
+	/**
+	 * Handle add.
+	 */
+	private void handleAdd() {
+		EditorPartDescriptor obj = E4modelextensionFactory.eINSTANCE.createEditorPartDescriptor();
+		Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), E4modelextensionPackage.Literals.VAACLIPSE_APPLICATION__PREFERENCES_CATEGORIES, obj);
+		
+		if( cmd.canExecute() ) {
+			getEditingDomain().getCommandStack().execute(cmd);
+//TODO Need to abstract this	editor.setSelection(command);
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/src/org/eclipse/osbp/e4tools/extension/VaaclipseApplicationEditor.java b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/src/org/eclipse/osbp/e4tools/extension/VaaclipseApplicationEditor.java
new file mode 100644
index 0000000..2fde556
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/src/org/eclipse/osbp/e4tools/extension/VaaclipseApplicationEditor.java
@@ -0,0 +1,110 @@
+/**
+ * Copyright (c) 2013 Rushan Gilmullin, Florian Pirchner, Sopot Scela 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 Gilmullin - Initial implementation
+ */
+
+ package org.eclipse.osbp.e4tools.extension;
+
+import javax.inject.Inject;
+
+import org.eclipse.core.databinding.observable.list.IObservableList;
+import org.eclipse.core.databinding.property.list.IListProperty;
+import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry;
+import org.eclipse.e4.tools.emf.ui.internal.common.component.ApplicationEditor;
+import org.eclipse.emf.databinding.EMFProperties;
+
+import e4modelextension.E4modelextensionPackage;
+
+/**
+ * The Class VaaclipseApplicationEditor.
+ */
+@SuppressWarnings("restriction")
+public class VaaclipseApplicationEditor extends ApplicationEditor {
+
+	/** The Constant EDITOR_DESCRIPTORS_ID. */
+	private static final String EDITOR_DESCRIPTORS_ID = VaaclipseApplicationEditor.class
+			.getName() + ".EDITOR_DESCRIPTORS";
+	
+	/** The editor descriptors. */
+	private IListProperty EDITOR_DESCRIPTORS = EMFProperties
+			.list(E4modelextensionPackage.Literals.VAACLIPSE_APPLICATION__EDITOR_DESCRIPTORS);
+
+	/** The Constant PREFERENCE_CATEGORIES_ID. */
+	private static final String PREFERENCE_CATEGORIES_ID = VaaclipseApplicationEditor.class
+			.getName() + ".PREFERENCE_CATEGORIES";
+	
+	/** The preference categories. */
+	private IListProperty PREFERENCE_CATEGORIES = EMFProperties
+			.list(E4modelextensionPackage.Literals.VAACLIPSE_APPLICATION__PREFERENCES_CATEGORIES);
+
+	/** The Constant PREFERENCE_PAGES_ID. */
+	private static final String PREFERENCE_PAGES_ID = VaaclipseApplicationEditor.class
+			.getName() + ".PREFERENCE_PAGES";
+	
+	/** The preference pages. */
+	private IListProperty PREFERENCE_PAGES = EMFProperties
+			.list(E4modelextensionPackage.Literals.VAACLIPSE_APPLICATION__PREFERENCES_PAGES);
+
+	/**
+	 * Instantiates a new vaaclipse application editor.
+	 */
+	@Inject
+	public VaaclipseApplicationEditor() {
+		super();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.internal.common.component.ApplicationEditor#getLabel(java.lang.Object)
+	 */
+	@Override
+	public String getLabel(Object element) {
+		return "Vaaclipse Application";
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.internal.common.component.ApplicationEditor#getChildList(java.lang.Object)
+	 */
+	@Override
+	public IObservableList getChildList(Object element) {
+
+		IObservableList list = super.getChildList(element);
+
+		VirtualEntry<Object> v = new VirtualEntry<Object>(
+				EDITOR_DESCRIPTORS_ID, EDITOR_DESCRIPTORS, element,
+				"Editor Part Descriptors") {
+			@Override
+			protected boolean accepted(Object o) {
+				return true;
+			}
+		};
+		list.add(v);
+
+		VirtualEntry<Object> v2 = new VirtualEntry<Object>(
+				PREFERENCE_CATEGORIES_ID, PREFERENCE_CATEGORIES, element,
+				"Preference Categories") {
+			@Override
+			protected boolean accepted(Object o) {
+				return true;
+			}
+		};
+		list.add(v2);
+
+		VirtualEntry<Object> v3 = new VirtualEntry<Object>(PREFERENCE_PAGES_ID,
+				PREFERENCE_PAGES, element, "Preference Pages") {
+			@Override
+			protected boolean accepted(Object o) {
+				return true;
+			}
+		};
+		list.add(v3);
+
+		return list;
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/src/org/eclipse/osbp/e4tools/extension/VaaclipseApplicationEditorDesc.java b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/src/org/eclipse/osbp/e4tools/extension/VaaclipseApplicationEditorDesc.java
new file mode 100644
index 0000000..9c430cb
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.e4tools.extension/src/org/eclipse/osbp/e4tools/extension/VaaclipseApplicationEditorDesc.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2013 Rushan Gilmullin, Florian Pirchner, Sopot Scela 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 Gilmullin - Initial implementation
+ */
+
+ package org.eclipse.osbp.e4tools.extension;
+
+import org.eclipse.e4.tools.emf.ui.common.IEditorDescriptor;
+import org.eclipse.emf.ecore.EClass;
+
+import e4modelextension.E4modelextensionPackage;
+
+/**
+ * The Class VaaclipseApplicationEditorDesc.
+ */
+public class VaaclipseApplicationEditorDesc implements IEditorDescriptor {
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.IEditorDescriptor#getEClass()
+	 */
+	public EClass getEClass() {
+		return E4modelextensionPackage.Literals.VAACLIPSE_APPLICATION;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.e4.tools.emf.ui.common.IEditorDescriptor#getEditorClass()
+	 */
+	public Class<?> getEditorClass() {
+		return VaaclipseApplicationEditor.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.tools.feature.ide/.project b/org.eclipse.osbp.vaaclipse.tools.feature.ide/.project
new file mode 100644
index 0000000..9964346
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.feature.ide/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.tools.feature.ide</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.tools.feature.ide/LICENSE.txt b/org.eclipse.osbp.vaaclipse.tools.feature.ide/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.feature.ide/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.tools.feature.ide/build.properties b/org.eclipse.osbp.vaaclipse.tools.feature.ide/build.properties
new file mode 100644
index 0000000..1d71880
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.feature.ide/build.properties
@@ -0,0 +1,5 @@
+bin.includes = license.html,\
+               feature.xml,\
+               feature.properties,\
+               LICENSE.txt
+src.includes = license.html,  LICENSE.txt
diff --git a/org.eclipse.osbp.vaaclipse.tools.feature.ide/epl-v10.html b/org.eclipse.osbp.vaaclipse.tools.feature.ide/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.feature.ide/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.tools.feature.ide/feature.properties b/org.eclipse.osbp.vaaclipse.tools.feature.ide/feature.properties
new file mode 100644
index 0000000..e99819d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.feature.ide/feature.properties
@@ -0,0 +1,169 @@
+###############################################################################
+# Copyright (c) 2013 Rushan Gilmullin, Florian Pirchner, Sopot Scela 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 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 IDE tools 
+
+# "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) 2013 Rushan Gilmullin, Florian Pirchner, Sopot Scela and others\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.tools.feature.ide/feature.xml b/org.eclipse.osbp.vaaclipse.tools.feature.ide/feature.xml
new file mode 100644
index 0000000..9e4ca2c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.feature.ide/feature.xml
@@ -0,0 +1,67 @@
+<?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.tools.feature.ide"
+        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.tools.e4tools.extension"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaaclipse.tools.wizards"
+        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.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.tools.feature.ide/license.html b/org.eclipse.osbp.vaaclipse.tools.feature.ide/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.feature.ide/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&#8482; 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.tools.feature.ide/pom.xml b/org.eclipse.osbp.vaaclipse.tools.feature.ide/pom.xml
new file mode 100644
index 0000000..c1bc9f0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.feature.ide/pom.xml
@@ -0,0 +1,73 @@
+<?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.tools</groupId>
+        <artifactId>org.eclipse.osbp.vaaclipse.tools</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>org.eclipse.osbp.vaaclipse.tools.feature.ide</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>
+                    <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.tools.feature.ide/src/main/javadoc/README.txt b/org.eclipse.osbp.vaaclipse.tools.feature.ide/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.feature.ide/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.tools.feature.ide/src/overview.html b/org.eclipse.osbp.vaaclipse.tools.feature.ide/src/overview.html
new file mode 100644
index 0000000..893d29b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.feature.ide/src/overview.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+	<title>OSBP Tools Graphical Entity</title>
+</head>
+<body>
+<p>The <strong>OSBP&nbsp;Vaaclips Tools </strong>provides ...</p>
+
+<p>&nbsp;</p>
+
+<p>&nbsp;</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/.project b/org.eclipse.osbp.vaaclipse.tools.wizards/.project
new file mode 100644
index 0000000..f5a5db3
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaaclipse.tools.wizards</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.tools.wizards/LICENSE.txt b/org.eclipse.osbp.vaaclipse.tools.wizards/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/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.tools.wizards/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.tools.wizards/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..247a16d
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/META-INF/MANIFEST.MF
@@ -0,0 +1,28 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaaclipse.tools.wizards
+Bundle-SymbolicName: org.eclipse.osbp.vaaclipse.tools.wizards;singleton:=true
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Require-Bundle: org.eclipse.ui;bundle-version="3.6.0",
+ org.eclipse.pde.core;bundle-version="3.6.0",
+ org.eclipse.pde.ui;bundle-version="3.6.0",
+ org.eclipse.core.runtime;bundle-version="3.6.0",
+ org.eclipse.e4.ui.model.workbench;bundle-version="0.9.1",
+ org.eclipse.core.resources;bundle-version="3.6.0",
+ org.eclipse.jdt.core;bundle-version="3.6.0",
+ org.eclipse.jdt.launching;bundle-version="3.5.100",
+ org.eclipse.ui.ide;bundle-version="3.6.0",
+ org.eclipse.core.databinding;bundle-version="1.3.100",
+ org.eclipse.core.databinding.beans;bundle-version="1.2.100",
+ org.eclipse.jface.databinding;bundle-version="1.4.0",
+ org.eclipse.core.databinding.property;bundle-version="1.3.0",
+ org.eclipse.jdt.ui;bundle-version="3.6.0",
+ org.eclipse.emf.ecore
+Bundle-Activator: org.eclipse.osbp.vaaclipse.wizards.ToolsPlugin
+Import-Package: org.eclipse.e4.internal.tools.wizards.project,
+ javax.inject;version="1.0.0",
+ javax.annotation
+Export-Package: org.eclipse.osbp.vaaclipse.wizards.project;version="0.9.0"
+Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/about.html b/org.eclipse.osbp.vaaclipse.tools.wizards/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/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 (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/about.ini b/org.eclipse.osbp.vaaclipse.tools.wizards/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/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.tools.wizards/about.mappings b/org.eclipse.osbp.vaaclipse.tools.wizards/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/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.tools.wizards/about.properties b/org.eclipse.osbp.vaaclipse.tools.wizards/about.properties
new file mode 100644
index 0000000..474d1a3
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/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.tools.wizards
+
+################ 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.tools.wizards/build.properties b/org.eclipse.osbp.vaaclipse.tools.wizards/build.properties
new file mode 100644
index 0000000..67e4b72
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/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,\
+               src/,\
+               templates/,\
+               LICENSE.txt
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  LICENSE.txt
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/plugin.xml b/org.eclipse.osbp.vaaclipse.tools.wizards/plugin.xml
new file mode 100644
index 0000000..db893f5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/plugin.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.newWizards">
+         <wizard
+            category="org.eclipse.e4.tools"
+            class="org.eclipse.osbp.vaaclipse.wizards.project.E4NewProjectWizard"
+            icon="platform:/plugin/org.eclipse.pde.ui/icons/etool16/newpprj_wiz.gif"
+            id="org.eclipse.e4.tools.E4NewProjectWizard"
+            name="Eclipse 4 Vaadin Application Project"
+            project="true">
+      	</wizard>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/pom.xml b/org.eclipse.osbp.vaaclipse.tools.wizards/pom.xml
new file mode 100644
index 0000000..42ed7ca
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/pom.xml
@@ -0,0 +1,23 @@
+<?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 -->
+<!--#======================================================================= -->
+
+<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.tools.wizards</artifactId>
+    <packaging>eclipse-plugin</packaging>
+    <parent>
+        <groupId>org.eclipse.osbp.vaaclipse.tools</groupId>
+        <artifactId>org.eclipse.osbp.vaaclipse.tools</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+</project>
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/src/org/eclipse/osbp/vaaclipse/wizards/ToolsPlugin.java b/org.eclipse.osbp.vaaclipse.tools.wizards/src/org/eclipse/osbp/vaaclipse/wizards/ToolsPlugin.java
new file mode 100644
index 0000000..4a303c1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/src/org/eclipse/osbp/vaaclipse/wizards/ToolsPlugin.java
@@ -0,0 +1,185 @@
+/**
+ * Copyright (c) 2013 Rushan Gilmullin, Florian Pirchner, Sopot Scela 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 Gilmullin - Initial implementation
+ */
+
+ package org.eclipse.osbp.vaaclipse.wizards;
+
+import java.net.URL;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The Class ToolsPlugin.
+ */
+public class ToolsPlugin extends AbstractUIPlugin {
+	
+	/** The Constant PLUGIN_ID. */
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.osbp.vaaclipse.wizards"; //$NON-NLS-1$
+ 
+	/** The plugin. */
+	private static ToolsPlugin plugin;
+	
+	/** The resource locator. */
+	private ResourceLocator resourceLocator;
+	
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext
+	 * )
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext
+	 * )
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance.
+	 *
+	 * @return the shared instance
+	 */
+	public static ToolsPlugin getDefault() {
+		return plugin;
+	}
+	
+	/**
+	 * Gets the resource locator.
+	 *
+	 * @return the resource locator
+	 */
+	public ResourceLocator getResourceLocator() {
+		if (resourceLocator == null) {
+			resourceLocator = new ResourceLocator() {
+				
+				public String getString(String key, Object[] substitutions,
+						boolean translate) {
+					return null;
+				}
+				
+				public String getString(String key, Object[] substitutions) {
+					return null;
+				}
+				
+				public String getString(String key, boolean translate) {
+					return null;
+				}
+				
+				public String getString(String key) {
+					return null;
+				}
+				
+				public Object getImage(String key) {
+					return null;
+				}
+				
+				public URL getBaseURL() {
+					return null;
+				}
+			};
+		}
+		return resourceLocator;
+	}
+	
+	/**
+	 * Log.
+	 *
+	 * @param status
+	 *            the status
+	 * @param nesting
+	 *            the nesting
+	 * @param appendLogger
+	 *            the append logger
+	 */
+	public static void log(IStatus status, int nesting, boolean appendLogger) {
+		getDefault().getLog().log(status);
+	}
+	
+	/**
+	 * Log Throwable Error.
+	 *
+	 * @param t
+	 *            the t
+	 */
+	public static void logError(Throwable t) {
+		logError(t, 0, true);
+	}
+
+	/**
+	 * Log error.
+	 *
+	 * @param t
+	 *            the t
+	 * @param appendLogger
+	 *            the append logger
+	 */
+	public static void logError(Throwable t, boolean appendLogger) {
+		logError(t, 0, appendLogger);
+	}
+
+	/**
+	 * Log error.
+	 *
+	 * @param t
+	 *            the t
+	 * @param nesting
+	 *            the nesting
+	 */
+	public static void logError(Throwable t, int nesting) {
+		logError(t, nesting, true);
+	}
+
+	/**
+	 * Log error.
+	 *
+	 * @param t
+	 *            the t
+	 * @param nesting
+	 *            the nesting
+	 * @param appendLogger
+	 *            the append logger
+	 */
+	public static void logError(Throwable t, int nesting, boolean appendLogger) {
+		log(newStatus(IStatus.ERROR, t.getMessage(), t), nesting, appendLogger);
+	}
+	
+	/**
+	 * Create an IStatus.
+	 *
+	 * @param severity
+	 *            the severity
+	 * @param message
+	 *            the message
+	 * @param exception
+	 *            the exception
+	 * @return a new IStatus
+	 */
+	public static IStatus newStatus(int severity, String message,
+			Throwable exception) {
+		return new Status(severity, PLUGIN_ID, 0, message, exception);
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/src/org/eclipse/osbp/vaaclipse/wizards/project/E4NewProjectWizard.java b/org.eclipse.osbp.vaaclipse.tools.wizards/src/org/eclipse/osbp/vaaclipse/wizards/project/E4NewProjectWizard.java
new file mode 100644
index 0000000..0dc88f0
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/src/org/eclipse/osbp/vaaclipse/wizards/project/E4NewProjectWizard.java
@@ -0,0 +1,623 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2012 Soyatec(http://www.soyatec.com) 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:
+ *     Soyatec - initial API and implementation
+ *     IBM Corporation - ongoing enhancements
+ *     Sopot Cela - ongoing enhancements
+ *     Lars Vogel - ongoing enhancements
+ *     Wim Jongman - ongoing enhancements
+ *     Rushan Gilmullin - adapt to vaaclipse
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.wizards.project;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.StringBufferInputStream;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.commands.MBindingContext;
+import org.eclipse.e4.ui.model.application.commands.MBindingTable;
+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.MHandler;
+import org.eclipse.e4.ui.model.application.commands.MKeyBinding;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IPackageFragment;
+import org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.internal.compiler.ast.InstanceOfExpression;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.pde.core.build.IBuildEntry;
+import org.eclipse.pde.core.plugin.IMatchRules;
+import org.eclipse.pde.core.plugin.IPluginElement;
+import org.eclipse.pde.core.plugin.IPluginExtension;
+import org.eclipse.pde.core.plugin.IPluginModelBase;
+import org.eclipse.pde.core.plugin.IPluginReference;
+import org.eclipse.pde.internal.core.ICoreConstants;
+import org.eclipse.pde.internal.core.build.WorkspaceBuildModel;
+import org.eclipse.pde.internal.core.bundle.BundlePlugin;
+import org.eclipse.pde.internal.core.bundle.BundlePluginBase;
+import org.eclipse.pde.internal.core.bundle.WorkspaceBundleModel;
+import org.eclipse.pde.internal.core.bundle.WorkspaceBundlePluginModel;
+import org.eclipse.pde.internal.core.ibundle.IBundlePluginModelBase;
+import org.eclipse.pde.internal.core.ibundle.IManifestHeader;
+import org.eclipse.pde.internal.core.plugin.WorkspacePluginModelBase;
+import org.eclipse.pde.internal.core.project.PDEProject;
+import org.eclipse.pde.internal.core.text.bundle.BundleSymbolicNameHeader;
+import org.eclipse.pde.internal.core.util.CoreUtility;
+import org.eclipse.pde.internal.ui.PDEPlugin;
+import org.eclipse.pde.internal.ui.PDEUIMessages;
+import org.eclipse.pde.internal.ui.wizards.IProjectProvider;
+import org.eclipse.pde.internal.ui.wizards.plugin.NewPluginProjectWizard;
+import org.eclipse.pde.internal.ui.wizards.plugin.NewProjectCreationOperation;
+import org.eclipse.pde.internal.ui.wizards.plugin.PluginFieldData;
+import org.eclipse.pde.ui.IBundleContentWizard;
+import org.eclipse.pde.ui.IFieldData;
+import org.eclipse.pde.ui.templates.PluginReference;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.IWorkingSet;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.FileEditorInput;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.Constants;
+import org.osgi.framework.Version;
+
+/**
+ * The Class E4NewProjectWizard.
+ *
+ * @author jin.liu (jin.liu@soyatec.com)
+ */
+public class E4NewProjectWizard extends NewPluginProjectWizard {
+
+	/** The Constant PLUGIN_XML. */
+	private static final String PLUGIN_XML = "plugin.xml";
+	
+	/** The Constant MODEL_EDITOR_ID. */
+	private static final String MODEL_EDITOR_ID = "org.eclipse.e4.tools.emf.editor3x.e4wbm";
+	
+	/** The Constant APPLICATION_MODEL. */
+	private static final String APPLICATION_MODEL = "Application.e4xmi";
+	
+	/** The plugin data. */
+	private PluginFieldData fPluginData;
+	
+	/** The application page. */
+	private NewApplicationWizardPage fApplicationPage;
+	
+	/** The project provider. */
+	private IProjectProvider fProjectProvider;
+	
+	/** The content page. */
+	private PluginContentPage fContentPage;
+	
+	/** The is minimalist. */
+	private boolean isMinimalist;
+
+	/**
+	 * Instantiates a new e4 new project wizard.
+	 */
+	public E4NewProjectWizard() {
+		fPluginData = new PluginFieldData();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.pde.internal.ui.wizards.plugin.NewPluginProjectWizard#addPages()
+	 */
+	public void addPages() {
+		fMainPage = new E4NewProjectWizardPage(
+				"main", fPluginData, false, getSelection()); //$NON-NLS-1$
+		fMainPage.setTitle(PDEUIMessages.NewProjectWizard_MainPage_title);
+		fMainPage.setDescription(PDEUIMessages.NewProjectWizard_MainPage_desc);
+		String pname = getDefaultValue(DEF_PROJECT_NAME);
+		if (pname != null)
+			fMainPage.setInitialProjectName(pname);
+		addPage(fMainPage);
+
+		fProjectProvider = new IProjectProvider() {
+			public String getProjectName() {
+				return fMainPage.getProjectName();
+			}
+
+			public IProject getProject() {
+				return fMainPage.getProjectHandle();
+			}
+
+			public IPath getLocationPath() {
+				return fMainPage.getLocationPath();
+			}
+		};
+
+		fContentPage = new PluginContentPage(
+				"page2", fProjectProvider, fMainPage, fPluginData); //$NON-NLS-1$
+
+		fApplicationPage = new NewApplicationWizardPage(fProjectProvider,
+				fPluginData);
+
+		addPage(fContentPage);
+		addPage(fApplicationPage);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.pde.internal.ui.wizards.plugin.NewPluginProjectWizard#performFinish()
+	 */
+	@SuppressWarnings("restriction")
+	public boolean performFinish() {
+		try {
+			fMainPage.updateData();
+			fContentPage.updateData();
+			IDialogSettings settings = getDialogSettings();
+			if (settings != null) {
+				fMainPage.saveSettings(settings);
+				fContentPage.saveSettings(settings);
+			}
+			
+//			 BundleContext context = ToolsPlugin.getDefault().getBundle().getBundleContext();
+//			 ServiceReference ref = context.getServiceReference(IBundleProjectService.class.getName());
+//			 if (ref != null)
+//			 {
+//				 IBundleProjectService projectService = (IBundleProjectService)context.getService(ref);
+//				 if (projectService != null)
+//				 {
+//					 IBundleProjectDescription description = projectService.getDescription(fProjectProvider.getProject());
+//					 if (description != null)
+//						 description.setSingleton(true); 
+//				 }
+//				 context.ungetService(ref);
+//			 }
+
+			// Create the project
+			getContainer().run(
+					false,
+					true,
+					new NewProjectCreationOperation(fPluginData,
+							fProjectProvider, new ContentWizard()) {
+						private WorkspacePluginModelBase model;
+
+						@Override
+						protected void setPluginLibraries(
+								WorkspacePluginModelBase model)
+								throws CoreException {
+							this.model = model;
+							super.setPluginLibraries(model);
+						}
+					});
+
+			// Add Project to working set
+			IWorkingSet[] workingSets = fMainPage.getSelectedWorkingSets();
+			if (workingSets.length > 0)
+				getWorkbench().getWorkingSetManager().addToWorkingSets(
+						fProjectProvider.getProject(), workingSets);
+
+			this.createApplicationResources(fProjectProvider.getProject(), new NullProgressMonitor());
+			
+			updateSingleton(fProjectProvider.getProject(), true);
+
+			// Add the resources to build.properties
+			adjustBuildPropertiesFile(fProjectProvider.getProject());
+
+			// Open the model editor
+			openEditorForApplicationModel();
+
+			return true;
+		} catch (InvocationTargetException e) {
+			PDEPlugin.logException(e);
+		} catch (InterruptedException e) {
+		} catch (CoreException e) {
+			PDEPlugin.logException(e);
+		}
+		return false;
+	}
+
+	/**
+	 * Opens the model editor after the project was created.
+	 *
+	 * @throws PartInitException
+	 *             the part init exception
+	 */
+	private void openEditorForApplicationModel() throws PartInitException {
+		IFile file = fProjectProvider.getProject().getFile(APPLICATION_MODEL);
+		if (file != null) {
+			FileEditorInput input = new FileEditorInput(file);
+			IWorkbenchWindow window = PlatformUI.getWorkbench()
+					.getActiveWorkbenchWindow();
+			IWorkbenchPage page = window.getActivePage();
+			page.openEditor(input, MODEL_EDITOR_ID);
+		}
+	}
+
+	/**
+	 * Adds other resources to the build.properties file.
+	 *
+	 * @param project
+	 *            the project
+	 * @throws CoreException
+	 *             the core exception
+	 */
+	private void adjustBuildPropertiesFile(IProject project)
+			throws CoreException {
+		IFile file = PDEProject.getBuildProperties(project);
+		if (file.exists()) {
+			WorkspaceBuildModel model = new WorkspaceBuildModel(file);
+			IBuildEntry e = model.getBuild().getEntry(IBuildEntry.BIN_INCLUDES);
+
+			e.addToken(PLUGIN_XML);
+			e.addToken(APPLICATION_MODEL);
+
+			// Event though an icons directory is always created
+			// it seems appropriate to only add it if it contains
+			// some content
+			if (!isMinimalist) {
+				e.addToken("icons/");
+			}
+			
+			model.save();
+		}
+	}
+	
+	/**
+	 * Update singleton.
+	 *
+	 * @param project
+	 *            the project
+	 * @param singleton
+	 *            the singleton
+	 */
+	protected void updateSingleton(IProject project, boolean singleton) {
+		IFile man = project.getFile(ICoreConstants.BUNDLE_FILENAME_DESCRIPTOR);
+		
+		try {
+			BufferedReader reader = new BufferedReader(new InputStreamReader(man.getContents()));
+			String line = null;
+			StringBuffer manBuf = new StringBuffer();
+			
+			while ((line = reader.readLine()) != null) {
+				manBuf.append(line + System.lineSeparator());
+			}
+			
+			int i = manBuf.indexOf(Constants.BUNDLE_SYMBOLICNAME);
+			if (i >= 0)
+			{
+				int ls = manBuf.indexOf(System.lineSeparator(), i);
+				if (ls >= 0)
+				{
+					manBuf.insert(ls, ";singleton:=true");
+				}
+			}
+			
+			man.setContents(new StringBufferInputStream(manBuf.toString()), IResource.FORCE, new NullProgressMonitor());
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
+		}
+	}
+	
+	/**
+	 * create products extension detail.
+	 *
+	 * @param project
+	 *            the project
+	 * @param monitor
+	 *            the monitor
+	 */
+	@SuppressWarnings("restriction")
+	public void createApplicationResources(IProject project,
+			IProgressMonitor monitor) {
+		Map<String, String> map = fApplicationPage.getData();
+		isMinimalist = !map.get(NewApplicationWizardPage.richSample)
+				.equalsIgnoreCase("TRUE");
+		if (map == null
+				|| map.get(NewApplicationWizardPage.PRODUCT_NAME) == null)
+			return;
+
+		// If the project has invalid characters, the plug-in name would replace
+		// them with underscores, product name does the same
+		String pluginName = map.get(NewApplicationWizardPage.PRODUCT_NAME);
+
+		// If there's no Activator created we create default package
+		if (!fPluginData.doGenerateClass()) {
+			String packageName = fPluginData.getId();
+			IPath path = new Path(packageName.replace('.', '/'));
+			if (fPluginData.getSourceFolderName().trim().length() > 0)
+				path = new Path(fPluginData.getSourceFolderName()).append(path);
+
+			try {
+				CoreUtility.createFolder(project.getFolder(path));
+			} catch (CoreException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		}
+
+		IJavaProject javaProject = JavaCore.create(project);
+		IPackageFragment fragment = null;
+
+		try {
+			for (IPackageFragment element : javaProject.getPackageFragments()) {
+				if (element.getKind() == IPackageFragmentRoot.K_SOURCE) {
+					fragment = element;
+				}
+			}
+		} catch (JavaModelException e1) {
+			e1.printStackTrace();
+		}
+
+		IFile file = project.getFile("css/main.css");
+
+		try {
+			prepareFolder(file.getParent(), monitor);
+
+			URL corePath = ResourceLocator
+					.getProjectTemplateFiles("css/main.css");
+			file.create(corePath.openStream(), true, monitor);
+		} catch (Exception e) {
+			PDEPlugin.logException(e);
+		}
+
+		String template_id = "common";
+		Set<String> binaryExtentions = new HashSet<String>();
+		binaryExtentions.add(".gif");
+		binaryExtentions.add(".png");
+
+		Map<String, String> keys = new HashMap<String, String>();
+		keys.put("projectName", pluginName);
+		String elementName = fragment.getElementName();
+		keys.put("handlersPackageName", (elementName.equals("") ? "" : elementName
+				+ ".")
+				+ "handlers");
+		keys.put("loginPackageName", (elementName.equals("") ? "" : elementName
+				+ ".")
+				+ "login");
+		keys.put("viewsPackageName", (elementName.equals("") ? "" : elementName
+				+ ".")
+				+ "views");
+		keys.put(
+				"programArgs",
+				"true".equalsIgnoreCase(map.get(NewApplicationWizardPage.CLEAR_PERSISTED_STATE)) ? "-clearPersistedState" : "");
+		keys.put(
+				"contextPath", 
+				!map.get(NewApplicationWizardPage.CONTEXT_PATH).trim().isEmpty() ? map.get(NewApplicationWizardPage.CONTEXT_PATH) 
+						: "vaaclipse");
+		
+		keys.put(
+				"port", 
+				!map.get(NewApplicationWizardPage.PORT).trim().isEmpty() ? map.get(NewApplicationWizardPage.PORT) 
+						: "8080");
+		
+		try {
+			URL corePath = ResourceLocator.getProjectTemplateFiles(template_id);
+			IRunnableWithProgress op = new TemplateOperation(corePath, project,
+					keys, binaryExtentions, isMinimalist);
+			getContainer().run(false, true, op);
+		} catch (Exception e) {
+			PDEPlugin.logException(e);
+		}
+		if (!isMinimalist) {
+			try {
+				URL corePath = ResourceLocator.getProjectTemplateFiles("src");
+				IRunnableWithProgress op = new TemplateOperation(corePath,
+						(IContainer) fragment.getResource(), keys,
+						binaryExtentions, isMinimalist);
+				getContainer().run(false, true, op);
+			} catch (Exception e) {
+				PDEPlugin.logException(e);
+			}
+		}
+	}
+	
+	/**
+	 * Creates the command.
+	 *
+	 * @param commandId
+	 *            the command id
+	 * @param name
+	 *            the name
+	 * @param className
+	 *            the class name
+	 * @param keyBinding
+	 *            the key binding
+	 * @param projectName
+	 *            the project name
+	 * @param fragment
+	 *            the fragment
+	 * @param application
+	 *            the application
+	 * @return the m command
+	 */
+	private MCommand createCommand(String commandId, String name,
+			String className, String keyBinding, String projectName,
+			IPackageFragment fragment, MApplication application) {
+		MCommand command = MCommandsFactory.INSTANCE.createCommand();
+		command.setCommandName(name);
+		command.setElementId(commandId);
+		application.getCommands().add(command);
+		{
+			// Create Quit handler for command
+			MHandler quitHandler = MCommandsFactory.INSTANCE.createHandler();
+			quitHandler.setCommand(command);
+			String elementName = fragment.getElementName();
+			quitHandler.setContributionURI("bundleclass://" + projectName + "/"
+					+ (elementName.equals("") ? "" : elementName + ".")
+					+ "handlers." + className);
+			application.getHandlers().add(quitHandler);
+
+			MKeyBinding binding = MCommandsFactory.INSTANCE.createKeyBinding();
+			binding.setKeySequence(keyBinding);
+			binding.setCommand(command);
+			List<MBindingTable> tables = application.getBindingTables();
+			if (tables.size() == 0) {
+				MBindingContext rootContext = null;
+				if (application.getRootContext().size() > 0) {
+					rootContext = application.getRootContext().get(0);
+				} else {
+					rootContext = MCommandsFactory.INSTANCE
+							.createBindingContext();
+					rootContext
+							.setElementId("org.eclipse.ui.contexts.dialogAndWindow");
+					rootContext.setName("In Dialog and Windows");
+					application.getRootContext().add(rootContext);
+				}
+				MBindingTable table = MCommandsFactory.INSTANCE
+						.createBindingTable();
+				table.setBindingContext(rootContext);
+				tables.add(table);
+			}
+			tables.get(0).getBindings().add(binding);
+		}
+		return command;
+	}
+
+	/**
+	 * Prepare folder.
+	 *
+	 * @param container
+	 *            the container
+	 * @param monitor
+	 *            the monitor
+	 * @throws CoreException
+	 *             the core exception
+	 */
+	private void prepareFolder(IContainer container, IProgressMonitor monitor)
+			throws CoreException {
+		IContainer parent = container.getParent();
+		if (parent instanceof IFolder) {
+			prepareFolder((IFolder) parent, monitor);
+		}
+		if (!container.exists() && container instanceof IFolder) {
+			IFolder folder = (IFolder) container;
+			folder.create(true, true, monitor);
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.pde.internal.ui.wizards.plugin.NewPluginProjectWizard#getPluginId()
+	 */
+	public String getPluginId() {
+		return fPluginData.getId();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.pde.internal.ui.wizards.plugin.NewPluginProjectWizard#getPluginVersion()
+	 */
+	public String getPluginVersion() {
+		return fPluginData.getVersion();
+	}
+
+	/**
+	 * The Class ContentWizard.
+	 */
+	private class ContentWizard extends Wizard implements IBundleContentWizard {
+		
+		/** The dependencies. */
+		String[] dependencies = new String[] {
+			 "javax.inject",
+			 "org.eclipse.e4.core.di",
+			 "org.eclipse.e4.core.contexts",
+			 "com.vaadin.server",
+			 "com.vaadin.shared",
+			 "com.vaadin.shared.deps",
+			 "org.eclipse.e4.ui.model.workbench",
+			 "org.eclipse.e4.ui.workbench",
+			 "org.eclipse.osbp.e4modelextension",
+			 "org.eclipse.osbp.e4extension",
+			 "org.eclipse.osbp.vaaclipse.publicapi",
+			 "org.eclipse.e4.core.services",
+			 "org.eclipse.osbp.vaaclipse.theme",
+			 "org.eclipse.osgi.services",
+			 "org.eclipse.e4.core.di.extensions"
+		 };
+		
+		/* (non-Javadoc)
+		 * @see org.eclipse.pde.ui.IPluginContentWizard#init(org.eclipse.pde.ui.IFieldData)
+		 */
+		public void init(IFieldData data) {
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.pde.ui.IPluginContentWizard#getDependencies(java.lang.String)
+		 */
+		public IPluginReference[] getDependencies(String schemaVersion) {
+			ArrayList<IPluginReference> result = new ArrayList<IPluginReference>(
+					dependencies.length);
+			for (String dependency : dependencies) {
+				Bundle bundle = Platform.getBundle(dependency);
+				String versionString = "0.0.0";
+				if (bundle != null) {
+					Version version = bundle.getVersion();
+					versionString = version.getMajor() + "."
+							+ version.getMinor() + "." + version.getMicro();
+				}
+				result.add(new PluginReference(dependency, versionString,
+						IMatchRules.GREATER_OR_EQUAL));
+			}
+			return result.toArray(new IPluginReference[0]);
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.pde.ui.IPluginContentWizard#getNewFiles()
+		 */
+		public String[] getNewFiles() {
+			return new String[0];
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.pde.ui.IPluginContentWizard#performFinish(org.eclipse.core.resources.IProject, org.eclipse.pde.core.plugin.IPluginModelBase, org.eclipse.core.runtime.IProgressMonitor)
+		 */
+		public boolean performFinish(IProject project, IPluginModelBase model,
+				IProgressMonitor monitor) {
+			return true;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.pde.ui.IBundleContentWizard#getImportPackages()
+		 */
+		public String[] getImportPackages() {
+			return new String[] { "javax.annotation;version=\"1.0.0\"" };
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.jface.wizard.Wizard#performFinish()
+		 */
+		@Override
+		public boolean performFinish() {
+			return true;
+		}
+
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/src/org/eclipse/osbp/vaaclipse/wizards/project/E4NewProjectWizardPage.java b/org.eclipse.osbp.vaaclipse.tools.wizards/src/org/eclipse/osbp/vaaclipse/wizards/project/E4NewProjectWizardPage.java
new file mode 100644
index 0000000..fe16145
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/src/org/eclipse/osbp/vaaclipse/wizards/project/E4NewProjectWizardPage.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2010 Soyatec(http://www.soyatec.com) 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:
+ *     Soyatec - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.wizards.project;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.pde.internal.ui.wizards.plugin.AbstractFieldData;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * The Class E4NewProjectWizardPage.
+ */
+public class E4NewProjectWizardPage extends org.eclipse.pde.internal.ui.wizards.plugin.NewProjectCreationPage {
+
+	/**
+	 * Instantiates a new e4 new project wizard page.
+	 *
+	 * @param pageName
+	 *            the page name
+	 * @param data
+	 *            the data
+	 * @param fragment
+	 *            the fragment
+	 * @param selection
+	 *            the selection
+	 */
+	public E4NewProjectWizardPage(String pageName, AbstractFieldData data, boolean fragment, IStructuredSelection selection) {
+		super(pageName, data, fragment, selection);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.pde.internal.ui.wizards.plugin.NewProjectCreationPage#createControl(org.eclipse.swt.widgets.Composite)
+	 */
+	@Override
+	public void createControl(Composite parent) {
+		super.createControl(parent);
+		fOSGIButton.setSelection(true);
+		fEclipseButton.setEnabled(false);
+		fEclipseCombo.setEnabled(false);
+	}
+}
+
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/src/org/eclipse/osbp/vaaclipse/wizards/project/NewApplicationWizardPage.java b/org.eclipse.osbp.vaaclipse.tools.wizards/src/org/eclipse/osbp/vaaclipse/wizards/project/NewApplicationWizardPage.java
new file mode 100644
index 0000000..2ed6e04
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/src/org/eclipse/osbp/vaaclipse/wizards/project/NewApplicationWizardPage.java
@@ -0,0 +1,698 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2012 Soyatec (http://www.soyatec.com) 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:
+ *     Soyatec - initial API and implementation
+ *     IBM Corporation - ongoing enhancements
+ *     Lars Vogel, vogella GmbH - ongoing enhancements
+ *     Sopot Cela - ongoing enhancements
+ *     Rushan Gilmullin - adapt to vaaclipse
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.wizards.project;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.pde.internal.ui.wizards.IProjectProvider;
+import org.eclipse.pde.internal.ui.wizards.plugin.AbstractFieldData;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.VerifyEvent;
+import org.eclipse.swt.events.VerifyListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.ColorDialog;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.branding.IProductConstants;
+
+/**
+ * The Class NewApplicationWizardPage.
+ *
+ * @author jin.liu (jin.liu@soyatec.com)
+ */
+public class NewApplicationWizardPage extends WizardPage {
+	
+	/** The Constant THEME_CONTRIBUTION_RESOURCE_PATH. */
+	public static final String THEME_CONTRIBUTION_RESOURCE_PATH = "mainThemeContributionResourcePath";
+	
+	/** The Constant PRODUCT_NAME. */
+	public static final String PRODUCT_NAME = "productName";
+	
+	/** The Constant CLEAR_PERSISTED_STATE. */
+	public static final String CLEAR_PERSISTED_STATE = "clearPersistedState";
+	
+	/** The Constant CONTEXT_PATH. */
+	public static final String CONTEXT_PATH = "contextPath";
+	
+	/** The Constant PORT. */
+	public static final String PORT = "port";
+	
+	/** The Constant EOL. */
+	public static final String EOL = System.getProperty("line.separator");
+	
+	/** The Constant richSample. */
+	public static final String richSample = "RICH_SAMPLE";
+	
+	/** The data. */
+	private final Map<String, String> data;
+
+	/** The project. */
+	private IProject project;
+	
+	/** The project provider. */
+	private IProjectProvider projectProvider;
+
+/** The context path text. */
+//	private Text proNameText;
+	private Text contextPathText;
+	
+	/** The port text. */
+	private Text portText;
+	
+	/** The property group. */
+	private Group propertyGroup;
+	
+	/** The plugin data. */
+	private AbstractFieldData pluginData;
+
+	/** The properties. */
+	private PropertyData[] PROPERTIES;
+
+	/**
+	 * Instantiates a new new application wizard page.
+	 *
+	 * @param projectProvider
+	 *            the project provider
+	 * @param pluginData
+	 *            the plugin data
+	 */
+	protected NewApplicationWizardPage(IProjectProvider projectProvider,
+			AbstractFieldData pluginData) {
+		super("New Eclipse 4 Vaadin Application Wizard Page");
+		this.projectProvider = projectProvider;
+		this.pluginData = pluginData;
+		data = new HashMap<String, String>();
+		data.put(richSample, "TRUE");// minimalist by default
+		setTitle("Eclipse 4 Vaadin Application");
+		setMessage("Configure application with special values.");
+	}
+
+	/**
+	 * Gets the project.
+	 *
+	 * @return the project
+	 */
+	public IProject getProject() {
+		if (project == null && projectProvider != null) {
+			project = projectProvider.getProject();
+		}
+		return project;
+	}
+
+	/**
+	 * Sets the project.
+	 *
+	 * @param project
+	 *            the new project
+	 */
+	public void setProject(IProject project) {
+		this.project = project;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets
+	 * .Composite)
+	 */
+	public void createControl(Composite parent) {
+		Composite control = new Composite(parent, SWT.NONE);
+		control.setLayout(new GridLayout());
+
+//		Group productGroup = createProductGroup(control);
+//		productGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		
+		Group webAppGroup = createWebAppGroup(control);
+		webAppGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+		propertyGroup = createPropertyGroup(control);
+		propertyGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+//		Group templateGroup = createTemplateGroup(control);
+//		templateGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		
+		setControl(control);
+	}
+
+//	private Group createTemplateGroup(Composite parent) {
+//		Group group = new Group(parent, SWT.NONE);
+//		group.setLayout(new GridLayout(1, false));
+//		group.setText("Template option");
+//		
+//		richSampleCheckbox = new Button(group, SWT.CHECK);
+//		
+//		richSampleCheckbox.setSelection(false);
+//		richSampleCheckbox.addSelectionListener(new SelectionAdapter() {
+//			public void widgetSelected(SelectionEvent e) {
+//				data.put(richSample, richSampleCheckbox.getSelection() ? "TRUE"
+//						: "FALSE");
+//			}
+//		});
+//		richSampleCheckbox.setText("Create sample content (parts, menu etc.)");
+//		return group;
+//	}
+	
+	/**
+ * The Class PropertyData.
+ */
+static class PropertyData {
+		
+		/** The name. */
+		private String name;
+		
+		/** The label. */
+		private String label;
+		
+		/** The extra tooltip info. */
+		private String extraTooltipInfo;
+
+		/** The value. */
+		private String value;
+		
+		/** The type. */
+		private Class<?> type;
+		
+		/** The editable. */
+		private boolean editable;
+
+		/**
+		 * Instantiates a new property data.
+		 *
+		 * @param name
+		 *            the name
+		 * @param label
+		 *            the label
+		 * @param value
+		 *            the value
+		 * @param type
+		 *            the type
+		 * @param editable
+		 *            the editable
+		 */
+		public PropertyData(String name, String label, String value,
+				Class<?> type, boolean editable) {
+			this.name = name;
+			this.value = value;
+			this.label = label;
+			this.type = type;
+			this.editable = editable;
+		}
+
+		/**
+		 * Instantiates a new property data.
+		 *
+		 * @param name
+		 *            the name
+		 * @param label
+		 *            the label
+		 * @param value
+		 *            the value
+		 * @param type
+		 *            the type
+		 * @param editable
+		 *            the editable
+		 * @param extraTooltipInfo
+		 *            the extra tooltip info
+		 */
+		public PropertyData(String name, String label, String value,
+				Class<?> type, boolean editable, String extraTooltipInfo) {
+			this.name = name;
+			this.value = value;
+			this.label = label;
+			this.type = type;
+			this.editable = editable;
+			this.extraTooltipInfo = extraTooltipInfo;
+		}
+
+		/**
+		 * Gets the name.
+		 *
+		 * @return the name
+		 */
+		public String getName() {
+			return name;
+		}
+
+		/**
+		 * Gets the value.
+		 *
+		 * @return the value
+		 */
+		public String getValue() {
+			return value;
+		}
+
+		/**
+		 * Gets the type.
+		 *
+		 * @return the type
+		 */
+		public Class<?> getType() {
+			return type;
+		}
+
+		/**
+		 * Checks if is editable.
+		 *
+		 * @return true, if is editable
+		 */
+		public boolean isEditable() {
+			return editable;
+		}
+
+		/**
+		 * Gets the label.
+		 *
+		 * @return the label
+		 */
+		public String getLabel() {
+			return label;
+		}
+
+		/**
+		 * Gets the extra tooltip info.
+		 *
+		 * @return the extra tooltip info
+		 */
+		public String getExtraTooltipInfo() {
+			return extraTooltipInfo;
+		}
+
+	}
+
+	/**
+	 * Creates the property group.
+	 *
+	 * @param control
+	 *            the control
+	 * @return the group
+	 */
+	private Group createPropertyGroup(Composite control) {
+		Group group = new Group(control, SWT.NONE);
+		group.setText("Properties");
+
+		group.setLayout(new GridLayout(3, false));
+
+		return group;
+	}
+
+	/**
+	 * Creates the property item.
+	 *
+	 * @param parent
+	 *            the parent
+	 * @param property
+	 *            the property
+	 */
+	private void createPropertyItem(final Composite parent,
+			final PropertyData property) {
+		
+
+		if (property.getType() == Boolean.class) {
+			final Button button = new Button(parent, SWT.CHECK);
+			button.setSelection("true".equalsIgnoreCase(property.getValue()));
+			button.addSelectionListener(new SelectionAdapter() {
+				public void widgetSelected(SelectionEvent e) {
+					handleCheckBoxEvent(property.getName(),
+							button.getSelection());
+				}
+			});
+			button.setText(property.getLabel());
+			new Label(parent, SWT.NONE);
+		} else {
+			createLabelForField(parent, property);
+			final Text valueText = new Text(parent, SWT.BORDER);
+			valueText.setText(property.getValue());
+			GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
+			valueText.setLayoutData(gridData);
+			if (!property.isEditable()) {
+				valueText.setEditable(false);
+			}
+			valueText.addListener(SWT.Modify, new Listener() {
+				public void handleEvent(Event event) {
+					handleTextEvent(property.getName(), valueText);
+				}
+			});
+
+			if (property.getType() == Color.class
+					|| property.getType() == Rectangle.class) {
+				Button button = new Button(parent, SWT.PUSH);
+				button.setText("...");
+				button.addSelectionListener(new SelectionAdapter() {
+					public void widgetSelected(SelectionEvent e) {
+						handleLinkEvent(property, valueText, parent.getShell());
+					}
+				});
+			} else {
+				new Label(parent, SWT.NONE);
+			}
+		}
+		data.put(property.getName(), property.getValue());
+	}
+
+	/**
+	 * Creates the label for field.
+	 *
+	 * @param parent
+	 *            the parent
+	 * @param property
+	 *            the property
+	 */
+	private void createLabelForField(final Composite parent,
+			final PropertyData property) {
+		Label label = new Label(parent, SWT.NONE);
+		label.setText(property.getLabel());
+		label.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_BLUE));
+		label.setToolTipText("Property \"" + property.getName() + "\"");
+		if (property.getExtraTooltipInfo() != null) {
+			label.setToolTipText(label.getToolTipText() + EOL
+					+ property.getExtraTooltipInfo());
+		}
+	}
+
+	/**
+	 * Handle link event.
+	 *
+	 * @param property
+	 *            the property
+	 * @param valueText
+	 *            the value text
+	 * @param shell
+	 *            the shell
+	 */
+	private void handleLinkEvent(PropertyData property, Text valueText,
+			Shell shell) {
+		if (property == null || valueText == null || valueText.isDisposed()) {
+			return;
+		}
+		if (property.getType() == Color.class) {
+			ColorDialog colorDialog = new ColorDialog(shell);
+			RGB selectRGB = colorDialog.open();
+			if (selectRGB != null) {
+				valueText.setText((this.hexColorConvert(Integer
+						.toHexString(selectRGB.blue))
+						+ this.hexColorConvert(Integer
+								.toHexString(selectRGB.green)) + this
+						.hexColorConvert(Integer.toHexString(selectRGB.red)))
+						.toUpperCase());
+			}
+		} else if (property.getType() == Rectangle.class) {
+			this.createRectDialog(shell, valueText).open();
+		}
+	}
+
+	/**
+	 * exchange the color pattern of hex numeric.
+	 *
+	 * @param color
+	 *            the color
+	 * @return the string
+	 */
+	public String hexColorConvert(String color) {
+		if (color.length() == 1) {
+			return "0" + color;
+		}
+		return color;
+	}
+
+	/**
+	 * create Rect Set dialog.
+	 *
+	 * @param parent
+	 *            the parent
+	 * @param valueText
+	 *            the value text
+	 * @return the dialog
+	 */
+	public Dialog createRectDialog(final Composite parent, final Text valueText) {
+		return new Dialog(parent.getShell()) {
+			Text xPointText, yPointText, widthText, heightText;
+
+			@Override
+			protected Button createButton(Composite parent, int id,
+					String label, boolean defaultButton) {
+				return super.createButton(parent, id, label, defaultButton);
+			}
+
+			@Override
+			protected Control createDialogArea(final Composite parent) {
+				Composite composite = (Composite) super
+						.createDialogArea(parent);
+				composite.getShell().setText("Set Rect");
+				Group group = new Group(composite, SWT.NONE);
+				group.setText("Rect");
+				GridLayout gridLayout = new GridLayout();
+				gridLayout.numColumns = 4;
+				group.setLayout(gridLayout);
+
+				Label xPointLabel = new Label(group, SWT.NONE);
+				xPointLabel.setText("X:");
+				xPointText = new Text(group, SWT.BORDER);
+				VerifyListener verifyListener = createVerifyListener(parent
+						.getShell());
+				xPointText.addVerifyListener(verifyListener);
+				Label yPointLabel = new Label(group, SWT.NONE);
+				yPointLabel.setText("Y:");
+				yPointText = new Text(group, SWT.BORDER);
+				yPointText.addVerifyListener(verifyListener);
+				Label widthLabel = new Label(group, SWT.NONE);
+				widthLabel.setText("Width:");
+				widthText = new Text(group, SWT.BORDER);
+				widthText.addVerifyListener(verifyListener);
+				Label heighttLabel = new Label(group, SWT.NONE);
+				heighttLabel.setText("Height:");
+				heightText = new Text(group, SWT.BORDER);
+				heightText.addVerifyListener(verifyListener);
+
+				return composite;
+			}
+
+			@Override
+			protected void buttonPressed(int buttonId) {
+				if (IDialogConstants.OK_ID == buttonId) {
+					String xPoint = xPointText.getText();
+					String yPoint = yPointText.getText();
+					String width = widthText.getText();
+					String height = heightText.getText();
+					if (xPoint.length() == 0 || yPoint.length() == 0
+							|| width.length() == 0 || height.length() == 0) {
+						MessageDialog.openWarning(parent.getShell(),
+								"Input value empty",
+								"Value shoud not be empty!");
+					} else {
+						valueText.setText(xPoint + "," + yPoint + "," + width
+								+ "," + height);
+						okPressed();
+					}
+				} else if (IDialogConstants.CANCEL_ID == buttonId) {
+					cancelPressed();
+				}
+			}
+		};
+	}
+
+	/**
+	 * create verify Listener.
+	 *
+	 * @param shell
+	 *            the shell
+	 * @return the verify listener
+	 */
+	public VerifyListener createVerifyListener(final Shell shell) {
+		return new VerifyListener() {
+			public void verifyText(VerifyEvent e) {
+				char c = e.character;
+				if ("0123456789".indexOf(c) == -1) {
+					e.doit = false;
+					MessageDialog.openWarning(shell, "Input value error",
+							"Only numeric is allowed!");
+					return;
+				}
+			}
+		};
+	}
+
+	/**
+	 * Handle text event.
+	 *
+	 * @param property
+	 *            the property
+	 * @param valueText
+	 *            the value text
+	 */
+	private void handleTextEvent(String property, Text valueText) {
+		if (property == null || valueText == null || valueText.isDisposed()) {
+			return;
+		}
+		String value = valueText.getText();
+		if (value.equals("")) {
+			value = null;
+		}
+		data.put(property, value);
+	}
+
+	/**
+	 * Handle check box event.
+	 *
+	 * @param property
+	 *            the property
+	 * @param selection
+	 *            the selection
+	 */
+	protected void handleCheckBoxEvent(String property, boolean selection) {
+		if (property == null) {
+			return;
+		}
+		data.put(property, Boolean.toString(selection));
+	}
+
+//	private Group createProductGroup(Composite control) {
+//		Group proGroup = new Group(control, SWT.NONE);
+//		proGroup.setText("Product");
+//
+//		proGroup.setLayout(new GridLayout(2, false));
+//
+//		Label proNameLabel = new Label(proGroup, SWT.NONE);
+//		proNameLabel.setText("Name:");
+//
+//		proNameText = new Text(proGroup, SWT.BORDER);
+//		proNameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+//
+//		proNameText.addListener(SWT.Modify, new Listener() {
+//			public void handleEvent(Event event) {
+//				handleTextEvent(PRODUCT_NAME, proNameText);
+//			}
+//		});
+//		return proGroup;
+//	}
+	
+	/**
+ * Creates the web app group.
+ *
+ * @param control
+ *            the control
+ * @return the group
+ */
+private Group createWebAppGroup(Composite control) {
+		Group webAppGroup = new Group(control, SWT.NONE);
+		webAppGroup.setText("Web application parameters:");
+
+		webAppGroup.setLayout(new GridLayout(2, false));
+
+		Label contextPathLabel = new Label(webAppGroup, SWT.NONE);
+		contextPathLabel.setText("Context Path:");
+
+		contextPathText = new Text(webAppGroup, SWT.BORDER);
+		contextPathText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+		contextPathText.addListener(SWT.Modify, new Listener() {
+			public void handleEvent(Event event) {
+				handleTextEvent(CONTEXT_PATH, contextPathText);
+			}
+		});
+		
+		Label portLabel = new Label(webAppGroup, SWT.NONE);
+		portLabel.setText("Port:");
+
+		portText = new Text(webAppGroup, SWT.BORDER);
+		portText.setText("8080");
+		portText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+		portText.addListener(SWT.Modify, new Listener() {
+			public void handleEvent(Event event) {
+				handleTextEvent(PORT, portText);
+			}
+		});
+		
+		return webAppGroup;
+	}
+
+	/**
+	 * Gets the property data.
+	 *
+	 * @return the property data
+	 */
+	protected PropertyData[] getPropertyData() {
+		if (PROPERTIES == null) {
+			PROPERTIES = new PropertyData[] {
+					new PropertyData(
+							IProductConstants.PREFERENCE_CUSTOMIZATION,
+							"Preference Customization:", "", String.class, true),
+					new PropertyData(CLEAR_PERSISTED_STATE,
+							"Enable development mode for application model",
+							"true", Boolean.class, true,
+							"Add option -clearPersistedState to the Product's Program Arguments") }; // plugin_customization.ini
+		}
+		return PROPERTIES;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jface.dialogs.DialogPage#setVisible(boolean)
+	 */
+	@Override
+	public void setVisible(boolean visible) {
+		if (visible && PROPERTIES == null) {
+			String contextPath = pluginData.getId().replace('.', '-');
+			contextPathText.setText(contextPath);
+
+			for (PropertyData property : getPropertyData()) {
+				createPropertyItem(propertyGroup, property);
+			}
+			propertyGroup.getParent().layout();
+		}
+		super.setVisible(visible);
+	}
+
+	/**
+	 * Gets the data.
+	 *
+	 * @return the data
+	 */
+	public Map<String, String> getData() {
+		if (PROPERTIES == null) {
+			for (PropertyData property : getPropertyData()) {
+				data.put(property.getName(), property.getValue());
+			}
+		}
+		
+		data.put(PRODUCT_NAME, pluginData.getId());
+		data.put(CONTEXT_PATH, contextPathText.getText());
+		data.put(PORT, portText.getText());
+		
+		Map<String, String> map = new HashMap<String, String>();
+		map.putAll(data);
+		return map;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/src/org/eclipse/osbp/vaaclipse/wizards/project/PluginContentPage.java b/org.eclipse.osbp.vaaclipse.tools.wizards/src/org/eclipse/osbp/vaaclipse/wizards/project/PluginContentPage.java
new file mode 100644
index 0000000..26467c5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/src/org/eclipse/osbp/vaaclipse/wizards/project/PluginContentPage.java
@@ -0,0 +1,432 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 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
+ *     Soyatec - port to e4
+ *     Lars Vogel, vogella GmbH - ongoing enhancements
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.wizards.project;
+
+import java.util.Locale;
+import java.util.TreeSet;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jdt.core.JavaConventions;
+import org.eclipse.jdt.launching.IVMInstall;
+import org.eclipse.jdt.launching.JavaRuntime;
+import org.eclipse.jdt.launching.environments.IExecutionEnvironment;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.pde.internal.core.util.PDEJavaHelper;
+import org.eclipse.pde.internal.core.util.VMUtil;
+import org.eclipse.pde.internal.ui.IHelpContextIds;
+import org.eclipse.pde.internal.ui.PDEUIMessages;
+import org.eclipse.pde.internal.ui.SWTFactory;
+import org.eclipse.pde.internal.ui.wizards.IProjectProvider;
+import org.eclipse.pde.internal.ui.wizards.plugin.AbstractFieldData;
+import org.eclipse.pde.internal.ui.wizards.plugin.ContentPage;
+import org.eclipse.pde.internal.ui.wizards.plugin.NewProjectCreationPage;
+import org.eclipse.pde.internal.ui.wizards.plugin.PluginFieldData;
+import org.eclipse.pde.internal.ui.wizards.plugin.TemplateListSelectionPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.PreferencesUtil;
+import org.osgi.framework.Version;
+
+/**
+ * Content wizard page for the New Plugin Project wizard (page 2).
+ */
+public class PluginContentPage extends ContentPage {
+	
+	/** The class text. */
+	private Text fClassText;
+	
+	/** The generate activator. */
+	protected Button fGenerateActivator;
+	
+	/** The UI plugin. */
+	protected Button fUIPlugin;
+	
+	/** The class label. */
+	private Label fClassLabel;
+	
+	/** The EE label. */
+	private Label fEELabel;
+	
+	/** The exe env button. */
+	private Button fExeEnvButton;
+	
+	/** The EE choice. */
+	private Combo fEEChoice;
+
+	/** Button to enable API analysis for the project during project creation. */
+	private Button fApiAnalysisButton;
+
+	/** Dialog settings constants. */
+	private final static String S_GENERATE_ACTIVATOR = "generateActivator"; //$NON-NLS-1$
+	
+	/** The Constant S_UI_PLUGIN. */
+	private final static String S_UI_PLUGIN = "uiPlugin"; //$NON-NLS-1$
+	
+	/** The Constant S_RCP_PLUGIN. */
+	private final static String S_RCP_PLUGIN = "rcpPlugin"; //$NON-NLS-1$
+	
+	/** The Constant S_API_ANALYSIS. */
+	private final static String S_API_ANALYSIS = "apiAnalysis"; //$NON-NLS-1$
+
+	/** The Constant P_CLASS_GROUP. */
+	protected final static int P_CLASS_GROUP = 2;
+	
+	/** The Constant NO_EXECUTION_ENVIRONMENT. */
+	private final static String NO_EXECUTION_ENVIRONMENT = PDEUIMessages.PluginContentPage_noEE;
+
+	/** default tText modify listener. */
+	private ModifyListener classListener = new ModifyListener() {
+		public void modifyText(ModifyEvent e) {
+			if (fInitialized)
+				fChangedGroups |= P_CLASS_GROUP;
+			validatePage();
+		}
+	};
+
+	/**
+	 * Constructor.
+	 *
+	 * @param pageName
+	 *            the page name
+	 * @param provider
+	 *            the provider
+	 * @param page
+	 *            the page
+	 * @param data
+	 *            the data
+	 */
+	public PluginContentPage(String pageName, IProjectProvider provider, NewProjectCreationPage page, AbstractFieldData data) {
+		super(pageName, provider, page, data);
+		setTitle(PDEUIMessages.ContentPage_title);
+		setDescription(PDEUIMessages.ContentPage_desc);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.pde.internal.ui.wizards.plugin.ContentPage#createControl(org.eclipse.swt.widgets.Composite)
+	 */
+	public void createControl(Composite parent) {
+		Composite container = new Composite(parent, SWT.NONE);
+		container.setLayout(new GridLayout());
+
+		createPluginPropertiesGroup(container);
+		createPluginClassGroup(container);
+
+		Dialog.applyDialogFont(container);
+		setControl(container);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), IHelpContextIds.NEW_PROJECT_REQUIRED_DATA);
+	}
+
+	/**
+	 * Creates all of the plugin properties widgets.
+	 *
+	 * @param container
+	 *            the container
+	 */
+	private void createPluginPropertiesGroup(Composite container) {
+		Group propertiesGroup = SWTFactory.createGroup(container, PDEUIMessages.ContentPage_pGroup, 3, 1, GridData.FILL_HORIZONTAL);
+
+		Label label = new Label(propertiesGroup, SWT.NONE);
+		label.setText(PDEUIMessages.ContentPage_pid);
+		fIdText = createText(propertiesGroup, propertiesListener, 2);
+
+		label = new Label(propertiesGroup, SWT.NONE);
+		label.setText(PDEUIMessages.ContentPage_pversion);
+		fVersionText = createText(propertiesGroup, propertiesListener, 2);
+
+		label = new Label(propertiesGroup, SWT.NONE);
+		label.setText(PDEUIMessages.ContentPage_pname);
+		fNameText = createText(propertiesGroup, propertiesListener, 2);
+
+		label = new Label(propertiesGroup, SWT.NONE);
+		label.setText(PDEUIMessages.ContentPage_pprovider);
+		fProviderCombo = createProviderCombo(propertiesGroup, propertiesListener, 2);
+
+		createExecutionEnvironmentControls(propertiesGroup);
+	}
+
+	/**
+	 * Creates all of the EE widgets.
+	 *
+	 * @param container
+	 *            the container
+	 */
+	private void createExecutionEnvironmentControls(Composite container) {
+		// Create label
+		fEELabel = new Label(container, SWT.NONE);
+		fEELabel.setText(PDEUIMessages.NewProjectCreationPage_executionEnvironments_label);
+
+		// Create combo
+		fEEChoice = new Combo(container, SWT.DROP_DOWN | SWT.READ_ONLY | SWT.BORDER);
+		fEEChoice.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+		// Gather EEs 
+		IExecutionEnvironment[] exeEnvs = VMUtil.getExecutionEnvironments();
+		TreeSet availableEEs = new TreeSet();
+		for (int i = 0; i < exeEnvs.length; i++) {
+			availableEEs.add(exeEnvs[i].getId());
+		}
+		availableEEs.add(NO_EXECUTION_ENVIRONMENT);
+
+		// Set data 
+		fEEChoice.setItems((String[]) availableEEs.toArray(new String[availableEEs.size() - 1]));
+		fEEChoice.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				validatePage();
+			}
+		});
+
+		// Set default EE based on strict match to default VM
+		IVMInstall defaultVM = JavaRuntime.getDefaultVMInstall();
+		String[] EEChoices = fEEChoice.getItems();
+		for (int i = 0; i < EEChoices.length; i++) {
+			if (!EEChoices[i].equals(NO_EXECUTION_ENVIRONMENT)) {
+				if (VMUtil.getExecutionEnvironment(EEChoices[i]).isStrictlyCompatible(defaultVM)) {
+					fEEChoice.select(i);
+					break;
+				}
+			}
+		}
+
+		// Create button
+		fExeEnvButton = new Button(container, SWT.PUSH);
+		fExeEnvButton.setLayoutData(new GridData());
+		fExeEnvButton.setText(PDEUIMessages.NewProjectCreationPage_environmentsButton);
+		fExeEnvButton.addListener(SWT.Selection, new Listener() {
+			public void handleEvent(Event event) {
+				PreferencesUtil.createPreferenceDialogOn(getShell(), "org.eclipse.jdt.debug.ui.jreProfiles", //$NON-NLS-1$
+						new String[] {"org.eclipse.jdt.debug.ui.jreProfiles"}, null).open(); //$NON-NLS-1$ 
+			}
+		});
+	}
+
+	/**
+	 * Creates all of the plugin options widgets.
+	 *
+	 * @param container
+	 *            the container
+	 */
+	protected void createPluginClassGroup(Composite container) {
+		Group classGroup = SWTFactory.createGroup(container, PDEUIMessages.ContentPage_pClassGroup, 2, 1, GridData.FILL_HORIZONTAL);
+
+		IDialogSettings settings = getDialogSettings();
+
+		fGenerateActivator = SWTFactory.createCheckButton(classGroup, PDEUIMessages.ContentPage_generate, null, false, 2);
+		fGenerateActivator.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				fClassLabel.setEnabled(fGenerateActivator.getSelection());
+				fClassText.setEnabled(fGenerateActivator.getSelection());
+				updateData();
+				validatePage();
+			}
+		});
+
+		fClassLabel = new Label(classGroup, SWT.NONE);
+		fClassLabel.setText(PDEUIMessages.ContentPage_classname);
+		GridData gd = new GridData();
+		gd.horizontalIndent = 20;
+		fClassLabel.setLayoutData(gd);
+		fClassText = createText(classGroup, classListener);
+
+		fUIPlugin = SWTFactory.createCheckButton(classGroup, PDEUIMessages.ContentPage_uicontribution, null, (settings != null) ? !settings.getBoolean(S_UI_PLUGIN) : true, 2);
+		fUIPlugin.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				updateData();
+				validatePage();
+			}
+		});
+
+		fApiAnalysisButton = SWTFactory.createCheckButton(classGroup, PDEUIMessages.PluginContentPage_enable_api_analysis, null, false, 2);
+		fApiAnalysisButton.setSelection((settings != null) ? settings.getBoolean(S_API_ANALYSIS) : false);
+		fApiAnalysisButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				updateData();
+				validatePage();
+			}
+		});
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.pde.internal.ui.wizards.plugin.ContentPage#updateData()
+	 */
+	public void updateData() {
+		super.updateData();
+		PluginFieldData data = (PluginFieldData) fData;
+		data.setClassname(fClassText.getText().trim());
+		data.setUIPlugin(fUIPlugin.getSelection());
+		data.setDoGenerateClass(fGenerateActivator.getSelection());
+		data.setRCPApplicationPlugin(!fData.isSimple() && !isPureOSGi());
+		data.setEnableAPITooling(fApiAnalysisButton.getSelection());
+		if (fEEChoice.isEnabled() && !fEEChoice.getText().equals(NO_EXECUTION_ENVIRONMENT)) {
+			fData.setExecutionEnvironment(fEEChoice.getText().trim());
+		} else {
+			fData.setExecutionEnvironment(null);
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.pde.internal.ui.wizards.plugin.ContentPage#setVisible(boolean)
+	 */
+	public void setVisible(boolean visible) {
+		if (visible) {
+			fMainPage.updateData();
+			
+			boolean wasGenActivatorEnabled = fGenerateActivator.isEnabled();
+			fGenerateActivator.setEnabled(!fData.isSimple());
+			// if fGenerateActivator is disabled, set selection to false
+			if (!fGenerateActivator.isEnabled()) {
+				fGenerateActivator.setSelection(false);
+			}
+			// if the fGenerateActivator was disabled and is now enabled, then set the selection to true
+			else if (!wasGenActivatorEnabled) {
+				fGenerateActivator.setSelection(true);
+			}
+			fClassLabel.setEnabled(!fData.isSimple() && fGenerateActivator.getSelection());
+			fClassText.setEnabled(!fData.isSimple() && fGenerateActivator.getSelection());
+			boolean wasUIPluginEnabled = fUIPlugin.isEnabled();
+			fUIPlugin.setEnabled(!fData.isSimple() && !isPureOSGi());
+			// if fUIPlugin is disabled, set selection to false
+			if (!fUIPlugin.isEnabled()) {
+				fUIPlugin.setSelection(false);
+			}
+			// if the fUIPlugin was disabled and is now enabled, then set the selection to true
+			else if (!wasUIPluginEnabled) {
+				fUIPlugin.setSelection(true);
+			}
+
+			// plugin class group
+			if (((fChangedGroups & P_CLASS_GROUP) == 0)) {
+				int oldfChanged = fChangedGroups;
+				fClassText.setText(computeId().replaceAll("-", "_").toLowerCase(Locale.ENGLISH) + ".Activator"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				fChangedGroups = oldfChanged;
+			}
+
+			boolean allowEESelection = !fData.isSimple() && fData.hasBundleStructure();
+			fEELabel.setEnabled(allowEESelection);
+			fEEChoice.setEnabled(allowEESelection);
+			fExeEnvButton.setEnabled(allowEESelection);
+			// API tooling only works for osgi bundles with java natures
+			fApiAnalysisButton.setEnabled(allowEESelection);
+			if (allowEESelection && getDialogSettings() != null) {
+				fApiAnalysisButton.setSelection(getDialogSettings().getBoolean(S_API_ANALYSIS));
+			} else {
+				fApiAnalysisButton.setSelection(false);
+			}
+		}
+		super.setVisible(visible);
+	}
+
+	/**
+	 * Checks if is pure os gi.
+	 *
+	 * @return if the field data is using the OSGi framework
+	 */
+	private boolean isPureOSGi() {
+		return ((PluginFieldData) fData).getOSGiFramework() != null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.pde.internal.ui.wizards.plugin.ContentPage#validatePage()
+	 */
+	protected void validatePage() {
+		String errorMessage = validateProperties();
+		if (errorMessage == null && fGenerateActivator.getSelection()) {
+			IStatus status = JavaConventions.validateJavaTypeName(fClassText.getText().trim(), PDEJavaHelper.getJavaSourceLevel(null), PDEJavaHelper.getJavaComplianceLevel(null));
+			if (status.getSeverity() == IStatus.ERROR) {
+				errorMessage = status.getMessage();
+			} else if (status.getSeverity() == IStatus.WARNING) {
+				setMessage(status.getMessage(), IMessageProvider.WARNING);
+			}
+		}
+		if (errorMessage == null) {
+			String eeid = fEEChoice.getText();
+			if (fEEChoice.isEnabled()) {
+				IExecutionEnvironment ee = VMUtil.getExecutionEnvironment(eeid);
+				if (ee != null && ee.getCompatibleVMs().length == 0) {
+					errorMessage = PDEUIMessages.NewProjectCreationPage_invalidEE;
+				}
+			}
+		}
+		setErrorMessage(errorMessage);
+		setPageComplete(errorMessage == null);
+	}
+
+	/**
+	 * Saves the current state of widgets of interest in the dialog settings for
+	 * the wizard.
+	 *
+	 * @param settings
+	 *            the settings
+	 */
+	public void saveSettings(IDialogSettings settings) {
+		if (fGenerateActivator.isEnabled()) {
+			settings.put(S_GENERATE_ACTIVATOR, !fGenerateActivator.getSelection());
+		}
+		if (fUIPlugin.isEnabled()) {
+			settings.put(S_UI_PLUGIN, !fUIPlugin.getSelection());
+		}
+		if (fApiAnalysisButton.isEnabled()) {
+			settings.put(S_API_ANALYSIS, fApiAnalysisButton.getSelection());
+		}
+		settings.put(S_RCP_PLUGIN, true);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jface.wizard.WizardPage#canFlipToNextPage()
+	 */
+	public boolean canFlipToNextPage() {
+		if (getNextPage() instanceof TemplateListSelectionPage) {
+			TemplateListSelectionPage templatePage = (TemplateListSelectionPage) getNextPage();
+			return super.canFlipToNextPage() && templatePage.isAnyTemplateAvailable();
+		}
+		return super.canFlipToNextPage();
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.pde.internal.ui.wizards.plugin.ContentPage#computeId()
+	 */
+	protected String computeId() {
+		String id = super.computeId();
+		// In addition to removed illegal characters, the xmi model does not recognize plug-in uris if they end in a version number
+		// See PlatformURLPluginConnection.parse()
+		int underScore = id.lastIndexOf('_');
+		Version version;
+		while (underScore >= 0) {
+			try {
+				version = Version.parseVersion(id.substring(underScore + 1));
+				// name cannot end with a valid version, remove it
+				id = id.substring(0, underScore);
+			} catch (IllegalArgumentException iae) {
+				// valid name so far, continue to next underscore
+			}
+			underScore = id.lastIndexOf('_', underScore - 1);
+			
+		}
+		return id;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/src/org/eclipse/osbp/vaaclipse/wizards/project/ResourceLocator.java b/org.eclipse.osbp.vaaclipse.tools.wizards/src/org/eclipse/osbp/vaaclipse/wizards/project/ResourceLocator.java
new file mode 100644
index 0000000..ffded78
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/src/org/eclipse/osbp/vaaclipse/wizards/project/ResourceLocator.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2010 Soyatec (http://www.soyatec.com) 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:
+ *     Soyatec - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.wizards.project;
+
+import java.io.IOException;
+import java.net.URL;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.osbp.vaaclipse.wizards.ToolsPlugin;
+
+/**
+ * The Class ResourceLocator.
+ */
+public class ResourceLocator {
+	
+	/** The Constant TEMPLATE_FOLDER. */
+	private static final String TEMPLATE_FOLDER = "templates";
+
+	/** The instance. */
+	private static ResourceLocator instance = new ResourceLocator();
+
+	/**
+	 * Instantiates a new resource locator.
+	 */
+	private ResourceLocator() {
+	}
+
+	/**
+	 * Gets the single instance of ResourceLocator.
+	 *
+	 * @return single instance of ResourceLocator
+	 */
+	public static ResourceLocator getInstance() {
+		return instance;
+	}
+
+	/**
+	 * Gets the project template files.
+	 *
+	 * @param folder
+	 *            the folder
+	 * @return the project template files
+	 * @throws IOException
+	 *             Signals that an I/O exception has occurred.
+	 */
+	public static URL getProjectTemplateFiles(String folder)
+			throws IOException {
+		Plugin plugin = getResorucePlugin();
+		URL installURL = plugin.getBundle().getEntry(
+				"/" + TEMPLATE_FOLDER + "/" + folder);
+		// FileLocator.toFileURL(installURL);
+		URL corePath = FileLocator.resolve(installURL);
+		return corePath;
+	}
+
+	/**
+	 * Gets the file.
+	 *
+	 * @param relativePath
+	 *            the relative path
+	 * @return the file
+	 * @throws IOException
+	 *             Signals that an I/O exception has occurred.
+	 */
+	public static URL getFile(String relativePath) throws IOException {
+		Plugin plugin = getResorucePlugin();
+		URL installURL = plugin.getBundle().getEntry(relativePath);
+		URL corePath = FileLocator.resolve(installURL);
+		return corePath;
+	}
+
+	/**
+	 * Gets the resoruce plugin.
+	 *
+	 * @return the resoruce plugin
+	 */
+	public static Plugin getResorucePlugin() {
+		return ToolsPlugin.getDefault();
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/src/org/eclipse/osbp/vaaclipse/wizards/project/TemplateOperation.java b/org.eclipse.osbp.vaaclipse.tools.wizards/src/org/eclipse/osbp/vaaclipse/wizards/project/TemplateOperation.java
new file mode 100644
index 0000000..1e34bed
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/src/org/eclipse/osbp/vaaclipse/wizards/project/TemplateOperation.java
@@ -0,0 +1,540 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2010 Soyatec (http://www.soyatec.com) 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:
+ *     Soyatec - initial API and implementation
+ *     Sopot Cela - ongoing enhancements
+ *******************************************************************************/
+package org.eclipse.osbp.vaaclipse.wizards.project;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.lang.reflect.InvocationTargetException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipException;
+import java.util.zip.ZipFile;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.pde.internal.ui.PDEUIMessages;
+import org.eclipse.pde.ui.templates.IVariableProvider;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.osbp.vaaclipse.wizards.ToolsPlugin;
+
+/**
+ * The Class TemplateOperation.
+ */
+public class TemplateOperation extends WorkspaceModifyOperation implements
+		IVariableProvider {
+
+	/** The template directory. */
+	private final URL templateDirectory;
+	
+	/** The target. */
+	private final IContainer target;
+	
+	/** The keys. */
+	private final Map<String, String> keys;
+	
+	/** The binary extentions. */
+	private final Set<String> binaryExtentions;
+	
+	/** The is minimalist. */
+	private boolean isMinimalist;
+
+	/**
+	 * Instantiates a new template operation.
+	 *
+	 * @param source
+	 *            the source
+	 * @param target
+	 *            the target
+	 * @param keys
+	 *            the keys
+	 * @param binaryExtentions
+	 *            the binary extentions
+	 * @param justProduct
+	 *            the just product
+	 */
+	public TemplateOperation(URL source, IContainer target,
+			Map<String, String> keys, Set<String> binaryExtentions, boolean justProduct) {
+		templateDirectory = source;
+		this.binaryExtentions = binaryExtentions;
+		this.target = target;
+		this.keys = keys;
+		this.isMinimalist = justProduct;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.actions.WorkspaceModifyOperation#execute(org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	@Override
+	protected void execute(IProgressMonitor monitor) throws CoreException,
+			InvocationTargetException, InterruptedException {
+		monitor.setTaskName(PDEUIMessages.AbstractTemplateSection_generating);
+
+		if ("jar".equals(templateDirectory.getProtocol())) { //$NON-NLS-1$
+			String file = templateDirectory.getFile();
+			int exclamation = file.indexOf('!');
+			if (exclamation < 0)
+				return;
+			URL fileUrl = null;
+			try {
+				fileUrl = new URL(file.substring(0, exclamation));
+			} catch (MalformedURLException mue) {
+				ToolsPlugin.logError(mue);
+				return;
+			}
+			File pluginJar = new File(fileUrl.getFile());
+			if (!pluginJar.exists())
+				return;
+			String templateDirectory = file.substring(exclamation + 1); // "/some/path/"
+			IPath path = new Path(templateDirectory);
+			ZipFile zipFile = null;
+			try {
+				zipFile = new ZipFile(pluginJar);
+				generateFiles(zipFile, path, target, monitor);
+			} catch (ZipException ze) {
+			} catch (IOException ioe) {
+			} finally {
+				if (zipFile != null) {
+					try {
+						zipFile.close();
+					} catch (IOException e) {
+					}
+				}
+			}
+		} else if ("file".equals(templateDirectory.getProtocol())) { //$NON-NLS-1$
+			File directory = new File(templateDirectory.getFile());
+			if (!directory.exists())
+				return;
+			generateFiles(directory, target, true, monitor);
+		}
+	}
+
+	/**
+	 * Generate files.
+	 *
+	 * @param src
+	 *            the src
+	 * @param dst
+	 *            the dst
+	 * @param firstLevel
+	 *            the first level
+	 * @param monitor
+	 *            the monitor
+	 * @throws CoreException
+	 *             the core exception
+	 */
+	private void generateFiles(File src, IContainer dst, boolean firstLevel,
+			IProgressMonitor monitor) throws CoreException {
+		if ((!firstLevel)&&(isMinimalist))
+		return;
+		File[] members = src.listFiles();
+
+		for (int i = 0; i < members.length; i++) {
+			File member = members[i];
+			String name = member.getName();
+			if (member.isDirectory()) {
+				if (".svn".equals(name) || "cvs".equalsIgnoreCase(name))
+					continue;
+				IContainer dstContainer = null;
+
+				if (dstContainer == null) {
+					String folderName = getProcessedString(name, name);
+					dstContainer = dst.getFolder(new Path(folderName));
+				}
+				if (dstContainer != null && !dstContainer.exists())
+					((IFolder) dstContainer).create(true, true, monitor);
+			
+				generateFiles(member, dstContainer, false, monitor);
+			} else {
+				InputStream in = null;
+				try {
+					in = new FileInputStream(member);
+					copyFile(name, in, dst, monitor);
+				} catch (IOException ioe) {
+				} finally {
+					if (in != null)
+						try {
+							in.close();
+						} catch (IOException ioe2) {
+						}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Generate files.
+	 *
+	 * @param zipFile
+	 *            the zip file
+	 * @param path
+	 *            the path
+	 * @param dst
+	 *            the dst
+	 * @param monitor
+	 *            the monitor
+	 * @throws CoreException
+	 *             the core exception
+	 */
+	private void generateFiles(ZipFile zipFile, IPath path, IContainer dst,
+			IProgressMonitor monitor) throws CoreException {
+		int pathLength = path.segmentCount();
+		// Immidiate children
+		Map childZipEntries = new HashMap(); // "dir/" or "dir/file.java"
+
+		for (Enumeration zipEntries = zipFile.entries(); zipEntries
+				.hasMoreElements();) {
+			ZipEntry zipEntry = (ZipEntry) zipEntries.nextElement();
+			IPath entryPath = new Path(zipEntry.getName());
+			if (entryPath.segmentCount() <= pathLength) {
+				// ancestor or current directory
+				continue;
+			}
+			if (!path.isPrefixOf(entryPath)) {
+				// not a descendant
+				continue;
+			}
+			if (entryPath.segmentCount() == pathLength + 1) {
+				childZipEntries.put(zipEntry.getName(), zipEntry);
+			} else {
+				String name = entryPath.uptoSegment(pathLength + 1)
+						.addTrailingSeparator().toString();
+				if (!childZipEntries.containsKey(name)) {
+					ZipEntry dirEntry = new ZipEntry(name);
+					childZipEntries.put(name, dirEntry);
+				}
+			}
+		}
+
+		for (Iterator it = childZipEntries.values().iterator(); it.hasNext();) {
+			ZipEntry zipEnry = (ZipEntry) it.next();
+			String name = new Path(zipEnry.getName()).lastSegment().toString();
+			if (zipEnry.isDirectory()) {
+				IContainer dstContainer = null;
+
+				if (dstContainer == null) {
+					String folderName = getProcessedString(name, name);
+					dstContainer = dst.getFolder(new Path(folderName));
+				}
+				if (dstContainer != null && !dstContainer.exists())
+					((IFolder) dstContainer).create(true, true, monitor);
+				generateFiles(zipFile, path.append(name), dstContainer, monitor);
+			} else {
+				InputStream in = null;
+				try {
+					in = zipFile.getInputStream(zipEnry);
+					copyFile(name, in, dst, monitor);
+				} catch (IOException ioe) {
+				} finally {
+					if (in != null)
+						try {
+							in.close();
+						} catch (IOException ioe2) {
+						}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Copy file.
+	 *
+	 * @param fileName
+	 *            the file name
+	 * @param input
+	 *            the input
+	 * @param dst
+	 *            the dst
+	 * @param monitor
+	 *            the monitor
+	 * @throws CoreException
+	 *             the core exception
+	 */
+	private void copyFile(String fileName, InputStream input, IContainer dst,
+			IProgressMonitor monitor) throws CoreException {
+		String targetFileName = getProcessedString(fileName, fileName);
+
+		monitor.subTask(targetFileName);
+		IFile dstFile = dst.getFile(new Path(targetFileName));
+
+		try {
+			InputStream stream = isBinary(fileName) ? input
+					: getProcessedStream(fileName, input);
+			if (dstFile.exists()) {
+				dstFile.setContents(stream, true, true, monitor);
+			} else {
+				dstFile.create(stream, true, monitor);
+			}
+			stream.close();
+
+		} catch (IOException e) {
+		}
+	}
+
+	/**
+	 * Copy file.
+	 *
+	 * @param fileName
+	 *            the file name
+	 * @param input
+	 *            the input
+	 * @param dst
+	 *            the dst
+	 * @param destPath
+	 *            the dest path
+	 * @param monitor
+	 *            the monitor
+	 * @throws CoreException
+	 *             the core exception
+	 */
+	protected void copyFile(String fileName, InputStream input, IContainer dst,
+			final String destPath, IProgressMonitor monitor)
+			throws CoreException {
+		String targetFileName = null;
+		if (destPath == null) {
+			targetFileName = getProcessedString(fileName, fileName);
+		} else {
+			targetFileName = destPath;
+		}
+
+		monitor.subTask(targetFileName);
+		IFile dstFile = dst.getFile(new Path(targetFileName));
+
+		try {
+			InputStream stream = isBinary(fileName) ? input
+					: getProcessedStream(fileName, input);
+			if (dstFile.exists()) {
+				dstFile.setContents(stream, true, true, monitor);
+			} else {
+				dstFile.create(stream, true, monitor);
+			}
+			stream.close();
+
+		} catch (IOException e) {
+		}
+	}
+
+	/**
+	 * Copy file.
+	 *
+	 * @param fileName
+	 *            the file name
+	 * @param input
+	 *            the input
+	 * @param dst
+	 *            the dst
+	 * @param basePath
+	 *            the base path
+	 * @param destName
+	 *            the dest name
+	 * @param monitor
+	 *            the monitor
+	 * @throws CoreException
+	 *             the core exception
+	 */
+	public void copyFile(String fileName, InputStream input, IContainer dst,
+			final String basePath, final String destName,
+			IProgressMonitor monitor) throws CoreException {
+		if (basePath == null || basePath.equals("")) {
+			copyFile(fileName, input, dst, monitor);
+		}
+
+		String targetFileName = destName == null ? getProcessedString(fileName,
+				fileName) : destName;
+
+		monitor.subTask(targetFileName);
+		IFile dstFile = dst.getFile(new Path(basePath + targetFileName));
+
+		try {
+			InputStream stream = isBinary(fileName) ? input
+					: getProcessedStream(fileName, input);
+			if (dstFile.exists()) {
+				dstFile.setContents(stream, true, true, monitor);
+			} else {
+				dstFile.create(stream, true, monitor);
+			}
+			stream.close();
+
+		} catch (IOException e) {
+		}
+	}
+
+	/**
+	 * Checks if is binary.
+	 *
+	 * @param fileName
+	 *            the file name
+	 * @return true, if is binary
+	 */
+	private boolean isBinary(String fileName) {
+		if (binaryExtentions == null) {
+			return false;
+		}
+
+		String ext = getfileExtention(fileName);
+		if (ext == null)
+			return false;
+		return binaryExtentions.contains(ext);
+	}
+
+	/**
+	 * Gets the file extention.
+	 *
+	 * @param name
+	 *            the name
+	 * @return the file extention
+	 */
+	private String getfileExtention(String name) {
+		int indexOf = name.lastIndexOf('.');
+		if (indexOf == -1)
+			return null;
+		return name.substring(indexOf);
+	}
+
+	/**
+	 * Gets the processed stream.
+	 *
+	 * @param fileName
+	 *            the file name
+	 * @param stream
+	 *            the stream
+	 * @return the processed stream
+	 * @throws IOException
+	 *             Signals that an I/O exception has occurred.
+	 * @throws CoreException
+	 *             the core exception
+	 */
+	private InputStream getProcessedStream(String fileName, InputStream stream)
+			throws IOException, CoreException {
+		InputStreamReader reader = new InputStreamReader(stream);
+		int bufsize = 1024;
+		char[] cbuffer = new char[bufsize];
+		int read = 0;
+		StringBuffer keyBuffer = new StringBuffer();
+		StringBuffer outBuffer = new StringBuffer();
+
+		boolean replacementMode = false;
+		boolean almostReplacementMode = false;
+		boolean escape = false;
+		while (read != -1) {
+			read = reader.read(cbuffer);
+			for (int i = 0; i < read; i++) {
+				char c = cbuffer[i];
+
+				if (escape) {
+					StringBuffer buf = outBuffer;
+					buf.append(c);
+					escape = false;
+					continue;
+				}
+
+				if (c == '@') {
+					if (replacementMode && almostReplacementMode) {
+						almostReplacementMode = false;
+					} else if (replacementMode) {
+						replacementMode = false;
+						String key = keyBuffer.toString();
+						String value = key.length() == 0 ? "@@" //$NON-NLS-1$
+								: getReplacementString(key);
+						outBuffer.append(value);
+						keyBuffer.delete(0, keyBuffer.length());
+					} else if (almostReplacementMode) {
+						replacementMode = true;
+					} else {
+						almostReplacementMode = true;
+					}
+				} else {
+					if (replacementMode)
+						keyBuffer.append(c);
+					else {
+						if (almostReplacementMode)
+							outBuffer.append('@');
+						outBuffer.append(c);
+						almostReplacementMode = false;
+					}
+				}
+			}
+		}
+		return new ByteArrayInputStream(outBuffer.toString().getBytes());
+		// return new
+		// ByteArrayInputStream(outBuffer.toString().getBytes(project.
+		// getDefaultCharset()));
+	}
+
+	/**
+	 * Gets the processed string.
+	 *
+	 * @param fileName
+	 *            the file name
+	 * @param source
+	 *            the source
+	 * @return the processed string
+	 */
+	private String getProcessedString(String fileName, String source) {
+		if (source.indexOf('$') == -1)
+			return source;
+		int loc = -1;
+		StringBuffer buffer = new StringBuffer();
+		boolean replacementMode = false;
+		for (int i = 0; i < source.length(); i++) {
+			char c = source.charAt(i);
+			if (c == '$') {
+				if (replacementMode) {
+					String key = source.substring(loc, i);
+					String value = key.length() == 0 ? "$" : getReplacementString(key); //$NON-NLS-1$
+					buffer.append(value);
+					replacementMode = false;
+				} else {
+					replacementMode = true;
+					loc = i + 1;
+					continue;
+				}
+			} else if (!replacementMode)
+				buffer.append(c);
+		}
+		return buffer.toString();
+	}
+
+	/**
+	 * Gets the replacement string.
+	 *
+	 * @param key
+	 *            the key
+	 * @return the replacement string
+	 */
+	public String getReplacementString(String key) {
+		String result = keys.get(key);
+		return result != null ? result : key;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.pde.ui.templates.IVariableProvider#getValue(java.lang.String)
+	 */
+	public Object getValue(String variable) {
+		return getReplacementString(variable);
+	}
+
+}
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/templates/common/$projectName$.product b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/common/$projectName$.product
new file mode 100644
index 0000000..4005735
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/common/$projectName$.product
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="@@projectName@@.product" id="@@projectName@@.product" application="org.eclipse.osbp.vaaclipse.app.application" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="true">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+   	  <programArgs>@@programArgs@@</programArgs>
+      <vmArgs>-Dorg.eclipse.equinox.http.jetty.context.path=/@@contextPath@@ -Dorg.osgi.service.http.port=@@port@@</vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+   </vm>
+
+   <plugins>
+      <plugin id="com.ibm.icu"/>
+      <plugin id="com.vaadin"/>
+      <plugin id="javax.annotation"/>
+      <plugin id="javax.inject"/>
+      <plugin id="javax.servlet"/>
+      <plugin id="javax.xml"/>
+      <plugin id="org.eclipse.core.commands"/>
+      <plugin id="org.eclipse.core.contenttype"/>
+      <plugin id="org.eclipse.core.databinding"/>
+      <plugin id="org.eclipse.core.databinding.beans"/>
+      <plugin id="org.eclipse.core.databinding.observable"/>
+      <plugin id="org.eclipse.core.databinding.property"/>
+      <plugin id="org.eclipse.core.expressions"/>
+      <plugin id="org.eclipse.core.filesystem"/>
+      <plugin id="org.eclipse.core.filesystem.aix.ppc" fragment="true"/>
+      <plugin id="org.eclipse.core.filesystem.hpux.ia64_32" fragment="true"/>
+      <plugin id="org.eclipse.core.filesystem.linux.ppc" fragment="true"/>
+      <plugin id="org.eclipse.core.filesystem.linux.x86" fragment="true"/>
+      <plugin id="org.eclipse.core.filesystem.linux.x86_64" fragment="true"/>
+      <plugin id="org.eclipse.core.filesystem.macosx" fragment="true"/>
+      <plugin id="org.eclipse.core.filesystem.solaris.sparc" fragment="true"/>
+      <plugin id="org.eclipse.core.filesystem.win32.x86" fragment="true"/>
+      <plugin id="org.eclipse.core.filesystem.win32.x86_64" fragment="true"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.core.resources"/>
+      <plugin id="org.eclipse.core.resources.win32.x86" fragment="true"/>
+      <plugin id="org.eclipse.core.runtime"/>
+      <plugin id="org.eclipse.core.runtime.compatibility.registry" fragment="true"/>
+      <plugin id="org.eclipse.core.variables"/>
+      <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.di"/>
+      <plugin id="org.eclipse.e4.ui.model.workbench"/>
+      <plugin id="org.eclipse.e4.ui.services"/>
+      <plugin id="org.eclipse.e4.ui.workbench"/>
+      <plugin id="org.eclipse.emf.common"/>
+      <plugin id="org.eclipse.emf.databinding"/>
+      <plugin id="org.eclipse.emf.ecore"/>
+      <plugin id="org.eclipse.emf.ecore.change"/>
+      <plugin id="org.eclipse.emf.ecore.xmi"/>
+      <plugin id="org.eclipse.equinox.app"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.ds"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.equinox.http.jetty"/>
+      <plugin id="org.eclipse.equinox.http.registry"/>
+      <plugin id="org.eclipse.equinox.http.servlet"/>
+      <plugin id="org.eclipse.equinox.preferences"/>
+      <plugin id="org.eclipse.equinox.registry"/>
+      <plugin id="org.eclipse.equinox.util"/>
+      <plugin id="org.eclipse.jetty.continuation"/>
+      <plugin id="org.eclipse.jetty.http"/>
+      <plugin id="org.eclipse.jetty.io"/>
+      <plugin id="org.eclipse.jetty.security"/>
+      <plugin id="org.eclipse.jetty.server"/>
+      <plugin id="org.eclipse.jetty.servlet"/>
+      <plugin id="org.eclipse.jetty.util"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osbp.commons"/>
+      <plugin id="org.eclipse.osbp.e4.injector.objectsuppliers"/>
+      <plugin id="org.eclipse.osbp.e4extension"/>
+      <plugin id="org.eclipse.osbp.e4modelextension"/>
+      <plugin id="org.eclipse.osbp.vaaclipse.api"/>
+      <plugin id="org.eclipse.osbp.vaaclipse.app"/>
+      <plugin id="org.eclipse.osbp.vaaclipse.behaviour"/>
+      <plugin id="org.eclipse.osbp.vaaclipse.contributions"/>
+      <plugin id="org.eclipse.osbp.vaaclipse.presentation"/>
+      <plugin id="org.eclipse.osbp.vaaclipse.publicapi"/>
+      <plugin id="org.eclipse.osbp.vaaclipse.resources" fragment="true"/>
+      <plugin id="org.eclipse.osbp.vaaclipse.theme"/>
+      <plugin id="org.eclipse.osbp.vaaclipse.util"/>
+      <plugin id="org.eclipse.osbp.vaaclipse.vaadinaddons"/>
+      <plugin id="@@projectName@@"/>
+      <plugin id="org.eclipse.osbp.vaadin"/>
+      <plugin id="org.eclipse.osbp.vaadin.osgi.staticres"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.e4.ui.services" autoStart="true" startLevel="1" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="1" />
+      <plugin id="org.eclipse.equinox.http.jetty" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osbp.vaaclipse.app" autoStart="false" startLevel="2" />
+      <plugin id="org.eclipse.osbp.vaadin.osgi.staticres" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/templates/common/Application.e4xmi b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/common/Application.e4xmi
new file mode 100644
index 0000000..ac10356
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/common/Application.e4xmi
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<e4modelextension:VaaclipseApplication xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:advanced="http://www.eclipse.org/ui/2010/UIModel/application/ui/advanced" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:e4modelextension="http://www.semanticsoft.org/ExtensionUI/e4modelextension" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="_KosWgDjEEeKcQPOnIbNSoQ" elementId="org.eclipse.e4.ide.application">
+  <children xsi:type="basic:TrimmedWindow" xmi:id="_KosWlzjEEeKcQPOnIbNSoQ" elementId="@@projectName@@.window.main" label="@@projectName@@" width="500" height="400">
+    <tags>mainWindow</tags>
+    <children xsi:type="advanced:PerspectiveStack" xmi:id="_KosWnzjEEeKcQPOnIbNSoQ" elementId="@@projectName@@.perspectivestack">
+      <children xsi:type="advanced:Perspective" xmi:id="_KosWoDjEEeKcQPOnIbNSoQ" elementId="@@projectName@@.perspective.0">
+        <children xsi:type="basic:PartSashContainer" xmi:id="_KosWoTjEEeKcQPOnIbNSoQ" elementId="@@projectName@@.sashcontainer.0" horizontal="true">
+          <children xsi:type="basic:PartStack" xmi:id="_KosWojjEEeKcQPOnIbNSoQ" elementId="@@projectName@@.partstack.left" containerData="50">
+            <children xsi:type="basic:Part" xmi:id="_Ls9AEDmZEeKcQPOnIbNSoQ" elementId="@@projectName@@.part.first" contributionURI="bundleclass://@@projectName@@/@@projectName@@.views.FirstView" label="First" tooltip="First"/>
+          </children>
+          <children xsi:type="basic:PartStack" xmi:id="_HRRcwDmKEeKcQPOnIbNSoQ" elementId="@@projectName@@.partstack.right" containerData="50">
+            <children xsi:type="basic:Part" xmi:id="_3U12cDmjEeKcQPOnIbNSoQ" elementId="@@projectName@@.part.second" contributionURI="bundleclass://@@projectName@@/@@projectName@@.views.SecondView" label="Second" tooltip="Second"/>
+          </children>
+        </children>
+      </children>
+    </children>
+    <mainMenu xmi:id="_KosWmDjEEeKcQPOnIbNSoQ" elementId="menu:org.eclipse.ui.main.menu">
+      <children xsi:type="menu:Menu" xmi:id="_KosWmTjEEeKcQPOnIbNSoQ" label="File">
+        <children xsi:type="menu:HandledMenuItem" xmi:id="_KosWnDjEEeKcQPOnIbNSoQ" label="Quit" command="_KosWijjEEeKcQPOnIbNSoQ"/>
+      </children>
+      <children xsi:type="menu:Menu" xmi:id="_KosWnTjEEeKcQPOnIbNSoQ" label="Help">
+        <children xsi:type="menu:HandledMenuItem" xmi:id="_KosWnjjEEeKcQPOnIbNSoQ" label="About" command="_KosWlDjEEeKcQPOnIbNSoQ"/>
+      </children>
+    </mainMenu>
+    <trimBars xmi:id="_KosWozjEEeKcQPOnIbNSoQ">
+      <children xsi:type="menu:ToolBar" xmi:id="_KosWpDjEEeKcQPOnIbNSoQ" elementId="toolbar:org.eclipse.ui.main.toolbar">
+        <children xsi:type="menu:HandledToolItem" xmi:id="_KosWpTjEEeKcQPOnIbNSoQ" iconURI="platform:/plugin/@@projectName@@/icons/sample.gif" command="_KosWlDjEEeKcQPOnIbNSoQ"/>
+      </children>
+    </trimBars>
+  </children>
+  <handlers xmi:id="_KosWizjEEeKcQPOnIbNSoQ" contributionURI="bundleclass://@@projectName@@/@@projectName@@.handlers.QuitHandler" command="_KosWijjEEeKcQPOnIbNSoQ"/>
+  <handlers xmi:id="_KosWlTjEEeKcQPOnIbNSoQ" contributionURI="bundleclass://@@projectName@@/@@projectName@@.handlers.AboutHandler" command="_KosWlDjEEeKcQPOnIbNSoQ"/>
+  <commands xmi:id="_KosWijjEEeKcQPOnIbNSoQ" elementId="org.eclipse.ui.file.exit" commandName="quitCommand"/>
+  <commands xmi:id="_KosWlDjEEeKcQPOnIbNSoQ" elementId="org.eclipse.ui.help.aboutAction" commandName="aboutCommand"/>
+  <addons xmi:id="_KosWhDjEEeKcQPOnIbNSoQ" elementId="org.eclipse.e4.core.commands.service" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/>
+  <addons xmi:id="_KosWhTjEEeKcQPOnIbNSoQ" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/>
+  <addons xmi:id="_KosWhjjEEeKcQPOnIbNSoQ" elementId="org.eclipse.e4.ui.bindings.service" contributionURI="bundleclass://org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon"/>
+  <addons xmi:id="_KosWhzjEEeKcQPOnIbNSoQ" elementId="org.eclipse.e4.ui.workbench.commands.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon"/>
+  <addons xmi:id="_KosWiDjEEeKcQPOnIbNSoQ" elementId="org.eclipse.e4.ui.workbench.contexts.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon"/>
+  <addons xmi:id="_KosWiTjEEeKcQPOnIbNSoQ" elementId="org.eclipse.e4.ui.workbench.bindings.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.workbench.swt.util.BindingProcessingAddon"/>
+</e4modelextension:VaaclipseApplication>
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/templates/common/icons/sample.gif b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/common/icons/sample.gif
new file mode 100644
index 0000000..34fb3c9
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/common/icons/sample.gif
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/templates/common/icons/save_edit.gif b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/common/icons/save_edit.gif
new file mode 100644
index 0000000..499dd0c
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/common/icons/save_edit.gif
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/templates/common/icons/vaaclipse.png b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/common/icons/vaaclipse.png
new file mode 100644
index 0000000..2779af1
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/common/icons/vaaclipse.png
Binary files differ
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/templates/common/plugin.xml b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/common/plugin.xml
new file mode 100644
index 0000000..a1cb07b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/common/plugin.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin>
+
+   <extension
+         id="product"
+         point="org.eclipse.core.runtime.products">
+      <product
+            name="@@projectName@@.product"
+            application="org.eclipse.osbp.vaaclipse.app.application">
+         <property
+               name="appName"
+               value="@@projectName@@">
+         </property>
+         <property
+               name="applicationXMI"
+               value="@@projectName@@/Application.e4xmi">
+         </property>
+         <property
+               name="cssTheme"
+               value="reindeer">
+         </property>
+         <property
+               name="applicationHeaderIcon"
+               value="platform:/plugin/@@projectName@@/icons/vaaclipse.png">
+         </property>
+         <property
+               name="applicationAuthenticationProvider"
+               value="bundleclass://@@projectName@@/@@projectName@@.login.LoginProvider">
+         </property>
+      </product>
+   </extension>
+   <extension
+         point="org.eclipse.osbp.vaaclipse.theme">
+         <themecontribution
+            cssUri="platform:/plugin/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/styles.css"
+            id="org.eclipse.osbp.vaaclipse.resources"
+            insertPosition="after=MAIN_CSS">
+         <resourceLocationUri
+               uri="platform:/plugin/org.eclipse.osbp.vaaclipse.resources/VAADIN/themes/vaaclipse_default_theme/">
+         </resourceLocationUri>
+         <themeid
+               refid="reindeer">
+         </themeid>
+      </themecontribution>
+      <themecontribution
+            cssUri="css/main.css"
+            id="@@projectName@@.maincontrib"
+            insertPosition="after=MAIN_CSS">
+         <resourceLocationUri
+               uri="icons/">
+         </resourceLocationUri>
+         <themeid
+               refid="reindeer">
+         </themeid>
+      </themecontribution>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/templates/css/main.css b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/css/main.css
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/css/main.css
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/templates/src/handlers/AboutHandler.java b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/src/handlers/AboutHandler.java
new file mode 100644
index 0000000..caabcad
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/src/handlers/AboutHandler.java
@@ -0,0 +1,12 @@
+package @@handlersPackageName@@;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+
+import com.vaadin.Application;
+
+public class AboutHandler {
+	@Execute
+	public void execute(Application vaadinApp) {
+		vaadinApp.getMainWindow().showNotification("Vaadin E4 Application");
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/templates/src/handlers/QuitHandler.java b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/src/handlers/QuitHandler.java
new file mode 100644
index 0000000..6cbd9db
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/src/handlers/QuitHandler.java
@@ -0,0 +1,13 @@
+package @@handlersPackageName@@;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.workbench.IWorkbench;
+
+public class QuitHandler {
+	
+	@Execute
+	public void execute(IWorkbench workbench)
+	{		
+		workbench.close();
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/templates/src/login/LoginProvider.java b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/src/login/LoginProvider.java
new file mode 100644
index 0000000..d6bb6a5
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/src/login/LoginProvider.java
@@ -0,0 +1,78 @@
+/**
+ * 
+ */
+package @@loginPackageName@@;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.osbp.vaaclipse.publicapi.authentication.AuthenticationConstants;
+import org.eclipse.osbp.vaaclipse.publicapi.authentication.User;
+
+import com.vaadin.Application;
+import com.vaadin.ui.Alignment;
+import com.vaadin.ui.LoginForm;
+import com.vaadin.ui.LoginForm.LoginEvent;
+import com.vaadin.ui.LoginForm.LoginListener;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.Window;
+
+public class LoginProvider
+{
+	@Inject
+	IEventBroker eventBroker;
+	
+	@Inject
+	Application vaadinApp;
+	
+	@PostConstruct
+	public void init(VerticalLayout parent)
+	{
+		//Set the caption of login page (window)
+		vaadinApp.getMainWindow().setCaption("Login to @@contextPath@@ application");
+		
+		Panel loginPanel = new Panel("Login");
+		loginPanel.setWidth("250px");
+		parent.addComponent(loginPanel);
+		
+		parent.setComponentAlignment(loginPanel, Alignment.MIDDLE_CENTER);
+		
+		LoginForm login = new LoginForm();
+		loginPanel.addComponent(login);
+		
+		login.addListener(new LoginListener() {
+			
+			@Override
+			public void onLogin(LoginEvent event)
+			{
+				String username = event.getLoginParameter("username");
+				String password = event.getLoginParameter("password");
+                
+				if (username.trim().isEmpty())
+					username = null;
+				
+				if (username == null)
+					username = "guest";
+				
+				//Here you check username and password and if user with given password exists 
+				//send message AuthenticationConstants.Events.Authentication with User object:
+				if (check(username, password))
+				{
+					User user = new User(username);
+					eventBroker.send(AuthenticationConstants.Events.Authentication, user);
+				}
+				else
+				{
+					vaadinApp.getMainWindow().showNotification("User does not exist", Window.Notification.TYPE_WARNING_MESSAGE);
+				}
+			}
+		});
+	};
+	
+	private boolean check(String username, String password)
+	{
+		return true;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/templates/src/views/FirstView.java b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/src/views/FirstView.java
new file mode 100644
index 0000000..5e97115
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/src/views/FirstView.java
@@ -0,0 +1,15 @@
+package @@viewsPackageName@@;
+
+import javax.inject.Inject;
+
+import com.vaadin.ui.ComponentContainer;
+import com.vaadin.ui.Label;
+
+public class FirstView
+{
+	@Inject
+	public FirstView(ComponentContainer parent)
+	{
+        parent.addComponent(new Label("First View"));
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.tools.wizards/templates/src/views/SecondView.java b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/src/views/SecondView.java
new file mode 100644
index 0000000..e52be4b
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/src/views/SecondView.java
@@ -0,0 +1,15 @@
+package @@viewsPackageName@@;
+
+import javax.inject.Inject;
+
+import com.vaadin.ui.ComponentContainer;
+import com.vaadin.ui.Label;
+
+public class SecondView
+{
+	@Inject
+	public SecondView(ComponentContainer parent)
+	{
+		parent.addComponent(new Label("Second view"));
+	}
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..f906dbd
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,93 @@
+<?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>
+    </parent>
+
+    <groupId>org.eclipse.osbp.vaaclipse.tools</groupId>
+    <artifactId>org.eclipse.osbp.vaaclipse.tools</artifactId>
+    <packaging>pom</packaging>
+
+    <prerequisites>
+        <maven>3.0</maven>
+    </prerequisites>
+
+    <properties>
+        <tycho-version>0.21.0</tycho-version>
+        <tychoExtrasVersion>0.21.0</tychoExtrasVersion>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <shiro-version>1.2.1</shiro-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>
+
+<!--     <repositories> -->
+<!--         <repository> -->
+<!--             <id>e4tools</id> -->
+<!--             <url>http://download.eclipse.org/e4/downloads/drops/S-0.17-201501051100/repository</url> -->
+<!--             <layout>p2</layout> -->
+<!--         </repository> -->
+<!--     </repositories> -->
+
+    <modules>
+        <module>org.eclipse.osbp.vaaclipse.tools.e4tools.extension</module>
+        <module>org.eclipse.osbp.vaaclipse.tools.feature.ide</module>
+        <module>org.eclipse.osbp.vaaclipse.tools.wizards</module>
+    </modules>
+
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.eclipse.tycho</groupId>
+                    <artifactId>target-platform-configuration</artifactId>
+                    <version>${tycho-version}</version>
+                    <configuration>
+                        <resolver>p2</resolver>
+                        <pomDependencies>consider</pomDependencies>
+                        <environments>
+                            <environment>
+                                <os>win32</os>
+                                <ws>win32</ws>
+                                <arch>x86_64</arch>
+                            </environment>
+                            <environment>
+                                <os>linux</os>
+                                <ws>gtk</ws>
+                                <arch>x86</arch>
+                            </environment>
+                            <environment>
+                                <os>linux</os>
+                                <ws>gtk</ws>
+                                <arch>x86_64</arch>
+                            </environment>
+                            <environment>
+                                <os>macosx</os>
+                                <ws>cocoa</ws>
+                                <arch>x86_64</arch>
+                            </environment>
+                        </environments>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+</project>