--- /dev/null
+GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ {description}
+ Copyright (C) {year} {fullname}
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ {signature of Ty Coon}, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
--- /dev/null
+# Build Bonita from sources
+
+[](https://travis-ci.org/Bonitasoft-Community/Build-Bonita)
+
+[](https://github.com/Bonitasoft-Community/Build-Bonita/actions)
+
+
+## Overview
+
+A bash script is provided to build the whole Bonita Community Edition solution from sources publicly available.
+
+It clones Git repositories and build all Bonita components in the right order to let you generate the Bonita Bundle and
+the Bonita Studio.
+
+
+## Requirements
+
+- Disk space: around 15 GB free space. Around 4 GB of dependencies will be downloaded (sources, 3rd party dependencies,
+...). A fast internet connection is recommended.
+- OS: Linux, MacOS and Windows (see test environments list below)
+- Java: Oracle/OpenJDK Java 8 (âš you cannot use Java 11 to build Bonita).
+
+
+## Instructions
+
+1. Clone this repository
+1. Checkout the [branch/tag](#branches-and-tags) related to the Bonita version you want to build
+1. Run `bash build-script.sh` in a terminal (on Windows, use git-bash as terminal i.e. the bash shell included with Git for Windows)
+1. Once finished, the following binaries are available
+ 1. Bonita Studio (aka Bonita Development Suite): `bonita-studio/all-in-one/target` (only zip archive, no installer)
+ 1. Bonita Bundle (aka Bonita Runtime): `bonita-distrib/tomcat/target`
+
+**Notes**
+- If you want to make 100% sure that you do a clean build from scratch, run the following commands:
+```bash
+rm -rf ~/.m2/repository/org/bonitasoft/
+rm -rf ~/.m2/repository/.cache
+rm -rf ~/.m2/repository/.meta
+rm -rf ~/.gradle/caches
+find -type d -name ".gradle" -prune -exec rm -rf {} \;
+find -type d -name target -prune -exec rm -rf {} \;
+```
+- No tests are run by the script (at least no back end tests). If you want to run some tests, go to the directory
+ related to the Bonita component you want to test, and follow instructions (generally available in README file)
+- The script does not produce Studio installers (required license for proprietary software).
+
+
+## Test environments
+
+CI builds are run on push to master/dev branches and Pull Requests (see badges on top of this page)
+- Linux: Ubuntu 18.04 (Travis CI)
+- MacOS: Catalina (GitHub Actions)
+- Windows: Windows Server 2019 DataCenter (GitHub Actions)
+
+
+## Issues
+
+If you face any issue with this build script or for any question, please report it on the [build-bonita GitHub issues tracker](https://github.com/Bonitasoft-Community/Build-Bonita/issues).
+
+You can also ask for help on [Bonita Community forum](https://community.bonitasoft.com/questions-and-answers).
+
+
+## <a name="branches-and-tags"></a> Branches and Tags
+
+The use of `Build-Bonita` branch or tag depends of the Bonita version you want to build.
+
+| Bonita version | Build-Bonita branch or tag |
+| -------- | ----- |
+| latest maintenance version | `master` branch |
+| old version | related tag (see the [tags](#tags) section below) |
+| next Bonita GA version | `dev` branch |
+
+**Notes**
+- `Build-Bonita` currently does not provide support for building Bonita SNAPSHOT versions aka next maintenance or
+development versions. See [#41](https://github.com/Bonitasoft-Community/Build-Bonita/issue/41) for such a support
+
+
+### Branches
+
+`Build-Bonita` uses the same branch names as the Bonita repositories
+- `master` for latest available GA or maintenance version. It also contains latest build improvements related to the
+solution provided by `Build-Bonita`
+- `dev` for next Bonita version while developments are in progress
+
+
+### Tags
+
+Tags are only available to build Bonita GA (i.e. 7.9.0, 7.10.0, ....) or maintenance (i.e. 7.7.5, 7.9.4, ....) versions,
+not for development versions.
+
+### <a name="tag-scheme"></a> Tag scheme
+- prior Bonita 7.10, `Build-Bonita` tags exactly match the Bonita version
+- as of Bonita 7.10, tags use the `<bonita_version>-<increment>` like `7.10.0-1`. This allows to track improvements or
+bug fixes applied to `Build-Bonita` for a given Bonita version
+
+Examples
+
+| Bonita version | Build-Bonita tag |
+| -------- | ----- |
+| 7.10.1 | 7.10.1-1, 7.10.1-2, .... |
+| 7.10.0 | 7.10.0-1, 7.10.0-2, .... |
+| 7.9.4 | 7.9.4 |
+| 7.7.5 | 7.7.5 |
+
+
+# Developing on Build-Bonita
+
+The following is for contributors to this repository.
+
+Notice that a lot of actions are manual, so if it's becoming boring for you, fill an issue to discuss about it, then
+provide a Pull Request to automate this and simplify our life
+
+## Add support for a new version
+
+Notice that most of the actions described below can be done directly using the GitHub website, for instance
+- file edition
+- branch and pull request creation
+
+See [GitHub help](https://help.github.com/en/github/managing-files-in-a-repository/editing-files-in-your-repository) for
+more details
+
+### Bonita maintenance version
+
+- from GitHub interface, edit `build-script.sh`on `master` branch (you can follow [GitHub help](https://help.github.com/en/github/managing-files-in-a-repository/editing-files-in-your-repository))
+- update the `build-script.sh` file and update the `BONITA_VERSION` variable
+- propose file changes by creating a new branch, for instance `maintenance_7.10.2`
+- [create a Pull Request](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request) targeting `master`
+- wait for build to pass, this should work without any other modifications
+- [merge the Pull Request](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/merging-a-pull-request) after successful build
+
+### Bonita development version
+
+- create a new branch starting from the `dev` branch, for instance `dev_7.11.0.W10`
+- update the `build-script.sh` file and update the `BONITA_VERSION` variable
+- [create a Pull Request](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request) targeting the `dev` branch
+- wait for build to run
+- failures often happen because of new components to be added or removed, build options of some components to be updated
+ - try to fix, then commit and iterate until build pass
+ - see [#32](https://github.com/Bonitasoft-Community/Build-Bonita/pull/32) or
+ [#48](https://github.com/Bonitasoft-Community/Build-Bonita/pull/48) for instance
+- [merge the Pull Request](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/merging-a-pull-request) after successful build
+
+
+### Merging master and dev branches
+
+Follow the same lifecycle as Bonita component repositories. Merge are currently done manually by `Build-Bonita`
+contributors
+- `master` --> `dev`: all the time, especially after adding support for a new maintenance version. Allow to get new
+improvements applied to maintenance versions, avoid subsequent merge conflicts, ...
+- `dev` --> `master`: on GA release, `master` is going to become the maintenance branch for the new Bonita released
+version. It is highly advised to do the merge in a dedicated branch as some issue occurred at that stage in the past
+ - first, ensure that `master` has been merged into`dev`
+ - create a new `bonita_7.10.0_GA` branch starting from `master` branch
+ - merge `dev` into `bonita_7.10.0_GA`
+ - [create a Pull Request](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request) from `bonita_7.10.0_GA` targeting the `master` branch
+ - [merge the Pull Request](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/merging-a-pull-request) into `master` when the build passed (eventually after fixing any issues related to the merge)
+
+
+## New Release
+
+Release are cut when
+- a new Bonita version (GA or maintenance) is supported by `Build-Bonita`
+- significant improvements have been made in the `Build-Bonita` build script for the latest supported Bonita version
+
+### Create a GitHub release
+
+A new release can be create by following the [GitHub help](https://help.github.com/en/github/administering-a-repository/managing-releases-in-a-repository#creating-a-release)
+- for `Tag version`, use a value that follows the [Tag Scheme](#tag-scheme). The tag will be created when the release
+will be published
+- for `Target`
+ - usually, keep the `master` branch except if new commits that you don't want to integrate for the release are already
+ available in the branch
+ - in that case, choose a dedicated commit
+ - **important**: ensure that the build to pass on the chosen branch or commit used to create the release
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="Japan Digital Studio" uid="org.bonitasoft.studio.product" id="org.bonitasoft.studio.product" application="org.bonitasoft.studio.application.application" version="7.13.0" useFeatures="true" includeLaunchers="true">
+
+ <configIni use="default">
+ </configIni>
+
+ <launcherArgs>
+ <programArgsLin>-clean
+ </programArgsLin>
+ <vmArgs>-Xmx1g -Xms512m -Dosgi.requiredJavaVersion=11 -Dfile.encoding=UTF8
+ </vmArgs>
+ <vmArgsMac>-XstartOnFirstThread
+ </vmArgsMac>
+ <vmArgsWin>-Dgreclipse.nonlocking=true
+ </vmArgsWin>
+ </launcherArgs>
+
+ <windowImages/>
+
+ <splash
+ location="org.bonitasoft.studio"
+ startupProgressRect="4,345,679,5"
+ startupMessageRect="223,190,250,25"
+ startupForegroundColor="FFFCFC" />
+ <launcher name="BonitaStudioCommunity">
+ <macosx icon="icons/bonitasoft-icon-128-128-transparent.icns"/>
+ <win useIco="true">
+ <ico path="icons/bonitasoft.ico"/>
+ <bmp/>
+ </win>
+ </launcher>
+
+ <vm>
+ <linux include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</linux>
+ <macos include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</macos>
+ <windows include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</windows>
+ </vm>
+
+ <license>
+ <url>http://www.gnu.org/licenses/gpl-2.0.html</url>
+ <text>
+ Copyright (C) 2021 Kyoto Prefecture
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2.0 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+ </text>
+ </license>
+
+ <plugins>
+ </plugins>
+
+ <features>
+ <feature id="studio-feature"/>
+ <feature id="studio-bos-specific-feature"/>
+ <feature id="bos-branding-feature"/>
+ <feature id="rootfiles-feature"/>
+ </features>
+
+ <configurations>
+ <plugin id="org.apache.felix.scr" autoStart="true" startLevel="1" />
+ <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="0" />
+ <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
+ <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" />
+ <plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />
+ <property name="branding.version" value="${branding.version}" />
+ <property name="osgi.nls.warnings" value="ignore" />
+ <property name="product.version" value="${project.version}" />
+ <property name="portal.version" value="${bundle.version}" />
+ <property name="engine.version" value="${engine.version}" />
+ <property name="osgi.instance.area" value="@noDefault" />
+ <property name="eclipse.buildId" value="${unqualifiedVersion}.${buildQualifier}" />
+ <property name="eclipse.log.level" value="INFO" />
+ <property name="file.encoding" value="UTF-8" />
+ </configurations>
+
+ <preferencesInfo>
+ <targetfile overwrite="false"/>
+ </preferencesInfo>
+
+ <cssInfo>
+ </cssInfo>
+
+</product>
--- /dev/null
+##### Properties used only in this file #####
+img.folder=${basedir}/installer/images
+shortcut.base=BonitaStudioCommunity
+
+##### Properties used by build file #####
+project.file=${basedir}/installer/installer_project_template.xml
+##### Properties used by the project file #####
+enable.uninstaller=${enable.uninstaller}
+
+
+#Product
+vendor=JapanDigital
+product.short.name=KyousouCommunity
+product.full.name=Kyousou Community
+product.version=${project.version}
+branding.version=${branding.version}
+
+#Folders
+bitrock.output=${bitrock.install}/output
+
+#Shortcuts
+shortcut.comment=Starts ${product.full.name}
+shortcut.name=${product.short.name}-${branding.version}
+
+mac.shortcut.name=${shortcut.base}-${branding.version}.app
+windows.shortcut.name=${shortcut.base}.exe
+windows64.shortcut.name=${shortcut.base}.exe
+linux.shortcut.name=${shortcut.base}
+
+linux.shortcut=${studio.dir}/${linux.shortcut.name}
+windows.shortcut=${studio.dir}/${windows.shortcut.name}
+windows64.shortcut=${studio.dir}/${windows64.shortcut.name}
+
+#Resources
+license=${studio.dir}/gpl-2.0.txt
+wizard.image=${img.folder}/icon-64-64.png
+logo=${img.folder}/topRight.png
+leftImage=${img.folder}/leftImage.png
+splash=${img.folder}/splash.png
+titlebar.image=${img.folder}/icon-installer-48.png
+windows.ico=${img.folder}/windows.ico
+mac.icns=${mac.studio.dir}/${mac.shortcut.name}/Contents/Resources/bonitasoft-icon-128-128-transparent.icns
+mac.installer.icns=${img.folder}/install.icns
+slide1=${img.folder}/slide01-01.png
+slide2=${img.folder}/slide02-01.png
+slide3=${img.folder}/slide03-01.png
+
+#path from install dir (runtime) to xpm file
+linux.icon=${all.in.one.foler}/icon.xpm
--- /dev/null
+<project>
+ <shortName>@product.short.name@</shortName>
+ <fullName>@product.full.name@</fullName>
+ <version>@branding.version@</version>
+ <outputDirectory>@bitrock.output@</outputDirectory>
+ <installerFilename>@installer.name@</installerFilename>
+ <licenseFile>@license@</licenseFile>
+ <licenseFileEncoding>utf-8</licenseFileEncoding>
+ <logoImage>@logo@</logoImage>
+ <leftImage>@leftImage@</leftImage>
+ <splashImage>@splash@</splashImage>
+ <allowLanguageSelection>1</allowLanguageSelection>
+ <wmImage>@titlebar.image@</wmImage>
+ <windowsExecutableIcon>@windows.ico@</windowsExecutableIcon>
+ <osxApplicationBundleIcon>@mac.installer.icns@</osxApplicationBundleIcon>
+ <osxPlatforms>osx-intel osx-x86_64</osxPlatforms>
+ <createOsxBundleZip>1</createOsxBundleZip>
+ <createUninstaller>@enable.uninstaller@</createUninstaller>
+ <slideShowLoop>1</slideShowLoop>
+ <slideShowTiming>8</slideShowTiming>
+ <slideShowImageList>
+ <slideShowImage>
+ <path>@slide1@</path>
+ </slideShowImage>
+ <slideShowImage>
+ <path>@slide2@</path>
+ </slideShowImage>
+ <slideShowImage>
+ <path>@slide3@</path>
+ </slideShowImage>
+ </slideShowImageList>
+ <singleInstanceCheck>1</singleInstanceCheck>
+ <overrideGtkButtonText>1</overrideGtkButtonText>
+ <compressionAlgorithm>zip</compressionAlgorithm>
+ <allowedLanguages>en es fr ja pt_BR</allowedLanguages>
+ <customLanguageFileList>
+ <language>
+ <code>en</code>
+ <file>i18n/messages.properties</file>
+ <encoding>iso8859-1</encoding>
+ <resolveUCN>1</resolveUCN>
+ </language>
+ <language>
+ <code>fr</code>
+ <file>i18n/messages_fr.properties</file>
+ <encoding>iso8859-1</encoding>
+ <resolveUCN>1</resolveUCN>
+ </language>
+ <language>
+ <code>es</code>
+ <file>i18n/messages_es.properties</file>
+ <encoding>iso8859-1</encoding>
+ <resolveUCN>1</resolveUCN>
+ </language>
+ <language>
+ <code>ja</code>
+ <file>i18n/messages_ja.properties</file>
+ <encoding>iso8859-1</encoding>
+ <resolveUCN>1</resolveUCN>
+ </language>
+ <language>
+ <code>pt_BR</code>
+ <file>i18n/messages_pt_BR.properties</file>
+ <encoding>iso8859-1</encoding>
+ <resolveUCN>1</resolveUCN>
+ </language>
+ </customLanguageFileList>
+ <preBuildActionList>
+ <substitute>
+ <encoding>iso8859-1</encoding>
+ <files>${build_project_directory}/i18n/*.properties</files>
+ <type>regexp</type>
+ <substitutionList>
+ <substitution>
+ <pattern>\\:</pattern>
+ <value>:</value>
+ </substitution>
+ <substitution>
+ <pattern>\\!</pattern>
+ <value>!</value>
+ </substitution>
+ </substitutionList>
+ </substitute>
+ </preBuildActionList>
+ <preInstallationActionList>
+ <setInstallerVariable>
+ <!-- Set default path to C: on Windows -->
+ <name>installdir</name>
+ <value>${env(SYSTEMDRIVE)}/@product.short.name@-${product_version}</value>
+ <ruleList>
+ <platformTest type="windows" />
+ </ruleList>
+ </setInstallerVariable>
+ <setInstallerVariable>
+ <!-- Set default path to /Applications on OSX -->
+ <name>installdir</name>
+ <value>${platform_install_prefix}</value>
+ <ruleList>
+ <platformTest type="osx" />
+ </ruleList>
+ </setInstallerVariable>
+ <setInstallerVariable>
+ <!-- 32 bits -->
+ <name>windowsExecName</name>
+ <value>@windows.shortcut.name@</value>
+ <ruleList>
+ <platformTest type="windows" />
+ </ruleList>
+ </setInstallerVariable>
+ </preInstallationActionList>
+ <postInstallationActionList>
+ <!-- <runProgram>
+ <program>cmd</program>
+ <programArguments>/C netsh advfirewall firewall add rule name="${windowsExecName}" dir=in action=allow program="${installdir}\${windowsExecName}"</programArguments>
+ <progressText>Configuring Windows Firewall...</progressText>
+ <ruleList>
+ <firewallTest>
+ <type>enabled</type>
+ </firewallTest>
+ <platformTest type="windows" />
+ </ruleList>-->
+ </runProgram>
+ <!-- <runProgram>
+ <program>cmd</program>
+ <programArguments>/C netsh advfirewall firewall add rule name="OpenJDK Platform binary" dir=in action=allow program="${installdir}\jre\bin\javaw.exe"</programArguments>
+ <progressText>Configuring Windows Firewall...</progressText>
+ <ruleList>
+ <firewallTest>
+ <type>enabled</type>
+ </firewallTest>
+ <platformTest type="windows" />
+ </ruleList>
+ </runProgram>-->
+ <setInstallerVariable persist="1">
+ <name>ini_file</name>
+ <value>${installdir}/configuration/config.ini</value>
+ <ruleList>
+ <platformTest>
+ <negate>1</negate>
+ <type>osx</type>
+ </platformTest>
+ </ruleList>
+ </setInstallerVariable>
+ <setInstallerVariable persist="1">
+ <name>ini_file</name>
+ <value>${installdir}/@mac.shortcut.name@/Contents/Eclipse/configuration/config.ini</value>
+ <ruleList>
+ <platformTest type="osx" />
+ </ruleList>
+ </setInstallerVariable>
+ <iniFileSet>
+ <file>${ini_file}</file>
+ <section>Language</section>
+ <key>osgi.nl</key>
+ <value>${installation_language_code}</value>
+ </iniFileSet>
+ <createSymLink>
+ <explanation>@shortcut.comment@</explanation>
+ <linkName>~/Desktop/@product.short.name@-${product_version}</linkName>
+ <target>${installdir}/@mac.shortcut.name@</target>
+ <ruleList>
+ <platformTest>
+ <type>osx</type>
+ </platformTest>
+ </ruleList>
+ </createSymLink>
+ <setInstallerVariableFromScriptOutput>
+ <exec>xdg-user-dir</exec>
+ <execArgs>DESKTOP</execArgs>
+ <name>desktop_path</name>
+ <abortOnError>0</abortOnError>
+ <showMessageOnError>0</showMessageOnError>
+ <ruleList>
+ <platformTest>
+ <type>linux</type>
+ </platformTest>
+ <programTest>
+ <condition>is_in_path</condition>
+ <name>xdg-user-dir</name>
+ </programTest>
+ </ruleList>
+ </setInstallerVariableFromScriptOutput>
+ <if>
+ <actionList>
+ <setInstallerVariableFromScriptOutput>
+ <exec>xdg-user-dir</exec>
+ <execArgs>DESKTOP</execArgs>
+ <name>desktop_path</name>
+ <abortOnError>0</abortOnError>
+ <showMessageOnError>0</showMessageOnError>
+ </setInstallerVariableFromScriptOutput>
+ </actionList>
+ <conditionRuleList>
+ <platformTest>
+ <type>linux</type>
+ </platformTest>
+ <programTest>
+ <condition>is_in_path</condition>
+ <name>xdg-user-dir</name>
+ </programTest>
+ </conditionRuleList>
+ <elseActionList>
+ <setInstallerVariable name="desktop_path" value="${installdir}" />
+ </elseActionList>
+ </if>
+
+ <if>
+ <actionList>
+ <writeFile>
+ <path>${desktop_path}/@product.short.name@-${product_version}.desktop</path>
+ <encoding>utf-8</encoding>
+ <text>
+ [Desktop Entry]
+ Version=1.0
+ Encoding=UTF-8
+ Name=@product.short.name@-${product_version}
+ GenericName=@product.short.name@-${product_version}
+ Comment=@shortcut.comment@
+ Exec=${installdir}/@linux.shortcut.name@
+ Icon=${installdir}/bonitasoft-icon-128-128-transparent.png
+ Terminal=false
+ Type=Application
+ </text>
+ </writeFile>
+ <changePermissions permissions="0755"
+ files="${desktop_path}/@product.short.name@-${product_version}.desktop" />
+ <addFilesToUninstaller files="${desktop_path}/@product.short.name@-${product_version}.desktop" />
+ </actionList>
+ <conditionRuleList>
+ <platformTest>
+ <type>linux</type>
+ </platformTest>
+ </conditionRuleList>
+ </if>
+ <if>
+ <actionList>
+ <changePermissions permissions="0755" files="${installdir}/jre/bin/java" />
+ </actionList>
+ <conditionRuleList>
+ <platformTest>
+ <negate>1</negate>
+ <type>windows</type>
+ </platformTest>
+ </conditionRuleList>
+ </if>
+ <substitute>
+ <encoding>utf-8</encoding>
+ <files>${installdir}/@mac.shortcut.name@/Contents/Eclipse/@product.short.name@.ini</files>
+ <type>exact</type>
+ <substitutionList>
+ <substitution>
+ <pattern>-startup</pattern>
+ <value>-vm
+${installdir}/@mac.shortcut.name@/Contents/Eclipse/jre/Contents/Home/bin/java
+-startup</value>
+ </substitution>
+ </substitutionList>
+ <ruleList>
+ <platformTest>
+ <type>osx</type>
+ </platformTest>
+ </ruleList>
+ </substitute>
+ <changePermissions permissions="0755" files="${installdir}/@mac.shortcut.name@/Contents/Eclipse/jre/Contents/Home/{lib/*,bin/*}">
+ <ruleList>
+ <platformTest>
+ <type>osx</type>
+ </platformTest>
+ </ruleList>
+ </changePermissions>
+ </postInstallationActionList>
+ <finalPageActionList>
+ <runProgram>
+ <ruleList>
+ <platformTest>
+ <type>osx</type>
+ </platformTest>
+ </ruleList>
+ <program>open</program>
+ <programArguments>"${installdir}/@mac.shortcut.name@" &</programArguments>
+ <progressText>${msg(launch)} ${product_fullname}</progressText>
+ </runProgram>
+ <runProgram>
+ <ruleList>
+ <platformTest>
+ <type>linux</type>
+ </platformTest>
+ </ruleList>
+ <program>${installdir}/@linux.shortcut.name@</program>
+ <programArguments>&</programArguments>
+ <progressText>${msg(launch)} ${product_fullname}</progressText>
+ </runProgram>
+ <runProgram>
+ <ruleList>
+ <platformTest>
+ <type>windows</type>
+ </platformTest>
+ </ruleList>
+ <program>${installdir}\${windowsExecName}</program>
+ <programArguments>&</programArguments>
+ <progressText>${msg(launch)} ${product_fullname}</progressText>
+ </runProgram>
+ <!-- <launchBrowser>
+ <show>0</show>
+ <url>http://www.bonitasoft.com/bos_redirect.php?bos_redirect_id=126&bos_redirect_product=bos&bos_version=${product_version}&os=${platform_name}&arch=@os_arch@&edition=community&lang=${installation_language_code}&utm_source=bonita_wizard&utm_medium=referral&utm_campaign=bonita_install</url>
+ </launchBrowser>-->
+ </finalPageActionList>
+
+ <enableRollback>0</enableRollback>
+ <enableTimestamp>1</enableTimestamp>
+ <vendor>@vendor@</vendor>
+ <componentList>
+ <component>
+ <name>install</name>
+ <description>Install distribution component</description>
+ <canBeEdited>1</canBeEdited>
+ <selected>1</selected>
+ <show>1</show>
+ <desktopShortcutList>
+ <shortcut>
+ <comment>@shortcut.comment@</comment>
+ <exec></exec>
+ <icon></icon>
+ <name>@shortcut.name@</name>
+ <path></path>
+ <platforms>windows</platforms>
+ <runInTerminal>0</runInTerminal>
+ <windowsExec>"${installdir}/${windowsExecName}"</windowsExec>
+ <windowsExecArgs></windowsExecArgs>
+ <windowsIcon></windowsIcon>
+ <windowsPath>${installdir}/</windowsPath>
+ </shortcut>
+ <shortcut>
+ <comment>@shortcut.comment@</comment>
+ <exec>${installdir}/@linux.shortcut.name@</exec>
+ <icon>${installdir}/@linux.icon@</icon>
+ <name>@shortcut.name@</name>
+ <path>${installdir}</path>
+ <platforms>linux</platforms>
+ <runInTerminal>0</runInTerminal>
+ <windowsExec></windowsExec>
+ <windowsExecArgs></windowsExecArgs>
+ <windowsIcon></windowsIcon>
+ <windowsPath></windowsPath>
+ </shortcut>
+ </desktopShortcutList>
+ <folderList>
+ <folder>
+ <description>Linux Program Files</description>
+ <destination>${installdir}</destination>
+ <name>linux_programfiles</name>
+ <platforms>linux</platforms>
+ <distributionFileList>
+ <distributionDirectory allowWildcards="1">
+ <origin>@studio.dir@/**</origin>
+ </distributionDirectory>
+ </distributionFileList>
+ </folder>
+ <folder>
+ <description>Linux Program Files x64</description>
+ <destination>${installdir}</destination>
+ <name>linux_programfiles_64</name>
+ <platforms>linux-x64</platforms>
+ <distributionFileList>
+ <distributionDirectory allowWildcards="1">
+ <origin>@studio.dir@/**</origin>
+ </distributionDirectory>
+ </distributionFileList>
+ </folder>
+ <folder>
+ <description>Windows Program Files</description>
+ <destination>${installdir}</destination>
+ <name>win_programfiles</name>
+ <platforms>windows</platforms>
+ <distributionFileList>
+ <distributionDirectory allowWildcards="1">
+ <origin>@studio.dir@/**</origin>
+ </distributionDirectory>
+ </distributionFileList>
+ </folder>
+ <folder>
+ <description>OSX Program Files</description>
+ <destination>${installdir}</destination>
+ <name>osx_programfiles</name>
+ <platforms>osx</platforms>
+ <distributionFileList>
+ <distributionDirectory allowWildcards="1">
+ <origin>@mac.studio.dir@/**</origin>
+ </distributionDirectory>
+ </distributionFileList>
+ </folder>
+ </folderList>
+ <startMenuShortcutList>
+ <startMenuShortcut>
+ <comment>@shortcut.comment@</comment>
+ <name>@shortcut.name@</name>
+ <runInTerminal>0</runInTerminal>
+ <windowsExec>${installdir}/${windowsExecName}</windowsExec>
+ <windowsExecArgs></windowsExecArgs>
+ <windowsIcon></windowsIcon>
+ <windowsPath>${installdir}/</windowsPath>
+ </startMenuShortcut>
+ <startMenuShortcut>
+ <comment>Uninstall ${product_fullname}</comment>
+ <name>Uninstall ${product_fullname}</name>
+ <runInTerminal>0</runInTerminal>
+ <windowsExec>${installdir}/${uninstallerName}.exe</windowsExec>
+ <windowsExecArgs></windowsExecArgs>
+ <windowsIcon></windowsIcon>
+ <windowsPath>${installdir}/</windowsPath>
+ </startMenuShortcut>
+ </startMenuShortcutList>
+ </component>
+ </componentList>
+ <parameterList>
+ <directoryParameter>
+ <name>installdir</name>
+ <description>Installer.Parameter.installdir.description</description>
+ <explanation>Installer.Parameter.installdir.explanation</explanation>
+ <value></value>
+ <default>${platform_install_prefix}/@product.short.name@-${product_version}</default>
+ <allowEmptyValue>0</allowEmptyValue>
+ <ask>yes</ask>
+ <cliOptionName>prefix</cliOptionName>
+ <mustBeWritable>yes</mustBeWritable>
+ <mustExist>0</mustExist>
+ <validationActionList>
+ <throwError>
+ <text>${msg(installdir.must.be.empty.folder)}</text>
+ <ruleList>
+ <platformTest>
+ <negate>1</negate>
+ <type>osx</type>
+ </platformTest>
+ <fileTest path="${installdir}" condition="is_not_empty"/>
+ </ruleList>
+ </throwError>
+ <throwError>
+ <text>${msg(installdir.must.be.empty.folder)}</text>
+ <ruleList>
+ <platformTest type="osx" />
+ <fileTest path="${installdir}/@mac.shortcut.name@" condition="is_not_empty"/>
+ </ruleList>
+ </throwError>
+ <throwError>
+ <text>${msg(not.enough.diskspace)}</text>
+ <ruleList>
+ <checkFreeDiskSpace>
+ <logic>less</logic>
+ <path>${installdir}</path>
+ <!-- ${required_diskspace} is automatically calculated by
+ InstallBuilder with all the files packed -->
+ <size>${required_diskspace}</size>
+ </checkFreeDiskSpace>
+ </ruleList>
+ </throwError>
+ </validationActionList>
+ </directoryParameter>
+ <parameterGroup>
+ <name>antivirusPage</name>
+ <title>${msg(antivirus.detected.title)}</title>
+ <explanation></explanation>
+ <insertAfter>installation</insertAfter>
+ <parameterList>
+ <linkParameter>
+ <name>visitMicrosoftSuuport</name>
+ <description>${msg(visit.microsoft.website)}</description>
+ <explanation>${msg(antivirus.detected.message)}</explanation>
+ <clickedActionList>
+ <launchBrowser>
+ <url>http://www.bonitasoft.com/bos_redirect.php?bos_redirect_id=714&bos_redirect_product=bos&bos_version=@product.version@</url>
+ </launchBrowser>
+ </clickedActionList>
+ </linkParameter>
+ </parameterList>
+ <ruleList>
+ <antivirusTest type="disabled" />
+ </ruleList>
+ </parameterGroup>
+ </parameterList>
+ <preUninstallationActionList>
+ <deleteFile>
+ <path>${desktop_path}/@product.short.name@-${product_version}.desktop</path>
+ </deleteFile>
+ <showQuestion>
+ <default>yes</default>
+ <text>${msg(keep.workspace.msg)}</text>
+ <title>${msg(keep.workspace.title)}</title>
+ <variable>saveWorkspace</variable>
+ </showQuestion>
+ </preUninstallationActionList>
+ <postUninstallationActionList>
+ <deleteFile>
+ <path>${installdir}</path>
+ <ruleList>
+ <isFalse>
+ <value>${saveWorkspace}</value>
+ </isFalse>
+ </ruleList>
+ </deleteFile>
+ </postUninstallationActionList>
+</project>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.bonitasoft.studio</groupId>
+ <artifactId>studio</artifactId>
+ <version>7.13.0</version>
+ <packaging>pom</packaging>
+ <name>Bonita Studio</name>
+ <properties>
+ <tychoVersion>2.3.0</tychoVersion>
+ <java.version>11</java.version>
+ <os-jvm-flags></os-jvm-flags>
+ <branding.version>2021.2-u0</branding.version>
+ <bundle.version>${project.version}</bundle.version>
+ <ui.designer.version>1.13.20</ui.designer.version>
+ <business.data.repository.version>${project.version}</business.data.repository.version>
+ <engine.version>${project.version}</engine.version>
+ <platform.version>${project.parent.version}</platform.version>
+ <tomcat.version>9.0.52</tomcat.version>
+ <image-overlay-plugin.version>1.1.2</image-overlay-plugin.version>
+ <bonita-project-report-model.version>0.0.3</bonita-project-report-model.version>
+ <p2MirrorUrl>https://osdn.dl.osdn.net/storage/g/j/ja/japandigitalstudio/p2/4.20</p2MirrorUrl>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <tycho.localArtifacts>ignore</tycho.localArtifacts>
+ <maven.compiler.source>${java.version}</maven.compiler.source>
+ <maven.compiler.target>${java.version}</maven.compiler.target>
+ <groovy-maven-plugin.groovy.version>3.0.8</groovy-maven-plugin.groovy.version>
+ <!-- Must be synched with org.bonitasoft.studio.common.repository.core.maven.model.DefaultPluginVersions.MAVEN_DEPENDENCY_PLUGIN_VERSION -->
+ <maven-dependency-plugin.version>3.1.2</maven-dependency-plugin.version>
+ </properties>
+ <modules>
+ <module>patched-plugins</module>
+ </modules>
+
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <version>4.2.1</version>
+ </plugin>
+ <plugin>
+ <groupId>org.bonitasoft.maven</groupId>
+ <artifactId>image-overlay-plugin</artifactId>
+ <version>${image-overlay-plugin.version}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.8.1</version>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.22.2</version>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-clean-plugin</artifactId>
+ <version>3.1.0</version>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-versions-plugin</artifactId>
+ <version>${tychoVersion}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-eclipserun-plugin</artifactId>
+ <version>${tychoVersion}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-packaging-plugin</artifactId>
+ <version>${tychoVersion}</version>
+ <configuration>
+ <strictBinIncludes>false</strictBinIncludes>
+ <strictVersions>false</strictVersions>
+ <archive>
+ <addMavenDescriptor>false</addMavenDescriptor>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>${maven-dependency-plugin.version}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>3.3.0</version>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <version>1.8</version>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>3.0.0</version>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-surefire-plugin</artifactId>
+ <version>${tychoVersion}</version>
+ <configuration>
+ <useUIHarness>false</useUIHarness>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>3.0.0</version>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-compiler-plugin</artifactId>
+ <version>${tychoVersion}</version>
+ <configuration>
+ <compilerArgument>-warn:+discouraged,forbidden</compilerArgument>
+ <useProjectSettings>false</useProjectSettings>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>target-platform-configuration</artifactId>
+ <version>${tychoVersion}</version>
+ <configuration>
+ <executionEnvironment>JavaSE-11</executionEnvironment>
+ <environments>
+ <environment>
+ <os>linux</os>
+ <ws>gtk</ws>
+ <arch>x86_64</arch>
+ </environment>
+ <environment>
+ <os>macosx</os>
+ <ws>cocoa</ws>
+ <arch>x86_64</arch>
+ </environment>
+ <environment>
+ <os>win32</os>
+ <ws>win32</ws>
+ <arch>x86_64</arch>
+ </environment>
+ </environments>
+ <target>
+ <artifact>
+ <groupId>org.bonitasoft.studio</groupId>
+ <artifactId>platform</artifactId>
+ <version>${platform.version}</version>
+ </artifact>
+ </target>
+ <filters>
+ <filter>
+ <type>eclipse-plugin</type>
+ <id>org.bonitasoft.studioEx.console.libs</id>
+ <removeAll />
+ </filter>
+ </filters>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.gmaven</groupId>
+ <artifactId>groovy-maven-plugin</artifactId>
+ <version>2.1.1</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.codehaus.groovy</groupId>
+ <artifactId>groovy-xml</artifactId>
+ <version>${groovy-maven-plugin.groovy.version}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.gmaven</groupId>
+ <artifactId>groovy-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>initialize</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <source>
+ project.properties["branding.version.short"] = "${branding.version}".replaceAll('-.*', '')
+ </source>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-versions-plugin</artifactId>
+ </plugin>
+ <!-- enable tycho build extension -->
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-maven-plugin</artifactId>
+ <version>${tychoVersion}</version>
+ <extensions>true</extensions>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>target-platform-configuration</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.bonitasoft.engine.data</groupId>
+ <artifactId>bonita-business-data-generator</artifactId>
+ <version>${engine.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.bonitasoft.maven</groupId>
+ <artifactId>bonita-project-report-model</artifactId>
+ <version>${bonita-project-report-model.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.bonitasoft.web</groupId>
+ <artifactId>ui-designer-artifact-builder</artifactId>
+ <version>${ui.designer.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.13.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+ <repositories>
+ <repository>
+ <id>ossrh</id>
+ <url>https://oss.sonatype.org/content/repositories/snapshots</url>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ </repository>
+ </repositories>
+
+ <profiles>
+ <profile>
+ <id>jdk11-tests</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-toolchains-plugin</artifactId>
+ <version>1.1</version>
+ <executions>
+ <execution>
+ <phase>validate</phase>
+ <goals>
+ <goal>toolchain</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <toolchains>
+ <jdk>
+ <version>11</version>
+ <vendor>OpenJDK</vendor>
+ </jdk>
+ </toolchains>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
+ <id>default</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ <modules>
+ <module>platform</module>
+ <module>tests-dependencies</module>
+ <module>bundles</module>
+ </modules>
+ </profile>
+ <profile>
+ <id>all-in-one</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ <modules>
+ <module>all-in-one</module>
+ </modules>
+ </profile>
+ <profile>
+ <id>it</id>
+ <modules>
+ <module>tests</module>
+ </modules>
+ </profile>
+ <profile>
+ <id>macosx-jvm-flags</id>
+ <activation>
+ <os>
+ <family>mac</family>
+ </os>
+ </activation>
+ <properties>
+ <os-jvm-flags>-XstartOnFirstThread</os-jvm-flags>
+ </properties>
+ </profile>
+ </profiles>
+
+
+</project>
--- /dev/null
+#!/bin/bash
+
+set -u
+set -e
+set +o nounset
+
+# Workaround for at least Debian Buster
+# Require to build bonita-portal-js due to issue with PhantomJS launched by Karma
+# See https://github.com/ariya/phantomjs/issues/14520
+export OPENSSL_CONF=/etc/ssl
+
+# Script configuration
+# You can set the following environment variables
+BONITA_BUILD_NO_CLEAN=${BONITA_BUILD_NO_CLEAN:-true}
+BONITA_BUILD_QUIET=${BONITA_BUILD_QUIET:-false}
+BONITA_BUILD_STUDIO_ONLY=${BONITA_BUILD_STUDIO_ONLY:-true}
+BONITA_BUILD_STUDIO_SKIP=${BONITA_BUILD_STUDIO_SKIP:-false}
+
+# Bonita version
+
+BONITA_VERSION=7.13.0
+
+
+########################################################################################################################
+# SCM AND BUILD FUNCTIONS
+########################################################################################################################
+
+# $1: the message to be displayed as header
+echoHeaders() {
+ echo
+ echo
+ echo "============================================================"
+ echo "$1"
+ echo "============================================================"
+}
+
+# params:
+# - Git repository name
+# - Tag name (optional)
+# - Checkout folder name (optional)
+checkout() {
+ # We need at least one parameter (the repository name) and no more than three (repository name, tag name and checkout folder name)
+ if [ "$#" -lt 1 ] || [ "$#" -gt 3 ]; then
+ echo "Incorrect number of parameters: $@"
+ exit 1
+ fi
+
+ repository_name="$1"
+
+ if [ "$#" -ge 2 ]; then
+ tag_name="$2"
+ else
+ # If we don't have a tag name assume that the tag is named with the Bonita version
+ tag_name=$BONITA_VERSION
+ fi
+ echoHeaders "Processing ${repository_name} ${tag_name}"
+
+ if [ "$#" -eq 3 ]; then
+ checkout_folder_name="$3"
+ else
+ # If no checkout folder path is provided use the repository name as destination folder name
+ checkout_folder_name="$repository_name"
+ fi
+
+ # If we don't already clone the repository do it
+ if [ ! -d "$checkout_folder_name/.git" ]; then
+ git clone --depth 1 "https://github.com/bonitasoft/$repository_name.git" $checkout_folder_name
+ fi
+ # Ensure we fetch all the tags and that we are on the appropriate one
+ git -C $checkout_folder_name fetch --tags
+ git -C $checkout_folder_name reset --hard tags/$tag_name
+
+ # Move to the repository clone folder (required to run Maven/Gradle wrapper)
+ cd $checkout_folder_name
+}
+
+run_maven_with_standard_system_properties() {
+ build_command="$build_command -Dengine.version=$BONITA_VERSION -Dfilters.version=$BONITA_VERSION"
+ echo "[DEBUG] Running build command: $build_command"
+ eval "$build_command"
+ # Go back to script folder (checkout move current directory to project checkout folder.
+ cd ..
+}
+
+run_gradle_with_standard_system_properties() {
+ echo "[DEBUG] Running build command: $build_command"
+ eval "$build_command"
+ # Go back to script folder (checkout move current directory to project checkout folder.
+ cd ..
+}
+
+build_maven_wrapper() {
+ build_command="./mvnw"
+}
+
+build_gradle_wrapper() {
+ build_command="./gradlew"
+}
+
+build_quiet_if_requested() {
+ if [[ "${BONITA_BUILD_QUIET}" == "true" ]]; then
+ echo "Configure quiet build"
+ build_command="$build_command --quiet"
+ fi
+}
+
+build() {
+ build_command="$build_command build"
+}
+
+publishToMavenLocal() {
+ build_command="$build_command publishToMavenLocal"
+}
+
+clean() {
+ if [[ "${BONITA_BUILD_NO_CLEAN}" == "true" ]]; then
+ echo "Configure build to skip clean task"
+ else
+ build_command="$build_command clean"
+ fi
+}
+
+install() {
+ build_command="$build_command install"
+}
+
+verify() {
+ build_command="$build_command verify"
+}
+
+skiptest() {
+ build_command="$build_command -DskipTests"
+}
+
+gradle_test_skip() {
+ build_command="$build_command -x test"
+}
+
+profile() {
+ build_command="$build_command -P$1"
+}
+
+# params:
+# - Git repository name
+# - Profile name
+build_maven_wrapper_verify_skiptest_with_profile()
+{
+ checkout $1
+ build_maven_wrapper
+ build_quiet_if_requested
+ clean
+ verify
+ skiptest
+ profile $2
+ run_maven_with_standard_system_properties
+}
+
+# params:
+# - Git repository name
+build_maven_wrapper_install_skiptest()
+{
+ checkout "$@"
+ unzip jdsicons.zip
+ unzip -o JDSmessages.zip
+ cp bonita-studio.pom.xml bonita-studio/pom.xml
+ cp bundles.plugins.pom.xml bonita-studio/bundles/plugins/pom.xml
+ cp console.libs.pom.xml bonita-studio/bundles/plugins/org.bonitasoft.studio.console.libs/pom.xml
+ cp bundles.features.studio-feature.feature.xml bonita-studio/bundles/features/studio-feature/feature.xml
+ cp console.libs.build.properties bonita-studio/bundles/plugins/org.bonitasoft.studio.console.libs/build.properties
+ rm bonita-studio/bundles/plugins/org.bonitasoft.studio.console.libs/META-INF/p2.inf
+ cp splash.bmp bonita-studio/bundles/plugins/org.bonitasoft.studio-product/splash_without_version.bmp
+ cp splash.bmp bonita-studio/bundles/plugins/org.bonitasoft.studio-product/src/org/bonitasoft/studiosplash_without_version.bmp
+ cp splash.bmp bonita-studio/bundles/plugins/org.bonitasoft.studio-product/splash.bmp
+ cp about.bmp bonita-studio/bundles/plugins/org.bonitasoft.studio-product/about.bmp
+ cp studio-product.pom.xml bonita-studio/bundles/plugins/org.bonitasoft.studio-product/pom.xml
+ cp bundles.plugins.studio-product.plugin.xml bonita-studio/bundles/plugins/org.bonitasoft.studio-product/plugin.xml
+ cp bundles.plugins.intro.plugin.xml bonita-studio/bundles/plugins/org.bonitasoft.studio.intro/plugin.xml
+ cp bundles.plugins.intro.plugin.properties bonita-studio/bundles/plugins/org.bonitasoft.studio.intro/plugin.properties
+ cp bundles.plugins.intro.content.introContent.xml bonita-studio/bundles/plugins/org.bonitasoft.studio.intro/content/introContent.xml
+ cp bundles.plugins.intro.content.welcome.html bonita-studio/bundles/plugins/org.bonitasoft.studio.intro/content/welcome.html
+ cp all-in-one.bonitastudio-features.product bonita-studio/all-in-one/bonitastudio-features.product
+ rm bonita-studio/bundles/plugins/org.bonitasoft.studio.application/src/org/bonitasoft/studio/application/coolbar/WelcomeCoolbarItem.java
+ cp bundles.plugins.application.src.org.bonitasoft.studio.application.actions.OpenIntroCommandHnadler.java bonita-studio/bundles/plugins/org.bonitasoft.studio.application/src/org/bonitasoft/studio/application/actions/OpenIntroCommandHandler.java
+ cp bundles.plugins.application.src.org.bonitasoft.studio.application.BonitaStudioWorkbenchAdvisor.java bonita-studio/bundles/plugins/org.bonitasoft.studio.application/src/org/bonitasoft/studio/application/BonitaStudioWorkbenchAdvisor.java
+ rm bonita-studio/bundles/plugins/org.bonitasoft.studio.engine/src/org/bonitasoft/studio/engine/coolbar/OpenPortalCoolbarItem.java
+ rm bonita-studio/bundles/plugins/org.bonitasoft.studio.engine/src/org/bonitasoft/studio/engine/coolbar/RunCoolbarItem.java
+ cp bundles.plugins.application.plugin.xml bonita-studio/bundles/plugins/org.bonitasoft.studio.application/plugin.xml
+ cp bundles.plugins.engine.plugin.xml bonita-studio/bundles/plugins/org.bonitasoft.studio.engine/plugin.xml
+ cp bundles.plugins.engine.src.org.bonitasoft.studio.engine.BOSEngineManager.java bonita-studio/bundles/plugins/org.bonitasoft.studio.engine/src/org/bonitasoft/studio/engine/BOSEngineManager.java install
+ build_maven_wrapper
+ build_quiet_if_requested
+ clean
+ skiptest
+ run_maven_with_standard_system_properties
+}
+
+build_gradle_wrapper_test_skip_publishToMavenLocal() {
+ checkout "$@"
+ build_gradle_wrapper
+ build_quiet_if_requested
+ clean
+ gradle_test_skip
+ profile forceCurrentVersion=7.13.0
+ publishToMavenLocal
+ run_gradle_with_standard_system_properties
+}
+
+########################################################################################################################
+# PARAMETERS PARSING AND VALIDATIONS
+########################################################################################################################
+
+OS_IS_LINUX=false
+OS_IS_MAC=false
+OS_IS_WINDOWS=false
+
+detectOS() {
+ case "`uname`" in
+ CYGWIN*) OS_IS_WINDOWS=true;;
+ MINGW*) OS_IS_WINDOWS=true;;
+ Darwin*) OS_IS_MAC=true;;
+ *) OS_IS_LINUX=true;;
+ esac
+}
+
+logBuildInfo() {
+ echo "OS information"
+ if [[ "${OS_IS_LINUX}" == "true" ]]; then
+ echo " > Run on Linux"
+ echo "$(cat /etc/lsb-release)" | xargs -L 1 -I % echo " %"
+ elif [[ "${OS_IS_MAC}" == "true" ]]; then
+ echo " > Run on MacOS"
+ echo "$(sw_vers)" | xargs -L 1 -I % echo " %"
+ else
+ echo " > Run on Windows"
+ echo "$(wmic os get Caption,OSArchitecture,Version //value)" | xargs -L 1 --no-run-if-empty -I % echo " %" | grep -v -e '^[[:space:]]*$'
+ fi
+ echo " > Generic information: $(uname -a)"
+
+ echo "Build environment"
+ echo " > Use $(git --version)"
+ echo " > Commit: $(git rev-parse FETCH_HEAD)"
+
+ echo "Build settings"
+ echo " > BONITA_VERSION: ${BONITA_VERSION}"
+ echo " > BONITA_BUILD_NO_CLEAN: ${BONITA_BUILD_NO_CLEAN}"
+ echo " > BONITA_BUILD_QUIET: ${BONITA_BUILD_QUIET}"
+ echo " > BONITA_BUILD_STUDIO_ONLY: ${BONITA_BUILD_STUDIO_ONLY}"
+ echo " > BONITA_BUILD_STUDIO_SKIP: ${BONITA_BUILD_STUDIO_SKIP}"
+}
+
+checkPrerequisites() {
+ echo "Prerequisites"
+# if [[ "${OS_IS_LINUX}" == "true" ]]; then
+# if [[ "${BONITA_BUILD_STUDIO_SKIP}" == "false" ]]; then
+# # Test that x server is running. Required to generate Bonita Studio models
+# # Can be ignored if Studio is build without the "generate" Maven profile
+#
+# if ! xset q &>/dev/null; then
+# echo "No X server at \$DISPLAY [$DISPLAY]" >&2
+# exit 1
+# fi
+# echo " > X server running correctly"
+# fi
+# fi
+#
+ # Test if Curl exists
+ if hash curl 2>/dev/null; then
+ CURL_VERSION="$(curl --version 2>&1 | awk -F " " 'NR==1 {print $2}')"
+ echo " > Use curl version: $CURL_VERSION"
+ else
+ echo "curl not found. Exiting."
+ exit 1
+ fi
+
+ checkJavaVersion
+}
+
+checkJavaVersion() {
+ local JAVA_CMD=
+ echo " > Java prerequisites"
+ echo " Check if Java version is compatible with Bonita"
+
+ if [[ "x$JAVA" = "x" ]]; then
+ if [[ "x$JAVA_HOME" != "x" ]]; then
+ echo " JAVA_HOME is set"
+ JAVA_CMD="$JAVA_HOME/bin/java"
+ else
+ echo " JAVA_HOME is not set. Use java in path"
+ JAVA_CMD="java"
+ fi
+ else
+ JAVA_CMD=${JAVA}
+ fi
+ echo " Java command path is $JAVA_CMD"
+
+ java_full_version_details=$("$JAVA_CMD" -version 2>&1)
+ echo " JVM details"
+ echo "${java_full_version_details}" | xargs -L 1 -I % echo " %"
+
+ java_full_version=$("$JAVA_CMD" -version 2>&1 | grep -i version | sed 's/.*version "\(.*\)".*$/\1/g')
+ echo " Java full version: $java_full_version"
+ if [[ "x$java_full_version" = "x" ]]; then
+ echo "No Java command could be found. Please set JAVA_HOME variable to a JDK and/or add the java executable to your PATH"
+ exit 1
+ fi
+
+ java_version_1st_digit=$(echo "$java_full_version" | sed 's/\(.*\)\..*\..*$/\1/g')
+ java_version_expected=11
+ # pre Java 9 versions, get minor version
+ if [[ "$java_version_1st_digit" -eq "1" ]]; then
+ java_version=$(echo "$java_full_version" | sed 's/.*\.\(.*\)\..*$/\1/g')
+ else
+ java_version=${java_version_1st_digit}
+ fi
+ echo " Java version: $java_version"
+
+ if [[ "$java_version" -ne "$java_version_expected" ]]; then
+ echo "Invalid Java version $java_version not $java_version_expected. Please set JAVA_HOME environment variable to a valid JDK version, and/or add the java executable to your PATH"
+ exit 1
+ fi
+ echo " Java version is compatible with Bonita"
+}
+
+
+########################################################################################################################
+# TOOLING
+########################################################################################################################
+
+detectWebPagesDependenciesVersions() {
+ echoHeaders "Detecting web-pages dependencies versions"
+ local webPagesGradleBuild=`curl -sS -X GET https://raw.githubusercontent.com/bonitasoft/bonita-web-pages/${BONITA_VERSION}/build.gradle`
+
+ WEB_PAGES_UID_VERSION=`echo "${webPagesGradleBuild}" | tr -s "[:blank:]" | tr -d "\n" | sed 's@.*UIDesigner {\(.*\)"}.*@\1@g' | sed 's@.*version "\(.*\)@\1@g'`
+ echo "WEB_PAGES_UID_VERSION: ${WEB_PAGES_UID_VERSION}"
+}
+
+detectStudioDependenciesVersions() {
+# echoHeaders "Detecting Studio dependencies versions"
+# local studioPom=`curl -sS -X GET https://raw.githubusercontent.com/bonitasoft/bonita-studio/${BONITA_VERSION}/pom.xml`
+
+# STUDIO_UID_VERSION=`echo "${studioPom}" | grep \<ui.designer.version\> | sed 's@.*>\(.*\)<.*@\1@g'`
+ STUDIO_UID_VERSION=1.13.20
+ echo "STUDIO_UID_VERSION: ${STUDIO_UID_VERSION}"
+}
+
+
+
+########################################################################################################################
+# MAIN
+########################################################################################################################
+detectOS
+logBuildInfo
+checkPrerequisites
+echo
+
+# List of repositories on https://github.com/bonitasoft that you don't need to build
+# Note that archived repositories are not listed here, as they are only required to build old Bonita versions
+#
+# angular-strap: automatically downloaded in the build of bonita-web project.
+# babel-preset-bonita: automatically downloaded in the build of bonita-ui-designer project.
+# bonita-codesign-windows: use to sign Windows binaries when building using Bonita Continuous Integration.
+# bonita-connector-talend: deprecated.
+# bonita-continuous-delivery-doc: Bonita Enterprise Edition Continuous Delivery module documentation.
+# bonita-custom-page-seed: a project to start building a custom page. Deprecated in favor of UI Designer page + REST API extension.
+# bonita-doc: Bonita documentation.
+# bonita-developer-resources: guidelines for contributing to Bonita, contributor license agreement, code style...
+# bonita-examples: Bonita usage code examples.
+# bonita-ici-doc: Bonita Enterprise Edition AI module documentation.
+# bonita-js-components: automatically downloaded in the build of projects that require it.
+# bonita-migration: migration tool to update a server from a previous Bonita release.
+# bonita-page-authorization-rules: documentation project to provide an example for page mapping authorization rule.
+# bonita-connector-sap: deprecated. Use REST connector instead.
+# bonita-vacation-management-example: an example for Bonita Enterprise Edition Continuous Delivery module.
+# bonita-web-devtools: Bonitasoft internal development tools.
+# bonita-widget-contrib: project to start building custom widgets outside UI Designer.
+# create-react-app: required for Bonita Subscription Intelligent Continuous Improvement module.
+# dojo: Bonitasoft R&D coding dojos.
+# jscs-preset-bonita: Bonita JavaScript code guidelines.
+# ngUpload: automatically downloaded in the build of bonita-ui-designer project.
+# preact-chartjs-2: required for Bonita Subscription Intelligent Continuous Improvement module.
+# preact-content-loader: required for Bonita Subscription Intelligent Continuous Improvement module.
+# restlet-framework-java: /!\
+# swt-repo: legacy repository required by Bonita Studio. Deprecated.
+# training-presentation-tool: fork of reveal.js with custom look and feel.
+# widget-builder: automatically downloaded in the build of bonita-ui-designer project.
+# bonita-studio-watchdog: obsolete since 7.10 (included in bonita-studio).
+
+
+if [[ "${BONITA_BUILD_STUDIO_ONLY}" == "false" ]]; then
+ build_gradle_wrapper_test_skip_publishToMavenLocal bonita-engine
+
+ build_maven_wrapper_install_skiptest bonita-web-extensions
+
+ build_maven_wrapper_install_skiptest bonita-web
+ build_maven_wrapper_install_skiptest bonita-portal-js
+
+ # bonita-web-pages uses a dedicated UID version
+ detectWebPagesDependenciesVersions
+ build_maven_wrapper_install_skiptest bonita-ui-designer ${WEB_PAGES_UID_VERSION}
+ build_gradle_wrapper_test_skip_publishToMavenLocal bonita-web-pages
+
+ build_maven_wrapper_install_skiptest bonita-application-directory
+ build_maven_wrapper_install_skiptest bonita-user-application
+ build_maven_wrapper_install_skiptest bonita-admin-application
+ build_maven_wrapper_install_skiptest bonita-super-admin-application
+
+ build_maven_wrapper_install_skiptest bonita-distrib
+else
+ echoHeaders "Skipping all build prior the Studio part"
+ build_gradle_wrapper_test_skip_publishToMavenLocal bonita-engine
+fi
+
+if [[ "${BONITA_BUILD_STUDIO_SKIP}" == "false" ]]; then
+ build_maven_wrapper_install_skiptest bonita-data-repository
+
+ # bonita-studio uses a dedicated UID version
+ detectStudioDependenciesVersions
+ build_maven_wrapper_install_skiptest bonita-ui-designer ${STUDIO_UID_VERSION}
+
+ build_maven_wrapper_verify_skiptest_with_profile bonita-studio default,all-in-one,!jdk11-tests
+else
+ echoHeaders "Skipping the Studio build"
+fi
--- /dev/null
+bin.includes=feature.xml
+root=file:jds-icon-128-128-transparent.png
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="studio-feature"
+ label="Studio"
+ version="7.13.0"
+ provider-name="Bonitasoft S.A.">
+
+ <description>
+ Core feature of Bonita BPM Studio
+ </description>
+
+ <copyright>
+ Copyright (C) 2009-2015 Bonitasoft S.A.
+Bonitasoft, 32 rue Gustave Eiffel - 38000 Grenoble
+This program is free software: you can redistribute it and/or
+modify
+it under the terms of the GNU General Public License as published
+by
+the Free Software Foundation, either version 2.0 of the License,
+or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+ </copyright>
+
+ <license url="">
+ Copyright (C) 2009-2021 Bonitasoft S.A.
+Bonitasoft, 32 rue Gustave Eiffel - 38000 Grenoble
+This program is free software: you can redistribute it and/or
+modify
+it under the terms of the GNU General Public License as published
+by
+the Free Software Foundation, either version 2.0 of the License,
+or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+ </license>
+
+ <includes
+ id="org.eclipse.datatools.enablement.apache.derby.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.datatools.enablement.hsqldb.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.datatools.enablement.ibm.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.datatools.enablement.ingres.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.datatools.enablement.jdbc.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.datatools.enablement.msft.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.datatools.enablement.mysql.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.datatools.enablement.oracle.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.datatools.enablement.postgresql.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.datatools.enablement.sqlite.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.datatools.enablement.sybase.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.datatools.modelbase.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.datatools.sqldevtools.sqlbuilder.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.codehaus.groovy.jdt.patch"
+ version="0.0.0"/>
+
+ <includes
+ id="org.codehaus.groovy.compilerless.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.jdt"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.equinox.p2.extras.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.e4.rcp"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.babel.nls_eclipse_es"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.babel.nls_eclipse_fr"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.babel.nls_eclipse_ja"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.emf.compare.ide.ui"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.babel.nls_eclipse_pt_BR"
+ version="0.0.0"/>
+
+ <includes
+ id="de.jcup.asciidoctoreditor"
+ version="0.0.0"/>
+
+ <includes
+ id="de.jcup.yamleditor"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.emf.edapt.runtime.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.egit"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.egit.gitflow.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.wst.xml_core.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.wst.xml_ui.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.nebula.widgets.richtext.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.babel.nls_technology.egit_es"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.babel.nls_technology.egit_fr"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.babel.nls_technology.egit_ja"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.babel.nls_technology.egit_pt_BR"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.emf.compare.egit"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.babel.nls_technology.jgit_es"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.babel.nls_technology.jgit_fr"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.babel.nls_technology.jgit_ja"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.babel.nls_technology.jgit_pt_BR"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.jgit"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.jgit.gpg.bc"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.jgit.http.apache"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.jgit.ssh.apache"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.m2e.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.wst.jsdt.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.wst.web_ui.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.codehaus.groovy.m2eclipse.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.wst.json_ui.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.codehaus.groovy30.feature"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.rcp"
+ version="0.0.0"/>
+
+ <includes
+ id="org.eclipse.gmf"
+ version="0.0.0"/>
+
+ <includes
+ id="platform-specific-feature"
+ version="0.0.0"/>
+
+ <plugin
+ id="org.bonitasoft.studio"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.pics"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.diagram"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.diagram.custom"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.model.edit"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.document"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.validation"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.common.diagram"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.engine"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.importer"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.preferences"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.application"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.common"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.model"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.properties"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.groovy"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.exporter"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.intro"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.xml"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.omg.schema.spec.bpmn"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.common.repository"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.decision.table"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.groovy.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.model.edit.custom"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.expression.editor"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.scripting"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.configuration"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.dependencies"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.data"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.connectors.model"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.connectors"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.connectors.model.edit"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.importer.bos"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio-models"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.migration"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.ui.net"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.objectweb.asm"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.refactoring"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.contract"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.osgi.compatibility.state"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ fragment="true"
+ unpack="false"/>
+
+ <plugin
+ id="javax.wsdl"
+ download-size="0"
+ install-size="0"
+ version="1.6.2.v201012040545"
+ unpack="false"/>
+
+ <plugin
+ id="org.apache.batik.util"
+ download-size="0"
+ install-size="0"
+ version="1.6.0.v201011041432"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.businessobject"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.parameters"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.designer"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.validation.common"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.la"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="javax.activation"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="javax.annotation"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <!-- <plugin
+ id="org.bonitasoft.studio.connector.wizard.office"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.connector.wizard.sforce"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>-->
+
+ <plugin
+ id="org.eclipse.datatools.modelbase.sql.query"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.team"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.team.git"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.sap.dependency"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"/>
+
+ <!-- <plugin
+ id="org.bonitasoft.studio.connector.wizard.sapjco3"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>-->
+
+ <plugin
+ id="com.sun.jna.platform"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="com.sun.jna"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.apache.httpcomponents.httpclient"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.rest.api.extension"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.sqlbuilder.ex"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <!-- <plugin
+ id="org.bonitasoft.studio.connector.wizard.uipath"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>-->
+
+ <plugin
+ id="org.bonitasoft.studio.datatools"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.designer.war"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ fragment="true"
+ unpack="false"/>
+
+ <plugin
+ id="org.bonitasoft.studio.identity"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ * Copyright (C) 2009 BonitaSoft S.A.
+ * BonitaSoft, 31 rue Gustave Eiffel - 38000 Grenoble
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2.0 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+ -->
+<?eclipse version="3.4"?>
+<plugin>
+
+ <extension-point id="PropertiesView" name="Properties View Contribution" schema="schema/PropertiesView.exsd"/>
+
+ <extension-point id="prestartup" name="Actions to hoot at the preStartup of the workbench" schema="schema/prestartup.exsd"/>
+ <extension-point id="preshutdown" name="Actions to hoot at the preShutdown of the workbench" schema="schema/preshutdown.exsd"/>
+ <extension-point id="postImport" name="Actions to hook after Import" schema="schema/postImport.exsd"/>
+ <extension-point id="preImport" name="Actions to hook before Import" schema="schema/preImport.exsd"/>
+ <extension
+ id="application"
+ point="org.eclipse.core.runtime.applications">
+ <application
+ thread="main"
+ visible="true">
+ <run
+ class="org.bonitasoft.studio.application.BonitaStudioApplication">
+ </run>
+ </application>
+ </extension>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ locationURI="menu:org.eclipse.ui.main.menu">
+ <menu
+ id="org.bonitasoft.studio.fileMenu"
+ label="%fileMenu_Label">
+ <command
+ commandId="org.bonitasoft.studio.application.command.deployArtifacts"
+ style="push">
+ </command>
+ <separator
+ name="org.bonitasoft.studio.application.deploySeparator"
+ visible="true">
+ </separator>
+ <menu
+ icon="icons/menuIcons/recently.png"
+ label="%RecentlyModified">
+ <dynamic
+ class="org.bonitasoft.studio.application.actions.ProcessListContribution"
+ id="org.bonitasoft.studio.application.openRecently">
+ </dynamic>
+ </menu>
+ <command
+ commandId="org.eclipse.ui.file.save"
+ disabledIcon="icons/menuIcons/save_disabled.png"
+ hoverIcon="icons/menuIcons/save_hover.png"
+ icon="icons/menuIcons/save.png"
+ label="%saveProcess_label"
+ style="push">
+ </command>
+ <command
+ commandId="org.eclipse.ui.file.saveAll"
+ disabledIcon="icons/menuIcons/save_disabled.png"
+ hoverIcon="icons/menuIcons/save_hover.png"
+ icon="icons/menuIcons/save_all.png"
+ label="%saveAll_label"
+ style="push">
+ </command>
+ <command
+ commandId="org.bonitasoft.studio.application.command.saveAs"
+ disabledIcon="icons/duplicate_disabled.png"
+ icon="icons/duplicate.png"
+ style="push">
+ </command>
+ <separator
+ name="org.bonitasoft.studio.application.separator2"
+ visible="true">
+ </separator>
+ <menu
+ id="org.bonitasoft.studio.menu.import"
+ label="%importLabel">
+ <command
+ commandId="org.bonitasoft.studio.importer.bos.command"
+ style="push">
+ </command>
+ <command
+ commandId="org.bonitasoft.studio.importer.other.command"
+ style="push">
+ </command>
+ </menu>
+ <separator
+ name="org.bonitasoft.studio.application.separator5"
+ visible="true">
+ </separator>
+ <command
+ commandId="org.bonitasoft.studio.application.printCommand"
+ disabledIcon="icons/menuIcons/print_disabled.png"
+ hoverIcon="icons/menuIcons/print_hover.png"
+ icon="icons/menuIcons/print.png"
+ label="%printLabel"
+ style="push">
+ </command>
+ <separator
+ name="org.bonitasoft.studio.application.separator3"
+ visible="true">
+ </separator>
+ <command
+ commandId="org.eclipse.ui.file.close"
+ icon="icons/menuIcons/close.png"
+ label="%close"
+ style="push">
+ </command>
+ <command
+ commandId="org.eclipse.ui.file.closeAll"
+ disabledIcon="icons/menuIcons/close_all_disabled.png"
+ icon="icons/menuIcons/close_all.png"
+ label="%closeAll"
+ style="push">
+ </command>
+ <separator
+ name="org.bonitasoft.studio.application.separator4"
+ visible="true">
+ </separator>
+ <command
+ commandId="org.eclipse.ui.file.exit"
+ icon="icons/menuIcons/exit.png"
+ label="%exitAction_label"
+ style="push">
+ </command>
+ <visibleWhen
+ checkEnabled="true">
+ <reference
+ definitionId="isBonitaPerspectiveActive">
+ </reference>
+ </visibleWhen>
+ </menu>
+ <menu
+ id="org.bonitasoft.studio.menu.edit"
+ label="%editMenu_label">
+ <command
+ commandId="org.eclipse.ui.views.showView"
+ icon="icons/find.png"
+ label="%findLabel"
+ mnemonic="F"
+ style="push">
+ <parameter
+ name="org.eclipse.ui.views.showView.viewId"
+ value="org.bonitasoft.studio.views.overview.tree">
+ </parameter>
+ </command>
+ <separator
+ name="org.bonitasoft.studio.application.separator20"
+ visible="true">
+ </separator>
+ <command
+ commandId="org.eclipse.ui.edit.undo"
+ disabledIcon="icons/undo_disabled.png"
+ icon="icons/undo.png"
+ label="%undoLabel"
+ style="push">
+ </command>
+ <command
+ commandId="org.eclipse.ui.edit.redo"
+ disabledIcon="icons/redo_disabled.png"
+ icon="icons/redo.png"
+ label="%redoLabel"
+ style="push">
+ </command>
+ <separator
+ name="org.bonitasoft.studio.application.separator1"
+ visible="true">
+ </separator>
+ <command
+ commandId="org.eclipse.ui.edit.copy"
+ disabledIcon="icons/menuIcons/copy_disabled.png"
+ hoverIcon="icons/menuIcons/copy_hover.png"
+ icon="icons/menuIcons/copy.png"
+ label="%copyLabel"
+ style="push">
+ </command>
+ <command
+ commandId="org.eclipse.ui.edit.paste"
+ disabledIcon="icons/menuIcons/paste_disabled.png"
+ hoverIcon="icons/menuIcons/paste_hover.png"
+ icon="icons/menuIcons/paste.png"
+ label="%pasteLabel"
+ style="push">
+ </command>
+ <separator
+ name="org.bonitasoft.studio.application.separator2"
+ visible="true">
+ </separator>
+ <command
+ commandId="org.eclipse.ui.window.preferences"
+ icon="icons/menuIcons/preferences.png"
+ style="push">
+ </command>
+ <visibleWhen
+ checkEnabled="true">
+ <reference
+ definitionId="isBonitaPerspectiveActive">
+ </reference>
+ </visibleWhen>
+ </menu>
+
+ <menu
+ id="org.bonitasoft.studio.menu.view"
+ label="%viewMenu_label">
+ <menu
+ id="org.bonitasoft.studio.menu.view.coolbar"
+ label="%CoolBarLabel">
+ <command
+ commandId="org.bonitasoft.studio.application.smallCoolbar"
+ label="%small">
+ </command>
+ <command
+ commandId="org.bonitasoft.studio.application.normalCoolbar"
+ label="%normal">
+ </command>
+ </menu>
+ <command
+ commandId="org.eclipse.ui.views.showView"
+ icon="icons/show_view.png"
+ label="%showOverview_label"
+ style="push">
+ <parameter
+ name="org.eclipse.ui.views.showView.viewId"
+ value="org.bonitasoft.studio.views.overview">
+ </parameter>
+ </command>
+ <command
+ commandId="org.bonitasoft.studio.application.resetWindowCommand"
+ disabledIcon="icons/reset_view_disabled.png"
+ icon="icons/reset_view.png"
+ label="%resetPerspective_label"
+ style="push">
+ </command>
+ <command
+ commandId="org.bonitasoft.studio.application.fullscreen"
+ icon="icons/full_screen.png"
+ style="push">
+ </command>
+ <visibleWhen
+ checkEnabled="true">
+ <reference
+ definitionId="isBonitaPerspectiveActive">
+ </reference>
+ </visibleWhen>
+ </menu>
+
+ <!--menu
+ label="%selectProfile">
+ <command
+ commandId="org.bonitasoft.studio.application.switchToAnalyst"
+ icon="icons/bonitasoft-icon-16-16-transparent.png"
+ label="%analystMode">
+ </command>
+ <command
+ commandId="org.bonitasoft.studio.application.commands.switchToDeveloper"
+ icon="icons/javaPerspective.gif"
+ label="%developerMode">
+ </command>
+ </menu-->
+ <menu
+ id="org.bonitasoft.studio.menu.help"
+ label="%help_label">
+ <!--command
+ commandId="org.bonitasoft.studio.application.openIntroCommand"
+ hoverIcon="icons/menuIcons/bonita_hover.png"
+ icon="icons/bonitasoft-icon-16-16-transparent.png"
+ id="org.bonitasoft.studio.helpMenu.welcomeMenu"
+ label="%openWelcomePage_label"
+ style="push">
+ </command-->
+
+ <command
+ commandId="org.bonitasoft.studio.application.showHelp"
+ disabledIcon="icons/menuIcons/help_disabled.png"
+ hoverIcon="icons/menuIcons/help_hover.png"
+ icon="icons/menuIcons/help.png"
+ label="%online_documentation"
+ style="push">
+ </command>
+ <command
+ commandId="org.bonitasoft.studio.application.command.releaseNote"
+ style="push">
+ </command>
+ <separator
+ name="org.bonitasoft.studio.application.help.separator4"
+ visible="true">
+ </separator>
+ <command
+ commandId="org.bonitasoft.studio.application.openLog"
+ icon="icons/log.png"
+ label="%openLog_label"
+ style="push">
+ </command>
+ <command
+ commandId="org.bonitasoft.studio.application.openEngineLog"
+ icon="icons/log.png"
+ label="%openEngineLog_label"
+ style="push">
+ </command>
+ <command
+ commandId="org.bonitasoft.studio.application.openUidLog"
+ icon="icons/log.png"
+ label="%openUidLog"
+ style="push">
+ </command>
+ <separator
+ name="org.bonitasoft.studio.application.help.separator2"
+ visible="true">
+ </separator>
+ <command
+ commandId="org.eclipse.ui.help.aboutAction"
+ icon="icons/menuIcons/about.png"
+ style="push">
+ </command>
+ <visibleWhen
+ checkEnabled="true">
+ <reference
+ definitionId="isBonitaPerspectiveActive">
+ </reference>
+ </visibleWhen>
+ </menu>
+ </menuContribution>
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.bonitasoft.studio.application.project.explorer?after=group.new">
+ <menu
+ id="org.bonitasoft.studio.application.project.explorer.new"
+ label="%new"
+ mnemonic="w">
+ <separator
+ name="org.bonitasoft.studio.application.placeholder.organization"
+ visible="true">
+ </separator>
+ <separator
+ name="org.bonitasoft.studio.application.placeholder.bdm"
+ visible="true">
+ </separator>
+ <separator
+ name="org.bonitasoft.studio.application.placeholder.profile"
+ visible="true">
+ </separator>
+ <separator
+ name="org.bonitasoft.studio.application.placeholder.application"
+ visible="true">
+ </separator>
+ <separator
+ name="org.bonitasoft.studio.application.placeholder.diagram"
+ visible="true">
+ </separator>
+ <separator
+ name="org.bonitasoft.studio.application.placeholder.uidartifact"
+ visible="true">
+ </separator>
+ <separator
+ name="org.bonitasoft.studio.application.placeholder.restapi"
+ visible="true">
+ </separator>
+ <separator
+ name="additions"
+ visible="true">
+ </separator>
+ </menu>
+ <command
+ commandId="org.bonitasoft.studio.application.newWithWizard"
+ mnemonic="w"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.bonitasoft.studio.application.new"
+ mnemonic="w"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <separator
+ name="newSeparator"
+ visible="true">
+ </separator>
+ </menuContribution>
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.bonitasoft.studio.application.project.explorer?after=group.build">
+ <command
+ commandId="org.eclipse.ui.file.refresh"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <with
+ variable="activeMenuSelection">
+ <and>
+ <count
+ value="1">
+ </count>
+ <or>
+ <iterate>
+ <instanceof
+ value="org.eclipse.core.resources.IProject">
+ </instanceof>
+ </iterate>
+ </or>
+ </and>
+ </with>
+ </visibleWhen>
+ </command>
+ <separator
+ name="buildSeparator">
+ </separator>
+ </menuContribution>
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.bonitasoft.studio.application.project.explorer?after=group.open">
+ <command
+ commandId="org.bonitasoft.studio.application.open"
+ id="org.bonitasoft.studio.application.openMenu"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.bonitasoft.studio.application.project.explorer?after=group.edit">
+ <command
+ commandId="org.bonitasoft.studio.renameCommand"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.bonitasoft.studio.application.edit.project.command"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <with
+ variable="activeMenuSelection">
+ <and>
+ <count
+ value="1">
+ </count>
+ <iterate>
+ <instanceof
+ value="org.eclipse.core.resources.IProject">
+ </instanceof>
+ <test
+ property="org.bonitasoft.studio.application.isBonitaProject">
+ </test>
+ </iterate>
+ </and>
+ </with>
+ </visibleWhen>
+ </command>
+ <separator
+ name="org.bonitasoft.studio.application.edit.separator"
+ visible="true">
+ </separator>
+ <command
+ commandId="org.eclipse.ui.edit.delete"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.bonitasoft.studio.application.project.explorer?after=group.deploy">
+ <command
+ commandId="org.bonitasoft.studio.deployCommand"
+ label="%deploy"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <dynamic
+ class="org.bonitasoft.studio.application.ui.contribution.DeployArtifactsMenuContributionItem"
+ id="org.bonitasoft.studio.application.command.deployArtifacts">
+ <visibleWhen
+ checkEnabled="false">
+ <with
+ variable="activeMenuSelection">
+ <and>
+ <count
+ value="1">
+ </count>
+ <or>
+ <iterate>
+ <instanceof
+ value="org.eclipse.core.resources.IProject">
+ </instanceof>
+ <test
+ property="org.bonitasoft.studio.application.isBonitaProject">
+ </test>
+ </iterate>
+ </or>
+ </and>
+ </with>
+ </visibleWhen>
+ </dynamic>
+ <separator
+ name="deploySeparator"
+ visible="true">
+ </separator>
+ </menuContribution>
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.bonitasoft.studio.application.project.explorer?after=group.import">
+ <command
+ commandId="org.bonitasoft.studio.application.import"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.bonitasoft.studio.application.project.explorer?after=group.export">
+ <command
+ commandId="org.bonitasoft.studio.application.export"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.bonitasoft.studio.application.project.explorer?before=group.edit">
+ <command
+ commandId="org.eclipse.ui.ide.showInSystemExplorer"
+ icon="icons/menuIcons/showInExplorer.png"
+ label="%showInSystemExplorer"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ defaultHandler="org.bonitasoft.studio.application.actions.SaveProcessAsCommand"
+ id="org.bonitasoft.studio.application.command.saveAs"
+ name="%saveAs_label">
+ </command>
+ <command
+ defaultHandler="org.bonitasoft.studio.application.actions.OpenIntroCommandHandler"
+ id="org.bonitasoft.studio.application.openIntroCommand"
+ name="%openWelcomePage_label">
+ </command>
+ <command
+ defaultHandler="org.bonitasoft.studio.application.actions.ResetPerspectiveCommand"
+ id="org.bonitasoft.studio.application.resetWindowCommand"
+ name="%resetPerspective_label">
+ </command>
+ <command
+ defaultHandler="org.bonitasoft.studio.application.actions.ShowHelpCommand"
+ id="org.bonitasoft.studio.application.showHelp"
+ name="%showHelp_label">
+ </command>
+ <command
+ defaultHandler="org.bonitasoft.studio.application.actions.OpenConsoleCommand"
+ id="org.bonitasoft.studio.application.openConsole"
+ name="%openConsoleActionLabel">
+ </command>
+ <command
+ defaultHandler="org.bonitasoft.studio.application.actions.OpenApplicationCommand"
+ id="org.bonitasoft.studio.application.openApplication"
+ name="%openAppplicationActionLabel">
+ </command>
+ <command
+ defaultHandler="org.bonitasoft.studio.application.actions.OpenLogCommand"
+ id="org.bonitasoft.studio.application.openLog"
+ name="%openLog_commandLabel">
+ </command>
+ <command
+ defaultHandler="org.bonitasoft.studio.application.actions.PrintCommandHandler"
+ id="org.bonitasoft.studio.application.printCommand"
+ name="%printLabel">
+ </command>
+ <command
+ defaultHandler="org.bonitasoft.studio.application.actions.OpenEngineLogCommand"
+ id="org.bonitasoft.studio.application.openEngineLog"
+ name="%openEngineLog_commandLabel">
+ </command>
+ <command
+ defaultHandler="org.bonitasoft.studio.application.actions.RefreshConnectorHandler"
+ id="org.bonitasoft.studio.application.refreshconnectorcommand"
+ name="%refreshConnectors_commandLabel">
+ </command>
+ <command
+ defaultHandler="org.bonitasoft.studio.application.actions.SwitchPaletteMode"
+ id="org.bonitasoft.studio.application.switchPalette"
+ name="switch palette">
+ <commandParameter
+ id="org.bonitasoft.studio.application.switch.advanced"
+ name="advanced"
+ optional="true">
+ </commandParameter>
+ </command>
+ <command
+ defaultHandler="org.bonitasoft.studio.application.actions.SwitchPaletteMode"
+ id="org.bonitasoft.studio.application.paletteSimple"
+ name="switch palette to simple">
+ </command>
+ <command
+ defaultHandler="org.bonitasoft.studio.application.actions.SwitchPaletteMode"
+ id="org.bonitasoft.studio.application.paletteAdvanced"
+ name="switch palette to advanced">
+ </command>
+ <command
+ defaultHandler="org.bonitasoft.studio.application.actions.coolbar.SmallCoolBarHandler"
+ id="org.bonitasoft.studio.application.smallCoolbar"
+ name="%small">
+ </command>
+ <command
+ defaultHandler="org.bonitasoft.studio.application.actions.coolbar.NormalCoolBarHandler"
+ id="org.bonitasoft.studio.application.normalCoolbar"
+ name="%normal">
+ </command>
+ <command
+ defaultHandler="org.bonitasoft.studio.application.actions.FullscreenHandler"
+ id="org.bonitasoft.studio.application.fullscreen"
+ name="%fullscreen">
+ </command>
+ <command
+ defaultHandler="org.bonitasoft.studio.application.actions.RenameDiagramCommandHandler"
+ id="org.bonitasoft.studio.application.command.rename"
+ name="Rename Command">
+ <commandParameter
+ id="diagram"
+ name="Diagram to rename"
+ optional="true">
+ </commandParameter>
+ </command>
+ <command
+ defaultHandler="org.bonitasoft.studio.application.handler.ImportArtifactsFromZipHandler"
+ id="org.bonitasoft.studio.repository.importArtifacts"
+ name="import artifacts">
+ </command>
+ <command
+ defaultHandler="org.bonitasoft.studio.application.actions.OpenUIDLogCommand"
+ id="org.bonitasoft.studio.application.openUidLog"
+ name="%openUidLog">
+ </command>
+ <command
+ id="org.bonitasoft.studio.application.open"
+ name="%Open">
+ </command>
+ <command
+ id="org.bonitasoft.studio.deployCommand"
+ name="%deploy">
+ </command>
+ <command
+ id="org.bonitasoft.studio.application.import"
+ name="%import">
+ </command>
+ <command
+ id="org.bonitasoft.studio.application.export"
+ name="%export">
+ </command>
+ <command
+ id="org.bonitasoft.studio.renameCommand"
+ name="%rename">
+ </command>
+ <command
+ id="org.bonitasoft.studio.application.new"
+ name="%new">
+ </command>
+ <command
+ id="org.bonitasoft.studio.application.newWithWizard"
+ name="%newWithWizard">
+ </command>
+ </extension>
+ <extension
+ point="org.eclipse.ui.views">
+ <view
+ category="org.bonitasoft.studio.application.bonita"
+ class="org.bonitasoft.studio.application.views.BonitaContentOutlineView"
+ icon="icons/overview.png"
+ id="org.bonitasoft.studio.views.overview"
+ name="%overviewViewName"
+ restorable="true">
+ </view>
+ <view
+ category="org.bonitasoft.studio.application.bonita"
+ class="org.bonitasoft.studio.application.views.process.BonitaGeneralProcessPropertiesView"
+ icon="icons/details.png"
+ id="org.bonitasoft.studio.views.properties.process.general"
+ name="%General_process"
+ restorable="true">
+ </view>
+ <category
+ id="org.bonitasoft.studio.application.bonita"
+ name="Bonita">
+ </category>
+ <view
+ category="org.bonitasoft.studio.application.bonita"
+ class="org.bonitasoft.studio.application.views.process.BonitaAppearencePropertiesView"
+ icon="icons/appearanceView.png"
+ id="org.bonitasoft.studio.views.properties.process.appearance"
+ name="%Appearance"
+ restorable="true">
+ </view>
+ <view
+ category="org.bonitasoft.studio.application.bonita"
+ class="org.bonitasoft.studio.application.views.BonitaContentOutlineTreeView"
+ icon="icons/overview.png"
+ id="org.bonitasoft.studio.views.overview.tree"
+ name="%TreeOverView"
+ restorable="true">
+ </view>
+ <view
+ category="org.bonitasoft.studio.application.bonita"
+ class="org.bonitasoft.studio.application.views.process.BonitaDataPropertiesView"
+ icon="icons/Picto_Studio_Data_16x16.png"
+ id="org.bonitasoft.studio.views.properties.process.data"
+ name="%Data"
+ restorable="true">
+ </view>
+ <view
+ category="org.bonitasoft.studio.application.bonita"
+ class="org.bonitasoft.studio.application.views.process.BonitaExecutionPropertiesView"
+ icon="icons/Execution-D.png"
+ id="org.bonitasoft.studio.views.properties.process.execution"
+ name="%Execution"
+ restorable="true">
+ </view>
+ <view
+ category="org.bonitasoft.studio.application.bonita"
+ class="org.bonitasoft.studio.application.views.BonitaProjectExplorer"
+ icon="icons/bonitasoft-icon-16-16-transparent.png"
+ id="org.bonitasoft.studio.application.project.explorer"
+ inject="true"
+ name="%projectExplorer"
+ restorable="true">
+ </view>
+ </extension>
+ <extension
+ point="org.eclipse.ui.activities">
+ <activity
+ description="searchActivity to remove from studio"
+ id="org.bonitasoft.studio.application.searchActivity"
+ name="SearchActivity">
+ </activity>
+ <activityPatternBinding
+ activityId="org.bonitasoft.studio.application.searchActivity"
+ pattern="org.eclipse.search.*">
+ </activityPatternBinding>
+ </extension>
+ <extension
+ point="org.eclipse.ui.handlers">
+ <handler
+ class="org.bonitasoft.studio.application.actions.UndoCommandHandler"
+ commandId="org.eclipse.ui.edit.undo">
+ <enabledWhen>
+ <reference
+ definitionId="isActiveEditorAnInstanceOfBonitaEditor">
+ </reference>
+ </enabledWhen>
+ </handler>
+ <handler
+ class="org.bonitasoft.studio.application.actions.RedoCommandHandler"
+ commandId="org.eclipse.ui.edit.redo">
+ <enabledWhen>
+ <reference
+ definitionId="isActiveEditorAnInstanceOfBonitaEditor">
+ </reference>
+ </enabledWhen>
+ </handler>
+ <handler
+ class="org.bonitasoft.studio.application.actions.SaveCommandHandler"
+ commandId="org.eclipse.ui.file.save">
+ <activeWhen>
+ <reference
+ definitionId="isBonitaPerspectiveActive">
+ </reference>
+ </activeWhen>
+ </handler>
+ <handler
+ class="org.bonitasoft.studio.application.actions.RefreshHandler"
+ commandId="org.eclipse.ui.file.refresh">
+ <activeWhen>
+ <with
+ variable="activeEditor">
+ <instanceof
+ value="org.eclipse.ui.editors.text.TextEditor">
+ </instanceof>
+ </with>
+ </activeWhen>
+ </handler>
+ <handler
+ class="org.bonitasoft.studio.application.actions.AboutDialogHandler"
+ commandId="org.eclipse.ui.help.aboutAction">
+ <activeWhen>
+ <and>
+ <reference
+ definitionId="isABonitaProduct">
+ </reference>
+ <with
+ variable="activeContexts">
+ <iterate
+ ifEmpty="true"
+ operator="or">
+ <equals
+ value="org.eclipse.ui.contexts.window">
+ </equals>
+ </iterate>
+ </with>
+ </and>
+ </activeWhen>
+ </handler>
+ <handler
+ class="org.bonitasoft.studio.application.handler.RefreshProjectHandler"
+ commandId="org.eclipse.ui.file.refresh">
+ <activeWhen>
+ <with
+ variable="activeMenuSelection">
+ <and>
+ <count
+ value="1">
+ </count>
+ <iterate>
+ <instanceof
+ value="org.eclipse.core.resources.IResource">
+ </instanceof>
+ </iterate>
+ </and>
+ </with>
+ </activeWhen>
+ </handler>
+ <handler
+ class="org.bonitasoft.studio.application.handler.OpenHandler"
+ commandId="org.bonitasoft.studio.application.open">
+ </handler>
+ <handler
+ class="org.bonitasoft.studio.application.handler.DeleteHandler"
+ commandId="org.eclipse.ui.edit.delete">
+ </handler>
+ <handler
+ class="org.bonitasoft.studio.application.handler.DeployHandler"
+ commandId="org.bonitasoft.studio.deployCommand">
+ </handler>
+ <handler
+ class="org.bonitasoft.studio.application.handler.RenameHandler"
+ commandId="org.bonitasoft.studio.renameCommand">
+ </handler>
+ </extension>
+ <extension
+ point="org.eclipse.core.expressions.definitions">
+ <definition
+ id="isActiveEditorAnInstanceOfBonitaEditor">
+ <or>
+ <with
+ variable="activeEditor">
+ <instanceof
+ value="org.bonitasoft.studio.model.process.diagram.part.ProcessDiagramEditor">
+ </instanceof>
+ </with>
+ </or>
+ </definition>
+ <definition
+ id="isABonitaProduct">
+ <or>
+ <with
+ variable="org.eclipse.core.runtime.Platform">
+ <test
+ property="org.eclipse.core.runtime.product"
+ value="org.bonitasoft.studio.product">
+ </test>
+ </with>
+ </or>
+ </definition>
+ <definition
+ id="isBonitaPerspectiveActive">
+ <or>
+ <with
+ variable="activeWorkbenchWindow.activePerspective">
+ <equals
+ value="org.bonitasoft.studio.perspective.process">
+ </equals>
+ </with>
+ <with
+ variable="activeWorkbenchWindow.activePerspective">
+ <equals
+ value="org.bonitasoft.studio.perspective.java">
+ </equals>
+ </with>
+ <with
+ variable="activeWorkbenchWindow.activePerspective">
+ <equals
+ value="org.bonitasoft.studio.perspective.textEditor">
+ </equals>
+ </with>
+ <with
+ variable="activeWorkbenchWindow.activePerspective">
+ <equals
+ value="org.bonitasoft.studio.perspective.welcomePage">
+ </equals>
+ </with>
+ <with
+ variable="activeWorkbenchWindow.activePerspective">
+ <equals
+ value="org.bonitasoft.studio.rest.api.extension.perspective">
+ </equals>
+ </with>
+ <with
+ variable="activeWorkbenchWindow.activePerspective">
+ <equals
+ value="org.bonitasoft.studio.la.perspective">
+ </equals>
+ </with>
+ <with
+ variable="activeWorkbenchWindow.activePerspective">
+ <equals
+ value="com.bonitasoft.studio.la.perspective">
+ </equals>
+ </with>
+ <with
+ variable="activeWorkbenchWindow.activePerspective">
+ <equals
+ value="org.bonitasoft.studio.defaultProfile.perspective">
+ </equals>
+ </with>
+ <with
+ variable="activeWorkbenchWindow.activePerspective">
+ <equals
+ value="com.bonitasoft.studio.customProfile.perspective">
+ </equals>
+ </with>
+ <with
+ variable="activeWorkbenchWindow.activePerspective">
+ <equals
+ value="org.bonitasoft.studio.bdm.access.control.perspective">
+ </equals>
+ </with>
+ <with
+ variable="activeWorkbenchWindow.activePerspective">
+ <equals
+ value="org.bonitasoft.studio.team.compare.perspective">
+ </equals>
+ </with>
+ <with
+ variable="activeWorkbenchWindow.activePerspective">
+ <equals
+ value="org.bonitasoft.studio.perspective.markdownEditor">
+ </equals>
+ </with>
+ <with
+ variable="activeWorkbenchWindow.activePerspective">
+ <equals
+ value="org.bonitasoft.studio.businessobject.perspective">
+ </equals>
+ </with>
+ <with
+ variable="activeWorkbenchWindow.activePerspective">
+ <equals
+ value="org.bonitasoft.studio.identity.organization.perspective">
+ </equals>
+ </with>
+ <with
+ variable="activeWorkbenchWindow.activePerspective">
+ <equals
+ value="org.bonitasoft.studio.application.extension.perspective">
+ </equals>
+ </with>
+ </or>
+ </definition>
+ <definition
+ id="isActiveEditorAnInstanceOfProcessEditor">
+ <with
+ variable="activeEditor">
+ <instanceof
+ value="org.bonitasoft.studio.model.process.diagram.part.ProcessDiagramEditor">
+ </instanceof>
+ </with>
+ </definition>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.propertiesView">
+ <excludeSources
+ id="org.bonitasoft.studio.views.properties.application">
+ </excludeSources>
+ <excludeSources
+ id="org.bonitasoft.studio.views.properties.form.general">
+ </excludeSources>
+ <excludeSources
+ id="org.bonitasoft.studio.views.properties.appearance">
+ </excludeSources>
+ <excludeSources
+ id="org.bonitasoft.studio.views.overview">
+ </excludeSources>
+ </extension>
+ <extension
+ point="org.bonitasoft.studio.common.poststartup">
+ <contribution
+ class="org.bonitasoft.studio.application.contribution.CheckJavaVersionPostStartupContribution">
+ </contribution>
+ </extension>
+ <extension
+ id="id1"
+ point="org.eclipse.equinox.security.secureStorage">
+ <provider
+ class="org.bonitasoft.studio.application.security.BonitaStudioPasswordProvider"
+ description="Bonita Studio default password provider"
+ priority="10">
+ </provider>
+ </extension>
+ <extension
+ point="org.eclipse.ui.bindings">
+ <key
+ commandId="org.bonitasoft.studio.application.fullscreen"
+ contextId="org.eclipse.ui.contexts.dialogAndWindow"
+ platform="win32"
+ schemeId="org.bonitasoft.studio.application.scheme"
+ sequence="F11">
+ </key>
+ <key
+ commandId="org.bonitasoft.studio.application.fullscreen"
+ contextId="org.eclipse.ui.contexts.dialogAndWindow"
+ platform="cocoa"
+ schemeId="org.bonitasoft.studio.application.scheme"
+ sequence="M1+M3+F11">
+ </key>
+ <key
+ commandId="org.bonitasoft.studio.application.fullscreen"
+ contextId="org.eclipse.ui.contexts.dialogAndWindow"
+ platform="gtk"
+ schemeId="org.bonitasoft.studio.application.scheme"
+ sequence="F11">
+ </key>
+ <key
+ commandId="org.eclipse.ui.views.showView"
+ contextId="org.bonitasoft.studio.model.process.diagram.form.ui.diagramContext"
+ schemeId="org.bonitasoft.studio.application.scheme"
+ sequence="M1+F">
+ <parameter
+ id="org.eclipse.ui.views.showView.viewId"
+ value="org.bonitasoft.studio.views.overview.tree">
+ </parameter>
+ </key>
+ <key
+ commandId="org.eclipse.ui.views.showView"
+ contextId="org.bonitasoft.studio.model.process.diagram.ui.diagramContext"
+ schemeId="org.bonitasoft.studio.application.scheme"
+ sequence="M1+F">
+ <parameter
+ id="org.eclipse.ui.views.showView.viewId"
+ value="org.bonitasoft.studio.views.overview.tree">
+ </parameter>
+ </key>
+ <key
+ commandId="org.eclipse.ui.views.showView"
+ contextId="org.eclipse.ui.contexts.dialogAndWindow"
+ schemeId="org.bonitasoft.studio.application.scheme"
+ sequence="M1+M3+O">
+ <parameter
+ id="org.eclipse.ui.views.showView.viewId"
+ value="org.bonitasoft.studio.views.overview">
+ </parameter>
+ </key>
+ <key
+ commandId="org.bonitasoft.studio.application.open"
+ contextId="org.eclipse.ui.contexts.window"
+ schemeId="org.bonitasoft.studio.application.scheme"
+ sequence="F3">
+ </key>
+ <scheme
+ id="org.bonitasoft.studio.application.scheme"
+ name="BonitaBPM Scheme"
+ parentId="org.eclipse.ui.defaultAcceleratorConfiguration">
+ </scheme>
+ <key
+ commandId="org.bonitasoft.studio.deployCommand"
+ contextId="org.eclipse.ui.contexts.window"
+ schemeId="org.bonitasoft.studio.application.scheme"
+ sequence="M1+M2+D">
+ </key>
+ <key
+ commandId="org.bonitasoft.studio.renameCommand"
+ contextId="org.eclipse.ui.contexts.window"
+ schemeId="org.bonitasoft.studio.application.scheme"
+ sequence="M1+R">
+ </key>
+ </extension>
+ <extension
+ point="org.eclipse.ui.popupMenus">
+ <viewerContribution
+ id="org.bonitasoft.studio.application.refreshAction"
+ targetID="#TextEditorContext">
+ <action
+ class="org.bonitasoft.studio.application.actions.EditorRefreshActionDelegate"
+ icon="icons/refresh.png"
+ id="org.bonitasoft.studio.application.refreshAction"
+ label="%Refresh"
+ menubarPath="additions">
+ </action>
+ </viewerContribution>
+ </extension>
+ <extension
+ point="org.bonitasoft.studio.coolbarContributionItem">
+ <coolbarItem
+ class="org.bonitasoft.studio.application.coolbar.NewCoolbarItem"
+ priority="0"
+ toolbarPosition="0">
+ </coolbarItem>
+ <coolbarItem
+ class="org.bonitasoft.studio.application.coolbar.ProjectOverviewCoolbarItem"
+ priority="0"
+ toolbarPosition="2">
+ </coolbarItem>
+ <coolbarItem
+ class="org.bonitasoft.studio.application.coolbar.DeployCoolbarItem"
+ toolbarPosition="3">
+ </coolbarItem>
+ <coolbarItem
+ class="org.bonitasoft.studio.application.coolbar.SaveCoolbarItem"
+ priority="0"
+ toolbarPosition="6">
+ </coolbarItem>
+ <coolbarItem
+ class="org.bonitasoft.studio.application.coolbar.SeparatorCoolbarItem"
+ priority="0"
+ toolbarPosition="10">
+ </coolbarItem>
+ <coolbarItem
+ class="org.bonitasoft.studio.application.coolbar.SeparatorCoolbarItem"
+ priority="0"
+ toolbarPosition="13">
+ </coolbarItem>
+ <coolbarItem
+ class="org.bonitasoft.studio.application.coolbar.SeparatorCoolbarItem"
+ priority="0"
+ toolbarPosition="16">
+ </coolbarItem>
+ <coolbarItem
+ class="org.bonitasoft.studio.application.coolbar.PreferenceCoolbarItem"
+ priority="0"
+ toolbarPosition="18">
+ </coolbarItem>
+ <coolbarItem
+ class="org.bonitasoft.studio.application.coolbar.HelpCoolbarItem"
+ priority="0"
+ toolbarPosition="19">
+ </coolbarItem>
+ <coolbarItem
+ class="org.bonitasoft.studio.application.coolbar.WelcomeCoolbarItem"
+ priority="0"
+ toolbarPosition="20">
+ </coolbarItem>
+ </extension>
+ <extension
+ point="org.eclipse.ui.startup">
+ <startup
+ class="org.bonitasoft.studio.application.BonitaStudioWorkbenchAdvisor">
+ </startup>
+ </extension>
+ <extension
+ point="org.eclipse.ui.contexts">
+ <context
+ description="Bonita context"
+ id="org.bonitasoft.studio.context.id"
+ name="Bonita"
+ parentId="org.eclipse.ui.contexts.window">
+ </context>
+ </extension>
+ <extension
+ id="id1"
+ point="org.eclipse.e4.workbench.model">
+ <processor
+ apply="always"
+ beforefragment="false"
+ class="org.bonitasoft.studio.application.RemoveQuickAccessProcessor">
+ </processor>
+ <fragment
+ uri="fragment.e4xmi">
+ </fragment>
+ </extension>
+ <extension
+ point="org.eclipse.ui.navigator.viewer">
+ <viewer
+ viewerId="org.bonitasoft.studio.application.project.explorer">
+ <popupMenu
+ allowsPlatformContributions="false"
+ id="org.bonitasoft.studio.application.project.explorer#PopupMenu">
+ <insertionPoint
+ name="group.new"
+ separator="true">
+ </insertionPoint>
+ <insertionPoint
+ name="group.open"
+ separator="true">
+ </insertionPoint>
+ <insertionPoint
+ name="group.edit"
+ separator="true">
+ </insertionPoint>
+ <insertionPoint
+ name="group.reorganize"
+ separator="true">
+ </insertionPoint>
+ <insertionPoint
+ name="group.deploy">
+ </insertionPoint>
+ <insertionPoint
+ name="group.build"
+ separator="false">
+ </insertionPoint>
+ <insertionPoint
+ name="group.uninstall">
+ </insertionPoint>
+ <insertionPoint
+ name="group.import"
+ separator="true">
+ </insertionPoint>
+ <insertionPoint
+ name="group.export">
+ </insertionPoint>
+ <insertionPoint
+ name="group.manage.dependencies"
+ separator="true">
+ </insertionPoint>
+ <insertionPoint
+ name="additions"
+ separator="true">
+ </insertionPoint>
+ </popupMenu>
+ </viewer>
+ <viewerContentBinding
+ viewerId="org.bonitasoft.studio.application.project.explorer">
+ <includes>
+ <contentExtension
+ pattern="org.bonitasoft.studio.application.navigatorContent">
+ </contentExtension>
+ <contentExtension
+ pattern="org.eclipse.ui.navigator.resources.nested.nestedProjectContentProvider">
+ </contentExtension>
+ <contentExtension
+ pattern="org.eclipse.ui.navigator.resources.linkHelper">
+ </contentExtension>
+ <contentExtension
+ pattern="org.eclipse.ui.navigator.resources.filters.*">
+ </contentExtension>
+ <contentExtension
+ pattern="org.eclipse.jdt.java.ui.javaLinkHelper">
+ </contentExtension>
+ <contentExtension
+ pattern="org.codehaus.groovy.eclipse.ui.groovyContent">
+ </contentExtension>
+ <contentExtension
+ pattern="org.eclipse.jdt.java.ui.filters.*">
+ </contentExtension>
+ <contentExtension
+ pattern="org.bonitasoft.studio.application.project.explorer.filters.*">
+ </contentExtension>
+ <contentExtension
+ pattern="org.eclipse.ui.navigator.resources.nested.HideFolderWhenProjectIsShownAsNested">
+ </contentExtension>
+ <contentExtension
+ pattern="org.bonitasoft.studio.application.HideTopLevelProjectIfNested">
+ </contentExtension>
+ <contentExtension
+ pattern="org.bonitasoft.studio.application.hideEmptyFolders">
+ </contentExtension>
+ <contentExtension
+ pattern="org.bonitasoft.studio.application.hideClasspathContainers">
+ </contentExtension>
+ </includes>
+ <excludes>
+ <contentExtension
+ pattern="org.eclipse.ui.navigator.resources.filters.closedProject">
+ </contentExtension>
+ </excludes>
+ </viewerContentBinding>
+ </extension>
+ <extension
+ point="org.eclipse.ui.navigator.navigatorContent">
+ <navigatorContent
+ activeByDefault="true"
+ contentProvider="org.bonitasoft.studio.application.views.provider.BonitaExplorerContentProvider"
+ id="org.bonitasoft.studio.application.navigatorContent"
+ labelProvider="org.bonitasoft.studio.application.views.provider.BonitaExplorerLabelProvider"
+ name="Bonita Project Explorer Content"
+ priority="highest">
+ <triggerPoints>
+ <or>
+ <adapt type="org.eclipse.core.resources.IProject" >
+ <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.jdt.core.javanature"/>
+ </adapt>
+ <instanceof value="org.eclipse.core.resources.IResource" />
+ <instanceof value="org.eclipse.jdt.core.IJavaElement" />
+ <instanceof value="org.eclipse.jdt.core.IJarEntryResource" />
+ <instanceof value="org.eclipse.jdt.internal.ui.packageview.PackageFragmentRootContainer" />
+ </or>
+ </triggerPoints>
+ <possibleChildren>
+ <or>
+ <instanceof value="org.eclipse.core.resources.IResource" />
+ <instanceof value="org.eclipse.jdt.core.IJavaElement" />
+ <instanceof value="org.eclipse.jdt.core.IJarEntryResource" />
+ <instanceof value="org.eclipse.jdt.internal.ui.packageview.PackageFragmentRootContainer" />
+ </or>
+ </possibleChildren>
+ <actionProvider
+ class="org.bonitasoft.studio.application.views.provider.CustomOpenActionProvider"
+ id="org.bonitasoft.studio.application.views.OpenActionProvider">
+ </actionProvider>
+ <commonSorter
+ class="org.bonitasoft.studio.application.views.ProjectExplorerViewerComparator"
+ id="org.eclipse.ui.navigator.resources.sorters.defaultSorter">
+ </commonSorter>
+ <actionProvider
+ class="org.eclipse.jdt.internal.ui.navigator.JavaNavigatorRefactorActionProvider"
+ id="org.bonitasoft.studio.navigator.actions.RefactorActions"
+ overrides="org.eclipse.ui.navigator.resources.actions.RefactorActions">
+ <enablement>
+ <and>
+ <or>
+ <and>
+ <instanceof
+ value="org.eclipse.core.resources.IProject">
+ </instanceof>
+ <test
+ property="org.eclipse.core.resources.projectNature"
+ value="org.eclipse.jdt.core.javanature">
+ </test>
+ </and>
+ <instanceof
+ value="org.eclipse.jdt.core.IJavaElement">
+ </instanceof>
+ <instanceof
+ value="org.eclipse.jdt.core.IJarEntryResource">
+ </instanceof>
+ <instanceof
+ value="org.eclipse.jdt.internal.ui.packageview.PackageFragmentRootContainer">
+ </instanceof>
+ <instanceof
+ value="org.eclipse.core.resources.IFile">
+ </instanceof>
+ <adapt
+ type="java.util.Collection">
+ <count
+ value="0">
+ </count>
+ </adapt>
+ </or>
+ <not>
+ <instanceof
+ value="org.eclipse.jdt.core.IPackageFragmentRoot">
+ </instanceof>
+ </not>
+ </and>
+ </enablement>
+ </actionProvider>
+ </navigatorContent>
+ <commonFilter
+ activeByDefault="true"
+ class="org.bonitasoft.studio.application.views.filters.ProvidedContentFilter"
+ description="Artifacts that are provided by Bonita and should nor be edited"
+ id="org.bonitasoft.studio.application.project.explorer.filters.providedContent"
+ name="Provided content"
+ visibleInUI="true">
+ </commonFilter>
+ <commonFilter
+ activeByDefault="true"
+ class="org.bonitasoft.studio.application.views.filters.HideTopLevelProjectIfNested"
+ description="When a project is shown as nested under its container, hide the view of the project as immediate child of workspace or working set"
+ id="org.bonitasoft.studio.application.HideTopLevelProjectIfNested"
+ name="Nested Projects: hide top-level project if shown as nested">
+ </commonFilter>
+ <commonFilter
+ activeByDefault="true"
+ class="org.bonitasoft.studio.application.views.filters.HideEmptyRepository"
+ id="org.bonitasoft.studio.application.hideEmptyFolders"
+ name="Hide empty repository"
+ visibleInUI="true">
+ </commonFilter>
+ <commonFilter
+ activeByDefault="true"
+ class="org.bonitasoft.studio.application.views.filters.HideClasspathContainer"
+ id="org.bonitasoft.studio.application.hideClasspathContainers"
+ name="Hide classpath containers">
+ </commonFilter>
+ </extension>
+ <extension
+ point="org.eclipse.ui.navigator.linkHelper">
+ <linkHelper
+ class="org.bonitasoft.studio.application.views.ExtendendResourceLinkHelper"
+ id="org.bonitasoft.studio.application.extendedResourceLinkHelper">
+ <editorInputEnablement>
+ <instanceof
+ value="org.eclipse.emf.common.ui.URIEditorInput">
+ </instanceof></editorInputEnablement>
+ <selectionEnablement>
+ <instanceof
+ value="org.eclipse.core.resources.IFile">
+ </instanceof>
+ </selectionEnablement>
+ </linkHelper>
+ </extension>
+ <extension
+ point="org.eclipse.core.expressions.propertyTesters">
+ <propertyTester
+ class="org.bonitasoft.studio.application.property.tester.BonitaProjectPropertyTester"
+ id="org.bonitasoft.studio.application.project.propertyTester"
+ namespace="org.bonitasoft.studio.application"
+ properties="isBonitaProject,isBonitaStoreContainer,isContainer"
+ type="org.eclipse.core.runtime.IAdaptable">
+ </propertyTester>
+ <propertyTester
+ class="org.bonitasoft.studio.application.property.tester.GroovySrcPropertyTester"
+ id="org.bonitasoft.studio.groovy.ui.GroovySrcPropertyTester"
+ namespace="org.bonitasoft.studio.groovy.ui"
+ properties="isGroovySrcFolder"
+ type="org.eclipse.core.runtime.IAdaptable">
+ </propertyTester>
+ </extension>
+ <extension
+ point="org.eclipse.ui.perspectives">
+ <perspective
+ class="org.bonitasoft.studio.application.perspective.PerspectiveJavaFactory"
+ id="org.bonitasoft.studio.perspective.java"
+ name="Java Perspective">
+ </perspective>
+ <perspective
+ class="org.bonitasoft.studio.application.perspective.WelcomePagePerspectiveFactory"
+ id="org.bonitasoft.studio.perspective.welcomePage"
+ name="No editor opened perspective">
+ </perspective>
+ <perspective
+ class="org.bonitasoft.studio.application.perspective.TextEditorPerspectiveFactory"
+ id="org.bonitasoft.studio.perspective.textEditor"
+ name="Text Perspective">
+ </perspective>
+ <perspective
+ class="org.bonitasoft.studio.application.views.overview.ProjectOverviewPerspective"
+ fixed="true"
+ id="org.bonitasoft.studio.application.extension.perspective"
+ name="%projectExtensionPerspective">
+ </perspective>
+ </extension>
+ <extension
+ point="org.eclipse.ui.perspectiveExtensions">
+ <perspectiveExtension
+ targetID="*">
+ <hiddenMenuItem
+ id="org.eclipse.jdt.ui.refactoring.menu">
+ </hiddenMenuItem>
+ <hiddenMenuItem
+ id="org.eclipse.search.menu">
+ </hiddenMenuItem>
+ <hiddenMenuItem
+ id="org.eclipse.jdt.ui/org.eclipse.jdt.ui.refactoring.menu">
+ </hiddenMenuItem>
+ <hiddenMenuItem
+ id="org.eclipse.jdt.ui.source.menu">
+ </hiddenMenuItem>
+ <hiddenMenuItem
+ id="org.eclipse.ui.run">
+ </hiddenMenuItem>
+ </perspectiveExtension>
+ </extension>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.bonitasoft.studio.application.project.explorer.new?after=additions">
+ <command
+ commandId="org.bonitasoft.studio.application.newFile.command"
+ icon="icons/newfile_wiz.png"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <with
+ variable="activeMenuSelection">
+ <and>
+ <count
+ value="1">
+ </count>
+ <iterate>
+ <and>
+ <not>
+ <test
+ property="org.bonitasoft.studio.application.isBonitaStoreContainer">
+ </test>
+ </not>
+ <test
+ property="org.bonitasoft.studio.application.isContainer">
+ </test>
+ </and>
+ </iterate>
+ </and>
+ </with>
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.bonitasoft.studio.application.newFolder.command"
+ icon="icons/newfolder_wiz.gif"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <with
+ variable="activeMenuSelection">
+ <and>
+ <count
+ value="1">
+ </count>
+ <iterate>
+ <and>
+ <not>
+ <test
+ property="org.bonitasoft.studio.application.isBonitaStoreContainer">
+ </test>
+ </not>
+ <test
+ property="org.bonitasoft.studio.application.isContainer">
+ </test>
+ </and>
+ </iterate>
+ </and>
+ </with>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension
+ point="org.eclipse.ui.editors">
+ <editor
+ class="org.bonitasoft.studio.application.views.overview.ProjectOverviewEditorPart"
+ default="false"
+ id="org.bonitasoft.studio.application.dashboard.editor"
+ name="%projectOverviewView">
+ </editor>
+ </extension>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ category="org.bonitasoft.studio.preferences.pages.BPM"
+ class="org.bonitasoft.studio.application.preference.MavenPreferencePage"
+ id="org.bonitasoft.studio.preferences.maven"
+ name="Maven">
+ <keywordReference
+ id="org.bonitasoft.studio.application.extension.keyword">
+ </keywordReference>
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.ui.keywords">
+ <keyword
+ id="org.bonitasoft.studio.application.extension.keyword"
+ label="%extensionKeywords">
+ </keyword>
+ </extension>
+ <extension
+ point="org.bonitasoft.studio.common.dashboardContribution">
+ <dashboardContribution
+ class="org.bonitasoft.studio.application.views.overview.DiagramOverviewContribution">
+ </dashboardContribution>
+ </extension>
+
+</plugin>
--- /dev/null
+/**
+ * Copyright (C) 2009-2011 BonitaSoft S.A.
+ * BonitaSoft, 31 rue Gustave Eiffel - 38000 Grenoble
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2.0 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.bonitasoft.studio.application;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.net.URI;
+import java.net.URL;
+import java.util.Objects;
+import java.util.stream.Stream;
+
+import org.apache.maven.cli.configuration.SettingsXmlConfigurationProcessor;
+import org.bonitasoft.studio.application.contribution.IPreShutdownContribution;
+import org.bonitasoft.studio.application.handler.OpenReleaseNoteHandler;
+import org.bonitasoft.studio.application.i18n.Messages;
+import org.bonitasoft.studio.common.DateUtil;
+import org.bonitasoft.studio.common.FileUtil;
+import org.bonitasoft.studio.common.ProjectUtil;
+import org.bonitasoft.studio.common.RedirectURLBuilder;
+import org.bonitasoft.studio.common.extension.BonitaStudioExtensionRegistryManager;
+import org.bonitasoft.studio.common.extension.IPostStartupContribution;
+import org.bonitasoft.studio.common.jface.MessageDialogWithLink;
+import org.bonitasoft.studio.common.log.BonitaStudioLog;
+import org.bonitasoft.studio.common.platform.tools.PlatformUtil;
+import org.bonitasoft.studio.common.repository.AbstractRepository;
+import org.bonitasoft.studio.common.repository.RepositoryManager;
+import org.bonitasoft.studio.common.repository.core.ActiveOrganizationProvider;
+import org.bonitasoft.studio.common.repository.core.maven.DependencyGetOperation;
+import org.bonitasoft.studio.common.repository.core.maven.contribution.InstallBonitaMavenArtifactsOperation;
+import org.bonitasoft.studio.common.repository.core.maven.migration.model.GAV;
+import org.bonitasoft.studio.common.repository.core.maven.repository.MavenRepositories;
+import org.bonitasoft.studio.designer.core.UIDesignerServerManager;
+import org.bonitasoft.studio.engine.BOSEngineManager;
+import org.bonitasoft.studio.engine.BOSWebServerManager;
+import org.bonitasoft.studio.engine.server.StartEngineJob;
+import org.bonitasoft.studio.model.process.diagram.part.ProcessDiagramEditorPlugin;
+import org.bonitasoft.studio.model.process.impl.ContractInputImpl;
+import org.bonitasoft.studio.preferences.BonitaStudioPreferencesPlugin;
+import org.bonitasoft.studio.preferences.BonitaThemeConstants;
+import org.bonitasoft.studio.preferences.dialog.BonitaPreferenceDialog;
+import org.eclipse.core.internal.databinding.beans.BeanPropertyHelper;
+import org.eclipse.core.internal.resources.Workspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.InvalidRegistryObjectException;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.jobs.JobChangeAdapter;
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.di.InjectionException;
+import org.eclipse.e4.ui.css.swt.theme.IThemeEngine;
+import org.eclipse.gmf.runtime.lite.svg.SVGFigure;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.m2e.core.MavenPlugin;
+import org.eclipse.m2e.core.embedder.IMavenConfiguration;
+import org.eclipse.m2e.core.repository.IRepository;
+import org.eclipse.m2e.core.repository.IRepositoryRegistry;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IStartup;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.application.IWorkbenchConfigurer;
+import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
+import org.eclipse.ui.application.WorkbenchAdvisor;
+import org.eclipse.ui.application.WorkbenchWindowAdvisor;
+import org.eclipse.ui.contexts.IContextService;
+import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.internal.Workbench;
+import org.eclipse.ui.internal.browser.WebBrowserUtil;
+import org.eclipse.ui.internal.ide.IDEInternalWorkbenchImages;
+import org.eclipse.ui.internal.ide.IDEWorkbenchMessages;
+import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;
+import org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog;
+import org.osgi.framework.Bundle;
+
+import com.google.common.base.Joiner;
+
+public class BonitaStudioWorkbenchAdvisor extends WorkbenchAdvisor implements IStartup {
+
+ private static final String AWT_DRAW_STRING_AS_IMAGE = "drawStringAsImage";
+
+ private final class PreShutdownStudio implements IRunnableWithProgress {
+
+ @Override
+ public void run(final IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+ monitor.beginTask(Messages.shuttingDown, IProgressMonitor.UNKNOWN);
+ UIDesignerServerManager.getInstance().stop();
+ Job.getJobManager().cancel(StartEngineJob.FAMILY);
+ executePreShutdownContribution();
+ new ActiveOrganizationProvider().flush();
+ if (BOSWebServerManager.getInstance().serverIsStarted() && BOSEngineManager.getInstance().isRunning()) {
+ BOSEngineManager.getInstance().stop();
+ }
+ FileUtil.deleteDir(ProjectUtil.getBonitaStudioWorkFolder());
+ deleteTomcatTempDir();
+ monitor.done();
+ }
+
+ private void deleteTomcatTempDir() {
+ File tempDir = new File(ResourcesPlugin.getWorkspace().getRoot().getLocation().toOSString() + File.separator
+ + "tomcat" + File.separator + "server" + File.separator + "temp");
+ if (tempDir.exists()) {
+ FileUtil.deleteDir(tempDir);
+ }
+ }
+
+ private void executePreShutdownContribution() {
+ final IConfigurationElement[] elements = BonitaStudioExtensionRegistryManager.getInstance()
+ .getConfigurationElements(
+ "org.bonitasoft.studio.application.preshutdown"); //$NON-NLS-1$
+ IPreShutdownContribution contrib = null;
+ for (final IConfigurationElement elem : elements) {
+ try {
+ contrib = (IPreShutdownContribution) elem.createExecutableExtension("class"); //$NON-NLS-1$
+ contrib.execute();
+ } catch (final CoreException e) {
+ BonitaStudioLog.error(e);
+ }
+ }
+ }
+ }
+
+ private static final String FIRST_STARTUP = "firstStartup";
+
+ @Override
+ public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(final IWorkbenchWindowConfigurer configurer) {
+ return new BonitaStudioWorkbenchWindowAdvisor(configurer);
+ }
+
+ @Override
+ public void initialize(final IWorkbenchConfigurer configurer) {
+ super.initialize(configurer);
+ configurer.setSaveAndRestore(true);
+ final IContextService contextService = PlatformUI.getWorkbench().getService(IContextService.class);
+ contextService.activateContext("org.bonitasoft.studio.context.id");
+ initializeIDEImages(configurer);
+ }
+
+ /**
+ * Workaround to load icons for Common Navigator component in a RCP
+ */
+ private void initializeIDEImages(final IWorkbenchConfigurer configurer) {
+ IDE.registerAdapters();
+ declareWorkbenchImages();
+ }
+
+ /********************************************************************
+ * /!\ Copy-pasted from IDEWorkbenchAvisor.declareWorkbenchImages() *
+ * ******************************************************************
+ * Declares all IDE-specific workbench images. This includes both "shared"
+ * images (named in {@link org.eclipse.ui.ide.IDE.SharedImages}) and internal images (named in
+ * {@link org.eclipse.ui.internal.ide.IDEInternalWorkbenchImages}).
+ *
+ * @see IWorkbenchConfigurer#declareImage
+ */
+ private void declareWorkbenchImages() {
+
+ final String ICONS_PATH = "$nl$/icons/full/";//$NON-NLS-1$
+ final String PATH_ELOCALTOOL = ICONS_PATH + "elcl16/"; // Enabled //$NON-NLS-1$
+
+ // toolbar
+ // icons.
+ final String PATH_DLOCALTOOL = ICONS_PATH + "dlcl16/"; // Disabled //$NON-NLS-1$
+ // //$NON-NLS-1$
+ // toolbar
+ // icons.
+ final String PATH_ETOOL = ICONS_PATH + "etool16/"; // Enabled toolbar //$NON-NLS-1$
+ // //$NON-NLS-1$
+ // icons.
+ final String PATH_DTOOL = ICONS_PATH + "dtool16/"; // Disabled toolbar //$NON-NLS-1$
+ // //$NON-NLS-1$
+ // icons.
+ final String PATH_OBJECT = ICONS_PATH + "obj16/"; // Model object //$NON-NLS-1$
+ // //$NON-NLS-1$
+ // icons
+ final String PATH_WIZBAN = ICONS_PATH + "wizban/"; // Wizard //$NON-NLS-1$
+ // //$NON-NLS-1$
+ // icons
+
+ // View icons
+ final String PATH_EVIEW = ICONS_PATH + "eview16/"; //$NON-NLS-1$
+
+ final Bundle ideBundle = Platform.getBundle(IDEWorkbenchPlugin.IDE_WORKBENCH);
+
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_ETOOL_BUILD_EXEC, PATH_ETOOL
+ + "build_exec.png", //$NON-NLS-1$
+ false);
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_ETOOL_BUILD_EXEC_HOVER,
+ PATH_ETOOL + "build_exec.png", false); //$NON-NLS-1$
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_ETOOL_BUILD_EXEC_DISABLED,
+ PATH_DTOOL + "build_exec.png", false); //$NON-NLS-1$
+
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_ETOOL_SEARCH_SRC, PATH_ETOOL
+ + "search_src.png", //$NON-NLS-1$
+ false);
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_ETOOL_SEARCH_SRC_HOVER,
+ PATH_ETOOL + "search_src.png", false); //$NON-NLS-1$
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_ETOOL_SEARCH_SRC_DISABLED,
+ PATH_DTOOL + "search_src.png", false); //$NON-NLS-1$
+
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_ETOOL_NEXT_NAV, PATH_ETOOL
+ + "next_nav.png", //$NON-NLS-1$
+ false);
+
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_ETOOL_PREVIOUS_NAV, PATH_ETOOL
+ + "prev_nav.png", //$NON-NLS-1$
+ false);
+
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_WIZBAN_NEWPRJ_WIZ, PATH_WIZBAN
+ + "newprj_wiz.png", //$NON-NLS-1$
+ false);
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_WIZBAN_NEWFOLDER_WIZ,
+ PATH_WIZBAN + "newfolder_wiz.png", false); //$NON-NLS-1$
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_WIZBAN_NEWFILE_WIZ, PATH_WIZBAN
+ + "newfile_wiz.png", //$NON-NLS-1$
+ false);
+
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_WIZBAN_IMPORTDIR_WIZ,
+ PATH_WIZBAN + "importdir_wiz.png", false); //$NON-NLS-1$
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_WIZBAN_IMPORTZIP_WIZ,
+ PATH_WIZBAN + "importzip_wiz.png", false); //$NON-NLS-1$
+
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_WIZBAN_EXPORTDIR_WIZ,
+ PATH_WIZBAN + "exportdir_wiz.png", false); //$NON-NLS-1$
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_WIZBAN_EXPORTZIP_WIZ,
+ PATH_WIZBAN + "exportzip_wiz.png", false); //$NON-NLS-1$
+
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_WIZBAN_RESOURCEWORKINGSET_WIZ,
+ PATH_WIZBAN + "workset_wiz.png", false); //$NON-NLS-1$
+
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_DLGBAN_SAVEAS_DLG, PATH_WIZBAN
+ + "saveas_wiz.png", //$NON-NLS-1$
+ false);
+
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_DLGBAN_QUICKFIX_DLG, PATH_WIZBAN
+ + "quick_fix.png", //$NON-NLS-1$
+ false);
+
+ declareWorkbenchImage(ideBundle, IDE.SharedImages.IMG_OBJ_PROJECT,
+ PATH_OBJECT + "prj_obj.png", true); //$NON-NLS-1$
+ declareWorkbenchImage(ideBundle,
+ IDE.SharedImages.IMG_OBJ_PROJECT_CLOSED, PATH_OBJECT
+ + "cprj_obj.png", //$NON-NLS-1$
+ true);
+ declareWorkbenchImage(ideBundle, IDE.SharedImages.IMG_OPEN_MARKER,
+ PATH_ELOCALTOOL + "gotoobj_tsk.png", true); //$NON-NLS-1$
+
+ // Quick fix icons
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_ELCL_QUICK_FIX_ENABLED,
+ PATH_ELOCALTOOL + "smartmode_co.png", true); //$NON-NLS-1$
+
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_DLCL_QUICK_FIX_DISABLED,
+ PATH_DLOCALTOOL + "smartmode_co.png", true); //$NON-NLS-1$
+
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_OBJS_FIXABLE_WARNING,
+ PATH_OBJECT + "quickfix_warning_obj.png", true); //$NON-NLS-1$
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_OBJS_FIXABLE_ERROR,
+ PATH_OBJECT + "quickfix_error_obj.png", true); //$NON-NLS-1$
+
+ // task objects
+ // declareRegistryImage(IDEInternalWorkbenchImages.IMG_OBJS_HPRIO_TSK,
+ // PATH_OBJECT+"hprio_tsk.png");
+ // declareRegistryImage(IDEInternalWorkbenchImages.IMG_OBJS_MPRIO_TSK,
+ // PATH_OBJECT+"mprio_tsk.png");
+ // declareRegistryImage(IDEInternalWorkbenchImages.IMG_OBJS_LPRIO_TSK,
+ // PATH_OBJECT+"lprio_tsk.png");
+
+ declareWorkbenchImage(ideBundle, IDE.SharedImages.IMG_OBJS_TASK_TSK,
+ PATH_OBJECT + "taskmrk_tsk.png", true); //$NON-NLS-1$
+ declareWorkbenchImage(ideBundle, IDE.SharedImages.IMG_OBJS_BKMRK_TSK,
+ PATH_OBJECT + "bkmrk_tsk.png", true); //$NON-NLS-1$
+
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_OBJS_COMPLETE_TSK, PATH_OBJECT
+ + "complete_tsk.png", //$NON-NLS-1$
+ true);
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_OBJS_INCOMPLETE_TSK, PATH_OBJECT
+ + "incomplete_tsk.png", //$NON-NLS-1$
+ true);
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_OBJS_WELCOME_ITEM, PATH_OBJECT
+ + "welcome_item.png", //$NON-NLS-1$
+ true);
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_OBJS_WELCOME_BANNER, PATH_OBJECT
+ + "welcome_banner.png", //$NON-NLS-1$
+ true);
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_OBJS_ERROR_PATH, PATH_OBJECT
+ + "error_tsk.png", //$NON-NLS-1$
+ true);
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_OBJS_WARNING_PATH, PATH_OBJECT
+ + "warn_tsk.png", //$NON-NLS-1$
+ true);
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_OBJS_INFO_PATH, PATH_OBJECT
+ + "info_tsk.png", //$NON-NLS-1$
+ true);
+
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_LCL_FLAT_LAYOUT, PATH_ELOCALTOOL
+ + "flatLayout.png", //$NON-NLS-1$
+ true);
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_LCL_HIERARCHICAL_LAYOUT,
+ PATH_ELOCALTOOL + "hierarchicalLayout.png", true); //$NON-NLS-1$
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_ETOOL_PROBLEM_CATEGORY,
+ PATH_ETOOL + "problem_category.png", true); //$NON-NLS-1$
+
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_ETOOL_PROBLEMS_VIEW,
+ PATH_EVIEW + "problems_view.png", true); //$NON-NLS-1$
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_ETOOL_PROBLEMS_VIEW_ERROR,
+ PATH_EVIEW + "problems_view_error.png", true); //$NON-NLS-1$
+ declareWorkbenchImage(ideBundle,
+ IDEInternalWorkbenchImages.IMG_ETOOL_PROBLEMS_VIEW_WARNING,
+ PATH_EVIEW + "problems_view_warning.png", true); //$NON-NLS-1$
+ }
+
+ /**
+ * Declares an IDE-specific workbench image.
+ *
+ * @param symbolicName
+ * the symbolic name of the image
+ * @param path
+ * the path of the image file; this path is relative to the base
+ * of the IDE plug-in
+ * @param shared
+ * <code>true</code> if this is a shared image, and
+ * <code>false</code> if this is not a shared image
+ * @see IWorkbenchConfigurer#declareImage
+ */
+ private void declareWorkbenchImage(final Bundle ideBundle, final String symbolicName,
+ final String path, final boolean shared) {
+ final URL url = FileLocator.find(ideBundle, new Path(path), null);
+ final ImageDescriptor desc = ImageDescriptor.createFromURL(url);
+ getWorkbenchConfigurer().declareImage(symbolicName, desc, shared);
+ }
+
+ @Override
+ public String getInitialWindowPerspectiveId() {
+ return null;
+ }
+
+ @Override
+ public String getMainPreferencePageId() {
+ return "org.bonitasoft.studio.preferences.preferences.UIPreferencePage";
+ }
+
+ @Override
+ public void preStartup() {
+ // Initialize adapter factories and avoid deadlock at startup
+ ProcessDiagramEditorPlugin.getInstance().getItemProvidersAdapterFactory();
+ try {
+ new InstallBonitaMavenArtifactsOperation(MavenPlugin.getMaven().getLocalRepository()).execute();
+ } catch (CoreException e) {
+ BonitaStudioLog.error(e);
+ }
+ disableInternalWebBrowser();
+ setSystemProperties();
+ }
+
+ protected void setSystemProperties() {
+ var instanceLocation = Platform.getInstanceLocation();
+ if (instanceLocation != null) {
+ String workspaceLocation = new File(instanceLocation.getURL().getFile()).getPath();
+ System.setProperty("bonita.tomcat.lib.dir", String.format("%s%stomcat%sserver%slib", workspaceLocation,
+ File.separator, File.separator, File.separator));
+ BonitaStudioLog.info("bonita.tomcat.lib.dir=" + System.getProperty("bonita.tomcat.lib.dir"),
+ ApplicationPlugin.PLUGIN_ID);
+ } else {
+ BonitaStudioLog.warning("Property 'bonita.tomcat.lib.dir' has not been set.", ApplicationPlugin.PLUGIN_ID);
+ }
+ // Workaround for STUDIO-3651
+ System.setProperty(AWT_DRAW_STRING_AS_IMAGE, System.getProperty(AWT_DRAW_STRING_AS_IMAGE, "true"));
+ }
+
+ @Override
+ public void postStartup() {
+ var initializeProjectJob = new Job("Initialize project") {
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ RepositoryManager.getInstance().getAccessor().start(monitor);
+ return Status.OK_STATUS;
+ }
+ };
+ initializeProjectJob.addJobChangeListener(new JobChangeAdapter() {
+
+ @Override
+ public void done(IJobChangeEvent event) {
+ if (initializeProjectJob.equals(event.getJob())) {
+ executePostStartupContributions();
+ }
+ super.done(event);
+ }
+ });
+ initializeProjectJob.setPriority(Job.INTERACTIVE);
+ initializeProjectJob.schedule();
+
+ super.postStartup();
+ IThemeEngine engine = PlatformUI.getWorkbench().getService(IThemeEngine.class);
+ synchroniseTheme(engine);
+ applyTheme(engine);
+ }
+
+ /**
+ * Synchronise active eclipse theme with the Bonita preference,
+ * to ensure that specifics adjustments for Dark theme are applied.
+ * The preference value can be outdated if the user update the theme from the eclipse preference panel.
+ */
+ private void synchroniseTheme(IThemeEngine engine) {
+ String currentValue = BonitaStudioPreferencesPlugin.getDefault().getPreferenceStore()
+ .getString(BonitaThemeConstants.STUDIO_THEME_PREFERENCE);
+ String activeTheme = engine.getActiveTheme() == null
+ ? null
+ : engine.getActiveTheme().getId();
+ if (!themeIsValid(activeTheme)) {
+ BonitaStudioPreferencesPlugin.getDefault().getPreferenceStore()
+ .setValue(BonitaThemeConstants.STUDIO_THEME_PREFERENCE, BonitaThemeConstants.LIGHT_THEME);
+ } else if (!Objects.equals(currentValue, engine.getActiveTheme().getId())) {
+ BonitaStudioPreferencesPlugin.getDefault().getPreferenceStore()
+ .setValue(BonitaThemeConstants.STUDIO_THEME_PREFERENCE, engine.getActiveTheme().getId());
+ }
+ }
+
+ private boolean themeIsValid(String themeId) {
+ if (themeId != null && !themeId.isBlank()) {
+ return Objects.equals(themeId, BonitaThemeConstants.LIGHT_THEME)
+ || Objects.equals(themeId, BonitaThemeConstants.DARK_THEME);
+ }
+ return false;
+ }
+
+ /**
+ * Apply the theme if required (usually on first start).
+ */
+ private void applyTheme(IThemeEngine engine) {
+ String expectedTheme = BonitaStudioPreferencesPlugin.getDefault().getPreferenceStore()
+ .getString(BonitaThemeConstants.STUDIO_THEME_PREFERENCE);
+ if (engine.getActiveTheme() == null
+ || !Objects.equals(expectedTheme, engine.getActiveTheme().getId())) {
+ BonitaStudioLog.info(String.format("Applying theme %s", expectedTheme), ApplicationPlugin.PLUGIN_ID);
+ engine.setTheme(expectedTheme, true);
+ }
+ }
+
+ /**
+ * Disconnect from the core workspace.
+ */
+ private void disconnectFromWorkspace(final IProgressMonitor monitor) {
+ // save the workspace
+ final MultiStatus status = new MultiStatus(
+ IDEWorkbenchPlugin.IDE_WORKBENCH, 1,
+ IDEWorkbenchMessages.ProblemSavingWorkbench, null);
+ try {
+ final ProgressMonitorJobsDialog p = new ProgressMonitorJobsDialog(
+ null);
+
+ final boolean applyPolicy = ResourcesPlugin.getWorkspace()
+ .getDescription().isApplyFileStatePolicy();
+
+ final IRunnableWithProgress runnable = new IRunnableWithProgress() {
+
+ @Override
+ public void run(final IProgressMonitor monitor) {
+ try {
+ if (applyPolicy) {
+ status.merge(((Workspace) ResourcesPlugin
+ .getWorkspace()).save(true, true, monitor));
+ }
+ } catch (final CoreException e) {
+ status.merge(e.getStatus());
+ }
+ }
+ };
+ p.run(true, false, runnable);
+ } catch (final InvocationTargetException e) {
+ status
+ .merge(new Status(IStatus.ERROR,
+ IDEWorkbenchPlugin.IDE_WORKBENCH, 1,
+ IDEWorkbenchMessages.InternalError, e
+ .getTargetException()));
+ } catch (final InterruptedException e) {
+ status.merge(new Status(IStatus.ERROR,
+ IDEWorkbenchPlugin.IDE_WORKBENCH, 1,
+ IDEWorkbenchMessages.InternalError, e));
+ }
+ ErrorDialog.openError(null,
+ IDEWorkbenchMessages.ProblemsSavingWorkspace, null, status,
+ IStatus.ERROR | IStatus.WARNING);
+ if (!status.isOK()) {
+ IDEWorkbenchPlugin.log(
+ IDEWorkbenchMessages.ProblemsSavingWorkspace, status);
+ }
+ }
+
+ protected void disableInternalWebBrowser() {
+ final String noRegister = System.getProperty("bonita.noregister"); //$NON-NLS-1$
+ if (noRegister == null || !noRegister.equals("1")) {
+ WebBrowserUtil.isInternalBrowserOperational = false;
+ }
+ }
+
+ @Override
+ public void postShutdown() {
+ super.postShutdown();
+ disconnectFromWorkspace(AbstractRepository.NULL_PROGRESS_MONITOR);
+ }
+
+ @Override
+ public boolean preShutdown() {
+ IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+ .getActivePage();
+ Stream.of(activePage.getViewReferences())
+ .filter(vr -> Objects.equals("org.eclipse.ui.browser.view", vr.getId()))
+ .forEach(activePage::hideView);
+ Job.getJobManager().cancel(StartEngineJob.FAMILY);
+ final boolean returnValue = super.preShutdown();
+ if (returnValue) {
+ try {
+ if (PlatformUI.isWorkbenchRunning() && PlatformUI.getWorkbench().getActiveWorkbenchWindow() != null
+ && PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() != null) {
+ PlatformUI.getWorkbench().getProgressService().run(true, false, new PreShutdownStudio());
+ return true;
+ }
+ } catch (final Exception e) {
+ BonitaStudioLog.error(e);
+ }
+ }
+ return returnValue;
+ }
+
+ @Override
+ public void earlyStartup() {
+ if (PlatformUtil.isHeadless()) {
+ return;//Do not execute earlyStartup in headless mode
+ }
+
+ new Job("Setup internal maven repository") {
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ new InstallBonitaMavenArtifactsOperation(MavenRepositories.internalRepository()).execute();
+ try {
+ testMavenCentralAccess(monitor);
+ } catch (InvocationTargetException | InterruptedException e) {
+ return new Status(IStatus.ERROR, getClass(), e.getMessage());
+ }
+ return Status.OK_STATUS;
+ }
+
+ private void testMavenCentralAccess(IProgressMonitor monitor)
+ throws InvocationTargetException, InterruptedException {
+ // Use an arbitrary artifact (small) to test maven central access
+ var operation = new DependencyGetOperation(
+ new GAV("org.bonitasoft.engine", "bonita-engine", "7.13.0", null, "pom", null));
+ MavenPlugin.getRepositoryRegistry().getRepositories(IRepositoryRegistry.SCOPE_SETTINGS).stream()
+ .map(IRepository::getUrl)
+ .forEach(operation::addRemoteRespository);
+ operation.run(monitor);
+ var result = operation.getResult();
+ if (result == null) {
+ IMavenConfiguration mavenConfiguration = MavenPlugin.getMavenConfiguration();
+ var userSettingsFile = mavenConfiguration.getUserSettingsFile() != null
+ ? new File(mavenConfiguration.getUserSettingsFile())
+ : SettingsXmlConfigurationProcessor.DEFAULT_USER_SETTINGS_FILE;
+ Display.getDefault().syncExec(() -> {
+ var message = Messages.cannotReachMavenCentralRepositoryMessage;
+ if (userSettingsFile.exists()) {
+ message = message + System.lineSeparator()
+ + String.format(Messages.validateExistingMavenConfigurationMessage,
+ userSettingsFile.getAbsolutePath());
+ }
+ int buttonId = new MessageDialogWithLink(Display.getDefault().getActiveShell(),
+ Messages.cannotReachMavenCentralRepositoryTitle,
+ null,
+ message,
+ MessageDialog.WARNING,
+ new String[] { IDialogConstants.IGNORE_LABEL,
+ Messages.retry,
+ Messages.configure },
+ 0,
+ URI.create(RedirectURLBuilder.create("728"))).open();
+ if (buttonId == 2) {
+ BonitaPreferenceDialog dialog = new BonitaPreferenceDialog(
+ new Shell(Display.getDefault()));
+ dialog.create();
+ dialog.setSelectedPreferencePage(BonitaPreferenceDialog.MAVEN_PAGE_ID);
+ dialog.open();
+ try {
+ testMavenCentralAccess(monitor);
+ } catch (InvocationTargetException | InterruptedException e) {
+ BonitaStudioLog.error(e);
+ }
+ } else if (buttonId == 1) {
+ try {
+ testMavenCentralAccess(monitor);
+ } catch (InvocationTargetException | InterruptedException e) {
+ BonitaStudioLog.error(e);
+ }
+ }
+ });
+ }
+ }
+ }.schedule();
+
+ preLoad();
+
+ final long startupDuration = System.currentTimeMillis() - BonitaStudioApplication.START_TIME;
+ BonitaStudioLog.info("Startup duration : " + DateUtil.getDisplayDuration(startupDuration),
+ ApplicationPlugin.PLUGIN_ID);
+ ApplicationPlugin.getDefault().getPreferenceStore().setDefault(FIRST_STARTUP, true);
+ if (isFirstStartup()) {
+// new OpenReleaseNoteHandler().openBrowser();
+// PlatformUtil.openIntroIfNoOtherEditorOpen();
+// }else {
+ PlatformUtil.openDashboardIfNoOtherEditorOpen();
+ }
+ ApplicationPlugin.getDefault().getPreferenceStore().setValue(FIRST_STARTUP, false);
+ }
+
+ private void executePostStartupContributions() {
+ final IConfigurationElement[] elements = BonitaStudioExtensionRegistryManager.getInstance()
+ .getConfigurationElements(
+ "org.bonitasoft.studio.common.poststartup"); //$NON-NLS-1$
+ for (final IConfigurationElement elem : elements) {
+ final Workbench workbench = (Workbench) PlatformUI.getWorkbench();
+ try {
+ IPostStartupContribution contrib = (IPostStartupContribution) ContextInjectionFactory
+ .make(Platform.getBundle(elem.getDeclaringExtension().getNamespaceIdentifier())
+ .loadClass(elem.getAttribute("class")), workbench.getContext());
+ Display.getDefault().asyncExec(contrib::execute);
+ } catch (InjectionException | ClassNotFoundException | InvalidRegistryObjectException e) {
+ BonitaStudioLog.error(e);
+ }
+ }
+ }
+
+ private boolean isFirstStartup() {
+ return ApplicationPlugin.getDefault().getPreferenceStore().getBoolean(FIRST_STARTUP);
+ }
+
+ private void preLoad() {
+ //Fix performance issue
+ BeanPropertyHelper.getPropertyDescriptor(ContractInputImpl.class, "name");
+ preLoadSVG();
+ }
+
+ private void preLoadSVG() {
+ final SVGFigure svgFigure = new SVGFigure();
+ try {
+ final File iconsFolder = new File(
+ FileLocator.toFileURL(Platform.getBundle("org.bonitasoft.studio.pics").getResource("icons"))
+ .getFile());
+ initSVGFigure(svgFigure, iconsFolder, "figures");
+ initSVGFigure(svgFigure, iconsFolder, "decoration", "svg");
+ } catch (final IOException e) {
+ BonitaStudioLog.error(e);
+ }
+ }
+
+ private void initSVGFigure(final SVGFigure svgFigure, final File iconsFolder, final String... pathToFolder) {
+ for (final String filename : new File(iconsFolder, Joiner.on(File.separatorChar).join(pathToFolder)).list()) {
+ if (filename.endsWith(".svgz")) {
+ svgFigure
+ .setURI("platform:/plugin/org.bonitasoft.studio.pics/icons/" + Joiner.on("/").join(pathToFolder)
+ + "/" + filename);
+ }
+ }
+ }
+
+}
--- /dev/null
+/**
+ * Copyright (C) 2010 BonitaSoft S.A.
+ * BonitaSoft, 31 rue Gustave Eiffel - 38000 Grenoble
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2.0 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.bonitasoft.studio.application.actions;
+
+import org.bonitasoft.studio.common.platform.tools.PlatformUtil;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+
+public class OpenIntroCommandHandler extends AbstractHandler {
+
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+/* PlatformUtil.openIntro();*/
+ return null;
+ }
+
+}
--- /dev/null
+/**
+ * Copyright (C) 2012 BonitaSoft S.A.
+ * BonitaSoft, 31 rue Gustave Eiffel - 38000 Grenoble
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2.0 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.bonitasoft.studio.application.coolbar;
+
+import org.bonitasoft.studio.application.actions.OpenIntroCommandHandler;
+import org.bonitasoft.studio.application.i18n.Messages;
+import org.bonitasoft.studio.common.extension.IBonitaContributionItem;
+import org.bonitasoft.studio.common.log.BonitaStudioLog;
+import org.bonitasoft.studio.pics.Pics;
+import org.bonitasoft.studio.pics.PicsConstants;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.action.ContributionItem;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.swt.widgets.ToolItem;
+
+/**
+ * @author Romain Bioteau
+ */
+public class WelcomeCoolbarItem extends ContributionItem implements IBonitaContributionItem {
+/*
+ private final OpenIntroCommandHandler handler;
+
+ public WelcomeCoolbarItem() {
+ handler = new OpenIntroCommandHandler();
+ }
+*/
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.jface.action.IContributionItem#getId()
+ */
+/* @Override
+ public String getId() {
+ return "org.bonitasoft.studio.coolbar.welcome";
+ }
+
+ @Override
+ public String getText() {
+ return Messages.WelcomeButtonLabel;
+ }
+
+ @Override
+ public void fill(final ToolBar toolbar, final int index, final int iconSize) {
+ final ToolItem item = new ToolItem(toolbar, SWT.PUSH | SWT.RIGHT);
+ item.setToolTipText(Messages.WelcomeButtonLabel);
+ if (iconSize < 0) {
+ item.setImage(Pics.getImage(PicsConstants.coolbar_welcome_32));
+ item.setHotImage(Pics.getImage(PicsConstants.coolbar_welcome_hot_32));
+ } else {
+ item.setImage(Pics.getImage(PicsConstants.coolbar_welcome_24));
+ item.setHotImage(Pics.getImage(PicsConstants.coolbar_welcome_hot_24));
+ }
+ item.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ try {
+ handler.execute(new ExecutionEvent());
+ } catch (final ExecutionException e1) {
+ BonitaStudioLog.error(e1);
+ }
+ }
+ });
+
+ }
+*/
+}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension-point id="org.bonitasoft.studio.engine.kpityperesolver" name="org.bonitasoft.studio.engine.kpityperesolver" schema="schema/org.bonitasoft.studio.engine.kpityperesolver.exsd"/>
+ <extension-point id="preEngineAction" name="preEngineAction" schema="schema/preEngineAction.exsd"/>
+ <extension-point id="postEngineAction" name="preEngineAction" schema="schema/postEngineAction.exsd"/>
+ <extension-point id="bonitaWebServerManager" name="bonitaWebServerManager" schema="schema/bonitaWebServerManager.exsd"/>
+ <extension-point id="org.bonitasoft.studio.engine.processDefinitionExporter" name="org.bonitasoft.studio.engine.processDefinitionExporter" schema="schema/org.bonitasoft.studio.engine.processDefinitionExporter.exsd"/>
+ <extension-point id="bonitaEngineManager" name="bonitaEngineManager" schema="schema/bonitaEngineManager.exsd"/>
+ <extension-point id="org.bonitasoft.studio.engine.definition.builder" name="org.bonitasoft.studio.engine.definition.builder" schema="schema/DefinitionBuilder.exsd"/>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ id="org.bonitasoft.studio.engine.runCommand"
+ name="%runProcessCommand">
+ <commandParameter
+ id="configuration"
+ name="configuration"
+ optional="true">
+ </commandParameter>
+ </command>
+ <command
+ defaultHandler="org.bonitasoft.studio.engine.command.RestartServerCommand"
+ id="org.bonitasoft.studio.engine.resetServerCommand"
+ name="%resetServerCommand">
+ </command>
+ <command
+ id="org.bonitasoft.studio.engine.exportAsBarCommand"
+ name="%buildBarLabel">
+ </command>
+ <commandParameterType
+ id="org.bonitasoft.studio.commandParameterType.abstractProcess"
+ type="org.bonitasoft.studio.model.process.AbstractProcess">
+ </commandParameterType>
+ </extension>
+ <extension
+ point="org.bonitasoft.studio.coolbarContributionItem">
+ <coolbarItem
+ class="org.bonitasoft.studio.engine.coolbar.OpenPortalCoolbarItem"
+ priority="0"
+ toolbarPosition="12">
+ </coolbarItem>
+ <coolbarItem
+ class="org.bonitasoft.studio.engine.coolbar.RunCoolbarItem"
+ priority="0"
+ toolbarPosition="15">
+ </coolbarItem>
+ </extension>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ class="org.bonitasoft.studio.engine.preferences.ServerPreferencePage"
+ id="org.bonitasoft.studio.preferences.server"
+ name="Server preference page">
+ <keywordReference
+ id="org.bonitasoft.studio.preferences.keywordReference.server">
+ </keywordReference>
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.core.runtime.preferences">
+
+ <initializer
+ class="org.bonitasoft.studio.engine.preferences.EnginePreferencesInitializer">
+ </initializer>
+ </extension>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="menu:org.eclipse.ui.main.menu?after=org.bonitasoft.studio.development">
+ <menu
+ id="org.bonitasoft.studio.menu.run"
+ label="%serverMenuLabel">
+ <command
+ commandId="org.bonitasoft.studio.engine.runCommand"
+ icon="icons/run.png"
+ style="push">
+ </command>
+ <command
+ commandId="org.bonitasoft.studio.application.openConsole"
+ disabledIcon="icons/user_xp_disabled.png"
+ icon="icons/user_xp.png"
+ style="push">
+ </command>
+ <separator
+ name="org.bonitasoft.studio.engine.separator1"
+ visible="true">
+ </separator>
+ <command
+ commandId="org.bonitasoft.studio.engine.exportAsBarCommand"
+ disabledIcon="icons/export_disabled.png"
+ icon="icons/export.png"
+ style="push">
+ </command>
+ <separator
+ name="org.bonitasoft.studio.engine.separator2"
+ visible="true">
+ </separator>
+ <command
+ commandId="org.bonitasoft.studio.engine.resetServerCommand"
+ icon="icons/reset_server.png"
+ style="push">
+ </command>
+ <visibleWhen
+ checkEnabled="true">
+ <reference
+ definitionId="isBonitaPerspectiveActive">
+ </reference>
+ </visibleWhen>
+ </menu>
+ </menuContribution>
+ <!--menuContribution
+ allPopups="false"
+ locationURI="popup:org.bonitasoft.studio.application.project.explorer?after=group.build">
+ <menu
+ icon="icons/export.png"
+ id="org.bonitasoft.studio.engine.buildDiagram"
+ label="%build">
+ <dynamic
+ class="org.bonitasoft.studio.engine.ui.contributionItem.BuildProcessContributionItem"
+ id="org.bonitasoft.studio.engine.buildContributionItem">
+ </dynamic>
+ <visibleWhen
+ checkEnabled="false">
+ <with
+ variable="activeMenuSelection">
+ <and>
+ <count
+ value="1">
+ </count>
+ <iterate>
+ <test
+ property="org.bonitasoft.studio.diagram.isDiagramFile">
+ </test>
+ </iterate>
+ </and>
+ </with>
+ </visibleWhen>
+ </menu>
+ </menuContribution-->
+ </extension>
+ <extension
+ point="org.eclipse.ui.handlers">
+ <handler
+ class="org.bonitasoft.studio.engine.command.ExportAsBarFileHandler"
+ commandId="org.bonitasoft.studio.engine.exportAsBarCommand">
+ </handler>
+ <handler
+ class="org.bonitasoft.studio.engine.command.RunProcessCommand"
+ commandId="org.bonitasoft.studio.engine.runCommand">
+ </handler>
+ </extension>
+ <extension
+ id="org.bonitasoft.studio.engine.fragment"
+ point="org.eclipse.e4.workbench.model">
+ <fragment
+ uri="fragment.e4xmi">
+ </fragment>
+ </extension>
+ <extension
+ point="org.bonitasoft.studio.common.repository.projectListenerProvider">
+ <projectListenerProvider
+ class="org.bonitasoft.studio.engine.contribution.BonitaProjectListenerProvider">
+ </projectListenerProvider>
+ </extension>
+ <extension
+ point="org.eclipse.ui.keywords">
+ <keyword
+ id="org.bonitasoft.studio.preferences.keywordReference.server"
+ label="%serverKeywords">
+ </keyword>
+ </extension>
+ <extension
+ point="org.bonitasoft.studio.common.barResourcesProvider">
+ <barResourceProvider
+ providerClass="org.bonitasoft.studio.engine.contribution.AdditionalResourcesBARResourcesProvider">
+ </barResourceProvider>
+ </extension>
+</plugin>
--- /dev/null
+/**
+ * Copyright (C) 2012-2015 Bonitasoft S.A.
+ * Bonitasoft, 32 rue Gustave Eiffel - 38000 Grenoble
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2.0 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.bonitasoft.studio.engine;
+
+import static java.util.Objects.requireNonNull;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+
+import org.bonitasoft.engine.api.ApplicationAPI;
+import org.bonitasoft.engine.api.CommandAPI;
+import org.bonitasoft.engine.api.IdentityAPI;
+import org.bonitasoft.engine.api.LoginAPI;
+import org.bonitasoft.engine.api.PageAPI;
+import org.bonitasoft.engine.api.PlatformAPI;
+import org.bonitasoft.engine.api.PlatformAPIAccessor;
+import org.bonitasoft.engine.api.ProcessAPI;
+import org.bonitasoft.engine.api.ProfileAPI;
+import org.bonitasoft.engine.api.TenantAPIAccessor;
+import org.bonitasoft.engine.api.TenantAdministrationAPI;
+import org.bonitasoft.engine.exception.BonitaHomeNotSetException;
+import org.bonitasoft.engine.exception.ServerAPIException;
+import org.bonitasoft.engine.exception.UnknownAPITypeException;
+import org.bonitasoft.engine.exception.UpdateException;
+import org.bonitasoft.engine.platform.LoginException;
+import org.bonitasoft.engine.platform.PlatformLoginException;
+import org.bonitasoft.engine.platform.PlatformLogoutException;
+import org.bonitasoft.engine.session.APISession;
+import org.bonitasoft.engine.session.PlatformSession;
+import org.bonitasoft.engine.session.SessionNotFoundException;
+import org.bonitasoft.studio.common.CommandExecutor;
+import org.bonitasoft.studio.common.extension.BonitaStudioExtensionRegistryManager;
+import org.bonitasoft.studio.common.log.BonitaStudioLog;
+import org.bonitasoft.studio.common.repository.AbstractRepository;
+import org.bonitasoft.studio.common.repository.RepositoryManager;
+import org.bonitasoft.studio.common.repository.extension.IEngineAction;
+import org.bonitasoft.studio.common.repository.model.IRepository;
+import org.bonitasoft.studio.engine.export.BarExporter;
+import org.bonitasoft.studio.engine.i18n.Messages;
+import org.bonitasoft.studio.engine.preferences.EnginePreferenceConstants;
+import org.bonitasoft.studio.model.configuration.Configuration;
+import org.bonitasoft.studio.model.process.AbstractProcess;
+import org.bonitasoft.studio.preferences.dialog.BonitaPreferenceDialog;
+import org.bonitasoft.studio.ui.notification.BonitaNotificator;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * @author Romain Bioteau
+ */
+public class BOSEngineManager {
+
+ public static final String CUSTOM_PERMISSIONS_MAPPING_PROPERTIES = "custom-permissions-mapping.properties";
+
+ public static final String CONSOLE_CONFIG_PROPERTIES = "console-config.properties";
+
+ private static final String POSTSTARTUP_CONTIBUTION_ID = "org.bonitasoft.studio.engine.postEngineAction";
+
+ public static final String PLATFORM_PASSWORD = "platform";
+
+ public static final String PLATFORM_USER = "platformAdmin";
+
+ public static final String BONITA_TECHNICAL_USER = "install";
+
+ public static final String BONITA_TECHNICAL_USER_PASSWORD = "install";
+
+ public static final String API_TYPE_PROPERTY_NAME = "org.bonitasoft.engine.api-type";
+
+ public static final String DEFAULT_TENANT_NAME = "default";
+
+ public static final String DEFAULT_TENANT_DESC = "The default tenant created by the Studio";
+
+ private static final String ENGINESERVERMANAGER_EXTENSION_D = "org.bonitasoft.studio.engine.bonitaEngineManager";
+
+ private static final long DEFAULT_TENANT_ID = 1;
+
+ public static final String SECURITY_CONFIG_PROPERTIES = "security-config.properties";
+
+ private static final String FIND_USER_PASSWORD_COMMAND = "org.bonitasoft.studio.actors.command.userPassword";
+
+ private static BOSEngineManager INSTANCE;
+
+ private boolean isRunning = false;
+
+ private IProgressMonitor monitor;
+
+ private CommandExecutor commandExecutor = new CommandExecutor();
+
+ protected BOSEngineManager(final IProgressMonitor monitor) {
+ if (monitor == null) {
+ this.monitor = AbstractRepository.NULL_PROGRESS_MONITOR;
+ } else {
+ this.monitor = monitor;
+ }
+ }
+
+ public static BOSEngineManager getInstance() {
+ return getInstance(null);
+ }
+
+ public static synchronized BOSEngineManager getInstance(final IProgressMonitor monitor) {
+ if (INSTANCE == null) {
+ INSTANCE = createInstance(monitor);
+ }
+ return INSTANCE;
+ }
+
+ protected static BOSEngineManager createInstance(final IProgressMonitor monitor) {
+ for (final IConfigurationElement element : BonitaStudioExtensionRegistryManager.getInstance()
+ .getConfigurationElements(ENGINESERVERMANAGER_EXTENSION_D)) {
+ try {
+ return (BOSEngineManager) element.createExecutableExtension("class");
+ } catch (final CoreException e) {
+ BonitaStudioLog.error(e, EnginePlugin.PLUGIN_ID);
+ }
+ }
+
+ return new BOSEngineManager(monitor);
+ }
+
+ public synchronized void start(AbstractRepository repository) {
+ if (!isRunning() || !BOSWebServerManager.getInstance().serverIsStarted()) {
+// boolean notifying = notifyStartServer();
+// monitor.beginTask(Messages.initializingProcessEngine, IProgressMonitor.UNKNOWN);
+// BOSWebServerManager.getInstance().startServer(repository, monitor);
+// isRunning = postEngineStart(repository);
+// if (notifying) {
+// notifyServerStarted();
+// }
+ }
+ }
+
+ private boolean notifyStartServer() {
+ if (EngineNotificationSemaphore.getInstance().tryAcquire()) {
+ if (!isLazyModeEnabled(EnginePlugin.getDefault().getPreferenceStore())) {
+ BonitaNotificator.openNotification(Messages.startServerNotificationTitle,
+ Messages.engineLazyModeNotificationLink, e -> {
+ BonitaPreferenceDialog dialog = new BonitaPreferenceDialog(new Shell(Display.getDefault()));
+ dialog.create();
+ dialog.setSelectedPreferencePage(BonitaPreferenceDialog.SERVER_SETTINGS_PAGE_ID);
+ dialog.open();
+ });
+ }
+ return true;
+ }
+ return false;
+ }
+
+ private boolean isLazyModeEnabled(IPreferenceStore preferenceStore) {
+ return preferenceStore.getBoolean(EnginePreferenceConstants.LAZYLOAD_ENGINE)
+ || System.getProperty(EnginePreferenceConstants.LAZYLOAD_ENGINE) != null;
+ }
+
+ public synchronized void start() {
+ start(RepositoryManager.getInstance().getCurrentRepository());
+ }
+
+ protected boolean postEngineStart(IRepository repository) {
+ //RESUME ENGINE IF PAUSED AT STARTUP
+ try {
+ final APISession apiSession = getLoginAPI().login(BONITA_TECHNICAL_USER, BONITA_TECHNICAL_USER_PASSWORD);
+ final TenantAdministrationAPI tenantManagementAPI = getTenantAdministrationAPI(apiSession);
+ if (tenantManagementAPI.isPaused()) {
+ tenantManagementAPI.resume();
+ }
+ executePostStartupContributions(repository);
+ } catch (final Exception e) {
+ return handlePostEngineStartException(e);
+ }
+ return true;
+ }
+
+ private void notifyServerStarted() {
+ BonitaNotificator.openNotification(Messages.startServerCompletedNotificationTitle,
+ Messages.serverRunningNotificationMessage);
+ EngineNotificationSemaphore.getInstance().release();
+ }
+
+ private boolean handlePostEngineStartException(final Exception e) {
+ if (tomcatServerIsRunning()) {
+ BonitaStudioLog.error(e);
+ } else {
+ BonitaStudioLog.warning("Tomcat server has been shutdown before first start ended.", EnginePlugin.PLUGIN_ID);
+ }
+ return false;
+ }
+
+ protected boolean tomcatServerIsRunning() {
+ return BOSWebServerManager.getInstance().serverIsStarted();
+ }
+
+ public synchronized void stop() {
+ APISession session = null;
+ TenantAdministrationAPI tenantManagementAPI = null;
+ try {
+ session = loginDefaultTenant(null);
+ tenantManagementAPI = getTenantAdministrationAPI(session);
+ tenantManagementAPI.pause();
+ if (dropBusinessDataDBOnExit()) {
+ tenantManagementAPI.cleanAndUninstallBusinessDataModel();
+ } else {
+ tenantManagementAPI.uninstallBusinessDataModel();
+ }
+ tenantManagementAPI.resume();
+ } catch (final Exception e) {
+ BonitaStudioLog.error(e);
+ } finally {
+ if (tenantManagementAPI != null && tenantManagementAPI.isPaused()) {
+ try {
+ tenantManagementAPI.resume();
+ } catch (final UpdateException e) {
+ BonitaStudioLog.error(e);
+ }
+ }
+ if (session != null) {
+ logoutDefaultTenant(session);
+ }
+ }
+ if (BOSWebServerManager.getInstance().serverIsStarted()) {
+ BOSWebServerManager.getInstance().stopServer(monitor);
+ }
+ isRunning = false;
+ try {
+ BOSWebServerManager.getInstance().cleanBeforeShutdown();
+ } catch (final IOException e) {
+ BonitaStudioLog.error(e);
+ }
+ }
+
+ private boolean dropBusinessDataDBOnExit() {
+ final IPreferenceStore preferenceStore = EnginePlugin.getDefault().getPreferenceStore();
+ return preferenceStore.getBoolean(EnginePreferenceConstants.DROP_BUSINESS_DATA_DB_ON_EXIT_PREF);
+ }
+
+ protected void executePostStartupContributions(IRepository repository) throws Exception {
+ final IConfigurationElement[] elements = BonitaStudioExtensionRegistryManager.getInstance()
+ .getConfigurationElements(POSTSTARTUP_CONTIBUTION_ID);
+ IEngineAction contrib = null;
+ for (final IConfigurationElement elem : elements) {
+ try {
+ contrib = (IEngineAction) elem.createExecutableExtension("class"); //$NON-NLS-1$
+ } catch (final CoreException e) {
+ BonitaStudioLog.error(e);
+ }
+ if (contrib != null && contrib.shouldRun(repository)) {
+ final APISession session = getLoginAPI().login(BONITA_TECHNICAL_USER, BONITA_TECHNICAL_USER_PASSWORD);
+ try {
+ contrib.run(session,repository);
+ } finally {
+ if (session != null) {
+ logoutDefaultTenant(session);
+ }
+ }
+ }
+ }
+
+ }
+
+ public boolean isRunning() {
+ return isRunning;
+ }
+
+ public ProcessAPI getProcessAPI(final APISession session) {
+ try {
+ return TenantAPIAccessor.getProcessAPI(session);
+ } catch (final Exception e) {
+ BonitaStudioLog.error(e);
+ }
+ return null;
+ }
+
+ protected LoginAPI getLoginAPI() throws BonitaHomeNotSetException, ServerAPIException, UnknownAPITypeException {
+ return TenantAPIAccessor.getLoginAPI();
+ }
+
+ public APISession loginDefaultTenant(final IProgressMonitor monitor)
+ throws LoginException, BonitaHomeNotSetException, ServerAPIException,
+ UnknownAPITypeException {
+ return loginTenant(BONITA_TECHNICAL_USER, BONITA_TECHNICAL_USER_PASSWORD, monitor);
+ }
+
+ public APISession loginTenant(final String login, final String password, final IProgressMonitor monitor)
+ throws LoginException,
+ BonitaHomeNotSetException, ServerAPIException, UnknownAPITypeException {
+ if (!isRunning() && monitor != null) {
+ monitor.beginTask(Messages.waitingForEngineToStart, IProgressMonitor.UNKNOWN);
+ }
+ start();
+ BonitaStudioLog.debug("Attempt to login as " + login, EnginePlugin.PLUGIN_ID);
+ final APISession session = getLoginAPI().login(requireNonNull(login), requireNonNull(password));
+ if (session != null) {
+ BonitaStudioLog.debug("Login successful.", EnginePlugin.PLUGIN_ID);
+ }
+ return session;
+ }
+
+ public void logoutDefaultTenant(final APISession session) {
+ try {
+ getLoginAPI().logout(session);
+ } catch (final Exception e) {
+ BonitaStudioLog.error(e);
+ }
+ }
+
+ public IdentityAPI getIdentityAPI(final APISession session)
+ throws BonitaHomeNotSetException, ServerAPIException, UnknownAPITypeException {
+ return TenantAPIAccessor.getIdentityAPI(session);
+ }
+
+ public CommandAPI getCommandAPI(final APISession session)
+ throws BonitaHomeNotSetException, ServerAPIException,
+ UnknownAPITypeException {
+ return TenantAPIAccessor.getCommandAPI(session);
+ }
+
+ public ProfileAPI getProfileAPI(final APISession session)
+ throws BonitaHomeNotSetException, ServerAPIException,
+ UnknownAPITypeException {
+ return TenantAPIAccessor.getProfileAPI(session);
+ }
+
+ public PageAPI getPageAPI(final APISession session)
+ throws BonitaHomeNotSetException, ServerAPIException, UnknownAPITypeException {
+ return TenantAPIAccessor.getCustomPageAPI(session);
+ }
+
+ public ApplicationAPI getApplicationAPI(final APISession session)
+ throws BonitaHomeNotSetException, ServerAPIException, UnknownAPITypeException {
+ return TenantAPIAccessor.getLivingApplicationAPI(session);
+ }
+
+ public TenantAdministrationAPI getTenantAdministrationAPI(final APISession session)
+ throws BonitaHomeNotSetException,
+ ServerAPIException, UnknownAPITypeException {
+ return TenantAPIAccessor.getTenantAdministrationAPI(session);
+ }
+
+ public PlatformSession loginPlatform(IProgressMonitor monitor)
+ throws PlatformLoginException, BonitaHomeNotSetException, ServerAPIException, UnknownAPITypeException {
+ if (!isRunning() && monitor != null) {
+ monitor.beginTask(Messages.waitingForEngineToStart, IProgressMonitor.UNKNOWN);
+ }
+ start();
+ return PlatformAPIAccessor.getPlatformLoginAPI().login(PLATFORM_USER, PLATFORM_PASSWORD);
+ }
+
+ public void logoutPlatform(PlatformSession session)
+ throws PlatformLogoutException, SessionNotFoundException, BonitaHomeNotSetException, ServerAPIException,
+ UnknownAPITypeException {
+ PlatformAPIAccessor.getPlatformLoginAPI().logout(session);
+ }
+
+ public PlatformAPI getPlatformAPI(PlatformSession session)
+ throws BonitaHomeNotSetException, ServerAPIException, UnknownAPITypeException {
+ return PlatformAPIAccessor.getPlatformAPI(session);
+ }
+
+ public APISession createSession(final AbstractProcess process, final String configurationId,
+ final IProgressMonitor monitor) throws Exception {
+ final Configuration configuration = BarExporter.getInstance().getConfiguration(process, configurationId);
+ APISession session;
+ String username = configuration.getUsername();
+ String password = retrieveUserPasswordFromActiveOrga(username)
+ .orElseThrow(() -> new Exception(
+ String.format("Unable to retrieve the password of %s in the active organization.",
+ username)));
+ try {
+ session = BOSEngineManager.getInstance().loginTenant(username, password,
+ monitor);
+ } catch (final Exception e1) {
+ throw new Exception(Messages.bind(Messages.loginFailed,
+ new String[] { username, process.getName(),
+ process.getVersion() }),
+ e1);
+ }
+ if (session == null) {
+ throw new Exception(Messages.bind(Messages.loginFailed,
+ new String[] { username, process.getName(),
+ process.getVersion() }));
+ }
+ return session;
+ }
+
+ private Optional<String> retrieveUserPasswordFromActiveOrga(String user) {
+ Map<String, Object> parameters = new HashMap<>();
+ parameters.put("userName", user);
+ Object result = commandExecutor.executeCommand(FIND_USER_PASSWORD_COMMAND, parameters);
+ return result instanceof Optional ? (Optional<String>) result : Optional.empty();
+ }
+
+ public byte[] getTenantConfigResourceContent(String resourceName, IProgressMonitor monitor)
+ throws PlatformLoginException, BonitaHomeNotSetException, ServerAPIException, UnknownAPITypeException,
+ PlatformLogoutException, SessionNotFoundException, FileNotFoundException {
+ PlatformSession loginPlatform = null;
+ try {
+ loginPlatform = loginPlatform(monitor);
+ final PlatformAPI platformAPI = getPlatformAPI(loginPlatform);
+ final Map<Long, Map<String, byte[]>> clientTenantConfigurations = platformAPI.getClientTenantConfigurations();
+ final Map<String, byte[]> resources = clientTenantConfigurations.get(DEFAULT_TENANT_ID);
+ if (!resources.containsKey(resourceName)) {
+ throw new FileNotFoundException(String.format("Resource %s does not exist in database.", resourceName));
+ }
+ return resources.get(resourceName);
+ } finally {
+ if (loginPlatform != null) {
+ logoutPlatform(loginPlatform);
+ }
+ }
+ }
+
+ public void updateTenantConfigResourceContent(String resourceName, byte[] content)
+ throws PlatformLoginException, BonitaHomeNotSetException,
+ ServerAPIException, UnknownAPITypeException,
+ UpdateException, PlatformLogoutException, SessionNotFoundException {
+ PlatformSession loginPlatform = null;
+ try {
+ loginPlatform = loginPlatform(null);
+ final PlatformAPI platformAPI = getPlatformAPI(loginPlatform);
+ platformAPI.updateClientTenantConfigurationFile(DEFAULT_TENANT_ID, resourceName, content);
+ } finally {
+ if (loginPlatform != null) {
+ logoutPlatform(loginPlatform);
+ }
+ }
+ }
+
+}
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<introContent>
+ <page id="root" content="welcome.html"/>
+ <!-- <page id="eXchange" url="http://www.bonitasoft.org/exchange/index.php?browser=studio"/>-->
+</introContent>
--- /dev/null
+<!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" xml:lang="en" lang="en"
+ dir="ltr">
+
+<head>
+<title>Welcome</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
+<link href="css/tailwind-1.1.2.min.css" rel="stylesheet" type="text/css" />
+</head>
+
+<body class="background">
+ <div class="container mx-auto">
+ <div class="flex items-stretch content-center flex-wrap h-screen">
+ <div class="w-1/3 p-4">
+ <div
+ class="max-w-sm mx-auto p-6 bg-box rounded-lg shadow-lg h-full text-color">
+ <contentProvider id="design-icon"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" />
+ <contentProvider id="design-title"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" />
+ <ul class="text-color">
+ <li><contentProvider id="new-project-action"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" /></li>
+ <li><contentProvider id="switch-action"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" /></li>
+ <li><contentProvider id="import-action"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" /></li>
+ <li><contentProvider id="clone-action"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" /></li>
+ </ul>
+ </div>
+ </div>
+ <div class="w-1/3 p-4">
+ <div
+ class="max-w-sm mx-auto p-6 bg-box rounded-lg shadow-lg h-full text-color">
+ <contentProvider id="recent-icon"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" />
+ <contentProvider id="recent-title"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" />
+ <contentProvider id="recent-files"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" />
+ </div>
+ </div>
+<!-- <div class="w-1/3 p-4 self-center">
+ <contentProvider id="community-logo"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" />
+</div>-->
+ <div class="w-1/3 p-4">
+ <div
+ class="max-w-sm mx-auto p-6 bg-box rounded-lg shadow-lg h-full text-color">
+ <contentProvider id="learn-icon"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" />
+ <contentProvider id="learn-title"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" />
+ <ul>
+ <li><contentProvider id="documentation-link"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" /></li>
+ <li><contentProvider id="release-notes-link"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" /></li>
+ <li><contentProvider id="getting-started-link"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" /></li>
+ <li><contentProvider id="camp-video-series-link"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" /></li>
+ <li><contentProvider id="videos-podcasts-link"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" /></li>
+ <li><contentProvider id="training-link"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" /></li>
+ <li><contentProvider id="blog-link"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" /></li>
+ </ul>
+ </div>
+ </div>
+ <div class="w-1/3 p-4">
+ <div
+ class="max-w-sm mx-auto p-6 bg-box rounded-lg shadow-lg h-full text-color">
+ <contentProvider id="help-icon"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" />
+ <contentProvider id="help-title"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" />
+ <ul>
+ <li><contentProvider id="forum-link"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" /></li>
+ <li><contentProvider id="report-issue-link"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" /></li>
+ <li><contentProvider id="feedback-link"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" /></li>
+ </ul>
+ </div>
+ </div>
+ <div class="w-1/3 p-4">
+ <div
+ class="max-w-sm mx-auto p-6 bg-box rounded-lg shadow-lg h-full text-color">
+ <contentProvider id="resources-icon"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" />
+ <contentProvider id="resources-title"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" />
+ <ul>
+ <li><contentProvider id="getting-started-bos-link"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" /></li>
+ <li><contentProvider id="user-application-link"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" /></li>
+ <li><contentProvider id="admin-application-link"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" /></li>
+ <li><contentProvider id="procurement-example-link"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" /></li>
+ <li><contentProvider id="expense-report-example-link"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" /></li>
+ <li><contentProvider id="community-contribution-link"
+ pluginId="org.bonitasoft.studio.intro"
+ class="org.bonitasoft.studio.intro.content.IntroContentProvider" /></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+</body>
+
+</html>
--- /dev/null
+openWelcomePage_label=Welcome to Japan Digital Studio
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.ui.intro">
+ <intro
+ class="org.eclipse.ui.intro.config.CustomizableIntroPart"
+ icon="icons/jds-icon-16-16-transparent.png"
+ id="org.bonitasoft.studio.application.intro"
+ label="%openWelcomePage_label">
+ </intro>
+ <introProductBinding
+ introId="org.bonitasoft.studio.application.intro"
+ productId="org.bonitasoft.studio.product">
+ </introProductBinding>
+ </extension>
+ <extension
+ point="org.eclipse.ui.intro.config">
+ <config
+ configurer="org.bonitasoft.studio.intro.configurer.BontaIntroConfigurer"
+ content="content/introContent.xml"
+ id="org.bonitasoft.studio.application.configId"
+ introId="org.bonitasoft.studio.application.intro">
+ <presentation
+ home-page-id="root">
+ <implementation
+ kind="html"
+ os="win32,linux,macosx"
+ style="$theme$">
+ </implementation>
+ </presentation>
+ </config>
+ </extension>
+
+</plugin>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.bonitasoft.studio</groupId>
+ <artifactId>bundles</artifactId>
+ <version>7.13.0</version>
+ </parent>
+ <name>Bonita Studio Community Plugins</name>
+ <groupId>org.bonitasoft.studio.bundles</groupId>
+ <artifactId>plugins</artifactId>
+ <packaging>pom</packaging>
+
+
+ <modules>
+ <module>bonita-business-data-generator</module>
+ <module>bonita-studio-watchdog</module>
+ <module>org.bonitasoft.studio-models</module>
+ <module>org.bonitasoft.studio.application</module>
+ <module>org.bonitasoft.studio.console.libs</module>
+ <module>org.bonitasoft.studio.model</module>
+ <module>org.bonitasoft.studio.model.edit</module>
+ <module>org.bonitasoft.studio.tests-utils</module>
+ <module>org.bonitasoft.studio.diagram</module>
+ <module>org.bonitasoft.studio.businessobject</module>
+ <module>org.bonitasoft.studio.common</module>
+ <module>org.bonitasoft.studio.common.diagram</module>
+ <module>org.bonitasoft.studio.common.repository</module>
+ <module>org.bonitasoft.studio.contract</module>
+ <module>org.bonitasoft.studio.configuration</module>
+ <!--<module>org.bonitasoft.studio.connector.wizard.office</module>
+ <module>org.bonitasoft.studio.connector.wizard.sapjco3</module>
+ <module>org.bonitasoft.studio.connector.wizard.sforce</module>
+ <module>org.bonitasoft.studio.connector.wizard.uipath</module>-->
+ <module>org.bonitasoft.studio.connectors</module>
+ <module>org.bonitasoft.studio.connectors.model</module>
+ <module>org.bonitasoft.studio.connectors.model.edit</module>
+ <module>org.bonitasoft.studio.data</module>
+ <module>org.bonitasoft.studio.datatools</module>
+ <module>org.bonitasoft.studio.decision.table</module>
+ <module>org.bonitasoft.studio.dependencies</module>
+ <module>org.bonitasoft.studio.designer</module>
+ <module>org.bonitasoft.studio.designer.linux</module>
+ <module>org.bonitasoft.studio.designer.macosx</module>
+ <module>org.bonitasoft.studio.designer.war</module>
+ <module>org.bonitasoft.studio.designer.win32</module>
+ <module>org.bonitasoft.studio.diagram.custom</module>
+ <module>org.bonitasoft.studio.document</module>
+ <module>org.bonitasoft.studio.engine</module>
+ <module>org.bonitasoft.studio.exporter</module>
+ <module>org.bonitasoft.studio.expression.editor</module>
+ <module>org.bonitasoft.studio.groovy</module>
+ <module>org.bonitasoft.studio.groovy.ui</module>
+ <module>org.bonitasoft.studio.identity</module>
+ <module>org.bonitasoft.studio.importer</module>
+ <module>org.bonitasoft.studio.importer.bos</module>
+ <module>org.bonitasoft.studio.intro</module>
+ <module>org.bonitasoft.studio.la</module>
+ <module>org.bonitasoft.studio.migration</module>
+ <module>org.bonitasoft.studio.model.edit.custom</module>
+ <module>org.bonitasoft.studio.refactoring</module>
+ <module>org.bonitasoft.studio.parameters</module>
+ <module>org.bonitasoft.studio.pics</module>
+ <module>org.bonitasoft.studio.pics.bonitasoft</module>
+ <module>org.bonitasoft.studio.preferences</module>
+ <module>org.bonitasoft.studio.properties</module>
+ <module>org.bonitasoft.studio.rest.api.extension</module>
+ <module>org.bonitasoft.studio.sap.dependency</module>
+ <module>org.bonitasoft.studio.sap.mock</module>
+ <module>org.bonitasoft.studio.scripting</module>
+ <module>org.bonitasoft.studio.sqlbuilder.ex</module>
+ <module>org.bonitasoft.studio.team</module>
+ <module>org.bonitasoft.studio.team.git</module>
+ <module>org.bonitasoft.studio.ui</module>
+ <module>org.bonitasoft.studio.validation</module>
+ <module>org.bonitasoft.studio.validation.common</module>
+ <module>org.bonitasoft.studio.xml</module>
+ <module>org.omg.schema.spec.bpmn</module>
+ <module>org.bonitasoft.studio-product</module>
+ </modules>
+
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <testSourceDirectory>src-test/java</testSourceDirectory>
+ <testResources>
+ <testResource>
+ <directory>src-test/resources</directory>
+ </testResource>
+ </testResources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>default-test</id>
+ <phase>test</phase>
+ <configuration>
+ <systemProperties>
+ <osgi.nls.warnings>ignore</osgi.nls.warnings>
+ </systemProperties>
+ <includes>
+ <include>**/*Test.java</include>
+ </includes>
+ </configuration>
+ <goals>
+ <goal>test</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>default-testCompile</id>
+ <phase>test-compile</phase>
+ <goals>
+ <goal>testCompile</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>local-repository</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ <modules>
+ <module>org.bonitasoft.studio.local.repository</module>
+ </modules>
+ </profile>
+ </profiles>
+
+</project>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ id="product"
+ name="Japan Digital Studio"
+ point="org.eclipse.core.runtime.products">
+ <product
+ application="org.bonitasoft.studio.application.application"
+ name="Japan Digital Studio">
+ <property
+ name="windowImages"
+ value="icons/jds-icon-16-16-transparent.png,icons/jds-icon-32-32-transparent.png,icons/jds-icon-48-48-transparent.png,icons/jds-icon-64-64-transparent.png,icons/jds-icon-128-128-transparent.png">
+ </property>
+ <property
+ name="appName"
+ value="Japan Digital Studio">
+ </property>
+ <property
+ name="aboutText"
+ value="Japan Digital Studio
Build : XXX_BONITA_PRODUCT_VERSION_XXX

This software is licensed under GPL v2.">
+ </property>
+ <property
+ name="aboutImage"
+ value="about.bmp">
+ </property>
+ <property
+ name="startupProgressRect"
+ value="0,286,600,14">
+ </property>
+ <property
+ name="preferenceCustomization"
+ value="plugin_customization.ini">
+ </property>
+ <property
+ name="startupForegroundColor"
+ value="00FF00">
+ </property>
+ <property
+ name="startupMessageRect"
+ value="0,0,0,0">
+ </property>
+ <property
+ name="applicationXMI"
+ value="org.bonitasoft.studio.application/LegacyIDE.e4xmi">
+ </property>
+ <property
+ name="lifeCycleURI"
+ value="bundleclass://org.bonitasoft.studio.application/org.bonitasoft.studio.application.LifeCycleManager">
+ </property>
+
+ </product>
+ </extension>
+
+<!-- =================================================================================== -->
+<!-- Themes -->
+<!-- =================================================================================== -->
+
+</plugin>
--- /dev/null
+bin.includes = META-INF/,\
+ .,\
+ lib/\
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.bonitasoft.studio.bundles</groupId>
+ <artifactId>plugins</artifactId>
+ <version>7.13.0</version>
+ </parent>
+ <groupId>org.bonitasoft.studio.bundles.plugins</groupId>
+ <artifactId>org.bonitasoft.studio.console.libs</artifactId>
+ <packaging>eclipse-plugin</packaging>
+
+ <properties>
+ <tomcat.bundle.dir>${basedir}/tomcat</tomcat.bundle.dir>
+ <lib.dir>lib</lib.dir>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.bonitasoft.engine</groupId>
+ <artifactId>bonita-client</artifactId>
+ <version>${engine.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>javax.xml.bind</groupId>
+ <artifactId>jsr173_api</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.bonitasoft.engine</groupId>
+ <artifactId>bonita-common</artifactId>
+ <version>${engine.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>javax.xml.bind</groupId>
+ <artifactId>jsr173_api</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>parse-version</id>
+ <goals>
+ <goal>parse-version</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>regex-property</id>
+ <goals>
+ <goal>regex-property</goal>
+ </goals>
+ <configuration>
+ <name>osgiVersion</name>
+ <value>${parsedVersion.osgiVersion}</value>
+ <regex>.SNAPSHOT</regex>
+ <replacement>.qualifier</replacement>
+ <failIfNoMatch>false</failIfNoMatch>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <!--<execution>
+ <id>Retrieve BOS Tomcat Bundle</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>unpack</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.bonitasoft.distrib</groupId>
+ <artifactId>bundle-tomcat</artifactId>
+ <version>${bundle.version}</version>
+ <type>zip</type>
+ </artifactItem>
+ </artifactItems>
+ <outputDirectory>${tomcat.bundle.dir}</outputDirectory>
+ <overWriteReleases>true</overWriteReleases>
+ <overWriteSnapshots>true</overWriteSnapshots>
+ </configuration>
+ </execution>
+ <execution>
+ <id>Retrieve Studio specific war</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.bonitasoft.web.tooling</groupId>
+ <artifactId>studio-watchdog</artifactId>
+ <version>${project.version}</version>
+ <type>war</type>
+ </artifactItem>
+ </artifactItems>
+ <outputDirectory>${tomcat.bundle.dir}/server/webapps</outputDirectory>
+ <overWriteReleases>true</overWriteReleases>
+ <overWriteSnapshots>true</overWriteSnapshots>
+ </configuration>
+ </execution>-->
+ <execution>
+ <id>Retrieve bonita-client dependencies</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <configuration>
+ <stripVersion>true</stripVersion>
+ <stripClassifier>true</stripClassifier>
+ <outputDirectory>${lib.dir}</outputDirectory>
+ <overWriteReleases>true</overWriteReleases>
+ <overWriteSnapshots>true</overWriteSnapshots>
+ <overWriteIfNewer>true</overWriteIfNewer>
+ <includeScope>runtime</includeScope>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-clean-plugin</artifactId>
+ <configuration>
+ <filesets>
+ <fileset>
+ <directory>${lib.dir}</directory>
+ </fileset>
+ <!--<fileset>
+ <directory>${tomcat.bundle.dir}</directory>
+ </fileset>-->
+ </filesets>
+ </configuration>
+ </plugin>
+ <!-- <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>Resources generation add-on</id>
+ <phase>generate-resources</phase>
+ <configuration>
+ <target>
+
+ <move todir="${tomcat.bundle.dir}">
+ <fileset
+ dir="${tomcat.bundle.dir}/BonitaCommunity-${branding.version}/" />
+ </move>
+ <concat append="true"
+ destfile="${tomcat.bundle.dir}/server/conf/catalina.properties">java.awt.headless=true</concat>
+ <delete
+ dir="${tomcat.bundle.dir}/server/webapps/examples" />
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>-->
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <configuration>
+ <manifestLocation>META-INF/</manifestLocation>
+ <supportedProjectTypes>
+ <supportedProjectType>eclipse-plugin</supportedProjectType>
+ </supportedProjectTypes>
+ <instructions>
+ <_removeheaders>
+ Bnd-LastModified,
+ Build-Jdk,
+ Built-By,
+ Tool,
+ Include-Resource,
+ Private-Package,
+ Embedded-Artifacts,
+ Embed-Transitive,
+ Embed-StripVersion,
+ Embed-Directory,
+ Embed-Dependency,
+ Created-By
+ </_removeheaders>
+ <_exportcontents>
+ !org.bonitasoft.engine.*.impl.db;version="0.0.0",
+ !org.bonitasoft.engine.*.impl.db.archive;version="0.0.0",
+ org.bonitasoft.engine.*;version="0.0.0",
+ javax.xml.bind.*;version="2.2.0"
+ </_exportcontents>
+ <_nouses>true</_nouses>
+ <_noee>true</_noee>
+ <Bundle-SymbolicName>${project.artifactId};singleton:=true</Bundle-SymbolicName>
+ <Automatic-Module-Name>${project.artifactId}</Automatic-Module-Name>
+ <Bundle-Name>Bonita Community Tomcat Bundle</Bundle-Name>
+ <Bundle-Vendor>Bonitasoft S.A.</Bundle-Vendor>
+ <Bundle-Version>${osgiVersion}</Bundle-Version>
+ <Bundle-RequiredExecutionEnvironment>JavaSE-11</Bundle-RequiredExecutionEnvironment>
+ <Embed-Transitive>true</Embed-Transitive>
+ <Embed-Directory>${lib.dir}</Embed-Directory>
+ <Embed-StripVersion>true</Embed-StripVersion>
+ <Eclipse-BundleShape>dir</Eclipse-BundleShape>
+ <Include-Resource>
+ {maven-resources}, {maven-dependencies}<!--,
+ tomcat=tomcat-->
+ </Include-Resource>
+ <Bundle-ClassPath>.,{maven-dependencies}</Bundle-ClassPath>
+ <Import-Package>!*</Import-Package>
+ <Embed-Dependency>*;scope=compile|runtime</Embed-Dependency>
+ <Require-Bundle>javax.activation;bundle-version="1.1.0"</Require-Bundle>
+ </instructions>
+ <niceManifest>true</niceManifest>
+ </configuration>
+ <executions>
+ <execution>
+ <id>Generate bundle MANIFEST.MF</id>
+ <phase>package</phase>
+ <goals>
+ <goal>manifest</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <!--<plugin>
+ <groupId>org.codehaus.gmaven</groupId>
+ <artifactId>groovy-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>configure-bundle</id>
+ <phase>prepare-package</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <source>${project.basedir}/src/script/configure-bundle.groovy</source>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>-->
+ </plugins>
+ </build>
+
+</project>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.bonitasoft.studio.bundles</groupId>
+ <artifactId>plugins</artifactId>
+ <version>7.13.0</version>
+ </parent>
+
+ <groupId>org.bonitasoft.studio.bundles.plugins</groupId>
+ <artifactId>org.bonitasoft.studio</artifactId>
+ <packaging>eclipse-plugin</packaging>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.bonitasoft.maven</groupId>
+ <artifactId>image-overlay-plugin</artifactId>
+ <configuration>
+ <baseImgPath>${basedir}/splash_without_version.bmp</baseImgPath>
+ <outputImagePath>${basedir}/splash.bmp</outputImagePath>
+ <outputImageFormat>bmp</outputImageFormat>
+ <xLocation>358</xLocation>
+ <yLocation>259</yLocation>
+ <italic>true</italic>
+ <fontSize>58</fontSize>
+ <color>#0B4361</color>
+ <versionLabel>${branding.version.short}</versionLabel>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>create-image</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>