parallel ip - initial checkin
Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/.project b/.project
new file mode 100644
index 0000000..42ba18f
--- /dev/null
+++ b/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.ui.api.aggregator</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/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..bcaceb9
--- /dev/null
+++ b/jenkins.build.config.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2016 - Loetz GmbH&Co.KG -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+<!--# Module specific parameters for the Jenkins Job -->
+<!--#======================================================================= -->
+
+<jenkins>
+
+ <!-- DO NOT EDIT BELOW THIS LINE -->
+ <jenkins.build.dependencies>
+ <jenkins.build.dependency>org.eclipse.osbp.dsl</jenkins.build.dependency>
+ <jenkins.build.dependency>org.eclipse.osbp.ecview.core</jenkins.build.dependency>
+ </jenkins.build.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.ui.api.feature/.project b/org.eclipse.osbp.ui.api.feature/.project
new file mode 100644
index 0000000..78ec128
--- /dev/null
+++ b/org.eclipse.osbp.ui.api.feature/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.ui.api.feature</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.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</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.ui.api.feature/LICENSE.txt b/org.eclipse.osbp.ui.api.feature/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.ui.api.feature/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.ui.api.feature/build.properties b/org.eclipse.osbp.ui.api.feature/build.properties
new file mode 100644
index 0000000..0d1db20
--- /dev/null
+++ b/org.eclipse.osbp.ui.api.feature/build.properties
@@ -0,0 +1,5 @@
+bin.includes = epl-v10.html, feature.xml,\
+ feature.properties,\
+ license.html
+src.includes = epl-v10.html, LICENSE.txt,\
+ license.html
diff --git a/org.eclipse.osbp.ui.api.feature/epl-v10.html b/org.eclipse.osbp.ui.api.feature/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.ui.api.feature/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.ui.api.feature/feature.properties b/org.eclipse.osbp.ui.api.feature/feature.properties
new file mode 100644
index 0000000..e6b4c8b
--- /dev/null
+++ b/org.eclipse.osbp.ui.api.feature/feature.properties
@@ -0,0 +1,169 @@
+###############################################################################
+# 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:
+# Cristiano Gavião - 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 =OSBP UI API
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=This feature provides the bundles for OSBP UI API.
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+ - Content may be structured and packaged into modules to facilitate delivering,\n\
+ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+ plug-in fragments ("Fragments"), and features ("Features").\n\
+ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+ in a directory named "plugins".\n\
+ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+ Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+ - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+ - The top-level (root) directory\n\
+ - Plug-in and Fragment directories\n\
+ - Inside Plug-ins and Fragments packaged as JARs\n\
+ - Sub-directories of the directory named "src" of certain Plug-ins\n\
+ - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+ - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+ 1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+ the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+ extending or updating the functionality of an Eclipse-based product.\n\
+ 2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+ Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+ 3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+ govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+ Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+ with the Specification. Such Installable Software Agreement must inform the user of the\n\
+ terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+ the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+ indication of agreement by the user, the provisioning Technology will complete installation\n\
+ of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.ui.api.feature/feature.xml b/org.eclipse.osbp.ui.api.feature/feature.xml
new file mode 100644
index 0000000..5866cf6
--- /dev/null
+++ b/org.eclipse.osbp.ui.api.feature/feature.xml
@@ -0,0 +1,38 @@
+<?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.ui.api.feature"
+ 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.ui.api"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/org.eclipse.osbp.ui.api.feature/license.html b/org.eclipse.osbp.ui.api.feature/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.ui.api.feature/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.ui.api.feature/pom.xml b/org.eclipse.osbp.ui.api.feature/pom.xml
new file mode 100644
index 0000000..91a5666
--- /dev/null
+++ b/org.eclipse.osbp.ui.api.feature/pom.xml
@@ -0,0 +1,66 @@
+<?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 implementation 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/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.osbp.ui.api</groupId>
+ <artifactId>org.eclipse.osbp.ui.api.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.eclipse.osbp.ui.api.feature</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>
+ </plugins>
+ </build>
+
+ <dependencies>
+
+ </dependencies>
+
+</project>
diff --git a/org.eclipse.osbp.ui.api/.project b/org.eclipse.osbp.ui.api/.project
new file mode 100644
index 0000000..9e8b8f6
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osbp.ui.api</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.babel.editor.rbeBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</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.ui.api/LICENSE.txt b/org.eclipse.osbp.ui.api/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.ui.api/META-INF/MANIFEST.MF b/org.eclipse.osbp.ui.api/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..fcfcbfe
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/META-INF/MANIFEST.MF
@@ -0,0 +1,50 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.ui.api
+Bundle-SymbolicName: org.eclipse.osbp.ui.api
+Bundle-Version: 0.9.0.qualifier
+Require-Bundle: org.eclipse.core.runtime,
+ com.vaadin.server;bundle-version="7.5.7"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.ui.api.complexdatacontainer;version="0.9.0",
+ org.eclipse.osbp.ui.api.contextfunction;version="0.9.0";uses:="com.vaadin.ui",
+ org.eclipse.osbp.ui.api.customfields;version="0.9.0";uses:="com.vaadin.server,org.eclipse.e4.core.services.events,com.vaadin.ui",
+ org.eclipse.osbp.ui.api.datamart;version="0.9.0",
+ org.eclipse.osbp.ui.api.functionlibrary;version="0.9.0";uses:="org.eclipse.osbp.ui.api.statemachine",
+ org.eclipse.osbp.ui.api.layout;version="0.9.0",
+ org.eclipse.osbp.ui.api.message;version="0.9.0",
+ org.eclipse.osbp.ui.api.metadata;version="0.9.0";uses:="org.eclipse.emf.ecore,org.eclipse.osbp.dsl.xtext.types.bundles",
+ org.eclipse.osbp.ui.api.organization;version="0.9.0",
+ org.eclipse.osbp.ui.api.pos;version="0.9.0";uses:="org.eclipse.osbp.ui.api.statemachine",
+ org.eclipse.osbp.ui.api.report;version="0.9.0",
+ org.eclipse.osbp.ui.api.statemachine;version="0.9.0";
+ uses:="org.joda.time,
+ org.eclipse.osbp.dsl.dto.lib.services,
+ org.eclipse.osbp.ui.api.themes,
+ org.eclipse.osbp.ui.api.message,
+ org.eclipse.osbp.dsl.common.datatypes,
+ org.eclipse.osbp.ui.api.metadata,
+ org.eclipse.osbp.ecview.core.common.context,
+ org.eclipse.osbp.ui.api.user",
+ org.eclipse.osbp.ui.api.themes;version="0.9.0";uses:="com.vaadin.server",
+ org.eclipse.osbp.ui.api.user;version="0.9.0";uses:="org.eclipse.osbp.ui.api.customfields,org.eclipse.e4.ui.model.application",
+ org.eclipse.osbp.ui.api.useraccess;version="0.9.0";uses:="org.eclipse.osbp.dsl.common.datatypes,org.eclipse.osbp.ui.api.complexdatacontainer,org.eclipse.osbp.ui.api.userfilter",
+ org.eclipse.osbp.ui.api.userfilter;version="0.9.0",
+ org.eclipse.osbp.ui.initialization;version="0.9.0"
+Import-Package: javax.validation;version="1.1.0.Final",
+ javax.validation.constraints;version="1.1.0.Final",
+ mondrian.rolap;version="3.5.0",
+ org.eclipse.e4.core.services.events,
+ org.eclipse.e4.ui.model.application,
+ org.eclipse.emf.ecore,
+ org.eclipse.osbp.dsl.common.datatypes;version="0.9.0",
+ org.eclipse.osbp.dsl.dto.lib.services;version="0.9.0",
+ org.eclipse.osbp.dsl.xtext.types.bundles;version="0.9.0",
+ org.eclipse.osbp.ecview.core.common.context;version="0.9.0",
+ org.eclipse.xtext.common.types,
+ org.eclipse.xtext.resource,
+ org.eclipse.xtext.util,
+ org.joda.time;version="2.7.0",
+ org.slf4j;resolution:=optional
+Bundle-ClassPath: .
+Bundle-Vendor: Eclipse OSBP
diff --git a/org.eclipse.osbp.ui.api/about.html b/org.eclipse.osbp.ui.api/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 1, 2016</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.ui.api/about.ini b/org.eclipse.osbp.ui.api/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.ui.api/about.mappings b/org.eclipse.osbp.ui.api/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.ui.api/about.properties b/org.eclipse.osbp.ui.api/about.properties
new file mode 100644
index 0000000..ac57d66
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012-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
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.ui.api
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016, Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+ Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.ui.api/build.properties b/org.eclipse.osbp.ui.api/build.properties
new file mode 100644
index 0000000..5364007
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties, about.mappings, about.ini, about.html, META-INF/,\
+ .,\
+ license.html,\
+ LICENSE.txt
+src.includes = about.properties, about.mappings, about.ini, about.html, LICENSE.txt,\
+ license.html
diff --git a/org.eclipse.osbp.ui.api/epl-v10.html b/org.eclipse.osbp.ui.api/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.ui.api/license.html b/org.eclipse.osbp.ui.api/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+ OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+ NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+ CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0
+ ("EPL"). A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+ For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code,
+documentation and other files maintained in the Eclipse Foundation
+source code
+ repository ("Repository") in software modules ("Modules") and made
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+ <li>Content may be structured and packaged into modules to
+facilitate delivering, extending, and upgrading the Content. Typical
+modules may include plug-ins ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features").</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or
+Fragments and associated material. Each Feature may be packaged as a
+sub-directory in a directory named "features". Within a Feature, files
+named "feature.xml" may contain a list of the names and version numbers
+of the Plug-ins
+ and/or Fragments associated with that Feature.</li>
+ <li>Features may also include other Features ("Included
+Features"). Within a Feature, files named "feature.xml" may contain a
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be
+contained in files named "about.html" ("Abouts"). The terms and
+conditions governing Features and
+Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+ <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process. If the Feature contains Included Features, the
+Feature Update License should either provide you with the terms and
+conditions governing the Included Features or
+inform you where you can locate them. Feature Update Licenses may be
+found in the "license" property of files named "feature.properties"
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the
+terms and conditions (or references to such terms and conditions) that
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+ SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+ <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+ <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+ <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+ <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+ <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+ <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software,
+examples of which include, but are not limited to, p2 and the Eclipse
+ Update Manager ("Provisioning Technology") for the purpose of
+allowing users to install software, documentation, information and/or
+ other materials (collectively "Installable Software"). This
+capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+ ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+ applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning
+Technology
+ in accordance with the Specification. By using Provisioning
+Technology in such a manner and making it available in accordance with
+the
+ Specification, you further acknowledge your agreement to, and the
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+ <li>A series of actions may occur ("Provisioning Process") in
+which a user may execute the Provisioning Technology
+ on a machine ("Target Machine") with the intent of installing,
+extending or updating the functionality of an Eclipse-based
+ product.</li>
+ <li>During the Provisioning Process, the Provisioning Technology
+may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.</li>
+ <li>Pursuant to the Specification, you will provide to the user
+the terms and conditions that govern the use of the Installable
+ Software ("Installable Software Agreement") and such Installable
+Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable
+Software Agreement must inform the user of the terms and conditions that
+ govern
+ the Installable Software and must solicit acceptance by the end
+user in the manner prescribed in such Installable Software Agreement.
+Upon such
+ indication of agreement by the user, the provisioning Technology
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use,
+and/or re-export to
+ another country, of encryption software. BEFORE using any encryption
+software, please check the country's laws, regulations and policies
+concerning the import,
+ possession, or use, and re-export of encryption software, to see if
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.ui.api/pom.xml b/org.eclipse.osbp.ui.api/pom.xml
new file mode 100644
index 0000000..2aaa8fd
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/pom.xml
@@ -0,0 +1,36 @@
+<?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.ui.api</artifactId>
+ <build>
+ <sourceDirectory>src</sourceDirectory>
+ <plugins>
+ </plugins>
+ </build>
+ <parent>
+ <groupId>org.eclipse.osbp.ui.api</groupId>
+ <artifactId>org.eclipse.osbp.ui.api.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+ <packaging>eclipse-plugin</packaging>
+ <dependencies>
+ <dependency>
+ <groupId>org.eclipse.osbp.dependencies</groupId>
+ <artifactId>org.eclipse.osbp.dependencies.feature.vaadin</artifactId>
+ <version>7.5.7</version>
+ <type>eclipse-feature</type>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/complexdatacontainer/IComplexDataContainer.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/complexdatacontainer/IComplexDataContainer.java
new file mode 100644
index 0000000..c608771
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/complexdatacontainer/IComplexDataContainer.java
@@ -0,0 +1,33 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.complexdatacontainer;
+
+/**
+ * Any complex data container may implement this interface, to broadcast changes
+ * inside its internal data.
+ *
+ * Any other class instance may listen to changes inside the internal data in this class,
+ * without the need to know about any data structure necessary.
+ */
+public interface IComplexDataContainer {
+
+ /**
+ * @param listener add any other class instance as an listener for internal data
+ */
+ public void addComplexDataContainerChangedListener(IComplexDataContainerChangedListener listener);
+
+ /**
+ * @param listener remove any other class instance as an listener for internal data
+ */
+ public void removeComplexDataContainerChangedListener(IComplexDataContainerChangedListener listener);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/complexdatacontainer/IComplexDataContainerChangedListener.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/complexdatacontainer/IComplexDataContainerChangedListener.java
new file mode 100644
index 0000000..a0468ee
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/complexdatacontainer/IComplexDataContainerChangedListener.java
@@ -0,0 +1,25 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.complexdatacontainer;
+
+/**
+ * Any class instance may listen to changes inside the internal data of a complex data container,
+ * without the need to know about its data structure necessary.
+ */
+public interface IComplexDataContainerChangedListener {
+
+ /**
+ * The internal data of any complex data container listened to has been changed.
+ */
+ public void complexDataContainerChanged();
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IUserFilterDialogProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IUserFilterDialogProvider.java
new file mode 100644
index 0000000..d35e87d
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IUserFilterDialogProvider.java
@@ -0,0 +1,38 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.contextfunction;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.VerticalLayout;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IUserFilterDialogProvider. Used to inject a dialog to maintain user filters.
+ */
+public interface IUserFilterDialogProvider {
+
+ /**
+ * Gets the dialog.
+ *
+ * @return the dialog
+ */
+ Component getDialog();
+
+ /**
+ * Creates the view.
+ *
+ * @param parent
+ * the parent layout the view will be attached to.
+ */
+ void createView(final VerticalLayout parent);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IUserMenuProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IUserMenuProvider.java
new file mode 100644
index 0000000..04eadf9
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IUserMenuProvider.java
@@ -0,0 +1,19 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.contextfunction;
+
+import com.vaadin.ui.Component;
+
+public interface IUserMenuProvider {
+ Component getMenu();
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IVaadinDialogProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IVaadinDialogProvider.java
new file mode 100644
index 0000000..40db253
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IVaadinDialogProvider.java
@@ -0,0 +1,38 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.contextfunction;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.VerticalLayout;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IVaadinDialogProvider. Used to inject a vaadin based dialog.
+ */
+public interface IVaadinDialogProvider {
+
+ /**
+ * Gets the dialog component.
+ *
+ * @return the dialog
+ */
+ Component getDialog();
+
+ /**
+ * Creates the view.
+ *
+ * @param parent
+ * the parent layout the view will be attached to.
+ */
+ void createView(final VerticalLayout parent);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IViewEmbeddedProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IViewEmbeddedProvider.java
new file mode 100644
index 0000000..e54505d
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IViewEmbeddedProvider.java
@@ -0,0 +1,20 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.contextfunction;
+
+import com.vaadin.ui.VerticalLayout;
+
+public interface IViewEmbeddedProvider {
+ void createView(final VerticalLayout parent);
+ void createComponents();
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/customfields/IBlobUploadComponent.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/customfields/IBlobUploadComponent.java
new file mode 100644
index 0000000..dc5ba57
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/customfields/IBlobUploadComponent.java
@@ -0,0 +1,141 @@
+/*
+ *
+ * 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
+ *
+ * Initial contribution:
+ * Loetz GmbH & Co. KG
+ *
+ */
+package org.eclipse.osbp.ui.api.customfields;
+
+import java.util.List;
+
+import org.eclipse.e4.core.services.events.IEventBroker;
+
+import com.vaadin.server.Resource;
+import com.vaadin.ui.Label;
+
+public interface IBlobUploadComponent {
+ public enum BUTTON_ALIGNMENT {
+ TOP, BUTTOM, LEFT, RIGHT, DEFAULT
+ }
+
+ /**
+ * Enables the upload button.
+ *
+ * @param uploadButton
+ * the upload button
+ */
+ void enableUploadButton(boolean uploadButton);
+
+ /**
+ * Sets the resolution for the blob to be displayed via resolution id
+ *
+ * @param displayResolutionId
+ */
+ void setDisplayResolutionId(int displayResolutionId);
+
+ /**
+ * Sets the resolution for the blob to be displayed via resolution string
+ *
+ * @param displayResolution the new display resolution
+ */
+ void setDisplayResolution(String displayResolution);
+ /**
+ * Sets the uuid for the blob to be displayed
+ *
+ * @param uniqueName
+ */
+ void setUploadedUniqueName(String uniqueName);
+
+ /**
+ * Sets the firmly linked.
+ *
+ * @param firmlyLinked
+ * the new firmly linked
+ */
+ void setFirmlyLinked(boolean firmlyLinked);
+
+ /**
+ * Checks if component is firmly linked.
+ *
+ * @return true, if is firmly linked
+ */
+ boolean isFirmlyLinked();
+
+ /**
+ * Sets the event broker.
+ *
+ * @param eventBroker the new event broker
+ */
+ void setEventBroker(IEventBroker eventBroker);
+
+ /**
+ * Sets the display image label.
+ *
+ * @param displayImageLabel the new display image label
+ */
+ void setDisplayImageLabel(Label displayImageLabel);
+
+ /**
+ * Sets the button alignment.
+ *
+ * @param buttonAlignment the new button alignment
+ */
+ void setUploadButtonAlignment(BUTTON_ALIGNMENT buttonAlignment);
+
+ /**
+ * Checks if is unique name enabled.
+ *
+ * @return true, if is unique name enabled
+ */
+ boolean isUniqueNameEnabled();
+
+ /**
+ * Sets the unique name enabled.
+ *
+ * @param uniqueNameEnabled the new unique name enabled
+ */
+ void setUniqueNameEnabled(boolean uniqueNameEnabled);
+
+ /**
+ * Sets the upload component label.
+ *
+ * @param label the new blob upload comp label
+ */
+ void setBlobUploadCompLabel(Label label);
+
+ /**
+ * Sets the upload button caption.
+ *
+ * @param buttonCaption the new upload button caption
+ */
+ void setUploadButtonCaption(String buttonCaption);
+
+ /**
+ * Sets the upload icon.
+ *
+ * @param uploadIcon the new upload icon
+ */
+ void setUploadIcon(Resource uploadIcon);
+
+ /**
+ * Sets the download icon.
+ *
+ * @param downloadIcon the new download icon
+ */
+ void setDownloadIcon(Resource downloadIcon);
+
+ /**
+ * Sets the upload accepted mime types.
+ *
+ * @param mimeTypes the new upload accepted mime types
+ */
+ void setUploadAcceptedMimeTypes(List<String> mimeTypes);
+
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/DerivedOlapException.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/DerivedOlapException.java
new file mode 100644
index 0000000..6c6946a
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/DerivedOlapException.java
@@ -0,0 +1,28 @@
+/**
+ *
+ * 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 implementation
+ *
+ */
+ package org.eclipse.osbp.ui.api.datamart;
+
+public class DerivedOlapException extends Exception {
+
+ public DerivedOlapException(String message) {
+ super(message);
+ }
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDataMart.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDataMart.java
new file mode 100644
index 0000000..bbfedfd
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDataMart.java
@@ -0,0 +1,42 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.datamart;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import org.eclipse.osbp.ui.api.user.IUser;
+
+public interface IDataMart {
+ public enum EType {
+ BOOLEAN, DATE, FLOAT, DOUBLE, BYTE, SHORT, INTEGER, LONG, STRING, TIME, BLOPMAPPING, LENUM, none
+ }
+
+ public final static String DATAMART_CLASS_POSTFIX = "Datamart";
+ public final static String DATAMART_ID_COLUMN_PREFIX = "__";
+ public final static String DATAMART_ID_COLUMN_POSTFIX = "__ID__";
+
+ public static final String singleSelectDecorator = "$";
+ public static final String multiSelectDecorator = "§";
+ public static final String exceptDecorator = "%";
+ public static final String slicerSingleSelectDecorator = "?";
+ public static final String slicerMultiSelectDecorator = "!";
+ public static final String sqlFilterNothing = "'*'";
+ public static final String filterIdPlaceholder = "&";
+
+ public static String decorate(String decorator, String input) {return decorator+input+decorator;}
+
+ public abstract HashMap<String, ArrayList<IDualData>> getFilters(IUser user);
+ public abstract HashMap<String, EType> getIdMap();
+ public abstract HashMap<String, EType> getTypesMap(IUser user);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartFilterGenerator.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartFilterGenerator.java
new file mode 100644
index 0000000..0b47637
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartFilterGenerator.java
@@ -0,0 +1,44 @@
+package org.eclipse.osbp.ui.api.datamart;
+
+import java.util.Locale;
+import java.util.Map;
+
+import org.eclipse.osbp.ui.api.layout.IViewLayoutManager;
+import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
+import org.eclipse.osbp.ui.api.user.IUser;
+
+import com.vaadin.data.Property.ValueChangeListener;
+
+public interface IDatamartFilterGenerator {
+ void setDslMetadataService(IDSLMetadataService dslMetadataService);
+
+ boolean createFilter(IDataMart datamart, IUser user,
+ ValueChangeListener filterChangeListener,
+ IViewLayoutManager layoutManager);
+
+ boolean createFilter(IDataMart datamart, IUser user,
+ ValueChangeListener filterChangeListener,
+ IViewLayoutManager layoutManager, boolean showCaption);
+
+ void setId(String idProperty, String id);
+
+ void resetId();
+
+ Map<String, IDatamartSelectable> getSelectors();
+
+ boolean isCube();
+
+ void setCube(boolean cube);
+
+ void resetItem(String filter);
+
+ Map<String, String> getFilter(boolean isCube);
+
+ void setLocale(Locale locale);
+
+ void selectItem(String filter, String selection);
+
+ void updateFilter(IDataMart datamart, IUser user,
+ ValueChangeListener filterChangeListener);
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartSelectable.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartSelectable.java
new file mode 100644
index 0000000..6502891
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartSelectable.java
@@ -0,0 +1,151 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.datamart;
+
+import java.util.Collection;
+import java.util.List;
+
+import com.vaadin.data.Container;
+import com.vaadin.data.Property.ValueChangeListener;
+import com.vaadin.server.Sizeable.Unit;
+
+public interface IDatamartSelectable {
+
+ /**
+ * Checks if is slicer.
+ *
+ * @return true, if is slicer
+ */
+ boolean isSlicer();
+
+ /**
+ * Checks if is multi selected.
+ *
+ * @return true, if is multi selected
+ */
+ boolean isMultiSelected();
+
+ /**
+ * Update the combo box.
+ *
+ * @param options the dual data items
+ */
+ void update(Collection<IDualData> options);
+
+ /**
+ * Gets the filter name.
+ *
+ * @return the filter name
+ */
+ String getFilterName();
+
+ /**
+ * Sets the filter name.
+ *
+ * @param filterName the new filter name
+ */
+ void setFilterName(String filterName);
+
+ /**
+ * Gets the selected items.
+ *
+ * @return the selected items
+ */
+ List<IDualData> getSelectedItems();
+
+ Object getValue();
+
+ /**
+ * Gets the first item.
+ *
+ * @return the first item matching
+ */
+ IDualData getFirstItem();
+
+ /**
+ * Gets the hierarchy if any.
+ *
+ * @return the hierarchy
+ */
+ String getHierarchy();
+
+ /**
+ * Sets the hierarchy.
+ *
+ * @param hierarchy the new hierarchy
+ */
+ void setHierarchy(String hierarchy);
+
+ /**
+ * Gets the container datasource of the underlying combobox.
+ *
+ * @return the container datasource
+ */
+ Container getContainerDataSource();
+
+ /**
+ * Select an item in the underlying combobox
+ *
+ * @param obj the obj
+ */
+ void select(Object obj);
+
+ /**
+ * Adds the value change listener.
+ *
+ * @param listener the listener
+ */
+ void addValueChangeListener(ValueChangeListener listener);
+
+ /**
+ * Removes the value change listener.
+ *
+ * @param listener the listener
+ */
+ void removeValueChangeListener(ValueChangeListener listener);
+ /**
+ * Sets the caption.
+ *
+ * @param caption the new caption
+ */
+ void setCaption(String caption);
+
+ /**
+ * Sets the description.
+ *
+ * @param description the new description
+ */
+ void setDescription(String description);
+
+ /**
+ * Gets the height.
+ *
+ * @return the height
+ */
+ float getHeight();
+
+ /**
+ * Gets the height units.
+ *
+ * @return the height units
+ */
+ Unit getHeightUnits();
+
+ /**
+ * Sets the width.
+ *
+ * @param width the new width
+ */
+ void setWidth(String width);
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDualData.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDualData.java
new file mode 100644
index 0000000..678f8de
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDualData.java
@@ -0,0 +1,69 @@
+/*
+ *
+ * Copyright (c) 2011 - 2017 - 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
+ *
+ * Initial contribution:
+ * Loetz GmbH & Co. KG
+ *
+ */
+package org.eclipse.osbp.ui.api.datamart;
+
+/**
+ * The Interface IDualData.
+ */
+public interface IDualData {
+
+ /**
+ * Gets the selection value.
+ *
+ * @return the selection value
+ */
+ String getSelectionValue();
+
+ /**
+ * Sets the selection value.
+ *
+ * @param value the new selection value
+ */
+ void setSelectionValue(String value);
+
+ /**
+ * Gets the formatted value.
+ *
+ * @return the formatted value
+ */
+ String getFormattedValue();
+
+ /**
+ * Gets the significant value.
+ *
+ * @return the significant value
+ */
+ String getSignificantValue();
+
+ /**
+ * Sets the formatted value.
+ *
+ * @param formattedValue the new formatted value
+ */
+ void setFormattedValue(String formattedValue);
+
+ /**
+ * Sets the unformatted value.
+ *
+ * @param unformattedValue the new unformatted value
+ */
+ void setUnformattedValue(String unformattedValue);
+
+ /**
+ * Gets the hierarchy.
+ *
+ * @return the hierarchy
+ */
+ String getHierarchy();
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryGroup.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryGroup.java
new file mode 100644
index 0000000..3ef47ec
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryGroup.java
@@ -0,0 +1,18 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.functionlibrary;
+
+//TODO Version 2 - move to API package
+public interface IFunctionLibraryGroup {
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryPackage.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryPackage.java
new file mode 100644
index 0000000..2352007
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryPackage.java
@@ -0,0 +1,18 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.functionlibrary;
+
+// TODO Version 2 - move to API package
+public interface IFunctionLibraryPackage {
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryService.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryService.java
new file mode 100644
index 0000000..b091bcd
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryService.java
@@ -0,0 +1,43 @@
+/**
+ *
+ * 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 implementation
+ *
+ */
+ package org.eclipse.osbp.ui.api.functionlibrary;
+
+import java.util.Locale;
+
+import org.eclipse.osbp.ui.api.statemachine.IStateMachine;
+
+/**
+ * This service provides access to the function library.
+ */
+public interface IFunctionLibraryService {
+
+ public Object callFunctionLibrary(String className, String methodName,
+ Object fieldValue, Locale locale, Object... params);
+
+ public Object callFunctionLibrary(String className, String methodName,
+ Object fieldValue);
+
+ public Object callFunctionLibrary(String className, String methodName,
+ Locale locale);
+
+ public Object callFunctionLibrary(String className, String methodName);
+
+ public boolean guard(IStateMachine statemachine, String className, String methodName);
+
+ public boolean operation(IStateMachine statemachine, String className,
+ String methodName, Object... params);
+
+ public Object function(IStateMachine statemachine, String className,
+ String methodName, Object... params);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/layout/IViewLayoutManager.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/layout/IViewLayoutManager.java
new file mode 100644
index 0000000..8370e3e
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/layout/IViewLayoutManager.java
@@ -0,0 +1,16 @@
+package org.eclipse.osbp.ui.api.layout;
+
+import com.vaadin.server.Extension;
+import com.vaadin.ui.AbstractOrderedLayout;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.VerticalLayout;
+
+public interface IViewLayoutManager {
+ void init(AbstractOrderedLayout parent);
+ void addExtension(Extension extension);
+ void removeExtension(Extension extension);
+ void setLabelValue(String text);
+ HorizontalLayout getTopArea();
+ VerticalLayout getSideArea();
+ VerticalLayout getDataArea();
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/message/IMessageRequester.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/message/IMessageRequester.java
new file mode 100644
index 0000000..9003a59
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/message/IMessageRequester.java
@@ -0,0 +1,11 @@
+package org.eclipse.osbp.ui.api.message;
+
+public interface IMessageRequester {
+ void addButtonListener(IMessageRequester.ClickRecipient recipient);
+ void removeButtonListener(IMessageRequester.ClickRecipient recipient);
+
+ public interface ClickRecipient extends java.util.EventListener {
+ void messageButtonPressed(MessageRequesterEvent e);
+ }
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/message/MessageEvent.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/message/MessageEvent.java
new file mode 100644
index 0000000..8154ffd
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/message/MessageEvent.java
@@ -0,0 +1,27 @@
+package org.eclipse.osbp.ui.api.message;
+
+public class MessageEvent {
+ public enum EventType {
+ KEYBOARD, TRIGGER, ID, MESSAGEOPEN, MESSAGECLOSE, ERROR, STATUSOPEN, STATUSCLOSE;
+ };
+
+ private EventType type;
+ private String id;
+ public MessageEvent(EventType type, String id) {
+ this.type = type;
+ this.id = id;
+ }
+ public EventType getType() {
+ return type;
+ }
+ public void setType(EventType type) {
+ this.type = type;
+ }
+ public String getId() {
+ return id;
+ }
+ public void setId(String id) {
+ this.id = id;
+ }
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/message/MessageRequesterEvent.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/message/MessageRequesterEvent.java
new file mode 100644
index 0000000..f47aa20
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/message/MessageRequesterEvent.java
@@ -0,0 +1,30 @@
+package org.eclipse.osbp.ui.api.message;
+
+import java.util.EventObject;
+
+public class MessageRequesterEvent extends EventObject {
+ /**
+ *
+ */
+ private static final long serialVersionUID = -3166264241081462470L;
+ private String id;
+ private MessageEvent eventData;
+
+ public MessageRequesterEvent(Object source, String id, MessageEvent eventData) {
+ super(source);
+ this.id = id;
+ this.eventData = eventData;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public MessageEvent getEventData() {
+ return eventData;
+ }
+
+ public void setEventData(MessageEvent eventData) {
+ this.eventData = eventData;
+ }
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/metadata/IDSLMetadataService.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/metadata/IDSLMetadataService.java
new file mode 100644
index 0000000..a23bb06
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/metadata/IDSLMetadataService.java
@@ -0,0 +1,213 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.metadata;
+
+import java.net.URL;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProvider;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.util.Pair;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IDSLMetadataService.
+ */
+public interface IDSLMetadataService {
+
+ /**
+ * The Enum DSLLiterals avoids dependencies to the concrete DSL
+ * implementations.
+ */
+ enum DSLLiterals {
+
+ /** The perspective literal placeholder. */
+ PERSPECTIVES
+ }
+
+ /**
+ * Gets dsl grammar elements identified by a literal enum.
+ *
+ * @param literal
+ * the literal
+ * @return iterator for dsl grammar elements
+ */
+ @SuppressWarnings("rawtypes")
+ List<Pair> getDslGrammarElementNames(IDSLMetadataService.DSLLiterals literal);
+
+ /**
+ * Returns the EObject to be casted to the requested model for the given
+ * model id and EClass.
+ *
+ * @param id
+ * the id
+ * @param eclass
+ * the eclass
+ * @return the metadata
+ */
+ EObject getMetadata(String id, EClass eclass);
+
+ /**
+ * Gets the all metadata descriptions.
+ *
+ * @param eClass
+ * the e class
+ * @return the all descriptions
+ */
+ Iterable<IEObjectDescription> getAllDescriptions(EClass eClass);
+
+ /**
+ * Returns the fully qualified name for the given eObject. If the model is
+ * based on Xtext, then the returned fqn should be used from the
+ * EObjectDescription.
+ *
+ * TODO Riegel - ensure that all DSLs generate a proper fqn. For now they
+ * are missing their package in the FQN.
+ *
+ * @param eObject
+ * the EObject
+ * @return the fully qualified name
+ */
+ String getFullyQualifiedName(EObject eObject);
+
+ /**
+ * Returns the class name for the given eObject. Kind specifies which type
+ * of class should be returned. The types depend on their xtext inferrer.
+ * There may be kind "ui", "translator", "service",...<br>
+ * If you have no idea what should be returned, just leave the kind
+ * <code>null</code>.
+ *
+ * @param eObject
+ * the EObject
+ * @param kind
+ * the kind of requested class type. Depends on the underlying
+ * model. Leave null for default.
+ * @return the class name
+ */
+ String getClassName(EObject eObject, String kind);
+
+ /**
+ * Returns all the classpath URI for a given extension.
+ *
+ * @param className
+ * the class name
+ * @param extension
+ * the extension
+ * @return the class uri
+ */
+ String getClassURI(String className, String extension);
+
+ /**
+ * Returns the class URI for the given eObject and kind. For kind see
+ * {@link #getClassName(EObject, String)}.
+ *
+ * @param eObject
+ * the eObject
+ * @param kind
+ * the kind
+ * @return the class URI
+ */
+ String getClassURI(EObject eObject, String kind);
+
+ /**
+ * Gets a class instance for the given eObject and extension.
+ *
+ * @param eObject the e object
+ * @param extension the extension
+ * @return the class instance
+ */
+ Object getClassInstance(EObject eObject, String extension);
+
+ /**
+ * Gets a resource URL from the bundle of the given extension.
+ *
+ * @param eObject the e object
+ * @param dslExtension the dsl extension e.g. report
+ * @param resourceExtension the resource extension e.g. rptdesign
+ * @return the resource URL
+ */
+ URL getResourceURL(EObject eObject, String dslExtension, String resourceExtension);
+
+ /**
+ * Resolves the given proxy using the internal resource set.
+ *
+ * @param proxy
+ * the proxy instance
+ * @return resolved EObject
+ */
+ EObject resolve(EObject proxy);
+
+ /**
+ * Returns all resolved EObjects provided by
+ * {@link #getAllDescriptions(EClass)}.
+ *
+ * @param eClass
+ * the e class
+ * @return the all EObjects
+ */
+ Iterable<EObject> getAll(EClass eClass);
+
+ /**
+ * Translates a fully qualified key for the given locale.
+ *
+ * @param locale
+ * the locale
+ * @param key
+ * the key
+ * @return the string
+ */
+ String translate(String locale, String key);
+
+ /**
+ * Gets all translations.
+ *
+ * @return the translations for all languages
+ */
+ Map<String, Properties> getTranslations();
+
+ /**
+ * Gets the bundle space type provider from MetadataBuilderService.
+ *
+ * @return the type provider
+ */
+ @SuppressWarnings("restriction")
+ BundleSpaceTypeProvider getTypeProvider();
+
+ /**
+ * Returns a set with all sub types of the given type. The key holds the
+ * localized simple name if localeTag is != null The value holds the
+ * qualified name of the type
+ *
+ * @param localeTag
+ * the locale tag
+ * @param typeName
+ * the type name
+ * @return all applicable type names
+ */
+ Map<String, String> getAllTypeNames(String localeTag, String typeName);
+
+ /**
+ * Creates an instance of the given qualified type.
+ *
+ * @param typeName
+ * the type name
+ * @return the class
+ * @throws ClassNotFoundException
+ * the class not found exception
+ */
+ Class<?> createType(String typeName) throws ClassNotFoundException;
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/organization/IOrganizationViewPartProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/organization/IOrganizationViewPartProvider.java
new file mode 100644
index 0000000..a349a38
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/organization/IOrganizationViewPartProvider.java
@@ -0,0 +1,28 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.organization;
+
+/**
+ * Returns the URI for the viewpart. Use "service.ranking:Integer=1000" as OSGi
+ * property.
+ */
+public interface IOrganizationViewPartProvider {
+
+ /**
+ * Returns the URI for the organization view part.
+ *
+ * @return
+ */
+ String getViewPartURI();
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/IPOSService.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/IPOSService.java
new file mode 100644
index 0000000..98fec24
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/IPOSService.java
@@ -0,0 +1,84 @@
+/*
+ *
+ * Copyright (c) 2011 - 2017 - 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
+ *
+ * Initial contribution:
+ * Loetz GmbH & Co. KG
+ *
+ */
+package org.eclipse.osbp.ui.api.pos;
+
+import org.eclipse.osbp.ui.api.statemachine.IStateMachine;
+
+/**
+ * The Interface IPOSService exposes communication link to payment terminals using ZVT protocol
+ */
+public interface IPOSService {
+
+ /**
+ * Sets the statemachine.
+ *
+ * @param statemachine the new statemachine
+ */
+ void setStatemachine(IStateMachine statemachine);
+
+ /**
+ * Open ZVT channel.
+ *
+ * @param host the host
+ * @param port the port
+ * @return true, if successful
+ */
+ boolean openZVTChannel(String host, int port);
+
+ /**
+ * Close ZVT channel.
+ */
+ void closeZVTChannel();
+
+ /**
+ * Send Zvt registration.
+ *
+ * @param password the password
+ * @param configuration the configuration
+ */
+ void zvtRegistration(String password, String configuration);
+
+ /**
+ * Send Zvt authorization.
+ *
+ * @param amount the amount
+ */
+ void zvtAuthorization(Double amount);
+
+ /**
+ * Send Zvt acknowledge.
+ */
+ void zvtAcknowledge();
+
+ /**
+ * Send Zvt reversal.
+ *
+ * @param receipt the receipt
+ */
+ void zvtReversal(String password, String receipt);
+
+ /**
+ * Gets the zvt response.
+ *
+ * @return the zvt response
+ */
+ String getZvtResponse();
+
+ /**
+ * Gets the zvt transactional data.
+ *
+ * @return the zvt transactional data
+ */
+ IZVTTransactionData getZvtTransactionData();
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/IZVTTransactionData.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/IZVTTransactionData.java
new file mode 100644
index 0000000..b77cf7f
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/IZVTTransactionData.java
@@ -0,0 +1,383 @@
+/*
+ *
+ * Copyright (c) 2011 - 2017 - 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
+ *
+ * Initial contribution:
+ * Loetz GmbH & Co. KG
+ *
+ */
+package org.eclipse.osbp.ui.api.pos;
+
+import java.nio.ByteBuffer;
+
+/**
+ * The Interface IZVTTransactionData.
+ */
+public interface IZVTTransactionData {
+
+ /**
+ * The Enum PaymentType.
+ */
+ static enum PaymentType {
+
+ /** offline mode */
+ OFFLINE,
+ /** card is checked without authorization */
+ CARDCHECKED_NOAUTHORIZATION,
+ /** online mode */
+ ONLINE,
+ /** pin mode */
+ PIN
+ };
+
+ /**
+ * Parses the.
+ *
+ * @param buffer the buffer
+ * @param position the position
+ * @param length the length
+ * @return the int
+ */
+ int parse(ByteBuffer buffer, int position, int length);
+
+ /**
+ * Gets the amount.
+ *
+ * @return the amount
+ */
+ double getAmount();
+
+ /**
+ * Sets the amount.
+ *
+ * @param amount the new amount
+ */
+ void setAmount(double amount);
+
+ /**
+ * Gets the trace number.
+ *
+ * @return the trace number
+ */
+ String getTraceNumber();
+
+ /**
+ * Sets the trace number.
+ *
+ * @param traceNumber the new trace number
+ */
+ void setTraceNumber(String traceNumber);
+
+ /**
+ * Gets the original trace number.
+ *
+ * @return the original trace number
+ */
+ String getOriginalTraceNumber();
+
+ /**
+ * Sets the original trace number.
+ *
+ * @param originalTraceNumber the new original trace number
+ */
+ void setOriginalTraceNumber(String originalTraceNumber);
+
+ /**
+ * Gets the card sequence.
+ *
+ * @return the card sequence
+ */
+ int getCardSequence();
+
+ /**
+ * Sets the card sequence.
+ *
+ * @param cardSequence the new card sequence
+ */
+ void setCardSequence(int cardSequence);
+
+ /**
+ * Gets the payment type.
+ *
+ * @return the payment type
+ */
+ PaymentType getPaymentType();
+
+ /**
+ * Sets the payment type.
+ *
+ * @param paymentType the new payment type
+ */
+ void setPaymentType(PaymentType paymentType);
+
+ /**
+ * Gets the pan efid.
+ *
+ * @return the pan efid
+ */
+ String getPan_efid();
+
+ /**
+ * Sets the pan efid.
+ *
+ * @param pan_efid the new pan efid
+ */
+ void setPan_efid(String pan_efid);
+
+ /**
+ * Gets the terminal id.
+ *
+ * @return the terminal id
+ */
+ String getTerminalId();
+
+ /**
+ * Sets the terminal id.
+ *
+ * @param terminalId the new terminal id
+ */
+ void setTerminalId(String terminalId);
+
+ /**
+ * Gets the authorization.
+ *
+ * @return the authorization
+ */
+ String getAuthorization();
+
+ /**
+ * Sets the authorization.
+ *
+ * @param authorization the new authorization
+ */
+ void setAuthorization(String authorization);
+
+ /**
+ * Gets the currency.
+ *
+ * @return the currency
+ */
+ int getCurrency();
+
+ /**
+ * Sets the currency.
+ *
+ * @param currency the new currency
+ */
+ void setCurrency(int currency);
+
+ /**
+ * Gets the blocked groups.
+ *
+ * @return the blocked groups
+ */
+ String getBlockedGroups();
+
+ /**
+ * Sets the blocked groups.
+ *
+ * @param blockedGroups the new blocked groups
+ */
+ void setBlockedGroups(String blockedGroups);
+
+ /**
+ * Gets the receipt.
+ *
+ * @return the receipt
+ */
+ String getReceipt();
+
+ /**
+ * Sets the receipt.
+ *
+ * @param receipt the new receipt
+ */
+ void setReceipt(String receipt);
+
+ /**
+ * Gets the card type.
+ *
+ * @return the card type
+ */
+ int getCardType();
+
+ /**
+ * Sets the card type.
+ *
+ * @param cardType the new card type
+ */
+ void setCardType(int cardType);
+
+ /**
+ * Gets the card type ID.
+ *
+ * @return the card type ID
+ */
+ int getCardTypeID();
+
+ /**
+ * Sets the card type ID.
+ *
+ * @param cardTypeID the new card type ID
+ */
+ void setCardTypeID(int cardTypeID);
+
+ /**
+ * Gets the geld karte.
+ *
+ * @return the geld karte
+ */
+ String getGeldKarte();
+
+ /**
+ * Sets the geld karte.
+ *
+ * @param geldKarte the new geld karte
+ */
+ void setGeldKarte(String geldKarte);
+
+ /**
+ * Gets the authorization parameter.
+ *
+ * @return the authorization parameter
+ */
+ String getAuthorizationParameter();
+
+ /**
+ * Sets the authorization parameter.
+ *
+ * @param authorizationParameter the new authorization parameter
+ */
+ void setAuthorizationParameter(String authorizationParameter);
+
+ /**
+ * Gets the contract number.
+ *
+ * @return the contract number
+ */
+ String getContractNumber();
+
+ /**
+ * Sets the contract number.
+ *
+ * @param contractNumber the new contract number
+ */
+ void setContractNumber(String contractNumber);
+
+ /**
+ * Gets the additional text.
+ *
+ * @return the additional text
+ */
+ String getAdditionalText();
+
+ /**
+ * Sets the additional text.
+ *
+ * @param additionalText the new additional text
+ */
+ void setAdditionalText(String additionalText);
+
+ /**
+ * Gets the result code AS.
+ *
+ * @return the result code AS
+ */
+ String getResultCodeAS();
+
+ /**
+ * Sets the result code AS.
+ *
+ * @param resultCodeAS the new result code AS
+ */
+ void setResultCodeAS(String resultCodeAS);
+
+ /**
+ * Gets the turnover number.
+ *
+ * @return the turnover number
+ */
+ String getTurnoverNumber();
+
+ /**
+ * Sets the turnover number.
+ *
+ * @param turnoverNumber the new turnover number
+ */
+ void setTurnoverNumber(String turnoverNumber);
+
+ /**
+ * Gets the card name.
+ *
+ * @return the card name
+ */
+ String getCardName();
+
+ /**
+ * Sets the card name.
+ *
+ * @param cardName the new card name
+ */
+ void setCardName(String cardName);
+
+ /**
+ * Gets the tlv.
+ *
+ * @return the tlv
+ */
+ String getTlv();
+
+ /**
+ * Sets the tlv.
+ *
+ * @param tlv the new tlv
+ */
+ void setTlv(String tlv);
+
+ /**
+ * Gets the transaction time.
+ *
+ * @return the transaction time
+ */
+ String getTransactionTime();
+
+ /**
+ * Sets the transaction time.
+ *
+ * @param time the new transaction time
+ */
+ void setTransactionTime(String time);
+
+ /**
+ * Gets the transaction date.
+ *
+ * @return the transaction date
+ */
+ String getTransactionDate();
+
+ /**
+ * Sets the transaction date.
+ *
+ * @param date the new transaction date
+ */
+ void setTransactionDate(String date);
+
+ /**
+ * Gets the expiry date.
+ *
+ * @return the expiry date
+ */
+ String getExpiry();
+
+ /**
+ * Sets the expiry date.
+ *
+ * @param expiry the new expiry date
+ */
+ void setExpiry(String expiry);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/report/IReportProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/report/IReportProvider.java
new file mode 100644
index 0000000..1d19243
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/report/IReportProvider.java
@@ -0,0 +1,76 @@
+package org.eclipse.osbp.ui.api.report;
+
+import java.io.InputStream;
+import java.util.Map;
+
+import org.eclipse.osbp.ui.api.datamart.IDataMart;
+import org.eclipse.osbp.ui.api.datamart.IDatamartFilterGenerator;
+import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
+import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
+import org.eclipse.osbp.ui.api.user.IUser;
+
+public interface IReportProvider {
+ public final static String APPCONTEXT_REPORT = "AppContext_Report";
+ public final static String APPCONTEXT_THEMERESOURCESERVICE = "ThemeResourceService_Report";
+ public final static String APPCONTEXT_DSLMETADATASERVICE = "DSLMetadataService_Report";
+ public final static String APPCONTEXT_USER = "User_Report";
+ public final static String APPCONTEXT_DATAMARTINSTANCE = "DatamartInstance_Report";
+ public final static String APPCONTEXT_FILTERMAP = "FilterMap_Report";
+ public final static String APPCONTEXT_PROPERTYLOOKUP = "PropertyLookup_Report";
+
+ public enum Rendering {
+ PDF_FILE(false, true, true, false, false), PDF_STREAM(false, true,
+ false, true, false),
+ /** @see {@link http://www.eclipse.org/forums/index.php/t/204085/} */
+ PDF_PRINT_STREAM(false, true, false, true, true), HTML_FILE(true,
+ false, true, false, false), HTML_STREAM(true, false, false,
+ true, false);
+
+ public boolean asHtml() {
+ return fAsHtml;
+ }
+
+ public boolean asPdf() {
+ return fAsPdf;
+ }
+
+ public boolean asFile() {
+ return fAsFile;
+ }
+
+ public boolean asStream() {
+ return fAsStream;
+ }
+
+ public boolean forPrinting() {
+ return fForPrinting;
+ }
+
+ private final boolean fAsHtml;
+ private final boolean fAsPdf;
+ private final boolean fAsFile;
+ private final boolean fAsStream;
+ private final boolean fForPrinting;
+
+ Rendering(boolean asHtml, boolean asPdf, boolean asFile,
+ boolean asStream, boolean forPrinting) {
+ fAsHtml = asHtml;
+ fAsPdf = asPdf;
+ fAsFile = asFile;
+ fAsStream = asStream;
+ fForPrinting = forPrinting;
+ }
+ }
+
+ void printReportAsPdf(String reportId, IUser user,
+ IDSLMetadataService dslMetadataService, Map<String, String> filterMap);
+
+ InputStream get(String reportId, IUser user,
+ IDSLMetadataService dslMetadataService, Map<String, String> filterMap);
+
+ InputStream get(String reportId, IUser user,
+ IDSLMetadataService dslMetadataService, Map<String, String> filterMap,
+ Rendering renderer, IThemeResourceService themeResourceService,
+ String outputPath);
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IDataProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IDataProvider.java
new file mode 100644
index 0000000..47c6837
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IDataProvider.java
@@ -0,0 +1,19 @@
+package org.eclipse.osbp.ui.api.statemachine;
+
+import java.util.Stack;
+
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.services.Query;
+
+public interface IDataProvider {
+ void initDatasource(String dtoName);
+ public interface Provider extends IStateMachineParticipant {
+ Boolean find(Provider listener, String dtoName, Query query);
+ Boolean find(Provider listener, String dtoName, String fieldname, Object search);
+ Boolean operation(Provider listener, String name, Stack<Object> parameter);
+ void addTo(Provider listener, String dtoName, String listName, IDto dto);
+ void removeFrom(Provider listener, String dtoName, String listName, IDto dto);
+ void update(Provider listener, String dtoName, IDto dto);
+ void delete(Provider listener, String dtoName, IDto dto);
+ }
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IEventSource.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IEventSource.java
new file mode 100644
index 0000000..c40e179
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IEventSource.java
@@ -0,0 +1,11 @@
+package org.eclipse.osbp.ui.api.statemachine;
+
+public interface IEventSource {
+ public interface Enabler extends IStateMachineParticipant {
+ void enable(Enabler listener, String id, Boolean enabled);
+ void append(Enabler listener, String id, String key);
+ void remove(Enabler listener, String id, int pos);
+ void caption(Enabler listener, String id, String value);
+ void image(Enabler listener, String id, String imageName);
+ }
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IPeripheral.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IPeripheral.java
new file mode 100644
index 0000000..3b0a074
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IPeripheral.java
@@ -0,0 +1,8 @@
+package org.eclipse.osbp.ui.api.statemachine;
+
+public interface IPeripheral{
+ void initDevices();
+ void releaseDevices();
+ public interface Command extends IStateMachineParticipant {
+ }
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IStateMachine.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IStateMachine.java
new file mode 100644
index 0000000..567d797
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IStateMachine.java
@@ -0,0 +1,159 @@
+package org.eclipse.osbp.ui.api.statemachine;
+
+import java.nio.channels.SelectableChannel;
+import java.util.Locale;
+import java.util.Set;
+import java.util.Stack;
+
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.services.Query;
+import org.eclipse.osbp.ui.api.message.MessageEvent;
+import org.eclipse.osbp.ui.api.message.MessageEvent.EventType;
+import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
+import org.eclipse.osbp.ui.api.report.IReportProvider;
+import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
+import org.eclipse.osbp.ui.api.user.IUser;
+import org.joda.time.DateTime;
+
+public interface IStateMachine {
+ class Data {
+ public String name;
+ public Double value;
+ public Boolean state;
+ public Object object;
+ };
+
+ String getIPAddress();
+
+ DateTime getNow();
+
+ void processEvent(IStateMachine statemachine, MessageEvent event);
+
+ void registerEnabler(IEventSource.Enabler listener);
+
+ void unregisterEnabler(IEventSource.Enabler listener);
+
+ void registerDataProvider(IDataProvider.Provider listener);
+
+ void unregisterDataProvider(IDataProvider.Provider listener);
+
+ void start();
+
+ void enable(String id, Boolean enable);
+
+ Object get(String id);
+
+ void set(String id, Object content);
+
+ void clear(String id);
+
+ void append(String id, String key);
+
+ void remove(String id, int pos);
+
+ void caption(String id, String value);
+
+ void image(String id, String imageName);
+
+ void addDataProvider(IDataProvider.Provider listener);
+
+ void removeDataProvider(IDataProvider.Provider listener);
+
+ void registerPeripheral(IPeripheral.Command listener);
+
+ void unregisterPeripheral(IPeripheral.Command listener);
+
+ Boolean find(String dtoName, String fieldName, Object search);
+
+ Boolean find(String dtoName, Query query);
+
+ void addTo(String dtoName, String listName, IDto dto);
+
+ void removeFrom(String dtoName, String listName, IDto dto);
+
+ void update(String dtoName);
+
+ void delete(String dtoName);
+
+ Boolean operation(String name, Stack<Object> parameter);
+
+ String getUserAgentInfo();
+
+ Boolean isTouchDevice();
+
+ int getSceenWidth();
+
+ int getScreenHeight();
+
+ Locale getBrowserLocale();
+
+ Boolean isHttps();
+
+ void schedule(IStateMachine statemachine, long milliseconds,
+ MessageEvent event);
+
+ Double parseDouble(String doubleStr);
+
+ String formatDouble(Double value, int length, int precision);
+
+ void setUser(IUser user);
+
+ IUser getUser();
+
+ String getUserName();
+
+ String getUserPassword();
+
+ String getUserEmail();
+
+ String getUserPosition();
+
+ String getUserPrintService();
+
+ void setLocale(Locale locale);
+
+ Locale getLocale();
+
+ Stack<Object> getParameters();
+
+ void setDslMetadataService(IDSLMetadataService dslMetadataService);
+
+ IDSLMetadataService getDslMetadataService();
+
+ void setThemeResourceService(IThemeResourceService themeResourceService);
+
+ IThemeResourceService getThemeResourceService();
+
+ String getTranslation(String token);
+
+ void closeMessage(String messageId);
+
+ void setReportProvider(IReportProvider reportprovider);
+
+ IReportProvider getReportProvider();
+
+ void openMessage(String messageId);
+
+ void openMessage(String messageId, boolean okButton);
+
+ void openQuestion(String messageId, EventType type, String yesEvent, String noEvent, String cancelEvent);
+
+ void dispatchMessages(MessageEvent event);
+
+ void clearParameters();
+
+ Object getStorage(String key, String attribute);
+
+ Set<String> getStorageAttributes(String key);
+
+ void putStorage(String key, String attribute, Object content);
+
+ void openChannel(SelectableChannel channel);
+
+ SelectableChannel getChannel();
+
+ void closeChannel();
+
+ String getLastTrigger();
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IStateMachineParticipant.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IStateMachineParticipant.java
new file mode 100644
index 0000000..f746e99
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IStateMachineParticipant.java
@@ -0,0 +1,30 @@
+package org.eclipse.osbp.ui.api.statemachine;
+
+import java.lang.reflect.Method;
+import java.util.Locale;
+
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
+
+public interface IStateMachineParticipant {
+ void setStatemachine(IStateMachine statemachine);
+
+ IStateMachine getStatemachine();
+
+ void setViewContext(IViewContext viewContext);
+
+ void init();
+
+ void setLocale(Locale locale);
+
+ Method getter(Object listener, String id);
+
+ Method setter(Object listener, String id, Class<?> parameter);
+
+ Class<?> getReturnType(Object obj, String id);
+
+ void set(Object obj, String id, Object content);
+
+ Object get(Object obj, String id);
+
+ void clear(Object obj, String id);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/themes/IThemeResourceService.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/themes/IThemeResourceService.java
new file mode 100644
index 0000000..4110a4c
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/themes/IThemeResourceService.java
@@ -0,0 +1,68 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.themes;
+
+import java.io.InputStream;
+
+import com.vaadin.server.Resource;
+
+public interface IThemeResourceService {
+
+ /** all available theme resource types */
+ static public enum ThemeResourceType {
+ /** any "big" images like background images */
+ IMAGE,
+ /** any "small" icons, mostly 16x16 px */
+ ICON,
+ /** flag icon, mostly 16x16 px */
+ FLAG,
+ }
+
+ /**
+ * Resets the base paths of the theme resource
+ */
+ void reset();
+ /**
+ * @param themeResourceType
+ * @return the file extension defined for the theme resource type
+ */
+ String getThemeResourceTypeExtension(ThemeResourceType themeResourceType);
+
+ /**
+ * @param themeResourceType
+ * @return the path defined for the theme resource type
+ */
+ String getThemeResourceTypePath(ThemeResourceType themeResourceType);
+
+ /**
+ * @param resourceID
+ * @param themeResourceType
+ * @return the full qualified uri for the resource id of the theme resource type
+ */
+ String getThemeURI(String resourceID, ThemeResourceType themeResourceType);
+
+ /**
+ * @param resourceID
+ * @param themeResourceType
+ * @return the resource for the resource id of the theme resource type
+ */
+ Resource getThemeResource(String resourceID, ThemeResourceType themeResourceType);
+
+ /**
+ * Gets the theme resource input stream.
+ *
+ * @param resourceURL the resource URL
+ * @return the theme resource input stream
+ */
+ InputStream getThemeResourceInputStream(String resourceURL);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/user/IUser.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/user/IUser.java
new file mode 100644
index 0000000..db34f9c
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/user/IUser.java
@@ -0,0 +1,199 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.ui.api.user;
+
+import java.util.Collection;
+import java.util.Locale;
+
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.osbp.ui.api.customfields.IBlobUploadComponent;
+
+/**
+ * Every user object needs to implement this interface.
+ */
+public interface IUser {
+ // to avoid dependency to publicapi
+ public static final String userClass = "userClass";
+ /**
+ * Sets the application.
+ *
+ * @param application
+ * the new application
+ */
+ void setApplication(MApplication application);
+
+ /**
+ * Returns the user name.
+ *
+ * @return
+ */
+ String getUserName();
+
+ /**
+ * Gets the layouting strategy.
+ *
+ * @return the layouting strategy
+ */
+ String getLayoutingStrategy();
+
+ /**
+ * Gets the focusing strategy.
+ *
+ * @return the focusing strategy
+ */
+ String getFocusingStrategy();
+
+ /**
+ * Gets the theme.
+ *
+ * @return the theme
+ */
+ String getTheme();
+
+ /**
+ * Gets the Print Service.
+ *
+ * @return the print service name
+ */
+ String getPrintService();
+
+ /**
+ * Sets the user name.
+ *
+ * @param userName
+ * the new user name
+ */
+ void setUserName(String userName);
+
+ /**
+ * Gets the id.
+ *
+ * @return the id
+ */
+ String getId();
+
+ /**
+ * Gets the position.
+ *
+ * @return the position
+ */
+ String getPosition();
+
+ /**
+ * Gets the extra password.
+ *
+ * @return the extra password
+ */
+ String getExtraPassword();
+
+ /**
+ * Gets the supervisor.
+ *
+ * @return the supervisor
+ */
+ boolean isSupervisor();
+
+ /**
+ * Gets the perspective id.
+ *
+ * @return the perspective id
+ */
+ String getPerspective();
+
+ /**
+ * Gets the email.
+ *
+ * @return the email
+ */
+ String getEmail();
+
+ /**
+ * Gets the blob upload component.
+ *
+ * @return the blob upload component
+ */
+ IBlobUploadComponent getBlobUploadComponent();
+
+ /**
+ * Gets the roles.
+ *
+ * @return the roles
+ */
+ Collection<String> getRoles();
+
+ /**
+ * Gets the locale.
+ *
+ * @return the locale
+ */
+ Locale getLocale();
+
+ /**
+ * Sets the locale.
+ *
+ * @param locale
+ * the new locale
+ */
+ void setLocale(Locale locale);
+
+ /**
+ * Sets the print service name.
+ *
+ * @param print service
+ * the new print service
+ */
+ void setPrintService(String printService);
+
+ /**
+ * Adds a locale listener to the service.
+ *
+ * @param listener
+ * the listener
+ */
+ void addUserLocaleListener(UserLocaleListener listener);
+
+ /**
+ * Removes the given locale listener from the service.
+ *
+ * @param listener
+ * the listener
+ */
+ void removeUserLocaleListener(UserLocaleListener listener);
+
+ /**
+ * Notifies the listener about the changed locale.
+ *
+ * @param locale
+ * the locale
+ */
+ void notifyUserLocaleChanged(Locale locale);
+
+ /**
+ * The listener interface for receiving locale events. The class that is
+ * interested in processing a locale event implements this interface, and
+ * the object created with that class is registered with a component using
+ * the component's <code>addLocaleListener</code> method. When the user's
+ * locale change event occurs, that object's appropriate method is invoked.
+ *
+ */
+ interface UserLocaleListener {
+
+ /**
+ * Notifies the listener about a locale change.
+ *
+ * @param locale
+ * the locale
+ */
+ void localeChanged(Locale locale);
+
+ }
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractAuthorization.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractAuthorization.java
new file mode 100644
index 0000000..37fc79d
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractAuthorization.java
@@ -0,0 +1,591 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class AAuthorization.
+ */
+public abstract class AbstractAuthorization {
+
+ /** The authorization groups. */
+ private final HashMap<String, AbstractRoleAuthorizationGroup> fAuthorizationGroups;
+
+ /**
+ * Instantiates a new a authorization.
+ *
+ * @param authorizationGroups
+ * the authorization groups
+ */
+ protected AbstractAuthorization(AbstractRoleAuthorizationGroup... authorizationGroups) {
+ fAuthorizationGroups = new HashMap<String, AbstractRoleAuthorizationGroup>();
+ for (AbstractRoleAuthorizationGroup authorizationGroup : authorizationGroups) {
+ fAuthorizationGroups.put(authorizationGroup.getRoleName(), authorizationGroup);
+ }
+ }
+
+ /**
+ * Gets the authorization group name.
+ *
+ * @return the authorization group name
+ */
+ final public String getAuthorizationGroupName() {
+ return this.getClass().getSimpleName();
+ }
+
+ /**
+ * Adds the role authorization group.
+ *
+ * @param roleName
+ * the role name
+ * @param group
+ * the group
+ */
+ final public void addRoleAuthorizationGroup(String roleName, AbstractRoleAuthorizationGroup group) {
+ fAuthorizationGroups.put(roleName, group);
+ }
+
+ /**
+ * Gets the role authorization group.
+ *
+ * @param role
+ * the role
+ * @return the role authorization group
+ */
+ final public AbstractRoleAuthorizationGroup getRoleAuthorizationGroup(String role) {
+ return fAuthorizationGroups.get(role);
+ }
+
+ /**
+ * Gets the authorization groups.
+ *
+ * @return the authorization groups
+ */
+ final public HashMap<String, AbstractRoleAuthorizationGroup> getAuthorizationGroups() {
+ return this.fAuthorizationGroups;
+ }
+
+ /**
+ * The Class Permission.
+ */
+ public static class Permission {
+
+ /** The Constant ANY. */
+ private final static String ANY = "*";
+
+ /** The Constant SEPARATOR. */
+ private final static String SEPARATOR = ":";
+
+ /** The type. */
+ private final Type fType;
+
+ /** The group. */
+ private final Group fGroup;
+
+ /** The class. */
+ private final String fClass;
+
+ /** The attribute. */
+ private final String fAttribute;
+
+ /** The action. */
+ private final Action fAction;
+
+ /**
+ * For blip process start.
+ *
+ * @param blipProcess
+ * the blip process
+ * @param action
+ * the action
+ * @return the permission
+ */
+ public static Permission forBlipProcess(String blipProcess, Action action) {
+ return new Permission(Group.blipProcess, blipProcess, action);
+ }
+
+ /**
+ * For blip user task execute.
+ *
+ * @param blipUserTask
+ * the blip user task
+ * @param action
+ * the action
+ * @return the permission
+ */
+ public static Permission forBlipUserTask(String blipUserTask, Action action) {
+ return new Permission(Group.blipUserTask, blipUserTask, action);
+ }
+
+ /**
+ * For entity.
+ *
+ * @param entity
+ * the entity
+ * @param action
+ * the action
+ * @return the permission
+ */
+ public static Permission forEntity(String entity, Action action) {
+ return new Permission(Group.entity, entity, action);
+ }
+
+ /**
+ * For entity property.
+ *
+ * @param entity
+ * the entity
+ * @param property
+ * the property
+ * @param action
+ * the action
+ * @return the permission
+ */
+ public static Permission forEntityProperty(String entity, String property, Action action) {
+ return new Permission(Group.entity, entity, property, action);
+ }
+
+ /**
+ * For dto.
+ *
+ * @param dto
+ * the dto
+ * @param action
+ * the action
+ * @return the permission
+ */
+ public static Permission forDto(String dto, Action action) {
+ return new Permission(Group.dto, dto, action);
+ }
+
+ /**
+ * For dto property.
+ *
+ * @param dto
+ * the dto
+ * @param property
+ * the property
+ * @param action
+ * the action
+ * @return the permission
+ */
+ public static Permission forDtoProperty(String dto, String property, Action action) {
+ return new Permission(Group.dto, dto, property, action);
+ }
+
+ /**
+ * Instantiates a new permission.
+ *
+ * @param group
+ * the group
+ * @param clas
+ * the clas
+ * @param action
+ * the action
+ */
+ public Permission(Group group, String clas, Action action) {
+ this(Type.GRANT, group, clas, null, action);
+ }
+
+ /**
+ * Instantiates a new permission.
+ *
+ * @param group
+ * the group
+ * @param clas
+ * the clas
+ * @param attribute
+ * the attribute
+ * @param action
+ * the action
+ */
+ public Permission(Group group, String clas, String attribute, Action action) {
+ this(Type.GRANT, group, clas, attribute, action);
+ }
+
+ /**
+ * Instantiates a new permission.
+ *
+ * @param type
+ * the type
+ * @param group
+ * the group
+ * @param clas
+ * the clas
+ * @param attribute
+ * the attribute
+ * @param action
+ * the action
+ */
+ public Permission(Type type, Group group, String clas, String attribute, Action action) {
+ fGroup = group;
+ fClass = clas;
+ fAttribute = attribute;
+ fAction = action;
+ fType = type;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#toString()
+ */
+ public String toString() {
+ return fGroup.toString() + SEPARATOR + fClass + SEPARATOR + fAttribute + SEPARATOR + fAction.toString();
+ }
+
+ /**
+ * Checks if is permitted.
+ *
+ * @return true, if is permitted
+ */
+ public boolean isPermitted() {
+ return fType.isPermitted();
+ }
+
+ /**
+ * Checks for veto.
+ *
+ * @return true, if successful
+ */
+ public boolean hasVeto() {
+ return !fType.isPermitted();
+ }
+
+ /**
+ * Checks if permission is for an attribute. Negative logic!
+ *
+ * @return true, if is attribute
+ */
+ public boolean isAttribute() {
+ return fAttribute != null;
+ }
+ }
+
+ /**
+ * The Enum Type.
+ */
+ public static enum Type {
+
+ /** The grant. */
+ GRANT(true),
+ /** The deny. */
+ DENY(false);
+
+ /** The permitted. */
+ private final boolean fPermitted;
+
+ /**
+ * Instantiates a new type.
+ *
+ * @param permitted
+ * the permitted
+ */
+ private Type(boolean permitted) {
+ fPermitted = permitted;
+ }
+
+ /**
+ * Checks if is permitted.
+ *
+ * @return true, if is permitted
+ */
+ public boolean isPermitted() {
+ return fPermitted;
+ }
+ }
+
+ /**
+ * The Enum Group.
+ */
+ public static enum Group {
+
+ /** The blip process start. */
+ blipProcess(Action.startable),
+
+ /** The blip user task execute. */
+ blipUserTask(Action.executable),
+
+ /** The entity. */
+ entity(Action.readable, Action.creatable, Action.updatable, Action.deletable),
+
+ /** The bean. */
+ bean(Action.readable, Action.creatable, Action.updatable, Action.deletable),
+
+ /** The dto. */
+ dto(Action.readable, Action.creatable, Action.updatable, Action.deletable);
+
+ /** The default action. */
+ private final Action fDefaultAction;
+
+ /** The any actions. */
+ private final Action[] fAnyActions;
+
+ /**
+ * Instantiates a new group.
+ *
+ * @param defaultAction
+ * the default action
+ * @param anyActions
+ * the any actions
+ */
+ private Group(Action defaultAction, Action... anyActions) {
+ fDefaultAction = defaultAction;
+ fAnyActions = anyActions;
+ }
+
+ /**
+ * By name.
+ *
+ * @param value
+ * the value
+ * @return the group
+ */
+ public static Group byName(String value) {
+ for (Group item : values()) {
+ if (value.equalsIgnoreCase(item.toString())) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Checks for default action.
+ *
+ * @return true, if successful
+ */
+ public boolean hasDefaultAction() {
+ return (fDefaultAction != null);
+ }
+
+ /**
+ * Gets the default action.
+ *
+ * @return the default action
+ */
+ public Action getDefaultAction() {
+ return fDefaultAction;
+ }
+
+ /**
+ * Gets the any actions.
+ *
+ * @return the any actions
+ */
+ public Action[] getAnyActions() {
+ return fAnyActions;
+ }
+ }
+
+ /**
+ * The Enum Action.
+ */
+ public static enum Action {
+
+ /** can a new entity instance be CREATED. */
+ creatable,
+
+ /** can an entity instance be READ. */
+ readable,
+
+ /** can an entity instance be UPDATED. */
+ updatable,
+
+ /** can an entity instance be DELETED. */
+ deletable,
+
+ /** can an entity instance be CREATED, READ, UPDATED and DELETED. */
+ any,
+ /** is the entity.property INVISIBLE, otherwise at least visible */
+ invisible,
+ /** is entity.property DISABLED, otherwise at least enabled */
+ disabled(invisible),
+ /** is entity.property NONEDITABLE, otherwise at least editable */
+ noneditable(disabled),
+
+ /** is the blip process startable. */
+ startable,
+
+ /** is the blip user task event executable. */
+ executable;
+
+ /** The depends on action. */
+ private final Action fDependsOnAction;
+
+ /** The auto granted actions. */
+ private Set<Action> fAutoGrantedActions;
+
+ /** The auto denied actions. */
+ private Set<Action> fAutoDeniedActions;
+
+ /**
+ * Instantiates a new action.
+ */
+ private Action() {
+ this(null);
+ }
+
+ /**
+ * Instantiates a new action.
+ *
+ * @param dependsOnAction
+ * the depends on action
+ */
+ private Action(Action dependsOnAction) {
+ fDependsOnAction = dependsOnAction;
+ }
+
+ /**
+ * By name.
+ *
+ * @param value
+ * the value
+ * @return the action
+ */
+ public static Action byName(String value) {
+ if (value != null) {
+ for (Action item : values()) {
+ if (value.equalsIgnoreCase(item.toString())) {
+ return item;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Check auto granted actions.
+ */
+ private void checkAutoGrantedActions() {
+ if (fAutoGrantedActions == null) {
+ fAutoGrantedActions = new HashSet<Action>();
+ if (fDependsOnAction != null) {
+ fAutoGrantedActions.add(fDependsOnAction);
+ fAutoGrantedActions.addAll(fDependsOnAction.getAutoGrantedActions());
+ }
+ }
+ }
+
+ /**
+ * Check auto denied actions.
+ */
+ private void checkAutoDeniedActions() {
+ if (fAutoDeniedActions == null) {
+ fAutoDeniedActions = new HashSet<Action>();
+ for (Action checkAction : values()) {
+ if (this.equals(checkAction.fDependsOnAction)) {
+ fAutoDeniedActions.add(checkAction);
+ fAutoDeniedActions.addAll(checkAction.getAutoDeniedActions());
+ }
+ }
+ }
+ }
+
+ /**
+ * Checks for auto granted actions.
+ *
+ * @return true, if successful
+ */
+ public boolean hasAutoGrantedActions() {
+ checkAutoGrantedActions();
+ return !fAutoGrantedActions.isEmpty();
+ }
+
+ /**
+ * Gets the auto granted actions.
+ *
+ * @return the auto granted actions
+ */
+ public Set<Action> getAutoGrantedActions() {
+ checkAutoGrantedActions();
+ return fAutoGrantedActions;
+ }
+
+ /**
+ * Checks for auto denied actions.
+ *
+ * @return true, if successful
+ */
+ public boolean hasAutoDeniedActions() {
+ checkAutoDeniedActions();
+ return !fAutoDeniedActions.isEmpty();
+ }
+
+ /**
+ * Gets the auto denied actions.
+ *
+ * @return the auto denied actions
+ */
+ public Set<Action> getAutoDeniedActions() {
+ checkAutoDeniedActions();
+ return fAutoDeniedActions;
+ }
+ }
+
+ /**
+ * The Enum PermissionResult.
+ */
+ public static enum PermissionResult {
+
+ /** The explicit granted. */
+ EXPLICIT_GRANTED(true, true),
+
+ /** The explicit denied. */
+ EXPLICIT_DENIED(true, false),
+
+ /** The implicit denied. */
+ IMPLICIT_DENIED(false, false);
+
+ /** The permitted. */
+ private final boolean fPermitted;
+
+ /** The explicit. */
+ private final boolean fExplicit;
+
+ /**
+ * Instantiates a new permission result.
+ *
+ * @param explicit
+ * the explicit
+ * @param permitted
+ * the permitted
+ */
+ private PermissionResult(boolean explicit, boolean permitted) {
+ fExplicit = explicit;
+ fPermitted = permitted;
+ }
+
+ /**
+ * Checks if is explicit.
+ *
+ * @return true, if is explicit
+ */
+ public boolean isExplicit() {
+ return fExplicit;
+ }
+
+ /**
+ * Checks if is permitted.
+ *
+ * @return true, if is permitted
+ */
+ public boolean isPermitted() {
+ return fPermitted;
+ }
+ }
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractOrgElement.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractOrgElement.java
new file mode 100644
index 0000000..6ba7d66
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractOrgElement.java
@@ -0,0 +1,130 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class APosition.
+ */
+public abstract class AbstractOrgElement implements IOrgElement {
+
+ /** The Constant serialVersionUID. */
+ private static final long serialVersionUID = 8654353192167477349L;
+
+ /** The root node. */
+ private IOrgElement rootNode;
+
+ /** The organization the node belongs to. */
+ private ISubOrganization organization;
+
+ /** The super ordinate. */
+ private IOrgElement superOrdinate = null;
+
+ /** The name of the node. */
+ private String name;
+
+ public IOrgElement getSuperOrdinate() {
+ return superOrdinate;
+ }
+
+ public void setSuperOrdinate(IOrgElement superOrdinate) {
+ this.superOrdinate = superOrdinate;
+ }
+
+ public void setRootNode(IOrgElement rootNode) {
+ this.rootNode = rootNode;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osbp.authentication.provider.IOrgNode#getName()
+ */
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osbp.authentication.provider.IOrgNode#hasSuperior()
+ */
+ @Override
+ public boolean hasSuperior() {
+ return superOrdinate != null;
+ }
+
+ /**
+ * Gets the superior org node.
+ *
+ * @return the superior org node
+ */
+ public IOrgElement getSuperiorOrgNode() {
+ return superOrdinate;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osbp.authentication.provider.IOrgNode#getSuperior()
+ */
+ @Override
+ public String getSuperior() {
+ return superOrdinate == null ? null : superOrdinate.getName();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osbp.authentication.provider.IOrgNode#hasRootNode()
+ */
+ @Override
+ public boolean hasRootNode() {
+ return superOrdinate != null;
+ }
+
+ /**
+ * Gets the root node org node.
+ *
+ * @return the root node org node
+ */
+ public IOrgElement getRootNodeOrgNode() {
+ return rootNode;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.osbp.authentication.provider.IOrgNode#getRootNode()
+ */
+ @Override
+ public String getRootNode() {
+ return rootNode == null ? null : rootNode.getName();
+ }
+
+ @Override
+ public ISubOrganization getOrganization() {
+ return organization;
+ }
+
+ public void setOrganization(ISubOrganization organization) {
+ this.organization = organization;
+ }
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractPosition.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractPosition.java
new file mode 100644
index 0000000..2974937
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractPosition.java
@@ -0,0 +1,65 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class APosition.
+ */
+public abstract class AbstractPosition extends AbstractOrgElement implements IPosition {
+
+ /** The Constant serialVersionUID. */
+ private static final long serialVersionUID = 8654353192167477349L;
+
+ /** The role names. */
+ private Set<String> roleNames = new HashSet<>();
+
+ /** The permission list. */
+ private IPermissionList permissions;
+
+ public void setRoles(Set<String> roles) {
+ this.roleNames = roles;
+ }
+
+ /**
+ * Adds a role
+ *
+ * @param role
+ * the role
+ */
+ public void addRole(String role) {
+ roleNames.add(role);
+ }
+
+ /**
+ * Gets the roles.
+ *
+ * @return the roles
+ */
+ public Collection<String> getRoles() {
+ return roleNames;
+ }
+
+ @Override
+ public IPermissionList getPermissionList() {
+ return permissions;
+ }
+
+ public void setPermissionList(IPermissionList permissions) {
+ this.permissions = permissions;
+ }
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractRoleAuthorizationGroup.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractRoleAuthorizationGroup.java
new file mode 100644
index 0000000..bdb5e2b
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractRoleAuthorizationGroup.java
@@ -0,0 +1,185 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Action;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Group;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Permission;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Type;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class ARoleAuthorizationGroup.
+ */
+public abstract class AbstractRoleAuthorizationGroup {
+
+ /** The permissions. */
+ private Map<String,Boolean> fPermissions = new HashMap<>();
+
+ /**
+ * Instantiates a new a role authorization group.
+ *
+ * @param permissionSets the permission sets
+ */
+ @SafeVarargs
+ protected AbstractRoleAuthorizationGroup(Set<Permission>... permissionSets) {
+ for (Set<Permission> permissionSet : permissionSets) {
+ for (Permission permission : permissionSet) {
+ fPermissions.put(permission.toString(), permission.isPermitted());
+ }
+ }
+ }
+
+ /**
+ * Adds the permission.
+ *
+ * @param permission the permission
+ */
+ public final void addPermission(Permission permission) {
+ fPermissions.put(permission.toString(), permission.isPermitted());
+ }
+
+ /**
+ * Gets the name.
+ *
+ * @return the name
+ */
+ public final String getName() {
+ return getRoleName();
+ }
+
+ /**
+ * Gets the role name.
+ *
+ * @return the role name
+ */
+ public final String getRoleName() {
+ return this.getClass().getSimpleName();
+ }
+
+// final public Map<String,Boolean> getPermissions() { // NOSONAR
+// return fPermissions; // NOSONAR
+// } // NOSONAR
+
+ /**
+ * Gets the permission keys.
+ *
+ * @return the permission keys
+ */
+public final Set<String> getPermissionKeys() {
+ return fPermissions.keySet();
+ }
+
+ /**
+ * Exists permission keys.
+ *
+ * @param key the key
+ * @return true, if successful
+ */
+ public final boolean existsPermissionKeys(String key) {
+ return fPermissions.containsKey(key);
+ }
+
+ /**
+ * Gets the permission.
+ *
+ * @param key the key
+ * @return the permission
+ */
+ public final boolean getPermission(String key) {
+ return fPermissions.get(key);
+ }
+
+ /**
+ * Granted.
+ *
+ * @param group the group
+ * @param clas the clas
+ * @param actions the actions
+ * @return the sets the
+ */
+ public static final Set<Permission> granted(Group group, String clas, Action... actions) {
+ Set<Permission> granted = new HashSet<>();
+ // --- any default authorizations ---
+ if (group.hasDefaultAction()) {
+ granted.add(new Permission(group, clas, group.getDefaultAction()));
+ }
+ // --- if the ANY-authorization is given ---
+ if ((actions.length == 1) && actions[0].equals(Action.any)) {
+ for (Action anyAction : group.getAnyActions()) {
+ granted.add(new Permission(group, clas, anyAction));
+ }
+ }
+ else {
+ // --- every authorization explizit ---
+ for (Action action : actions) {
+ granted.add(new Permission(group, clas, action));
+ }
+ }
+ return granted;
+ }
+
+ /**
+ * Granted.
+ *
+ * @param group the group
+ * @param clas the clas
+ * @param attribute the attribute
+ * @param actions the actions
+ * @return the sets the
+ */
+ public static final Set<Permission> granted(Group group, String clas, String attribute, Action... actions) {
+ Set<Permission> granted = new HashSet<>();
+ for (Action action : actions) {
+ // --- if the action has auto granted actions ---
+ if (action.hasAutoGrantedActions()) {
+ for (Action autoGrantedAction : action.getAutoGrantedActions()) {
+ granted.add(new Permission(Type.GRANT, group, clas, attribute, autoGrantedAction));
+ }
+ }
+ // --- grant the action itself ---
+ granted.add(new Permission(Type.GRANT, group, clas, attribute, action));
+ }
+ return granted;
+ }
+
+ /**
+ * Denied.
+ *
+ * @param group the group
+ * @param clas the clas
+ * @param attribute the attribute
+ * @param actions the actions
+ * @return the sets the
+ */
+ public static final Set<Permission> denied(Group group, String clas, String attribute, Action... actions) {
+ Set<Permission> denied = new HashSet<>();
+ for (Action action : actions) {
+ // --- if the action has auto denied actions ---
+ if (action.hasAutoDeniedActions()) {
+ for (Action autoDeniedAction : action.getAutoDeniedActions()) {
+ denied.add(new Permission(Type.DENY, group, clas, attribute, autoDeniedAction));
+ }
+ }
+ // --- deny the action itself ---
+ denied.add(new Permission(Type.DENY, group, clas, attribute, action));
+ }
+ return denied;
+ }
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractSubOrganization.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractSubOrganization.java
new file mode 100644
index 0000000..f3484ce
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractSubOrganization.java
@@ -0,0 +1,126 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class ASubOrganization.
+ */
+public class AbstractSubOrganization extends AbstractOrgElement implements ISubOrganization {
+
+ /** The title of an organization. */
+ private String title;
+ /** The position map of all positions including of its sub organizations. */
+ private Map<String, IPosition> positionMap = new HashMap<String, IPosition>();
+ /**
+ * The position map only of the own positions without its sub organizations
+ * .
+ */
+ private Map<String, IPosition> ownPositionMap = new HashMap<String, IPosition>();
+ /** The sub organization map. */
+ private Map<String, ISubOrganization> subOrgMap = new HashMap<String, ISubOrganization>();
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.osbp.authentication.provider.ISubOrganization#getFilterValueList
+ * ()
+ */
+ @Override
+ public List<String> getFilterValueList() {
+ return null;
+ }
+
+ /**
+ * Gets the title.
+ *
+ * @return the title
+ */
+ public String getTitle() {
+ return title;
+ }
+
+ /**
+ * Sets the title.
+ *
+ * @param title
+ * the new title
+ */
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.osbp.ui.api.useraccess.IOrganizationService#getPosition(java
+ * .lang.String)
+ */
+ @Override
+ public IPosition getPosition(String name) {
+ addSubOrgPositions();
+ return positionMap.get(name);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.osbp.ui.api.useraccess.IOrganizationService#getPositions()
+ */
+ @Override
+ final public Collection<IPosition> getPositions() {
+ addSubOrgPositions();
+ return positionMap.values();
+ }
+
+ /**
+ * Maintains the position map up to date.
+ */
+ private void addSubOrgPositions() {
+ for (ISubOrganization subOrg : getSubOrganizations()) {
+ if(subOrg instanceof AbstractSubOrganization) {
+ ((AbstractSubOrganization)subOrg).addSubOrgPositions();
+ }
+ for (IPosition subOrgPosition : subOrg.getOwnPositions()) {
+ positionMap.put(subOrgPosition.getName(), subOrgPosition);
+ }
+ }
+ }
+
+ @Override
+ final public Collection<IPosition> getOwnPositions() {
+ return ownPositionMap.values();
+ }
+
+ final public void setPosition(IPosition position) {
+ positionMap.put(position.getName(), position);
+ ownPositionMap.put(position.getName(), position);
+ }
+
+ final public Collection<ISubOrganization> getSubOrganizations() {
+ return subOrgMap.values();
+ }
+
+ public void setSubOrganization(ISubOrganization subOrg) {
+ subOrgMap.put(subOrg.getName(), subOrg);
+ }
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IBlipProcessPermissions.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IBlipProcessPermissions.java
new file mode 100644
index 0000000..a318eb8
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IBlipProcessPermissions.java
@@ -0,0 +1,34 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+import java.util.List;
+
+/**
+ * Container with all blip process permissions.
+ * <br>
+ * All existing roles from authorization and all mentioned blips are inspected.
+ */
+public interface IBlipProcessPermissions {
+ /**
+ * @param blipProcessName the blip process requested
+ * @return list of strings containing all roles, which can start the process
+ */
+ List<String> getProcessStartableRoles(String blipProcessName);
+ /**
+ * @param blipProcessName the blip process requested
+ * @param blipHumanTaskName the blip human task requested
+ * @return list of strings containing all roles, which can start the process
+ */
+ List<String> getHumanTaskExecutableRoles(String blipProcessName, String blipHumanTaskName);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IOrgElement.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IOrgElement.java
new file mode 100644
index 0000000..9e0e539
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IOrgElement.java
@@ -0,0 +1,62 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IPosition.
+ */
+public interface IOrgElement {
+
+ /**
+ * Gets the name.
+ *
+ * @return the name
+ */
+ String getName();
+
+ /**
+ * Checks for superior.
+ *
+ * @return true, if successful
+ */
+ boolean hasSuperior();
+
+ /**
+ * Gets the superior.
+ *
+ * @return the superior
+ */
+ String getSuperior();
+
+ /**
+ * Checks for root node.
+ *
+ * @return true, if successful
+ */
+ boolean hasRootNode();
+
+ /**
+ * Gets the root node.
+ *
+ * @return the root node
+ */
+ String getRootNode();
+
+ /**
+ * Gets the organization the node belongs to.
+ *
+ * @return the organization
+ */
+ ISubOrganization getOrganization();
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IOrganizationService.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IOrganizationService.java
new file mode 100644
index 0000000..141a6ff
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IOrganizationService.java
@@ -0,0 +1,61 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+import java.util.Collection;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IOrganizationService.
+ */
+public interface IOrganizationService {
+
+ /**
+ * Gets the organization.
+ *
+ * @param name the name
+ * @return the organization
+ */
+ AbstractSubOrganization getOrganization(final String name);
+
+ /**
+ * Gets the organizations.
+ *
+ * @return the organizations
+ */
+ Collection<AbstractSubOrganization> getOrganizations();
+
+ /**
+ * Gets the organization names.
+ *
+ * @return the organization names
+ */
+ Collection<String> getOrganizationNames();
+
+ /**
+ * Gets all defined roles.
+ *
+ * @return the roles
+ */
+ Collection<String> getRoles();
+
+ /**
+ * @return instance containing all blip process permissions
+ */
+ IBlipProcessPermissions getBlipProcessPermissions();
+
+ /**
+ * Reloads the models and refreshes internal structures.
+ */
+ void reload();
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IPermissionList.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IPermissionList.java
new file mode 100644
index 0000000..65130e9
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IPermissionList.java
@@ -0,0 +1,43 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+import java.util.Collection;
+import java.util.Set;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IPermissionList.
+ */
+public interface IPermissionList {
+
+ /** The Constant NEGATIVE_POSTFIX. */
+ public static final String NEGATIVE_POSTFIX = "_FALSE";
+
+ /**
+ * Sets the.
+ *
+ * @param roles the roles
+ * @param authorizationServices the authorization services
+ * @return the i permission list
+ */
+ IPermissionList set(Collection<String> roles, AbstractAuthorization authorizationService);
+
+ /**
+ * Gets the permissions.
+ *
+ * @return the permissions
+ */
+ Set<String> getPermissions();
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IPosition.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IPosition.java
new file mode 100644
index 0000000..87f3800
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IPosition.java
@@ -0,0 +1,12 @@
+package org.eclipse.osbp.ui.api.useraccess;
+
+public interface IPosition extends IOrgElement {
+
+ /**
+ * Gets the permission list.
+ *
+ * @return the permission list
+ */
+ IPermissionList getPermissionList();
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/ISubOrganization.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/ISubOrganization.java
new file mode 100644
index 0000000..8c51dd1
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/ISubOrganization.java
@@ -0,0 +1,79 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+import java.util.Collection;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface ISubOrganization.
+ */
+@SuppressWarnings("all")
+public interface ISubOrganization extends IOrgElement {
+
+ /**
+ * Gets the filter value list.
+ *
+ * @return the filter value list
+ */
+ public java.util.List getFilterValueList();
+
+ /**
+ * Gets the position node.
+ *
+ * @param name
+ * the name
+ * @return the position node
+ */
+ IPosition getPosition(final String name);
+
+ /**
+ * Sets the position node.
+ *
+ * @param name
+ * the name
+ * @return the position node
+ */
+ void setPosition(IPosition position);
+
+ /**
+ * Gets the position nodes including its sub organizations.
+ *
+ * @return the position nodes
+ */
+ Collection<IPosition> getPositions();
+
+ /**
+ * Gets the position nodes without its sub organizations.
+ *
+ * @return the position nodes
+ */
+ Collection<IPosition> getOwnPositions();
+
+ /**
+ * gets the sub organizations.
+ *
+ * @return the sub organizations
+ */
+ Collection<ISubOrganization> getSubOrganizations();
+
+ /**
+ * Sets the sub organization.
+ *
+ * @param subOrg
+ * the sub organization
+ * @return the position node
+ */
+ void setSubOrganization(ISubOrganization subOrg);
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IUserAccessService.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IUserAccessService.java
new file mode 100644
index 0000000..21ba4b6
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IUserAccessService.java
@@ -0,0 +1,451 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.ui.api.complexdatacontainer.IComplexDataContainer;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Permission;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.PermissionResult;
+import org.eclipse.osbp.ui.api.userfilter.UserFilterMap;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IUserAccessService.
+ */
+public interface IUserAccessService extends IComplexDataContainer {
+
+ public final String ADMINISTRATOR = "Administrator";
+ // in case we have no organizational information
+ public final String DEFAULTUSERROLE = "Users";
+ public final String DEFAULTADMINROLE = "Admins";
+
+ /**
+ * Gets the authorizations.
+ *
+ * @return the authorizations
+ */
+ Object getAuthorizations();
+
+ /**
+ * Gets the user.
+ *
+ * @return the user
+ */
+ IDto getUser();
+
+ /**
+ * Gets the profileimage id.
+ *
+ * @return the profileimage id
+ */
+ String getProfileimageId();
+
+ /**
+ * Gets the id.
+ *
+ * @return the id
+ */
+ String getId();
+
+ /**
+ * Gets the position name.
+ *
+ * @return the position name
+ */
+ String getPositionName();
+
+ /**
+ * Gets the email.
+ *
+ * @return the email
+ */
+ String getEmail();
+
+ /**
+ * Gets the position.
+ *
+ * @return the position
+ */
+ AbstractPosition getPosition();
+
+ /**
+ * Gets the perspective id.
+ *
+ * @return the perspective id
+ */
+ String getPerspective();
+
+ /**
+ * Gets the extra password.
+ *
+ * @return the extra password
+ */
+ String getExtraPassword();
+
+ /**
+ * Checks if the password is reset.
+ *
+ * @return true, if the password is reset.
+ */
+ boolean isPasswordReset();
+
+ /**
+ * Gets the roles.
+ *
+ * @return the roles
+ */
+ Collection<String> getRoles();
+
+ /**
+ * Gets the permissions.
+ *
+ * @return the permissions
+ */
+ IPermissionList getPermissions();
+
+ /**
+ * Checks if is permitted.
+ *
+ * @param permission
+ * the permission
+ * @return the permission result
+ */
+ PermissionResult isPermitted(Permission permission);
+
+ /**
+ * Checks if is authenticated.
+ *
+ * @return true, if is authenticated
+ */
+ boolean isAuthenticated();
+
+ /**
+ * Authenticate.
+ *
+ * @param portal
+ * the portal
+ * @param username
+ * the username
+ * @param password
+ * the password
+ * @return true, if successful
+ */
+ boolean authenticate(String portal, String username, String password);
+
+ /**
+ * Authenticate.
+ *
+ * @param portalId
+ * the portal id
+ * @param username
+ * the username
+ * @param password
+ * the password
+ * @return true, if successful
+ */
+ boolean authenticate(int portalId, String username, String password);
+
+ /**
+ * Authenticate.
+ *
+ * @param username
+ * the username
+ * @param password
+ * the password
+ * @return true, if successful
+ */
+ boolean authenticate(String username, String password);
+
+ /**
+ * Sets the session attribute.
+ *
+ * @param key
+ * the key
+ * @param value
+ * the value
+ */
+ void setSessionAttribute(String key, Object value);
+
+ /**
+ * Gets the session attribute.
+ *
+ * @param key
+ * the key
+ * @return the session attribute
+ */
+ Object getSessionAttribute(String key);
+
+ /**
+ * Logout.
+ */
+ void logout();
+
+ /**
+ * Gets the all users.
+ *
+ * @return the all users
+ */
+ Set<String> getAllUsers();
+
+ /**
+ * Gets the all users positions.
+ *
+ * @return the all users positions
+ */
+ Map<String, String> getAllUsersPositions();
+
+ /**
+ * Gets the all emails.
+ *
+ * @return the all emails
+ */
+ Set<String> getAllEmails();
+
+ /**
+ * Find users for position.
+ *
+ * @param orgNode
+ * the org node
+ * @return the sets the
+ */
+ Set<String> findUsersForPosition(String orgNode);
+
+ /**
+ * Gets the all positions.
+ *
+ * @return the all positions
+ */
+ Set<AbstractPosition> getAllPositions();
+
+ /**
+ * Find user account.
+ *
+ * @param username
+ * the username
+ * @return the user account dto
+ */
+ IDto findUserAccount(String username);
+
+ /**
+ * Find position for user.
+ *
+ * @param username
+ * the username
+ * @return the a position
+ */
+ AbstractPosition findPositionForUser(String username);
+
+ /**
+ * Find position for position name.
+ *
+ * @param positionName
+ * the position name
+ * @return the a position
+ */
+ AbstractPosition findPositionForPositionName(String positionName);
+
+ /**
+ * Find roles for user.
+ *
+ * @param username
+ * the username
+ * @return the collection
+ */
+ Collection<String> findRolesForUser(String username);
+
+ /**
+ * Find permissions for user.
+ *
+ * @param username
+ * the username
+ * @return the i permission list
+ */
+ IPermissionList findPermissionsForUser(String username);
+
+ /**
+ * Check user name uniqueness for logged in users.
+ *
+ * @param username
+ * the user name
+ * @return true, if successful
+ */
+ boolean checkLoggedInUsernameExists(String username);
+
+ /**
+ * Check user name uniqueness independent of a successful log in.
+ *
+ * @param username
+ * the user name
+ * @return true, if successful
+ */
+ boolean checkNotLoggedInUsernameExists(String username);
+
+ /**
+ * Check email uniqueness.
+ *
+ * @param email
+ * the email
+ * @return true, if successful
+ */
+ boolean checkEmailExists(String email);
+
+ /**
+ * Lock account.
+ *
+ * @param username
+ * the username
+ * @param locked
+ * the locked
+ */
+ void lockAccount(String username, boolean locked);
+
+ /**
+ * Enable account.
+ *
+ * @param username
+ * the username
+ * @param enabled
+ * the enabled
+ */
+ void enableAccount(String username, boolean enabled);
+
+ /**
+ * Sets the cookie hash.
+ *
+ * @param username
+ * the username
+ * @param cookie
+ * the cookie
+ */
+ void setCookieHash(String username, String cookie);
+
+ /**
+ * Checks if is cookie valid.
+ *
+ * @param username
+ * the username
+ * @param cookie
+ * the cookie
+ * @return true, if is cookie valid
+ */
+ boolean isCookieValid(String username, String cookie);
+
+ /**
+ * Encrypt password.
+ *
+ * @param decryptedPassword
+ * the decrypted password
+ * @return the string
+ */
+ String encryptPassword(String decryptedPassword);
+
+ /**
+ * Checks if is account locked.
+ *
+ * @param username
+ * the username
+ * @return true, if is account locked
+ */
+ boolean isAccountLocked(String username);
+
+ /**
+ * Checks if the account is still not registered.
+ *
+ * @param username
+ * the username
+ * @return true, the account is still not registered
+ */
+ boolean isAccountNotRegistered(String username);
+
+ /**
+ * Checks if is account enabled.
+ *
+ * @param username
+ * the username
+ * @return true, if is account enabled
+ */
+ boolean isAccountEnabled(String username);
+
+ /**
+ * Encrypt passwords.
+ */
+ void encryptPasswords();
+
+ /**
+ * Gets the all user account roles.
+ *
+ * @return the all user account roles
+ */
+ Map<String, Collection<String>> getAllUserAccountRoles();
+
+ /**
+ * Gets the locale tag.
+ *
+ * @return the locale tag
+ */
+ String getLocaleTag();
+
+ /**
+ * Gets the layouting strategy.
+ *
+ * @return the layouting strategy
+ */
+ String getLayoutingStrategy();
+
+ /**
+ * Gets the focusing strategy.
+ *
+ * @return the focusing strategy
+ */
+ String getFocusingStrategy();
+
+ /**
+ * Gets the theme.
+ *
+ * @return the theme
+ */
+ String getTheme();
+
+ /**
+ * Gets the prints the service.
+ *
+ * @return the prints the service
+ */
+ String getPrintService();
+
+ /**
+ * Gets the user filter map.
+ *
+ * @return the user filter map
+ */
+ UserFilterMap getUserFilterMap();
+
+ /**
+ * Checks if is superuser.
+ *
+ * @return true, if is superuser
+ */
+ boolean isSuperuser();
+
+ /**
+ * Checks if is supervisor.
+ *
+ * @return true, if is supervisor
+ */
+ boolean isSupervisor();
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/userfilter/UserFilterMap.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/userfilter/UserFilterMap.java
new file mode 100644
index 0000000..74cdb3d
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/userfilter/UserFilterMap.java
@@ -0,0 +1,42 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.api.userfilter;
+
+import java.util.HashMap;
+import java.util.List;
+
+public class UserFilterMap {
+ /** The in filter map. */
+ private HashMap<String, List<String>> inFilterMap = new HashMap<>();
+
+ /** The not filter map. */
+ private HashMap<String, List<String>> notFilterMap = new HashMap<>();
+
+ /**
+ * Gets the in filter map.
+ *
+ * @return the in filter map
+ */
+ public HashMap<String, List<String>> getInFilterMap() {
+ return inFilterMap;
+ }
+
+ /**
+ * Gets the not filter map.
+ *
+ * @return the not filter map
+ */
+ public HashMap<String, List<String>> getNotFilterMap() {
+ return notFilterMap;
+ }
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/AbstractInitializationListener.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/AbstractInitializationListener.java
new file mode 100644
index 0000000..9be66a8
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/AbstractInitializationListener.java
@@ -0,0 +1,83 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.initialization;
+
+import java.util.HashSet;
+import java.util.Set;
+
+public abstract class AbstractInitializationListener implements IInitializationListener {
+
+ private IInitializationNotification lastNotification = null;
+
+ @Override
+ public void resendLastNotification() {
+ if (lastNotification instanceof InitializationDoneNotification) {
+ notifyInitializationDone(lastNotification);
+ }
+ else if (lastNotification instanceof InitializationNotification) {
+ notifyInitializationStep(lastNotification);
+ }
+ }
+
+ private Set<IInitializationProvider> initializationProviders = new HashSet<IInitializationProvider>();
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.ui.initialization.IInitializationListener#bindInitializationProvider(org.eclipse.osbp.ui.initialization.AbstractInitializationProvider)
+ */
+ @Override
+ public void addInitializationProvider(IInitializationProvider provider) {
+ initializationProviders.add(provider);
+ provider.addInitializationListener(this);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.ui.initialization.IInitializationListener#unbindInitializationProvider(org.eclipse.osbp.ui.initialization.IInitializationProvider)
+ */
+ @Override
+ public void removeInitializationProvider(IInitializationProvider provider) {
+ initializationProviders.remove(provider);
+ provider.removeInitializationListener(this);
+ }
+
+ protected void removeAllInitializationProviders() {
+ for (IInitializationProvider provider : initializationProviders) {
+ removeInitializationProvider(provider);
+ }
+ }
+
+ protected boolean hasInitializationToBeDone() {
+ for (IInitializationProvider provider : initializationProviders) {
+ if (provider.hasInitializationToBeDone()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.ui.initialization.IInitializationListener#notifyInitializationStep(org.eclipse.osbp.ui.initialization.InitializationNotification)
+ */
+ @Override
+ public synchronized void notifyInitializationStep(IInitializationNotification notification) {
+ lastNotification = notification;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.ui.initialization.IInitializationListener#notifyInitializationDone(org.eclipse.osbp.ui.initialization.InitializationDoneNotification)
+ */
+ @Override
+ public synchronized void notifyInitializationDone(IInitializationNotification notification) {
+ lastNotification = notification;
+ // unbindInitializationProvider(notification.getInitializationProvider());
+ }
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/AbstractInitializationProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/AbstractInitializationProvider.java
new file mode 100644
index 0000000..f3b9009
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/AbstractInitializationProvider.java
@@ -0,0 +1,68 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.initialization;
+
+import java.util.HashSet;
+import java.util.Set;
+
+public abstract class AbstractInitializationProvider implements IInitializationProvider {
+
+ private Set<AbstractInitializationListener> initializationListeners = new HashSet<AbstractInitializationListener>();
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.ui.initialization.IInitializationProvider#hasInitializationToBeDone()
+ */
+ @Override
+ abstract public boolean hasInitializationToBeDone();
+
+ abstract public String getInitializationProviderTitle();
+
+ abstract public int getInitializationTotalSteps();
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.ui.initialization.IInitializationProvider#addInitializationListener(org.eclipse.osbp.ui.initialization.AbstractInitializationListener)
+ */
+ @Override
+ public void addInitializationListener(AbstractInitializationListener listener) {
+ initializationListeners.add(listener);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.ui.initialization.IInitializationProvider#removeInitializationListener(org.eclipse.osbp.ui.initialization.AbstractInitializationListener)
+ */
+ @Override
+ public void removeInitializationListener(IInitializationListener listener) {
+ initializationListeners.remove(listener);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.ui.initialization.IInitializationProvider#notifyInitializationStep(org.eclipse.osbp.ui.initialization.InitializationNotification)
+ */
+ @Override
+ public void notifyInitializationStep(IInitializationNotification notification) {
+ for (IInitializationListener listener : initializationListeners) {
+ listener.notifyInitializationStep(notification);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.ui.initialization.IInitializationProvider#notifyInitializationDone()
+ */
+ @Override
+ public void notifyInitializationDone() {
+ InitializationDoneNotification notification = new InitializationDoneNotification(this);
+ for (IInitializationListener listener : initializationListeners) {
+ listener.notifyInitializationDone(notification);
+ }
+ }
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/IInitializationListener.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/IInitializationListener.java
new file mode 100644
index 0000000..8370c3c
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/IInitializationListener.java
@@ -0,0 +1,26 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.initialization;
+
+public interface IInitializationListener {
+
+ public void addInitializationProvider(IInitializationProvider provider);
+
+ public void removeInitializationProvider(IInitializationProvider provider);
+
+ public void notifyInitializationStep(IInitializationNotification notification);
+
+ public void notifyInitializationDone(IInitializationNotification notification);
+
+ public void resendLastNotification();
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/IInitializationNotification.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/IInitializationNotification.java
new file mode 100644
index 0000000..dda8874
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/IInitializationNotification.java
@@ -0,0 +1,36 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.initialization;
+
+public interface IInitializationNotification {
+
+ public abstract IInitializationProvider getInitializationProvider();
+
+ /**
+ * Gets the recommended progress value.
+ *
+ * It's calculated by the actual steps number, total count of steps and optional the progress of the actual step
+ *
+ * @return the recommended progress value
+ */
+ public abstract double getRecommendedProgressValue();
+
+ /**
+ * Gets the recommended progress title.
+ *
+ * @param withPercent the with percent
+ * @return the recommended progress title
+ */
+ public abstract String getRecommendedProgressTitle(boolean withPercent);
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/IInitializationProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/IInitializationProvider.java
new file mode 100644
index 0000000..3abee92
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/IInitializationProvider.java
@@ -0,0 +1,30 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.initialization;
+
+public interface IInitializationProvider {
+
+ abstract public boolean hasInitializationToBeDone();
+
+ public abstract void addInitializationListener(
+ AbstractInitializationListener listener);
+
+ public abstract void removeInitializationListener(
+ IInitializationListener listener);
+
+ public abstract void notifyInitializationStep(
+ IInitializationNotification notification);
+
+ public abstract void notifyInitializationDone();
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/InitializationDoneNotification.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/InitializationDoneNotification.java
new file mode 100644
index 0000000..41b4e50
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/InitializationDoneNotification.java
@@ -0,0 +1,26 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.initialization;
+
+/**
+ * The Class InitializationDoneNotification.
+ */
+public final class InitializationDoneNotification extends InitializationNotification {
+
+ /**
+ * Instantiates a new initialization done notification.
+ */
+ public InitializationDoneNotification(AbstractInitializationProvider initializationProvider) {
+ super(initializationProvider);
+ }
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/InitializationNotification.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/InitializationNotification.java
new file mode 100644
index 0000000..94d99f1
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/InitializationNotification.java
@@ -0,0 +1,155 @@
+/**
+ *
+ * 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 implementation
+ */
+package org.eclipse.osbp.ui.initialization;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Notification with information about the actual initialization.
+ */
+public class InitializationNotification implements IInitializationNotification {
+
+ /** The provider title. */
+ private final IInitializationProvider initializationProvider;
+
+ /** The provider title. */
+ private final String providerTitle;
+
+ /** flag is the total initialization has been done. */
+ private final boolean done;
+
+ /** The number of steps done. */
+ private final int stepsDone;
+
+ /** The step title. */
+ private final String stepTitle;
+
+ /** The total steps. */
+ private final int totalSteps;
+
+ /** The progress of step. */
+ private final double progressOfStep;
+
+ /**
+ * Instantiates a new initialization notification for a done.
+ *
+ * @param providerTitle the provider title
+ * @param totalSteps the total steps
+ */
+ protected InitializationNotification(AbstractInitializationProvider initializationProvider) {
+ this(initializationProvider, null, initializationProvider.getInitializationTotalSteps(), 1.0);
+ }
+
+ /**
+ * Instantiates a new initialization notification.
+ *
+ * @param providerTitle the provider title
+ * @param totalSteps the total steps
+ * @param stepTitle the step title
+ * @param numberOfStep the number of step
+ */
+ public InitializationNotification(AbstractInitializationProvider initializationProvider, String stepTitle, int stepsDone) {
+ this(initializationProvider, stepTitle, stepsDone, -1.0);
+ }
+
+ /**
+ * Instantiates a new initialization notification.
+ *
+ * @param providerTitle the provider title
+ * @param totalSteps the count of total steps
+ * @param stepTitle the actual steps title
+ * @param numberOfStep the number of actual step
+ * @param progressOfStep the progress of actual step
+ */
+ public InitializationNotification(AbstractInitializationProvider initializationProvider, String stepTitle, int stepsDone, double progressOfStep) {
+ this.initializationProvider = initializationProvider;
+ this.providerTitle = initializationProvider.getInitializationProviderTitle().trim();
+ this.totalSteps = Math.max(1, initializationProvider.getInitializationTotalSteps());
+ if (stepTitle == null || stepTitle.trim().isEmpty()) {
+ this.stepTitle = null;
+ }
+ else {
+ this.stepTitle = stepTitle.trim();
+ }
+ if (stepsDone < 1) {
+ this.stepsDone = 1;
+ }
+ else if (stepsDone > totalSteps) {
+ this.stepsDone = totalSteps;
+ }
+ else {
+ this.stepsDone = stepsDone;
+ }
+ // --- if a negative value is set, no progress of the actual step is available
+ if (progressOfStep < 0.0) {
+ this.progressOfStep = -1.0;
+ }
+ // --- otherwise the
+ else {
+ this.progressOfStep = Math.min(1.0, progressOfStep);
+ }
+ this.done = ((this.stepsDone >= this.totalSteps) && (progressOfStep >= 1.0));
+ }
+
+ public boolean isDone() {
+ return done;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.ui.initialization.IInitializationNotification#getInitializationProvider()
+ */
+ @Override
+ public IInitializationProvider getInitializationProvider() {
+ return initializationProvider;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.ui.initialization.IInitializationNotification#getRecommendedProgressValue()
+ */
+ @Override
+ public double getRecommendedProgressValue() {
+ // --- calculate the progress value depending on steps level ---
+ double progressValue = ((double)stepsDone - 1) / ((double)totalSteps);
+ // --- if available add the step specific progress value ---
+ if (progressOfStep > 0.0) {
+ progressValue += progressOfStep / ((double)totalSteps);
+ }
+ // --- ensure a progress value between 0.0 and 1.0
+ return Math.min(1.0, Math.max(0.0, progressValue));
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.ui.initialization.IInitializationNotification#getRecommendedProgressTitle(boolean)
+ */
+ @Override
+ public String getRecommendedProgressTitle(boolean withPercent) {
+ String progressTitle = providerTitle+" ("+stepsDone+"/"+totalSteps+")";
+ if (done) {
+ progressTitle += " done";
+ }
+ else if (stepTitle != null) {
+ progressTitle += " "+stepTitle;
+ }
+ if (withPercent) {
+ double progressValue = getRecommendedProgressValue();
+ int percent = (int)(progressValue * 100.0);
+ if ((percent == 0) && (progressValue > 0.0)) {
+ percent = 1;
+ }
+ if ((percent == 100) && (progressValue < 1.0)) {
+ percent = 99;
+ }
+ progressTitle += " - "+percent+"%";
+ }
+ return progressTitle;
+ }
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..03f7b09
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,95 @@
+<?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 implementation API and implementation -->
+<!--#======================================================================= -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.osbp.releng.maven</groupId>
+ <artifactId>org.eclipse.osbp.releng.maven.parent.tycho</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <relativePath/>
+ </parent>
+
+ <groupId>org.eclipse.osbp.ui.api</groupId>
+ <artifactId>org.eclipse.osbp.ui.api.aggregator</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <packaging>pom</packaging>
+
+ <url>${osbp.site.repository.url}</url>
+ <scm>
+ <url>${osbp.scm.url}</url>
+ <connection>${osbp.scm.connection}</connection>
+ <developerConnection>${osbp.scm.connection.dev}</developerConnection>
+ <tag>HEAD</tag>
+ </scm>
+ <distributionManagement>
+ <site>
+ <id>gh-pages</id>
+ <name>OSBP GitHub Pages</name>
+ <url>${distribution.site.url}</url>
+ </site>
+ </distributionManagement>
+
+ <properties>
+ <osbp.gitrepo.name>${project.groupId}</osbp.gitrepo.name>
+ </properties>
+
+ <modules>
+ <module>org.eclipse.osbp.ui.api</module>
+ <module>org.eclipse.osbp.ui.api.feature</module>
+ </modules>
+
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
+ <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>