diff options
author | Ralf Mollik | 2017-08-28 15:37:57 +0000 |
---|---|---|
committer | Ralf Mollik | 2017-08-28 15:37:57 +0000 |
commit | 48489c5014308777a87a3b10332d1f9debca4057 (patch) | |
tree | fedf303525f44949788886c34d906c9a0a456640 | |
download | org.eclipse.osbp.vaaclipse.tools-48489c5014308777a87a3b10332d1f9debca4057.tar.gz org.eclipse.osbp.vaaclipse.tools-48489c5014308777a87a3b10332d1f9debca4057.tar.xz org.eclipse.osbp.vaaclipse.tools-48489c5014308777a87a3b10332d1f9debca4057.zip |
parallel ip - initial checkin
Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
63 files changed, 6106 insertions, 0 deletions
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 ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available +at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. +For purposes of the EPL, "Program" will mean the Content.</p> + +<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is +being redistributed by another party ("Redistributor") and different terms and conditions may +apply to your use of any object code in the Content. Check the Redistributor's license that was +provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise +indicated below, the terms and conditions of the EPL still apply to any source code in the Content +and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p> + +</body> +</html>
\ No newline at end of file diff --git a/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 "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND + CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE + OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR + NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND + CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p> + +<h3>Applicable Licenses</h3> + +<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 + ("EPL"). A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. + For purposes of the EPL, "Program" will mean the Content.</p> + +<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code + repository ("Repository") in software modules ("Modules") and made available as downloadable archives ("Downloads").</p> + +<ul> + <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").</li> + <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</li> + <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named "features". Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins + and/or Fragments associated with that Feature.</li> + <li>Features may also include other Features ("Included Features"). Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.</li> +</ul> + +<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts"). The terms and conditions governing Features and +Included Features should be contained in files named "license.html" ("Feature Licenses"). Abouts and Feature Licenses may be located in any directory of a Download or Module +including, but not limited to the following locations:</p> + +<ul> + <li>The top-level (root) directory</li> + <li>Plug-in and Fragment directories</li> + <li>Inside Plug-ins and Fragments packaged as JARs</li> + <li>Sub-directories of the directory named "src" of certain Plug-ins</li> + <li>Feature directories</li> +</ul> + +<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license ("Feature Update License") during the +installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or +inform you where you can locate them. Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature. +Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in +that directory.</p> + +<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE +OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p> + +<ul> + <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li> + <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li> + <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li> + <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li> + <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li> +</ul> + +<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please +contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p> + + +<h3>Use of Provisioning Technology</h3> + +<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse + Update Manager ("Provisioning Technology") for the purpose of allowing users to install software, documentation, information and/or + other materials (collectively "Installable Software"). This capability is provided with the intent of allowing such users to + install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a + href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a> + ("Specification").</p> + +<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the + applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology + in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the + Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p> + +<ol> + <li>A series of actions may occur ("Provisioning Process") in which a user may execute the Provisioning Technology + on a machine ("Target Machine") with the intent of installing, extending or updating the functionality of an Eclipse-based + product.</li> + <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be + accessed and copied to the Target Machine.</li> + <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable + Software ("Installable Software Agreement") and such Installable Software Agreement shall be accessed from the Target + Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern + the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such + indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li> +</ol> + +<h3>Cryptography</h3> + +<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to + another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import, + possession, or use, and re-export of encryption software, to see if this is permitted.</p> + +<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p> +</body> +</html> diff --git a/org.eclipse.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 ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available +at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. +For purposes of the EPL, "Program" will mean the Content.</p> + +<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is +being redistributed by another party ("Redistributor") and different terms and conditions may +apply to your use of any object code in the Content. Check the Redistributor's license that was +provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise +indicated below, the terms and conditions of the EPL still apply to any source code in the Content +and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p> + +</body> +</html>
\ No newline at end of file diff --git a/org.eclipse.osbp.vaaclipse.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™ 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 Vaaclips Tools </strong>provides ...</p> + +<p> </p> + +<p> </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 ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available +at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. +For purposes of the EPL, "Program" will mean the Content.</p> + +<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is +being redistributed by another party ("Redistributor") and different terms and conditions may +apply to your use of any object code in the Content. Check the Redistributor's license that was +provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise +indicated below, the terms and conditions of the EPL still apply to any source code in the Content +and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p> + +</body> +</html>
\ No newline at end of file diff --git a/org.eclipse.osbp.vaaclipse.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 Binary files differnew file mode 100644 index 0000000..34fb3c9 --- /dev/null +++ b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/common/icons/sample.gif 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 Binary files differnew file mode 100644 index 0000000..499dd0c --- /dev/null +++ b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/common/icons/save_edit.gif 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 Binary files differnew file mode 100644 index 0000000..2779af1 --- /dev/null +++ b/org.eclipse.osbp.vaaclipse.tools.wizards/templates/common/icons/vaaclipse.png 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")); + } +} @@ -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> |