parallel ip - initial checkin Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/.project b/.project new file mode 100644 index 0000000..fb7f963 --- /dev/null +++ b/.project
@@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.osbp.vaadin.addons.aggregator</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.m2e.core.maven2Builder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.sonarlint.eclipse.core.sonarlintBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.m2e.core.maven2Nature</nature> + </natures> +</projectDescription>
diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..ff42ad4 --- /dev/null +++ b/LICENSE.txt
@@ -0,0 +1,161 @@ +Eclipse Public License -v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION +OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and + +b) in the case of each subsequent Contributor: + +i) changes to the Program, and + +ii) additions to the Program; + +where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. +A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone +acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate +modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not +derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of +its Contribution alone or when combined with the Program. + +"Program" means the Contributions distributed in accordance with this Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. + +2. GRANT OF RIGHTS + +a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, +royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute +and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code +form. + +b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, +royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the +Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the +combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such +addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not +apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. + +c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no +assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property +rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity +based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and +licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property +rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the +Program, it is Recipient's responsibility to acquire that license before distributing the Program. + +d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to +grant the copyright license set forth in this Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and + +b) its license agreement: + +i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including +warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and +fitness for a particular purpose; + +ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, +incidental and consequential damages, such as lost profits; + +iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any +other party; and + +iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it +in a reasonable manner on or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and + +b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained within the Program. + +Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows +subsequent Recipients to identify the originator of the Contribution. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and +the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes +the Program in a commercial product offering should do so in a manner which does not create potential liability for +other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor +("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") +against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions +brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The +obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual +property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial +Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the +Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may + participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is +then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties +related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. +Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to +those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, +the Commercial Contributor must pay those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, +NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for +determining the appropriateness of using and distributing the Program and assumes all risks associated with its +exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance +with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or +enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such +provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) +alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such +Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or +conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such +noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution +of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses + granted by Recipient relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement +is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish +new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the +right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may +assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the +Agreement will be given a distinguishing version number. The Program (including Contributions) may always be +distributed subject to the version of the Agreement under which it was received. In addition, after a new version of +the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the +new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to +the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or +otherwise. All rights in the Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States +of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause +of action arose. Each party waives its rights to a jury trial in any resulting litigation. \ No newline at end of file
diff --git a/about.html b/about.html new file mode 100644 index 0000000..64c0598 --- /dev/null +++ b/about.html
@@ -0,0 +1,28 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> +<title>About</title> +</head> +<body lang="EN-US"> +<h2>About This Content</h2> + +<p>June 1, 2016</p> +<h3>License</h3> + +<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available +at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. +For purposes of the EPL, "Program" will mean the Content.</p> + +<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is +being redistributed by another party ("Redistributor") and different terms and conditions may +apply to your use of any object code in the Content. Check the Redistributor's license that was +provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise +indicated below, the terms and conditions of the EPL still apply to any source code in the Content +and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p> + +</body> +</html> \ No newline at end of file
diff --git a/epl-v10.html b/epl-v10.html new file mode 100644 index 0000000..b398acc --- /dev/null +++ b/epl-v10.html
@@ -0,0 +1,259 @@ +<!--?xml version="1.0" encoding="ISO-8859-1" ?--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>Eclipse Public License - Version 1.0</title> +<style type="text/css"> + body { + size: 8.5in 11.0in; + margin: 0.25in 0.5in 0.25in 0.5in; + tab-interval: 0.5in; + } + p { + margin-left: auto; + margin-top: 0.5em; + margin-bottom: 0.5em; + } + p.list { + margin-left: 0.5in; + margin-top: 0.05em; + margin-bottom: 0.05em; + } + </style> + +</head> + +<body lang="EN-US"> + +<h2>Eclipse Public License - v 1.0</h2> + +<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE +PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR +DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS +AGREEMENT.</p> + +<p><b>1. DEFINITIONS</b></p> + +<p>"Contribution" means:</p> + +<p class="list">a) in the case of the initial Contributor, the initial +code and documentation distributed under this Agreement, and</p> +<p class="list">b) in the case of each subsequent Contributor:</p> +<p class="list">i) changes to the Program, and</p> +<p class="list">ii) additions to the Program;</p> +<p class="list">where such changes and/or additions to the Program +originate from and are distributed by that particular Contributor. A +Contribution 'originates' from a Contributor if it was added to the +Program by such Contributor itself or anyone acting on such +Contributor's behalf. Contributions do not include additions to the +Program which: (i) are separate modules of software distributed in +conjunction with the Program under their own license agreement, and (ii) +are not derivative works of the Program.</p> + +<p>"Contributor" means any person or entity that distributes +the Program.</p> + +<p>"Licensed Patents" mean patent claims licensable by a +Contributor which are necessarily infringed by the use or sale of its +Contribution alone or when combined with the Program.</p> + +<p>"Program" means the Contributions distributed in accordance +with this Agreement.</p> + +<p>"Recipient" means anyone who receives the Program under +this Agreement, including all Contributors.</p> + +<p><b>2. GRANT OF RIGHTS</b></p> + +<p class="list">a) Subject to the terms of this Agreement, each +Contributor hereby grants Recipient a non-exclusive, worldwide, +royalty-free copyright license to reproduce, prepare derivative works +of, publicly display, publicly perform, distribute and sublicense the +Contribution of such Contributor, if any, and such derivative works, in +source code and object code form.</p> + +<p class="list">b) Subject to the terms of this Agreement, each +Contributor hereby grants Recipient a non-exclusive, worldwide, +royalty-free patent license under Licensed Patents to make, use, sell, +offer to sell, import and otherwise transfer the Contribution of such +Contributor, if any, in source code and object code form. This patent +license shall apply to the combination of the Contribution and the +Program if, at the time the Contribution is added by the Contributor, +such addition of the Contribution causes such combination to be covered +by the Licensed Patents. The patent license shall not apply to any other +combinations which include the Contribution. No hardware per se is +licensed hereunder.</p> + +<p class="list">c) Recipient understands that although each Contributor +grants the licenses to its Contributions set forth herein, no assurances +are provided by any Contributor that the Program does not infringe the +patent or other intellectual property rights of any other entity. Each +Contributor disclaims any liability to Recipient for claims brought by +any other entity based on infringement of intellectual property rights +or otherwise. As a condition to exercising the rights and licenses +granted hereunder, each Recipient hereby assumes sole responsibility to +secure any other intellectual property rights needed, if any. For +example, if a third party patent license is required to allow Recipient +to distribute the Program, it is Recipient's responsibility to acquire +that license before distributing the Program.</p> + +<p class="list">d) Each Contributor represents that to its knowledge it +has sufficient copyright rights in its Contribution, if any, to grant +the copyright license set forth in this Agreement.</p> + +<p><b>3. REQUIREMENTS</b></p> + +<p>A Contributor may choose to distribute the Program in object code +form under its own license agreement, provided that:</p> + +<p class="list">a) it complies with the terms and conditions of this +Agreement; and</p> + +<p class="list">b) its license agreement:</p> + +<p class="list">i) effectively disclaims on behalf of all Contributors +all warranties and conditions, express and implied, including warranties +or conditions of title and non-infringement, and implied warranties or +conditions of merchantability and fitness for a particular purpose;</p> + +<p class="list">ii) effectively excludes on behalf of all Contributors +all liability for damages, including direct, indirect, special, +incidental and consequential damages, such as lost profits;</p> + +<p class="list">iii) states that any provisions which differ from this +Agreement are offered by that Contributor alone and not by any other +party; and</p> + +<p class="list">iv) states that source code for the Program is available +from such Contributor, and informs licensees how to obtain it in a +reasonable manner on or through a medium customarily used for software +exchange.</p> + +<p>When the Program is made available in source code form:</p> + +<p class="list">a) it must be made available under this Agreement; and</p> + +<p class="list">b) a copy of this Agreement must be included with each +copy of the Program.</p> + +<p>Contributors may not remove or alter any copyright notices contained +within the Program.</p> + +<p>Each Contributor must identify itself as the originator of its +Contribution, if any, in a manner that reasonably allows subsequent +Recipients to identify the originator of the Contribution.</p> + +<p><b>4. COMMERCIAL DISTRIBUTION</b></p> + +<p>Commercial distributors of software may accept certain +responsibilities with respect to end users, business partners and the +like. While this license is intended to facilitate the commercial use of +the Program, the Contributor who includes the Program in a commercial +product offering should do so in a manner which does not create +potential liability for other Contributors. Therefore, if a Contributor +includes the Program in a commercial product offering, such Contributor +("Commercial Contributor") hereby agrees to defend and +indemnify every other Contributor ("Indemnified Contributor") +against any losses, damages and costs (collectively "Losses") +arising from claims, lawsuits and other legal actions brought by a third +party against the Indemnified Contributor to the extent caused by the +acts or omissions of such Commercial Contributor in connection with its +distribution of the Program in a commercial product offering. The +obligations in this section do not apply to any claims or Losses +relating to any actual or alleged intellectual property infringement. In +order to qualify, an Indemnified Contributor must: a) promptly notify +the Commercial Contributor in writing of such claim, and b) allow the +Commercial Contributor to control, and cooperate with the Commercial +Contributor in, the defense and any related settlement negotiations. The +Indemnified Contributor may participate in any such claim at its own +expense.</p> + +<p>For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those +performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor +must pay those damages.</p> + +<p><b>5. NO WARRANTY</b></p> + +<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS +PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS +OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, +ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY +OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely +responsible for determining the appropriateness of using and +distributing the Program and assumes all risks associated with its +exercise of rights under this Agreement , including but not limited to +the risks and costs of program errors, compliance with applicable laws, +damage to or loss of data, programs or equipment, and unavailability or +interruption of operations.</p> + +<p><b>6. DISCLAIMER OF LIABILITY</b></p> + +<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT +NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING +WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR +DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p> + +<p><b>7. GENERAL</b></p> + +<p>If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further action +by the parties hereto, such provision shall be reformed to the minimum +extent necessary to make such provision valid and enforceable.</p> + +<p>If Recipient institutes patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that the +Program itself (excluding combinations of the Program with other +software or hardware) infringes such Recipient's patent(s), then such +Recipient's rights granted under Section 2(b) shall terminate as of the +date such litigation is filed.</p> + +<p>All Recipient's rights under this Agreement shall terminate if it +fails to comply with any of the material terms or conditions of this +Agreement and does not cure such failure in a reasonable period of time +after becoming aware of such noncompliance. If all Recipient's rights +under this Agreement terminate, Recipient agrees to cease use and +distribution of the Program as soon as reasonably practicable. However, +Recipient's obligations under this Agreement and any licenses granted by +Recipient relating to the Program shall continue and survive.</p> + +<p>Everyone is permitted to copy and distribute copies of this +Agreement, but in order to avoid inconsistency the Agreement is +copyrighted and may only be modified in the following manner. The +Agreement Steward reserves the right to publish new versions (including +revisions) of this Agreement from time to time. No one other than the +Agreement Steward has the right to modify this Agreement. The Eclipse +Foundation is the initial Agreement Steward. The Eclipse Foundation may +assign the responsibility to serve as the Agreement Steward to a +suitable separate entity. Each new version of the Agreement will be +given a distinguishing version number. The Program (including +Contributions) may always be distributed subject to the version of the +Agreement under which it was received. In addition, after a new version +of the Agreement is published, Contributor may elect to distribute the +Program (including its Contributions) under the new version. Except as +expressly stated in Sections 2(a) and 2(b) above, Recipient receives no +rights or licenses to the intellectual property of any Contributor under +this Agreement, whether expressly, by implication, estoppel or +otherwise. All rights in the Program not expressly granted under this +Agreement are reserved.</p> + +<p>This Agreement is governed by the laws of the State of New York and +the intellectual property laws of the United States of America. No party +to this Agreement will bring a legal action under this Agreement more +than one year after the cause of action arose. Each party waives its +rights to a jury trial in any resulting litigation.</p> + + + +</body></html> \ No newline at end of file
diff --git a/jenkins.build.config.xml b/jenkins.build.config.xml new file mode 100644 index 0000000..466c9ba --- /dev/null +++ b/jenkins.build.config.xml
@@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation +--> +<!--#======================================================================= --> +<!--# Module specific parameters for the Jenkins Job --> +<!--#======================================================================= --> + +<jenkins> + <jenkins.build.technologystack /> + <settings>${user.home}/.m2/settingsMirrors.xml</settings> + <!-- DO NOT EDIT BELOW THIS LINE --> + <jenkins.build.dependencies> + <jenkins.build.dependency>org.eclipse.osbp.releng.maven</jenkins.build.dependency> + </jenkins.build.dependencies> +</jenkins>
diff --git a/license.html b/license.html new file mode 100644 index 0000000..6e579a5 --- /dev/null +++ b/license.html
@@ -0,0 +1,164 @@ +<!--?xml version="1.0" encoding="ISO-8859-1" ?--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>Eclipse Foundation Software User Agreement</title> +</head> + +<body lang="EN-US"> +<h2>Eclipse Foundation Software User Agreement</h2> +<p>February 1, 2011</p> + +<h3>Usage Of Content</h3> + +<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS + (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND + CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE + OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR + NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND + CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p> + +<h3>Applicable Licenses</h3> + +<p>Unless otherwise indicated, all Content made available by the Eclipse + Foundation is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 + ("EPL"). A copy of the EPL is provided with this Content and is also + available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. + For purposes of the EPL, "Program" will mean the Content.</p> + +<p>Content includes, but is not limited to, source code, object code, +documentation and other files maintained in the Eclipse Foundation +source code + repository ("Repository") in software modules ("Modules") and made +available as downloadable archives ("Downloads").</p> + +<ul> + <li>Content may be structured and packaged into modules to +facilitate delivering, extending, and upgrading the Content. Typical +modules may include plug-ins ("Plug-ins"), plug-in fragments +("Fragments"), and features ("Features").</li> + <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</li> + <li>A Feature is a bundle of one or more Plug-ins and/or +Fragments and associated material. Each Feature may be packaged as a +sub-directory in a directory named "features". Within a Feature, files +named "feature.xml" may contain a list of the names and version numbers +of the Plug-ins + and/or Fragments associated with that Feature.</li> + <li>Features may also include other Features ("Included +Features"). Within a Feature, files named "feature.xml" may contain a +list of the names and version numbers of Included Features.</li> +</ul> + +<p>The terms and conditions governing Plug-ins and Fragments should be +contained in files named "about.html" ("Abouts"). The terms and +conditions governing Features and +Included Features should be contained in files named "license.html" +("Feature Licenses"). Abouts and Feature Licenses may be located in any + directory of a Download or Module +including, but not limited to the following locations:</p> + +<ul> + <li>The top-level (root) directory</li> + <li>Plug-in and Fragment directories</li> + <li>Inside Plug-ins and Fragments packaged as JARs</li> + <li>Sub-directories of the directory named "src" of certain Plug-ins</li> + <li>Feature directories</li> +</ul> + +<p>Note: if a Feature made available by the Eclipse Foundation is +installed using the Provisioning Technology (as defined below), you must + agree to a license ("Feature Update License") during the +installation process. If the Feature contains Included Features, the +Feature Update License should either provide you with the terms and +conditions governing the Included Features or +inform you where you can locate them. Feature Update Licenses may be +found in the "license" property of files named "feature.properties" +found within a Feature. +Such Abouts, Feature Licenses, and Feature Update Licenses contain the +terms and conditions (or references to such terms and conditions) that +govern your use of the associated Content in +that directory.</p> + +<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER +TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. + SOME OF THESE +OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p> + +<ul> + <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li> + <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li> + <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li> + <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li> + <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li> + <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li> +</ul> + +<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND +CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, +or Feature Update License is provided, please +contact the Eclipse Foundation to determine what terms and conditions +govern that particular Content.</p> + + +<h3>Use of Provisioning Technology</h3> + +<p>The Eclipse Foundation makes available provisioning software, +examples of which include, but are not limited to, p2 and the Eclipse + Update Manager ("Provisioning Technology") for the purpose of +allowing users to install software, documentation, information and/or + other materials (collectively "Installable Software"). This +capability is provided with the intent of allowing such users to + install, extend and update Eclipse-based products. Information about +packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a> + ("Specification").</p> + +<p>You may use Provisioning Technology to allow other parties to install + Installable Software. You shall be responsible for enabling the + applicable license agreements relating to the Installable Software to + be presented to, and accepted by, the users of the Provisioning +Technology + in accordance with the Specification. By using Provisioning +Technology in such a manner and making it available in accordance with +the + Specification, you further acknowledge your agreement to, and the +acquisition of all necessary rights to permit the following:</p> + +<ol> + <li>A series of actions may occur ("Provisioning Process") in +which a user may execute the Provisioning Technology + on a machine ("Target Machine") with the intent of installing, +extending or updating the functionality of an Eclipse-based + product.</li> + <li>During the Provisioning Process, the Provisioning Technology +may cause third party Installable Software or a portion thereof to be + accessed and copied to the Target Machine.</li> + <li>Pursuant to the Specification, you will provide to the user +the terms and conditions that govern the use of the Installable + Software ("Installable Software Agreement") and such Installable +Software Agreement shall be accessed from the Target + Machine in accordance with the Specification. Such Installable +Software Agreement must inform the user of the terms and conditions that + govern + the Installable Software and must solicit acceptance by the end +user in the manner prescribed in such Installable Software Agreement. +Upon such + indication of agreement by the user, the provisioning Technology +will complete installation of the Installable Software.</li> +</ol> + +<h3>Cryptography</h3> + +<p>Content may contain encryption software. The country in which you are + currently may have restrictions on the import, possession, and use, +and/or re-export to + another country, of encryption software. BEFORE using any encryption +software, please check the country's laws, regulations and policies +concerning the import, + possession, or use, and re-export of encryption software, to see if +this is permitted.</p> + +<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p> + + +</body></html> \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/.project b/org.eclipse.osbp.vaadin.addons.absolutelayout/.project new file mode 100644 index 0000000..f33826b --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/.project
@@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.osbp.vaadin.addons.absolutelayout</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.wst.jsdt.core.javascriptValidator</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.wst.common.project.facet.core.builder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.wst.validation.validationbuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>com.vaadin.integration.eclipse.widgetsetBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>com.vaadin.integration.eclipse.addonStylesBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.sonarlint.eclipse.core.sonarlintBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.m2e.core.maven2Builder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.m2e.core.maven2Nature</nature> + <nature>org.eclipse.jem.workbench.JavaEMFNature</nature> + <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> + <nature>org.eclipse.wst.common.project.facet.core.nature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>com.vaadin.integration.eclipse.widgetsetNature</nature> + <nature>org.apache.ivyde.eclipse.ivynature</nature> + <nature>org.eclipse.wst.jsdt.core.jsNature</nature> + </natures> +</projectDescription>
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/LICENSE.txt b/org.eclipse.osbp.vaadin.addons.absolutelayout/LICENSE.txt new file mode 100644 index 0000000..ff42ad4 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/LICENSE.txt
@@ -0,0 +1,161 @@ +Eclipse Public License -v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION +OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and + +b) in the case of each subsequent Contributor: + +i) changes to the Program, and + +ii) additions to the Program; + +where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. +A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone +acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate +modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not +derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of +its Contribution alone or when combined with the Program. + +"Program" means the Contributions distributed in accordance with this Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. + +2. GRANT OF RIGHTS + +a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, +royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute +and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code +form. + +b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, +royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the +Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the +combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such +addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not +apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. + +c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no +assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property +rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity +based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and +licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property +rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the +Program, it is Recipient's responsibility to acquire that license before distributing the Program. + +d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to +grant the copyright license set forth in this Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and + +b) its license agreement: + +i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including +warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and +fitness for a particular purpose; + +ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, +incidental and consequential damages, such as lost profits; + +iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any +other party; and + +iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it +in a reasonable manner on or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and + +b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained within the Program. + +Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows +subsequent Recipients to identify the originator of the Contribution. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and +the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes +the Program in a commercial product offering should do so in a manner which does not create potential liability for +other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor +("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") +against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions +brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The +obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual +property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial +Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the +Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may + participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is +then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties +related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. +Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to +those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, +the Commercial Contributor must pay those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, +NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for +determining the appropriateness of using and distributing the Program and assumes all risks associated with its +exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance +with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or +enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such +provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) +alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such +Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or +conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such +noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution +of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses + granted by Recipient relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement +is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish +new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the +right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may +assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the +Agreement will be given a distinguishing version number. The Program (including Contributions) may always be +distributed subject to the version of the Agreement under which it was received. In addition, after a new version of +the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the +new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to +the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or +otherwise. All rights in the Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States +of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause +of action arose. Each party waives its rights to a jury trial in any resulting litigation. \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaadin.addons.absolutelayout/META-INF/MANIFEST.MF new file mode 100644 index 0000000..c01b4d9 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/META-INF/MANIFEST.MF
@@ -0,0 +1,31 @@ +Manifest-Version: 1.0 +Bnd-LastModified: 1491902092179 +Build-Jdk: 1.8.0_91 +Built-By: mollik +Bundle-ActivationPolicy: lazy +Bundle-Description: A parent POM aimed to set up the build of general Ma + ven based projects. +Bundle-DocURL: http://www.eclipse.org/osbp +Bundle-ManifestVersion: 2 +Bundle-Name: org.eclipse.osbp.vaadin.addons.absolutelayout +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Bundle-SymbolicName: org.eclipse.osbp.vaadin.addons.absolutelayout +Bundle-Vendor: Eclipse OSBP +Bundle-Version: 0.9.0.qualifier +Created-By: Apache Maven Bundle Plugin +Export-Package: org.eclipse.osbp.vaadin.addons.absolutelayout;version="0 + .9.0",org.eclipse.osbp.vaadin.addons.absolutelayout.client;version="0.9 + .0",org.eclipse.osbp.vaadin.addons.absolutelayout.public.oabsolutelayou + t;version="0.9.0" +Import-Package: com.vaadin.annotations;version="[7.5.7,7.7.0)",com.vaadi + n.client.communication;version="[7.5.7,7.7.0)",com.vaadin.client.ui.dd; + version="[7.5.7,7.7.0)",com.vaadin.server;version="[7.5.7,7.7.0)",com.v + aadin.ui;version="[7.5.7,7.7.0)",javax.servlet.annotation;resolution:=o + ptional;version="[3.0,4)",org.eclipse.osbp.vaadin.addons.absolutelayout + .client;version="[0.9,1)",org.junit +Require-Bundle: com.vaadin.server;bundle-version="[7.5.7,7.7.0)",com.vaa + din.client;bundle-version="[7.5.7,7.7.0)",com.vaadin.shared;bundle-vers + ion="[7.5.7,7.7.0)",org.jsoup;bundle-version="[1.8.3,1.8.4)",dragdropla + youts.osgi;bundle-version="[1.1.3,1.1.4)" +Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))" +Tool: Bnd-3.2.0.201605172007
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/META-INF/git.properties b/org.eclipse.osbp.vaadin.addons.absolutelayout/META-INF/git.properties new file mode 100644 index 0000000..5eccd6e --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/META-INF/git.properties
@@ -0,0 +1,14 @@ +#Generated by Git-Commit-Id-Plugin +#Tue Apr 11 11:17:32 CEST 2017 +git.remote.origin.url=ssh\://compex@10.1.13.14/osbpgit/org.eclipse.osbp.vaadin.addons.git +git.closest.tag.name=OSBP-initial-commit-2-Eclipse-4-luna-2017-03-31-17-10-39 +git.commit.id.describe-short=OSBP-initial-commit-2-Eclipse-4-luna-2017-03-31-17-10-39-dirty +git.commit.time=02.02.2017 @ 18\:04\:55 MEZ +git.commit.message.full=remove the feature from build +git.commit.message.short=remove the feature from build +git.commit.id.abbrev=90dd482 +git.branch=OSBP-initial-commit-2-Eclipse-4-luna +git.closest.tag.commit.count=0 +git.commit.id.describe=OSBP-initial-commit-2-Eclipse-4-luna-2017-03-31-17-10-39-dirty +git.commit.id=90dd482e5bc78cd1a404d12445cebc868ee417b0 +git.tags=OSBP-initial-commit-2-Eclipse-4-luna-2017-03-31-17-10-39
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/SuperDevMode code server for org.eclipse.osbp.vaadin.addons.absolutelayout.launch b/org.eclipse.osbp.vaadin.addons.absolutelayout/SuperDevMode code server for org.eclipse.osbp.vaadin.addons.absolutelayout.launch new file mode 100644 index 0000000..040f8f6 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/SuperDevMode code server for org.eclipse.osbp.vaadin.addons.absolutelayout.launch
@@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication"> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> +<listEntry value="/org.eclipse.osbp.vaadin.addons.absolutelayout"/> +</listAttribute> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> +<listEntry value="4"/> +</listAttribute> +<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/> +<listAttribute key="org.eclipse.jdt.launching.CLASSPATH"> +<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry id="org.eclipse.jdt.launching.classpathentry.defaultClasspath"> <memento exportedEntriesOnly="false" project="org.eclipse.osbp.vaadin.addons.absolutelayout"/> </runtimeClasspathEntry> "/> +<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaadin.addons.absolutelayout/src" path="3" type="2"/> "/> +<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaadin.addons.absolutelayout/sample" path="3" type="2"/> "/> +<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaadin.addons.absolutelayout/test" path="3" type="2"/> "/> +</listAttribute> +<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/> +<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/> +<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.codeserver.CodeServer"/> +<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="org.eclipse.osbp.vaadin.addons.absolutelayout.AbsoluteLayoutWidgetset"/> +<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.osbp.vaadin.addons.absolutelayout"/> +<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/> +<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xss8M -Xmx512M -XX:MaxPermSize=512M"/> +<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="/Users/florianpirchner/Work/dev/osbp_client/git/org.eclipse.osbp.vaadin.addons/org.eclipse.osbp.vaadin.addons.absolutelayout"/> +</launchConfiguration>
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/epl-v10.html b/org.eclipse.osbp.vaadin.addons.absolutelayout/epl-v10.html new file mode 100644 index 0000000..b398acc --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/epl-v10.html
@@ -0,0 +1,259 @@ +<!--?xml version="1.0" encoding="ISO-8859-1" ?--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>Eclipse Public License - Version 1.0</title> +<style type="text/css"> + body { + size: 8.5in 11.0in; + margin: 0.25in 0.5in 0.25in 0.5in; + tab-interval: 0.5in; + } + p { + margin-left: auto; + margin-top: 0.5em; + margin-bottom: 0.5em; + } + p.list { + margin-left: 0.5in; + margin-top: 0.05em; + margin-bottom: 0.05em; + } + </style> + +</head> + +<body lang="EN-US"> + +<h2>Eclipse Public License - v 1.0</h2> + +<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE +PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR +DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS +AGREEMENT.</p> + +<p><b>1. DEFINITIONS</b></p> + +<p>"Contribution" means:</p> + +<p class="list">a) in the case of the initial Contributor, the initial +code and documentation distributed under this Agreement, and</p> +<p class="list">b) in the case of each subsequent Contributor:</p> +<p class="list">i) changes to the Program, and</p> +<p class="list">ii) additions to the Program;</p> +<p class="list">where such changes and/or additions to the Program +originate from and are distributed by that particular Contributor. A +Contribution 'originates' from a Contributor if it was added to the +Program by such Contributor itself or anyone acting on such +Contributor's behalf. Contributions do not include additions to the +Program which: (i) are separate modules of software distributed in +conjunction with the Program under their own license agreement, and (ii) +are not derivative works of the Program.</p> + +<p>"Contributor" means any person or entity that distributes +the Program.</p> + +<p>"Licensed Patents" mean patent claims licensable by a +Contributor which are necessarily infringed by the use or sale of its +Contribution alone or when combined with the Program.</p> + +<p>"Program" means the Contributions distributed in accordance +with this Agreement.</p> + +<p>"Recipient" means anyone who receives the Program under +this Agreement, including all Contributors.</p> + +<p><b>2. GRANT OF RIGHTS</b></p> + +<p class="list">a) Subject to the terms of this Agreement, each +Contributor hereby grants Recipient a non-exclusive, worldwide, +royalty-free copyright license to reproduce, prepare derivative works +of, publicly display, publicly perform, distribute and sublicense the +Contribution of such Contributor, if any, and such derivative works, in +source code and object code form.</p> + +<p class="list">b) Subject to the terms of this Agreement, each +Contributor hereby grants Recipient a non-exclusive, worldwide, +royalty-free patent license under Licensed Patents to make, use, sell, +offer to sell, import and otherwise transfer the Contribution of such +Contributor, if any, in source code and object code form. This patent +license shall apply to the combination of the Contribution and the +Program if, at the time the Contribution is added by the Contributor, +such addition of the Contribution causes such combination to be covered +by the Licensed Patents. The patent license shall not apply to any other +combinations which include the Contribution. No hardware per se is +licensed hereunder.</p> + +<p class="list">c) Recipient understands that although each Contributor +grants the licenses to its Contributions set forth herein, no assurances +are provided by any Contributor that the Program does not infringe the +patent or other intellectual property rights of any other entity. Each +Contributor disclaims any liability to Recipient for claims brought by +any other entity based on infringement of intellectual property rights +or otherwise. As a condition to exercising the rights and licenses +granted hereunder, each Recipient hereby assumes sole responsibility to +secure any other intellectual property rights needed, if any. For +example, if a third party patent license is required to allow Recipient +to distribute the Program, it is Recipient's responsibility to acquire +that license before distributing the Program.</p> + +<p class="list">d) Each Contributor represents that to its knowledge it +has sufficient copyright rights in its Contribution, if any, to grant +the copyright license set forth in this Agreement.</p> + +<p><b>3. REQUIREMENTS</b></p> + +<p>A Contributor may choose to distribute the Program in object code +form under its own license agreement, provided that:</p> + +<p class="list">a) it complies with the terms and conditions of this +Agreement; and</p> + +<p class="list">b) its license agreement:</p> + +<p class="list">i) effectively disclaims on behalf of all Contributors +all warranties and conditions, express and implied, including warranties +or conditions of title and non-infringement, and implied warranties or +conditions of merchantability and fitness for a particular purpose;</p> + +<p class="list">ii) effectively excludes on behalf of all Contributors +all liability for damages, including direct, indirect, special, +incidental and consequential damages, such as lost profits;</p> + +<p class="list">iii) states that any provisions which differ from this +Agreement are offered by that Contributor alone and not by any other +party; and</p> + +<p class="list">iv) states that source code for the Program is available +from such Contributor, and informs licensees how to obtain it in a +reasonable manner on or through a medium customarily used for software +exchange.</p> + +<p>When the Program is made available in source code form:</p> + +<p class="list">a) it must be made available under this Agreement; and</p> + +<p class="list">b) a copy of this Agreement must be included with each +copy of the Program.</p> + +<p>Contributors may not remove or alter any copyright notices contained +within the Program.</p> + +<p>Each Contributor must identify itself as the originator of its +Contribution, if any, in a manner that reasonably allows subsequent +Recipients to identify the originator of the Contribution.</p> + +<p><b>4. COMMERCIAL DISTRIBUTION</b></p> + +<p>Commercial distributors of software may accept certain +responsibilities with respect to end users, business partners and the +like. While this license is intended to facilitate the commercial use of +the Program, the Contributor who includes the Program in a commercial +product offering should do so in a manner which does not create +potential liability for other Contributors. Therefore, if a Contributor +includes the Program in a commercial product offering, such Contributor +("Commercial Contributor") hereby agrees to defend and +indemnify every other Contributor ("Indemnified Contributor") +against any losses, damages and costs (collectively "Losses") +arising from claims, lawsuits and other legal actions brought by a third +party against the Indemnified Contributor to the extent caused by the +acts or omissions of such Commercial Contributor in connection with its +distribution of the Program in a commercial product offering. The +obligations in this section do not apply to any claims or Losses +relating to any actual or alleged intellectual property infringement. In +order to qualify, an Indemnified Contributor must: a) promptly notify +the Commercial Contributor in writing of such claim, and b) allow the +Commercial Contributor to control, and cooperate with the Commercial +Contributor in, the defense and any related settlement negotiations. The +Indemnified Contributor may participate in any such claim at its own +expense.</p> + +<p>For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those +performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor +must pay those damages.</p> + +<p><b>5. NO WARRANTY</b></p> + +<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS +PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS +OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, +ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY +OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely +responsible for determining the appropriateness of using and +distributing the Program and assumes all risks associated with its +exercise of rights under this Agreement , including but not limited to +the risks and costs of program errors, compliance with applicable laws, +damage to or loss of data, programs or equipment, and unavailability or +interruption of operations.</p> + +<p><b>6. DISCLAIMER OF LIABILITY</b></p> + +<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT +NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING +WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR +DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p> + +<p><b>7. GENERAL</b></p> + +<p>If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further action +by the parties hereto, such provision shall be reformed to the minimum +extent necessary to make such provision valid and enforceable.</p> + +<p>If Recipient institutes patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that the +Program itself (excluding combinations of the Program with other +software or hardware) infringes such Recipient's patent(s), then such +Recipient's rights granted under Section 2(b) shall terminate as of the +date such litigation is filed.</p> + +<p>All Recipient's rights under this Agreement shall terminate if it +fails to comply with any of the material terms or conditions of this +Agreement and does not cure such failure in a reasonable period of time +after becoming aware of such noncompliance. If all Recipient's rights +under this Agreement terminate, Recipient agrees to cease use and +distribution of the Program as soon as reasonably practicable. However, +Recipient's obligations under this Agreement and any licenses granted by +Recipient relating to the Program shall continue and survive.</p> + +<p>Everyone is permitted to copy and distribute copies of this +Agreement, but in order to avoid inconsistency the Agreement is +copyrighted and may only be modified in the following manner. The +Agreement Steward reserves the right to publish new versions (including +revisions) of this Agreement from time to time. No one other than the +Agreement Steward has the right to modify this Agreement. The Eclipse +Foundation is the initial Agreement Steward. The Eclipse Foundation may +assign the responsibility to serve as the Agreement Steward to a +suitable separate entity. Each new version of the Agreement will be +given a distinguishing version number. The Program (including +Contributions) may always be distributed subject to the version of the +Agreement under which it was received. In addition, after a new version +of the Agreement is published, Contributor may elect to distribute the +Program (including its Contributions) under the new version. Except as +expressly stated in Sections 2(a) and 2(b) above, Recipient receives no +rights or licenses to the intellectual property of any Contributor under +this Agreement, whether expressly, by implication, estoppel or +otherwise. All rights in the Program not expressly granted under this +Agreement are reserved.</p> + +<p>This Agreement is governed by the laws of the State of New York and +the intellectual property laws of the United States of America. No party +to this Agreement will bring a legal action under this Agreement more +than one year after the cause of action arose. Each party waives its +rights to a jury trial in any resulting litigation.</p> + + + +</body></html> \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/ivy.xml b/org.eclipse.osbp.vaadin.addons.absolutelayout/ivy.xml new file mode 100644 index 0000000..b9bf25a --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/ivy.xml
@@ -0,0 +1,50 @@ +<?xml version="1.0"?> +<!DOCTYPE ivy-module [ + <!ENTITY vaadin.version "7.5.7"> +]> +<ivy-module version="2.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"> + <info organisation="com.example" module="v7proj" /> + <configurations> + <!-- The default configuration, which should be deployed to the server --> + <conf name="default" /> + <!-- A configuration only needed when compiling the widget set. Should + not be deployed to the server --> + <conf name="widgetset-compile" /> + <!-- A configuration used in compilation of server side classes only. + Should be deployed to the server --> + <conf name="nodeploy" /> + </configurations> + <dependencies defaultconf="default" defaultconfmapping="default->default"> + <!-- The core server part of Vaadin --> + <dependency org="com.vaadin" name="vaadin-server" rev="&vaadin.version;" /> + + <!-- Vaadin themes --> + <dependency org="com.vaadin" name="vaadin-themes" rev="&vaadin.version;" /> + + <!-- Push support --> + <dependency org="com.vaadin" name="vaadin-push" rev="&vaadin.version;" /> + + <!-- Servlet 3.0 API --> + <dependency org="javax.servlet" name="javax.servlet-api" rev="3.0.1" conf="nodeploy->default" /> + + <!-- TestBench 4 --> + <dependency org="com.vaadin" name="vaadin-testbench-api" rev="latest.release" conf="nodeploy -> default" /> + + <!-- Precompiled DefaultWidgetSet --> + <dependency org="com.vaadin" name="vaadin-client-compiled" + rev="&vaadin.version;" /> + + <!-- Vaadin client side, needed for widget set compilation --> + <dependency org="com.vaadin" name="vaadin-client" rev="&vaadin.version;" + conf="widgetset-compile->default" /> + + <!-- Compiler for custom widget sets. Should not be deployed --> + <dependency org="com.vaadin" name="vaadin-client-compiler" + rev="&vaadin.version;" conf="widgetset-compile->default" /> + + <dependency org="org.vaadin.addons" name="dragdroplayouts" rev="1.2.2" /> + + </dependencies> +</ivy-module>
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/ivysettings.xml b/org.eclipse.osbp.vaadin.addons.absolutelayout/ivysettings.xml new file mode 100644 index 0000000..9c0f653 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/ivysettings.xml
@@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ivysettings> + <settings defaultResolver="default" /> + <resolvers> + <chain name="default"> + <!-- Public Maven repository --> + <ibiblio name="public" m2compatible="true" /> + + <!-- Vaadin Add-on repository --> + <ibiblio name="vaadin-addons" usepoms="true" m2compatible="true" + root="http://maven.vaadin.com/vaadin-addons" /> + + <!-- Vaadin snapshots repository --> + <ibiblio name="vaadin-snapshots" usepoms="true" m2compatible="true" + root="https://oss.sonatype.org/content/repositories/vaadin-snapshots" /> + <!-- Repository used for Vaadin modified smartsprites library --> + <dual name="custom-smartsprites"> + <filesystem name="smartsprites-ivy"> + <ivy pattern="${basedir}/ivymodule/[module]-ivy-[revision].xml" /> + </filesystem> + <url name="smartsprites-artifact"> + <artifact + pattern="http://dev.vaadin.com/svn/versions/6.8/build/smartsprites/lib/[artifact](-[revision]).[ext]" /> + </url> + </dual> + </chain> + </resolvers> + <modules> + <!-- Vaadin patched SmartSprites --> + <module organisation="com.carrotsearch" name="smartsprites" + revision="0.2.3-itmill" resolver="custom-smartsprites" /> + </modules> + + +</ivysettings> \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/license.html b/org.eclipse.osbp.vaadin.addons.absolutelayout/license.html new file mode 100644 index 0000000..6e579a5 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/license.html
@@ -0,0 +1,164 @@ +<!--?xml version="1.0" encoding="ISO-8859-1" ?--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>Eclipse Foundation Software User Agreement</title> +</head> + +<body lang="EN-US"> +<h2>Eclipse Foundation Software User Agreement</h2> +<p>February 1, 2011</p> + +<h3>Usage Of Content</h3> + +<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS + (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND + CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE + OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR + NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND + CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p> + +<h3>Applicable Licenses</h3> + +<p>Unless otherwise indicated, all Content made available by the Eclipse + Foundation is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 + ("EPL"). A copy of the EPL is provided with this Content and is also + available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. + For purposes of the EPL, "Program" will mean the Content.</p> + +<p>Content includes, but is not limited to, source code, object code, +documentation and other files maintained in the Eclipse Foundation +source code + repository ("Repository") in software modules ("Modules") and made +available as downloadable archives ("Downloads").</p> + +<ul> + <li>Content may be structured and packaged into modules to +facilitate delivering, extending, and upgrading the Content. Typical +modules may include plug-ins ("Plug-ins"), plug-in fragments +("Fragments"), and features ("Features").</li> + <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</li> + <li>A Feature is a bundle of one or more Plug-ins and/or +Fragments and associated material. Each Feature may be packaged as a +sub-directory in a directory named "features". Within a Feature, files +named "feature.xml" may contain a list of the names and version numbers +of the Plug-ins + and/or Fragments associated with that Feature.</li> + <li>Features may also include other Features ("Included +Features"). Within a Feature, files named "feature.xml" may contain a +list of the names and version numbers of Included Features.</li> +</ul> + +<p>The terms and conditions governing Plug-ins and Fragments should be +contained in files named "about.html" ("Abouts"). The terms and +conditions governing Features and +Included Features should be contained in files named "license.html" +("Feature Licenses"). Abouts and Feature Licenses may be located in any + directory of a Download or Module +including, but not limited to the following locations:</p> + +<ul> + <li>The top-level (root) directory</li> + <li>Plug-in and Fragment directories</li> + <li>Inside Plug-ins and Fragments packaged as JARs</li> + <li>Sub-directories of the directory named "src" of certain Plug-ins</li> + <li>Feature directories</li> +</ul> + +<p>Note: if a Feature made available by the Eclipse Foundation is +installed using the Provisioning Technology (as defined below), you must + agree to a license ("Feature Update License") during the +installation process. If the Feature contains Included Features, the +Feature Update License should either provide you with the terms and +conditions governing the Included Features or +inform you where you can locate them. Feature Update Licenses may be +found in the "license" property of files named "feature.properties" +found within a Feature. +Such Abouts, Feature Licenses, and Feature Update Licenses contain the +terms and conditions (or references to such terms and conditions) that +govern your use of the associated Content in +that directory.</p> + +<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER +TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. + SOME OF THESE +OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p> + +<ul> + <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li> + <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li> + <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li> + <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li> + <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li> + <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li> +</ul> + +<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND +CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, +or Feature Update License is provided, please +contact the Eclipse Foundation to determine what terms and conditions +govern that particular Content.</p> + + +<h3>Use of Provisioning Technology</h3> + +<p>The Eclipse Foundation makes available provisioning software, +examples of which include, but are not limited to, p2 and the Eclipse + Update Manager ("Provisioning Technology") for the purpose of +allowing users to install software, documentation, information and/or + other materials (collectively "Installable Software"). This +capability is provided with the intent of allowing such users to + install, extend and update Eclipse-based products. Information about +packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a> + ("Specification").</p> + +<p>You may use Provisioning Technology to allow other parties to install + Installable Software. You shall be responsible for enabling the + applicable license agreements relating to the Installable Software to + be presented to, and accepted by, the users of the Provisioning +Technology + in accordance with the Specification. By using Provisioning +Technology in such a manner and making it available in accordance with +the + Specification, you further acknowledge your agreement to, and the +acquisition of all necessary rights to permit the following:</p> + +<ol> + <li>A series of actions may occur ("Provisioning Process") in +which a user may execute the Provisioning Technology + on a machine ("Target Machine") with the intent of installing, +extending or updating the functionality of an Eclipse-based + product.</li> + <li>During the Provisioning Process, the Provisioning Technology +may cause third party Installable Software or a portion thereof to be + accessed and copied to the Target Machine.</li> + <li>Pursuant to the Specification, you will provide to the user +the terms and conditions that govern the use of the Installable + Software ("Installable Software Agreement") and such Installable +Software Agreement shall be accessed from the Target + Machine in accordance with the Specification. Such Installable +Software Agreement must inform the user of the terms and conditions that + govern + the Installable Software and must solicit acceptance by the end +user in the manner prescribed in such Installable Software Agreement. +Upon such + indication of agreement by the user, the provisioning Technology +will complete installation of the Installable Software.</li> +</ol> + +<h3>Cryptography</h3> + +<p>Content may contain encryption software. The country in which you are + currently may have restrictions on the import, possession, and use, +and/or re-export to + another country, of encryption software. BEFORE using any encryption +software, please check the country's laws, regulations and policies +concerning the import, + possession, or use, and re-export of encryption software, to see if +this is permitted.</p> + +<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p> + + +</body></html> \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/pom.xml b/org.eclipse.osbp.vaadin.addons.absolutelayout/pom.xml new file mode 100644 index 0000000..24eaf9f --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/pom.xml
@@ -0,0 +1,185 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation +--> + +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.eclipse.osbp.releng.maven</groupId> + <artifactId>org.eclipse.osbp.releng.maven.parent.mbp</artifactId> + <version>0.9.0-SNAPSHOT</version> + <relativePath /> + </parent> + + <groupId>org.eclipse.osbp.vaadin.addons</groupId> + <artifactId>org.eclipse.osbp.vaadin.addons.absolutelayout</artifactId> + <packaging>bundle</packaging> + + <dependencies> + <dependency> + <groupId>com.vaadin</groupId> + <artifactId>vaadin-server</artifactId> + <version>${vaadin.version}</version> + </dependency> + <dependency> + <groupId>com.vaadin</groupId> + <artifactId>vaadin-client</artifactId> + <version>${vaadin.version}</version> + </dependency> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>javax.servlet-api</artifactId> + <version>3.0.1</version> + </dependency> + <dependency> + <groupId>org.eclipse.osbp.dependencies</groupId> + <artifactId>org.eclipse.osbp.dependencies.bundle.vaadin.addon.dragdroplayouts</artifactId> + <version>1.1.3-SNAPSHOT</version> + </dependency> + </dependencies> + + <build> + <sourceDirectory>${basedir}/src</sourceDirectory> + + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-resources-plugin</artifactId> + <configuration> + <encoding>UTF-8</encoding> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.0</version> + <configuration> + <encoding>UTF-8</encoding> + <source>1.8</source> + <target>1.8</target> + </configuration> + </plugin> + + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Bundle-Name>OSBP Addon for Vaadin: Absolute Layout</Bundle-Name> + <Bundle-SymbolicName>org.eclipse.osbp.vaadin.addons.absolutelayout</Bundle-SymbolicName> + <Bundle-Version>0.9.0.{osgi-version-qualifier}</Bundle-Version> + <Require-Bundle>com.vaadin.server;bundle-version="[7.5.7,7.7.0)", + com.vaadin.client;bundle-version="[7.5.7,7.7.0)", + com.vaadin.shared;bundle-version="[7.5.7,7.7.0)", + org.jsoup;bundle-version="[1.8.3,1.8.4)", + dragdroplayouts.osgi;bundle-version="[1.1.3,1.1.4)" + </Require-Bundle> + <Import-Package> + com.vaadin.*;version="[7.5.7,7.7.0)", + !fi.jasoft.*, + javax.servlet.annotation;resolution:=optional, + * + </Import-Package> + <Export-Package> + !LICENSE,!LICENSE.txt,!THIRD-PARTY.txt,!NOTICE,!README.txt,!VERSION.txt,!build.properties, + !VAADIN.*, + org.eclipse.osbp.vaadin.addons.*;version="0.9.0" + </Export-Package> + <Include-Resource>{maven-resources},LICENSE.txt,epl-v10.html</Include-Resource> + <_nouses>true</_nouses> + </instructions> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <version>2.2.1</version> + <executions> + <execution> + <id>attach-sources</id> + <goals> + <goal>jar</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + <pluginManagement> + <plugins> + + <!--This plugin's configuration is used to store Eclipse m2e settings + only. It has no influence on the Maven build itself. --> + <plugin> + <groupId>org.eclipse.m2e</groupId> + <artifactId>lifecycle-mapping</artifactId> + <version>1.0.0</version> + <configuration> + <lifecycleMappingMetadata> + <pluginExecutions> + <pluginExecution> + <pluginExecutionFilter> + <groupId> + org.apache.maven.plugins + </groupId> + <artifactId> + maven-dependency-plugin + </artifactId> + <versionRange> + [2.0.0,) + </versionRange> + <goals> + <goal> + copy-dependencies + </goal> + </goals> + </pluginExecutionFilter> + <action> + <ignore></ignore> + </action> + </pluginExecution> + <pluginExecution> + <pluginExecutionFilter> + <groupId>com.vaadin</groupId> + <artifactId> + vaadin-maven-plugin + </artifactId> + <versionRange> + [7.0-SNAPSHOT,) + </versionRange> + <goals> + <goal>compile</goal> + </goals> + </pluginExecutionFilter> + <action> + <ignore></ignore> + </action> + </pluginExecution> + </pluginExecutions> + </lifecycleMappingMetadata> + </configuration> + </plugin> + </plugins> + </pluginManagement> + <!-- This is needed for the sources required by the client-side compiler + to be included in the produced JARs --> + <resources> + <resource> + <directory>src</directory> + </resource> + </resources> + + </build> + +</project>
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/sample/org/eclipse/osbp/vaadin/addons/absolutelayout/AbsoluteLayoutUI.java b/org.eclipse.osbp.vaadin.addons.absolutelayout/sample/org/eclipse/osbp/vaadin/addons/absolutelayout/AbsoluteLayoutUI.java new file mode 100644 index 0000000..24a29c5 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/sample/org/eclipse/osbp/vaadin/addons/absolutelayout/AbsoluteLayoutUI.java
@@ -0,0 +1,229 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ + +package org.eclipse.osbp.vaadin.addons.absolutelayout; + +import javax.servlet.annotation.WebServlet; + +import com.vaadin.annotations.Theme; +import com.vaadin.annotations.VaadinServletConfiguration; +import com.vaadin.data.Property; +import com.vaadin.server.VaadinRequest; +import com.vaadin.server.VaadinServlet; +import com.vaadin.ui.AbsoluteLayout.ComponentPosition; +import com.vaadin.ui.Button; +import com.vaadin.ui.CheckBox; +import com.vaadin.ui.Component; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.Panel; +import com.vaadin.ui.TextField; +import com.vaadin.ui.UI; +import com.vaadin.ui.VerticalLayout; + +import fi.jasoft.dragdroplayouts.client.ui.LayoutDragMode; +import fi.jasoft.dragdroplayouts.drophandlers.DefaultAbsoluteLayoutDropHandler; + +/** + * The Class AbsoluteLayoutUI. + */ +@SuppressWarnings("serial") +@Theme("valo") +public class AbsoluteLayoutUI extends UI { + + /** + * The Class Servlet. + */ + @WebServlet(value = "/*", asyncSupported = true) + @VaadinServletConfiguration(productionMode = false, ui = AbsoluteLayoutUI.class, widgetset = "org.eclipse.osbp.vaadin.addons.absolutelayout.AbsoluteLayoutWidgetset") + public static class Servlet extends VaadinServlet { + } + + /** The layout1. */ + private AbsoluteLayout layout1; + + /** The layout2. */ + private AbsoluteLayout layout2; + + /* + * (non-Javadoc) + * + * @see com.vaadin.ui.UI#init(com.vaadin.server.VaadinRequest) + */ + @Override + protected void init(VaadinRequest request) { + + HorizontalLayout main = new HorizontalLayout(); + main.setSpacing(true); + main.setMargin(true); + main.setSizeFull(); + + VerticalLayout buttons = new VerticalLayout(); + main.addComponent(buttons); + + Button b = new Button("new", new Button.ClickListener() { + @Override + public void buttonClick(Button.ClickEvent event) { + TextField f = new TextField("Foo"); + f.addStyleName("bar"); + layout1.addComponent(f); + } + }); + buttons.addComponent(b); + + Button allNew = new Button("all new", new Button.ClickListener() { + @Override + public void buttonClick(Button.ClickEvent event) { + layout1.removeAllComponents(); + layout2.removeAllComponents(); + + createLayout(layout1); + createLayout(layout2); + } + }); + buttons.addComponent(allNew); + buttons.setWidth("120px"); + + Panel p1 = new Panel(); + p1.setSizeFull(); + main.addComponent(p1); + main.setExpandRatio(p1, 1.0f); + + HorizontalLayout h1 = new HorizontalLayout(); + h1.setSpacing(true); + h1.setMargin(true); + h1.setSizeFull(); + p1.setContent(h1); + + layout1 = new AbsoluteLayout(); + layout1.setSizeFull(); + h1.addComponent(layout1); + h1.setExpandRatio(layout1, 1.0f); + layout1.setDragMode(LayoutDragMode.CLONE); + layout1.setDropHandler(new DefaultAbsoluteLayoutDropHandler()); + layout1.setResizable(true); + layout1.setUseAlignments(true); + createLayout(layout1); + + Panel p2 = new Panel(); + p2.setSizeFull(); + main.addComponent(p2); + main.setExpandRatio(p2, 1.0f); + + HorizontalLayout h2 = new HorizontalLayout(); + h2.setSpacing(true); + h2.setMargin(true); + h2.setSizeFull(); + p2.setContent(h2); + + layout2 = new AbsoluteLayout(); + layout2.setSizeFull(); + h2.addComponent(layout2); + h2.setExpandRatio(layout2, 1.0f); + layout2.setDragMode(LayoutDragMode.CLONE); + layout2.setDropHandler(new DefaultAbsoluteLayoutDropHandler()); + layout2.setResizable(true); + layout2.setUseAlignments(true); + createLayout(layout2); + + setContent(main); + } + + /** + * Creates the layout. + * + * @param layout + * the main + * @return the absolute layout + */ + private AbsoluteLayout createLayout(AbsoluteLayout layout) { + + ComponentPosition pos = layout.new ComponentPosition(); + + final CheckBox resize = new CheckBox("resize"); + resize.setImmediate(true); + resize.setValue(true); + setSizeFull(resize); + resize.addValueChangeListener(new Property.ValueChangeListener() { + @Override + public void valueChange(Property.ValueChangeEvent event) { + layout.setResizable(resize.getValue()); + } + }); + pos.setLeft(30f, Unit.PIXELS); + pos.setTop(30f, Unit.PIXELS); + layout.addComponent(resize, pos.getCSSString()); + + final CheckBox drag = new CheckBox("drag"); + drag.setImmediate(true); + drag.setValue(true); + setSizeFull(drag); + drag.addValueChangeListener(new Property.ValueChangeListener() { + @Override + public void valueChange(Property.ValueChangeEvent event) { + if (drag.getValue()) { + layout.setDragMode(LayoutDragMode.CLONE); + } else { + layout.setDragMode(LayoutDragMode.NONE); + } + } + }); + pos.setLeft(130f, Unit.PIXELS); + pos.setTop(30f, Unit.PIXELS); + layout.addComponent(drag, pos.getCSSString()); + + final CheckBox alignments = new CheckBox("alignments"); + alignments.setImmediate(true); + alignments.setValue(true); + setSizeFull(alignments); + alignments.addValueChangeListener(new Property.ValueChangeListener() { + @Override + public void valueChange(Property.ValueChangeEvent event) { + layout.setUseAlignments(alignments.getValue()); + } + }); + pos.setLeft(230f, Unit.PIXELS); + pos.setTop(30f, Unit.PIXELS); + layout.addComponent(alignments, pos.getCSSString()); + + TextField text = new TextField("Type me"); + pos.setLeft(120f, Unit.PIXELS); + pos.setTop(200f, Unit.PIXELS); + setSizeFull(text); + layout.addComponent(text, pos.getCSSString()); + + Button button2 = new Button("Click Me2"); + pos.setLeft(300f, Unit.PIXELS); + pos.setTop(300f, Unit.PIXELS); + setSizeFull(button2); + layout.addComponent(button2, pos.getCSSString()); + + CheckBox checkbox = new CheckBox("Check me"); + pos.setLeft(470f, Unit.PIXELS); + pos.setTop(390f, Unit.PIXELS); + setSizeFull(checkbox); + layout.addComponent(checkbox, pos.getCSSString()); + + return layout; + } + + /** + * Sets the size full. + * + * @param resize + * the new size full + */ + private void setSizeFull(final Component resize) { + // resize.setSizeFull(); + } + +} \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/src/VAADIN/addons/osbee/vaadin/addons/absolutelayout/styles.scss b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/VAADIN/addons/osbee/vaadin/addons/absolutelayout/styles.scss new file mode 100644 index 0000000..cba72d5 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/VAADIN/addons/osbee/vaadin/addons/absolutelayout/styles.scss
@@ -0,0 +1,63 @@ +@mixin osbee-absolutelayout { + + .v-absolutelayout .o-alignmentLine { + // the color of the alignment line + background-color: green; + } + + .o-absolutelayout{ + // the amount of pixels, a snap to alignment lines is done + snap: 7; + } + + .v-absolutelayout .v-absolutelayout-wrapper-o-resizable { + &.resizing { + overflow: visible; + } + .drag-overlay { + border: 1px solid red; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + position: absolute; + z-index: 10; + } + .tlc, .te, .trc, .re, .brc, .be, .blc, .le { + background-color: transparent; + display: block; + overflow: visible; + position: absolute; + } + div.unused { + cursor: default !important; + } + .te { + cursor: ns-resize; + top: 0; + left: 0; + right: 0; + z-index: 6; + } + .re { + cursor: ew-resize; + top: 0; + right: 0; + bottom: 0; + z-index: 5; + } + .le { + cursor: ew-resize; + top: 0; + bottom: 0; + left: 0; + z-index: 5; + } + .be { + cursor: ns-resize; + right: 0; + bottom: 0; + left: 0; + z-index: 6; + } + } +}
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/AbsoluteLayout.java b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/AbsoluteLayout.java new file mode 100644 index 0000000..24eb08a --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/AbsoluteLayout.java
@@ -0,0 +1,382 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.absolutelayout; + +import java.io.Serializable; +import java.lang.reflect.Method; + +import org.eclipse.osbp.vaadin.addons.absolutelayout.client.OAbsoluteLayoutServerRpc; +import org.eclipse.osbp.vaadin.addons.absolutelayout.client.OAbsoluteLayoutState; +import org.eclipse.osbp.vaadin.addons.absolutelayout.client.OResizeLocation; + +import com.vaadin.shared.Connector; +import com.vaadin.ui.Component; +import com.vaadin.util.ReflectTools; + +import fi.jasoft.dragdroplayouts.DDAbsoluteLayout; +import fi.jasoft.dragdroplayouts.client.ui.LayoutDragMode; + +/** + * OS.bee AbsoluteLayout. <br> + * This layout supports resizing its elements. And also supports drag and drop + * of elemens. + * <p> + * Only DragModes NONE and COPY are allowed + */ +@SuppressWarnings("serial") +public class AbsoluteLayout extends DDAbsoluteLayout { + + /** The rpc. */ + private OAbsoluteLayoutServerRpc rpc = new OAbsoluteLayoutServerRpc() { + @Override + public void resized(Connector connector, int newWidth, int newHeight, int oldWidth, int oldHeight, + OResizeLocation location) { + internalResizeChild((Component) connector, newWidth, newHeight, oldWidth, oldHeight, location); + + fireEvent(new ChildResizedEvent((Component) connector, newWidth, newHeight, oldWidth, oldHeight, location)); + } + }; + + /** + * Instantiates a new absolute layout. + */ + public AbsoluteLayout() { + registerRpc(rpc); + } + + /* (non-Javadoc) + * @see fi.jasoft.dragdroplayouts.DDAbsoluteLayout#getState() + */ + @Override + public OAbsoluteLayoutState getState() { + return (OAbsoluteLayoutState) super.getState(); + } + + /* (non-Javadoc) + * @see fi.jasoft.dragdroplayouts.DDAbsoluteLayout#getState(boolean) + */ + @Override + protected OAbsoluteLayoutState getState(boolean markAsDirty) { + return (OAbsoluteLayoutState) super.getState(markAsDirty); + } + + /** + * Internal resize child. + * + * @param child the child + * @param newWidth the new width + * @param newHeight the new height + * @param oldWidth the old width + * @param oldHeight the old height + * @param location the location + */ + protected void internalResizeChild(Component child, int newWidth, int newHeight, int oldWidth, int oldHeight, + OResizeLocation location) { + switch (location) { + case TOP_LEFT: + moveLeft(oldWidth - newWidth, child); + case TOP: + moveTop(oldHeight - newHeight, child); + break; + case TOP_RIGHT: + moveTop(oldHeight - newHeight, child); + case RIGHT: + moveRight(oldWidth - newWidth, child); + break; + case BOTTOM_RIGHT: + moveRight(oldWidth - newWidth, child); + case BOTTOM: + moveBottom(oldHeight - newHeight, child); + break; + case BOTTOM_LEFT: + moveBottom(oldHeight - newHeight, child); + case LEFT: + moveLeft(oldWidth - newWidth, child); + break; + default: + break; + } + child.setWidth(newWidth, Unit.PIXELS); + child.setHeight(newHeight, Unit.PIXELS); + } + + /** + * Adjusts the top position for the component when inside a + * {@link com.vaadin.ui.AbsoluteLayout} and top position was set with + * pixels. + * + * @param delta the change of top position in pixels + * @param child the component that is inside the absolute layout + */ + protected void moveTop(int delta, Component child) { + ComponentPosition position = getPosition(child); + if (position.getTopValue() != null && position.getTopUnits().equals(Unit.PIXELS)) { + float newValue = (position.getTopValue() + delta); + if (newValue < 0) { + newValue = 0; + } + position.setTopValue(newValue); + setPosition(child, position); + } else { + // position bottom set, NOOP + } + } + + /** + * Adjusts the bottom position for the component when inside a + * {@link com.vaadin.ui.AbsoluteLayout} and bottom position was set with + * pixels. + * + * @param delta the change of bottom position in pixels + * @param child the component that is inside the absolute layout + */ + protected void moveBottom(int delta, Component child) { + ComponentPosition position = getPosition(child); + if (position.getBottomValue() != null && position.getBottomUnits().equals(Unit.PIXELS)) { + float newValue = (position.getBottomValue() + delta); + if (newValue < 0) { + newValue = 0; + } + position.setBottomValue(newValue); + setPosition(child, position); + } else { + // position top used, NOOP + } + } + + /** + * Adjusts the right position for the component when inside a + * {@link com.vaadin.ui.AbsoluteLayout} and right position was set with + * pixels. + * + * @param delta the change of right position in pixels + * @param child the child + */ + protected void moveRight(int delta, Component child) { + ComponentPosition position = getPosition(child); + if (position.getRightValue() != null && position.getRightUnits().equals(Unit.PIXELS)) { + float newValue = (position.getRightValue() + delta); + if (newValue < 0) { + newValue = 0; + } + position.setRightValue(newValue); + setPosition(child, position); + } else { + // position left used, NOOP + } + } + + /** + * Adjusts the left position for the component when inside a + * {@link com.vaadin.ui.AbsoluteLayout} and left position was set with + * pixels. + * + * @param delta the change of left position in pixels + * @param child the component that is inside the absolute layout + */ + protected void moveLeft(int delta, Component child) { + ComponentPosition position = getPosition(child); + if (position.getLeftValue() != null && position.getLeftUnits().equals(Unit.PIXELS)) { + float newValue = (position.getLeftValue() + delta); + if (newValue < 0) { + newValue = 0; + } + position.setLeftValue(newValue); + setPosition(child, position); + } else { + // position right set, NOOP + } + } + + /** + * True, if the children should be resizable. + * + * @return true, if is resizable + */ + public boolean isResizable() { + return getState(false).useResizing; + } + + /** + * True, if the children should be resizable. + * + * @param value the new resizable + */ + public void setResizable(boolean value) { + if (getState(false).useResizing != value) { + getState().useResizing = value; + } + } + + /** + * True, if alignments should be used. + * + * @return true, if is use alignments + */ + public boolean isUseAlignments() { + return getState(false).useAlignments; + } + + /** + * True, if alignments should be used. + * + * @param value the new use alignments + */ + public void setUseAlignments(boolean value) { + if (getState(false).useAlignments != value) { + getState().useAlignments = value; + } + } + + /* (non-Javadoc) + * @see fi.jasoft.dragdroplayouts.DDAbsoluteLayout#setDragMode(fi.jasoft.dragdroplayouts.client.ui.LayoutDragMode) + */ + @Override + public void setDragMode(LayoutDragMode mode) { + if (mode != LayoutDragMode.NONE && mode != LayoutDragMode.CLONE) { + throw new IllegalArgumentException("Mode is not supported!"); + } + super.setDragMode(mode); + } + + /** + * Add listener which is being notified if a child should be resized. + * + * @param listener the listener + */ + public void addChildResizedListener(ChildResizedListener listener) { + addListener(ChildResizedEvent.class, listener, ChildResizedListener.CHILD_RESIZED_METHOD); + } + + /** + * Removes listener which is being notified if a child should be resized. + * + * @param listener the listener + */ + public void removeChildResizedListener(ChildResizedListener listener) { + removeListener(ChildResizedEvent.class, listener); + } + + /** + * The Class ChildResizedEvent. + */ + public static class ChildResizedEvent extends Event { + + /** The new width. */ + private final int newWidth; + + /** The new height. */ + private final int newHeight; + + /** The old width. */ + private final int oldWidth; + + /** The old height. */ + private final int oldHeight; + + /** The location. */ + private final OResizeLocation location; + + /** + * Instantiates a new child resized event. + * + * @param source the source + * @param newWidth the new width + * @param newHeight the new height + * @param oldWidth the old width + * @param oldHeight the old height + * @param location the location + */ + public ChildResizedEvent(Component source, int newWidth, int newHeight, int oldWidth, int oldHeight, + OResizeLocation location) { + super(source); + this.newWidth = newWidth; + this.newHeight = newHeight; + this.oldWidth = oldWidth; + this.oldHeight = oldHeight; + this.location = location; + } + + /** + * Gets the new width. + * + * @return the new width + */ + public int getNewWidth() { + return newWidth; + } + + /** + * Gets the new height. + * + * @return the new height + */ + public int getNewHeight() { + return newHeight; + } + + /** + * Gets the old width. + * + * @return the old width + */ + public int getOldWidth() { + return oldWidth; + } + + /** + * Gets the old height. + * + * @return the old height + */ + public int getOldHeight() { + return oldHeight; + } + + /** + * Gets the location. + * + * @return the location + */ + public OResizeLocation getLocation() { + return location; + } + + } + + /** + * The listener interface for receiving childResized events. + * The class that is interested in processing a childResized + * event implements this interface, and the object created + * with that class is registered with a component using the + * component's <code>addChildResizedListener</code> method. When + * the childResized event occurs, that object's appropriate + * method is invoked. + * + * @see ChildResizedEvent + */ + public interface ChildResizedListener extends Serializable { + + /** The Constant CHILD_RESIZED_METHOD. */ + public static final Method CHILD_RESIZED_METHOD = ReflectTools.findMethod(ChildResizedListener.class, + "childResized", ChildResizedEvent.class); + + /** + * Child resized. + * + * @param event the event + */ + void childResized(ChildResizedEvent event); + } + +}
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/AbsoluteLayoutWidgetset.gwt.xml b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/AbsoluteLayoutWidgetset.gwt.xml new file mode 100644 index 0000000..4699e48 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/AbsoluteLayoutWidgetset.gwt.xml
@@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.5.1//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.5.1/distro-source/core/src/gwt-module.dtd"> +<module> + <inherits name="com.vaadin.DefaultWidgetSet" /> + + <!-- + Uncomment the following to compile the widgetset for one browser only. + Multiple browsers can be specified as a comma separated list. The supported + user agents at the moment of writing were: ie8,ie9,gecko1_8,safari,opera + The value gecko1_8 is used for Firefox and safari is used for webkit based + browsers including Google Chrome. + <set-property name="user.agent" value="safari" /> + + To enable SuperDevMode, uncomment this line. See https://vaadin.com/wiki/-/wiki/Main/Using%20SuperDevMode + for more information and instructions. + <set-configuration-property name="devModeRedirectEnabled" value="true" /> + /> + --> + +<!-- <add-linker name="xsiframe" /> --> +<!-- <set-configuration-property name="devModeRedirectEnabled" value="true" /> --> + + <inherits name="fi.jasoft.dragdroplayouts.DragDropLayoutsWidgetSet" /> + + <stylesheet src="oabsolutelayout/styles.css" /> + +</module>
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/IOConstants.java b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/IOConstants.java new file mode 100644 index 0000000..1083f19 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/IOConstants.java
@@ -0,0 +1,30 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.absolutelayout.client; + +/** + * The Interface IOConstants. + */ +public interface IOConstants { + + /** + * Divs for the resizing operations are marked with this css class. + */ + public static final String CSS_RESIZE_DIV = "o-resize-div"; + + /** + * Is used to define the snap css property in pixels. + */ + public static final String CSS_SNAP_PROPERTY = "snap"; + +}
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAbsoluteLayoutClientRpc.java b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAbsoluteLayoutClientRpc.java new file mode 100644 index 0000000..3a61e01 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAbsoluteLayoutClientRpc.java
@@ -0,0 +1,37 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.absolutelayout.client; + +import com.vaadin.shared.communication.ClientRpc; + +// TODO: Auto-generated Javadoc +/** + * The Interface OAbsoluteLayoutClientRpc. + */ +public interface OAbsoluteLayoutClientRpc extends ClientRpc { + + /** + * True if alignments should be used. False otherwise. + * + * @param value the new use alignments + */ + public void setUseAlignments(boolean value); + + /** + * True if resizing should be used. False otherwise. + * + * @param value the new use resizing + */ + public void setUseResizing(boolean value); + +} \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAbsoluteLayoutConnector.java b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAbsoluteLayoutConnector.java new file mode 100644 index 0000000..a41e001 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAbsoluteLayoutConnector.java
@@ -0,0 +1,104 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.absolutelayout.client; + +import org.eclipse.osbp.vaadin.addons.absolutelayout.AbsoluteLayout; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.ui.Widget; +import com.vaadin.client.communication.RpcProxy; +import com.vaadin.client.communication.StateChangeEvent; +import com.vaadin.shared.Connector; +import com.vaadin.shared.ui.Connect; + +import fi.jasoft.dragdroplayouts.client.ui.absolutelayout.DDAbsoluteLayoutConnector; + +// TODO: Auto-generated Javadoc +/** + * The Class OAbsoluteLayoutConnector. + */ +@Connect(AbsoluteLayout.class) +public class OAbsoluteLayoutConnector extends DDAbsoluteLayoutConnector implements OChildResizeListener { + + /** The Constant serialVersionUID. */ + private static final long serialVersionUID = -3501965859455838012L; + + /** The rpc. */ + OAbsoluteLayoutServerRpc rpc = RpcProxy.create(OAbsoluteLayoutServerRpc.class, this); + + /** + * Instantiates a new o absolute layout connector. + */ + public OAbsoluteLayoutConnector() { + registerRpc(OAbsoluteLayoutClientRpc.class, new OAbsoluteLayoutClientRpc() { + private static final long serialVersionUID = 8264383260169834245L; + + @Override + public void setUseAlignments(boolean value) { + getWidget().setUseAlignments(value); + } + + @Override + public void setUseResizing(boolean value) { + getWidget().setUseResizing(value); + } + }); + } + + /* (non-Javadoc) + * @see com.vaadin.client.ui.AbstractComponentConnector#createWidget() + */ + @Override + protected Widget createWidget() { + OAbsoluteLayoutWidget widget = GWT.create(OAbsoluteLayoutWidget.class); + widget.setResizeListener(this); + return widget; + } + + /* (non-Javadoc) + * @see fi.jasoft.dragdroplayouts.client.ui.absolutelayout.DDAbsoluteLayoutConnector#getWidget() + */ + @Override + public OAbsoluteLayoutWidget getWidget() { + return (OAbsoluteLayoutWidget) super.getWidget(); + } + + /* (non-Javadoc) + * @see fi.jasoft.dragdroplayouts.client.ui.absolutelayout.DDAbsoluteLayoutConnector#getState() + */ + @Override + public OAbsoluteLayoutState getState() { + return (OAbsoluteLayoutState) super.getState(); + } + + /* (non-Javadoc) + * @see com.vaadin.client.ui.absolutelayout.AbsoluteLayoutConnector#onStateChanged(com.vaadin.client.communication.StateChangeEvent) + */ + @Override + public void onStateChanged(StateChangeEvent stateChangeEvent) { + super.onStateChanged(stateChangeEvent); + + getWidget().setUseAlignments(getState().useAlignments); + getWidget().setUseResizing(getState().useResizing); + } + + /* (non-Javadoc) + * @see org.eclipse.osbp.vaadin.addons.absolutelayout.client.OChildResizeListener#resized(com.vaadin.shared.Connector, int, int, int, int, org.eclipse.osbp.vaadin.addons.absolutelayout.client.OResizeLocation) + */ + @Override + public void resized(Connector child, int newWidth, int newHeight, int oldWidth, int oldHeight, + OResizeLocation location) { + rpc.resized(child, newWidth, newHeight, oldWidth, oldHeight, location); + } + +}
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAbsoluteLayoutServerRpc.java b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAbsoluteLayoutServerRpc.java new file mode 100644 index 0000000..a3cc7a2 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAbsoluteLayoutServerRpc.java
@@ -0,0 +1,38 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.absolutelayout.client; + +import com.vaadin.shared.Connector; +import com.vaadin.shared.communication.ServerRpc; + +// TODO: Auto-generated Javadoc +/** + * The Interface OAbsoluteLayoutServerRpc. + */ +public interface OAbsoluteLayoutServerRpc extends ServerRpc { + + /** + * Is called if the given connector was resized. So the server layout needs + * to update the position of the child. + * + * @param connector the connector + * @param newWidth the new width + * @param newHeight the new height + * @param oldWidth the old width + * @param oldHeight the old height + * @param location the location + */ + void resized(Connector connector, int newWidth, int newHeight, int oldWidth, int oldHeight, + OResizeLocation location); + +}
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAbsoluteLayoutState.java b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAbsoluteLayoutState.java new file mode 100644 index 0000000..d267cdb --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAbsoluteLayoutState.java
@@ -0,0 +1,30 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.absolutelayout.client; + +// TODO: Auto-generated Javadoc +/** + * The Class OAbsoluteLayoutState. + */ +public class OAbsoluteLayoutState extends fi.jasoft.dragdroplayouts.client.ui.absolutelayout.DDAbsoluteLayoutState { + + /** The Constant serialVersionUID. */ + private static final long serialVersionUID = -138381612142479069L; + + /** The use alignments. */ + public boolean useAlignments; + + /** The use resizing. */ + public boolean useResizing; + +}
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAbsoluteLayoutWidget.java b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAbsoluteLayoutWidget.java new file mode 100644 index 0000000..dfe0d3f --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAbsoluteLayoutWidget.java
@@ -0,0 +1,953 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.absolutelayout.client; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.EventTarget; +import com.google.gwt.dom.client.NativeEvent; +import com.google.gwt.dom.client.Style; +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.event.dom.client.KeyCodes; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.user.client.DOM; +import com.google.gwt.user.client.Event; +import com.google.gwt.user.client.Event.NativePreviewEvent; +import com.google.gwt.user.client.Event.NativePreviewHandler; +import com.google.gwt.user.client.EventListener; +import com.google.gwt.user.client.ui.Widget; +import com.google.gwt.user.client.ui.WidgetCollection; +import com.vaadin.client.ComponentConnector; +import com.vaadin.client.Util; +import com.vaadin.client.WidgetUtil; +import com.vaadin.client.ui.dd.VDragEvent; + +import fi.jasoft.dragdroplayouts.client.ui.absolutelayout.VDDAbsoluteLayout; + +// TODO: Auto-generated Javadoc +/** + * Absolute layout widget that supports drag and drop, resizing and alignment. + */ +public class OAbsoluteLayoutWidget extends VDDAbsoluteLayout { + + /** The Constant CLASSNAME. */ + public static final String CLASSNAME = "o-absolutelayout"; + + /** The resize listener. */ + protected OChildResizeListener resizeListener; + + /** The use resizing. */ + protected boolean useResizing; + + /** + * Instantiates a new o absolute layout widget. + */ + public OAbsoluteLayoutWidget() { + addStyleName(CLASSNAME); + } + + /* (non-Javadoc) + * @see fi.jasoft.dragdroplayouts.client.ui.absolutelayout.VDDAbsoluteLayout#postDropHook(com.vaadin.client.ui.dd.VDragEvent) + */ + @Override + protected boolean postDropHook(VDragEvent drag) { + boolean result = super.postDropHook(drag); + + OAlignmentManager.get().updateDropDetails(drag); + OAlignmentManager.get().stop(); + + return result; + } + + /* (non-Javadoc) + * @see fi.jasoft.dragdroplayouts.client.ui.absolutelayout.VDDAbsoluteLayout#postEnterHook(com.vaadin.client.ui.dd.VDragEvent) + */ + @Override + protected void postEnterHook(VDragEvent drag) { + super.postEnterHook(drag); + + updateDrag(drag); + } + + /* (non-Javadoc) + * @see fi.jasoft.dragdroplayouts.client.ui.absolutelayout.VDDAbsoluteLayout#postLeaveHook(com.vaadin.client.ui.dd.VDragEvent) + */ + @Override + protected void postLeaveHook(VDragEvent drag) { + super.postLeaveHook(drag); + + updateDrag(drag); + } + + /* (non-Javadoc) + * @see fi.jasoft.dragdroplayouts.client.ui.absolutelayout.VDDAbsoluteLayout#postOverHook(com.vaadin.client.ui.dd.VDragEvent) + */ + @Override + protected void postOverHook(VDragEvent drag) { + super.postOverHook(drag); + + updateDrag(drag); + } + + /** + * Updates the drag information and alignments. + * + * @param drag the drag + */ + private void updateDrag(VDragEvent drag) { + if (!OAlignmentManager.get().isActive()) { + OAlignmentManager.get().startDragAndDrop(this); + } + OAlignmentManager.get().updateAlignmentsForDrop(drag); + } + + /** + * True, if alignments should be used. False otherwise. + * + * @param useAlignments the new use alignments + */ + public void setUseAlignments(boolean useAlignments) { + OAlignmentManager.get().setUseAlignments(useAlignments); + } + + /** + * True, if resizing should be used. False otherwise. + * + * @param useResizing the new use resizing + */ + public void setUseResizing(boolean useResizing) { + this.useResizing = useResizing; + + for (Widget child : getChildren()) { + if (child instanceof ResizableAbsoluteWrapper) { + ResizableAbsoluteWrapper wrapper = (ResizableAbsoluteWrapper) child; + wrapper.setResizable(useResizing); + } + } + } + + /* (non-Javadoc) + * @see com.google.gwt.user.client.ui.ComplexPanel#getChildren() + */ + public WidgetCollection getChildren() { + return super.getChildren(); + } + + /* (non-Javadoc) + * @see com.vaadin.client.ui.VAbsoluteLayout#add(com.google.gwt.user.client.ui.Widget) + */ + @Override + public void add(Widget child) { + ResizableAbsoluteWrapper wrapper = new ResizableAbsoluteWrapper(child); + super.add(wrapper, canvas); + } + + /** + * Returns true, if alignments are used. False otherwise. + * + * @return true, if is use alignments + */ + public boolean isUseAlignments() { + return OAlignmentManager.get().isUseAlignments(); + } + + /** + * Sets the resize listener. + * + * @param resizeListener the new resize listener + */ + public void setResizeListener(OChildResizeListener resizeListener) { + this.resizeListener = resizeListener; + } + + /** + * The Class ResizeHandler. + */ + protected static class ResizeHandler implements EventListener { + + /** The wrapper. */ + protected final ResizableAbsoluteWrapper wrapper; + + /** The start client x. */ + protected int startClientX = 0; + + /** The start client y. */ + protected int startClientY = 0; + + /** The start width. */ + protected int startWidth = 0; + + /** The start height. */ + protected int startHeight = 0; + + /** The resizing x. */ + protected boolean resizingX; + + /** The revert x. */ + protected boolean revertX; + + /** The revert y. */ + protected boolean revertY; + + /** The resizing y. */ + protected boolean resizingY; + + /** The dragged element. */ + // TODO remove me later -> Same as wrapper? + protected Element draggedElement; + + /** The waiting accept. */ + protected boolean waitingAccept; + + /** The cancel listener registration. */ + protected HandlerRegistration cancelListenerRegistration; + + /** The resize canceled. */ + protected boolean resizeCanceled; + + /** The keep aspect ratio. */ + protected boolean keepAspectRatio; + + /** The old width. */ + protected int oldWidth; + + /** The old height. */ + protected int oldHeight; + + /** The resize location. */ + protected OResizeLocation resizeLocation; + + /** The Constant locationToCursorMap. */ + @SuppressWarnings("serial") + protected static final Map<OResizeLocation, String> locationToCursorMap = new HashMap<OResizeLocation, String>() { + { + // put(CResizeLocation.TOP_LEFT, "nwse-resize"); + put(OResizeLocation.TOP, "ns-resize"); + // put(CResizeLocation.TOP_RIGHT, "nesw-resize"); + put(OResizeLocation.RIGHT, "ew-resize"); + // put(CResizeLocation.BOTTOM_RIGHT, "nwse-resize"); + put(OResizeLocation.BOTTOM, "ns-resize"); + // put(CResizeLocation.BOTTOM_LEFT, "nesw-resize"); + put(OResizeLocation.LEFT, "ew-resize"); + } + }; + + /** + * Instantiates a new resize handler. + * + * @param wrapper the wrapper + */ + public ResizeHandler(ResizableAbsoluteWrapper wrapper) { + this.wrapper = wrapper; + } + + /* (non-Javadoc) + * @see com.google.gwt.user.client.EventListener#onBrowserEvent(com.google.gwt.user.client.Event) + */ + @Override + public void onBrowserEvent(Event event) { + final EventTarget currentTarget = event.getCurrentEventTarget(); + final Element target = currentTarget.cast(); + final Element targetParent = target.getParentElement(); + if (resizingX || resizingY || wrapper.getElement().equals(targetParent) + || (targetParent != null && wrapper.getElement().equals(targetParent.getParentElement()))) { + switch (event.getTypeInt()) { + case Event.ONMOUSEMOVE: + onMouseMove(event); + break; + case Event.ONMOUSEDOWN: + onResizeStart(event, target); + break; + case Event.ONMOUSEUP: + onResizeEnd(event); + break; + default: + break; + } + } else if (resizeCanceled && event.getTypeInt() == Event.ONMOUSEUP) { + event.preventDefault(); + event.stopPropagation(); + } + } + + /** + * On mouse move. + * + * @param event the event + */ + protected void onMouseMove(Event event) { + if (!resizingX && !resizingY) { + return; + } + + double height = -1.0; + double width = -1.0; + + if (resizingY) { + int clientY = WidgetUtil.getTouchOrMouseClientY(event); + if (!isInVerticalBoundary(event)) { + // set the size to the edge of the boundary element + clientY = clientY < wrapper.getElement().getAbsoluteTop() + ? (wrapper.getElement().getAbsoluteTop() + 2) + : (wrapper.getElement().getAbsoluteBottom() - 2); + } + int extraScrollHeight = wrapper.getElement() == null ? 0 : wrapper.getElement().getScrollTop(); + height = startHeight + extraScrollHeight + (revertY ? startClientY - clientY : clientY - startClientY); + event.stopPropagation(); + } + + if (resizingX) { + int clientX = WidgetUtil.getTouchOrMouseClientX(event); + if (!isInHorizontalBoundary(event)) { + // set the size to the edge of the boundary element + clientX = clientX < wrapper.getElement().getAbsoluteLeft() + ? (wrapper.getElement().getAbsoluteLeft() + 2) + : (wrapper.getElement().getAbsoluteRight() - 2); + } + int extraScrollWidth = wrapper.getElement() == null ? 0 : wrapper.getElement().getScrollLeft(); + width = startWidth + extraScrollWidth + (revertX ? startClientX - clientX : clientX - startClientX); + event.stopPropagation(); + } + + if (keepAspectRatio && (height > -1.0 || width > 1.0)) { + final double wRatio = width / startWidth; + final double hRatio = height / startHeight; + + if (height == -1.0) { + height = startHeight * wRatio; + } else if (width == -1.0) { + width = startWidth * hRatio; + } else { + if (wRatio < hRatio) { + height = startHeight * wRatio; + } else { + width = startWidth * hRatio; + } + + } + + wrapper.dragOverlayElement.getStyle().setHeight(height, Unit.PX); + wrapper.dragOverlayElement.getStyle().setWidth(width, Unit.PX); + } + + if (height > -1.0) { + wrapper.dragOverlayElement.getStyle().setHeight(height, Unit.PX); + } + if (width > -1.0) { + wrapper.dragOverlayElement.getStyle().setWidth(width, Unit.PX); + } + + // notify about resizing + wrapper.notifyResizing((int) width, (int) height, oldWidth, oldHeight, resizeLocation, draggedElement, + wrapper.dragOverlayElement); + + } + + /** + * Checks if is in horizontal boundary. + * + * @param event the event + * @return true, if is in horizontal boundary + */ + protected boolean isInHorizontalBoundary(Event event) { + if (wrapper.getParent().getElement() != null) { + int clientX = event.getClientX(); + int right = wrapper.getParent().getElement().getAbsoluteRight() - 1; + int left = wrapper.getParent().getElement().getAbsoluteLeft() + 1; + return clientX > left && clientX < right; + } + return true; + } + + /** + * Checks if is in vertical boundary. + * + * @param event the event + * @return true, if is in vertical boundary + */ + protected boolean isInVerticalBoundary(Event event) { + if (wrapper.getParent().getElement() != null) { + int clientY = event.getClientY(); + int top = wrapper.getParent().getElement().getAbsoluteTop() + 1; + int bottom = wrapper.getParent().getElement().getAbsoluteBottom() - 1; + return clientY > top && clientY < bottom; + } + return true; + } + + /** + * Override cursor. + * + * @param location the location + */ + protected void overrideCursor(OResizeLocation location) { + String cursorValue = locationToCursorMap.get(location); + if (wrapper.getElement() != null) { + wrapper.getElement().getStyle().setProperty("cursor", cursorValue); + } + wrapper.dragOverlayElement.getStyle().setProperty("cursor", cursorValue); + } + + /** + * Stop cursor override. + */ + protected void stopCursorOverride() { + if (wrapper.getElement() != null) { + wrapper.getElement().getStyle().clearCursor(); + } + wrapper.dragOverlayElement.getStyle().clearCursor(); + } + + /** + * Mark boundary resizing. + */ + protected void markBoundaryResizing() { + if (wrapper.getElement() != null) { + wrapper.getElement().addClassName("resizing-child"); + } + } + + /** + * Unmark boundary resizing. + */ + protected void unmarkBoundaryResizing() { + if (wrapper.getElement() != null) { + wrapper.getElement().removeClassName("resizing-child"); + } + } + + /** + * Accept resize. + * + * @param accept the accept + */ + protected void acceptResize(boolean accept) { + if (waitingAccept) { + waitingAccept = false; + OAlignmentManager.get().updateResizedWidget(accept, oldWidth, oldHeight); + OAlignmentManager.get().stop(); + + resizingX = false; + resizingY = false; + draggedElement = null; + wrapper.dragOverlayElement.removeFromParent(); + Style style = wrapper.dragOverlayElement.getStyle(); + style.clearTop(); + style.clearRight(); + style.clearBottom(); + style.clearLeft(); + style.clearHeight(); + style.clearWidth(); + startClientX = 0; + startClientY = 0; + startHeight = 0; + startWidth = 0; + + oldWidth = 0; + oldHeight = 0; + resizeLocation = null; + + wrapper.getElement().removeClassName("resizing"); + } + } + + /** + * On resize end. + * + * @param event the event + */ + protected void onResizeEnd(Event event) { + if (resizingX || resizingY) { + resizingX = false; + resizingY = false; + waitingAccept = true; + + keepAspectRatio = false; + + Event.releaseCapture(draggedElement); + event.stopPropagation(); + + stopCursorOverride(); + unmarkBoundaryResizing(); + + acceptResize(true); + } + } + + /** + * On resize start. + * + * @param event the event + * @param target the target + */ + protected void onResizeStart(Event event, Element target) { + if (!(resizingX || resizingY || waitingAccept)) { + resizeCanceled = false; + keepAspectRatio = false; + draggedElement = target; + // startWidth = + // WidgetUtil.getRequiredWidth(wrapper.getElement()); + // startHeight = + // WidgetUtil.getRequiredHeight(wrapper.getElement()); + startWidth = wrapper.getElement().getOffsetWidth(); + startHeight = wrapper.getElement().getOffsetHeight(); + if (target.equals(wrapper.topEdge) || target.equals(wrapper.bottomEdge)) { + resizeLocation = startVerticalResize(event, target); + } else if (target.equals(wrapper.leftEdge) || target.equals(wrapper.rightEdge)) { + resizeLocation = startHorizontalResize(event, target); + } + // else { + // resizeLocation = startDiagonalResize(event, target); + // } + + // initialize the old values + oldWidth = wrapper.getElement().getOffsetWidth(); + oldHeight = wrapper.getElement().getOffsetHeight(); + + wrapper.getElement().addClassName("resizing"); + wrapper.getElement().appendChild(wrapper.dragOverlayElement); + Event.setCapture(draggedElement); + event.stopPropagation(); + + overrideCursor(resizeLocation); + markBoundaryResizing(); + listenToKeyboard(); + + OAlignmentManager.get().startResize((OAbsoluteLayoutWidget) wrapper.getParent(), wrapper, + resizeLocation, wrapper.dragOverlayElement); + } + } + + /** + * Listen to keyboard. + */ + protected void listenToKeyboard() { + cancelListenerRegistration = Event.addNativePreviewHandler(new NativePreviewHandler() { + + @Override + public void onPreviewNativeEvent(NativePreviewEvent event) { + if (event.getTypeInt() == Event.ONKEYDOWN && (resizingX || resizingY)) { + final int keyCode = event.getNativeEvent().getKeyCode(); + if (keyCode == KeyCodes.KEY_ESCAPE) { + onResizeCancel(event.getNativeEvent()); + } else if (keyCode == KeyCodes.KEY_SHIFT) { + keepAspectRatio = true; + } + } else if (event.getTypeInt() == Event.ONKEYUP && (resizingX || resizingY)) { + final int keyCode = event.getNativeEvent().getKeyCode(); + if (keyCode == KeyCodes.KEY_SHIFT) { + keepAspectRatio = false; + } + } + } + }); + } + + /** + * On resize cancel. + * + * @param event the event + */ + protected void onResizeCancel(NativeEvent event) { + if (cancelListenerRegistration != null) { + cancelListenerRegistration.removeHandler(); + } + Event.releaseCapture(draggedElement); + event.stopPropagation(); + event.preventDefault(); + + resizeCanceled = true; + waitingAccept = true; + acceptResize(false); + + keepAspectRatio = false; + + stopCursorOverride(); + unmarkBoundaryResizing(); + } + + // protected CResizeLocation startDiagonalResize(Event event, Element + // target) { + // CResizeLocation resizeLocation; + // resizingX = true; + // resizingY = true; + // + // Style style = wrapper.dragOverlayElement.getStyle(); + // startClientY = WidgetUtil.getTouchOrMouseClientY(event); + // style.setHeight(startHeight, Unit.PX); + // startClientX = WidgetUtil.getTouchOrMouseClientX(event); + // style.setWidth(startWidth, Unit.PX); + // + // if (target.equals(wrapper.topLeftCorner) || + // target.equals(wrapper.topRightCorner)) { + // revertY = true; + // style.setBottom(0, Unit.PX); + // resizeLocation = target.equals(wrapper.topLeftCorner) ? + // CResizeLocation.TOP_LEFT + // : CResizeLocation.TOP_RIGHT; + // } else { + // revertY = false; + // style.setTop(0, Unit.PX); + // resizeLocation = target.equals(wrapper.bottomRightCorner) ? + // CResizeLocation.BOTTOM_RIGHT + // : CResizeLocation.BOTTOM_LEFT; + // } + // if (target.equals(wrapper.topLeftCorner) || + // target.equals(wrapper.bottomLeftCorner)) { + // revertX = true; + // style.setRight(0, Unit.PX); + // } else { + // revertX = false; + // style.setLeft(0, Unit.PX); + // } + // return resizeLocation; + // } + + /** + * Start vertical resize. + * + * @param event the event + * @param target the target + * @return the o resize location + */ + protected OResizeLocation startVerticalResize(Event event, Element target) { + OResizeLocation resizeLocation; + resizingY = true; + Style style = wrapper.dragOverlayElement.getStyle(); + startClientY = WidgetUtil.getTouchOrMouseClientY(event); + style.setHeight(startHeight, Unit.PX); + + if (target.equals(wrapper.topEdge)) { + revertY = true; + style.setBottom(0, Unit.PX); + resizeLocation = OResizeLocation.TOP; + } else { + revertY = false; + style.setTop(0, Unit.PX); + resizeLocation = OResizeLocation.BOTTOM; + } + style.setLeft(0, Unit.PX); + style.setRight(0, Unit.PX); + return resizeLocation; + } + + /** + * Start horizontal resize. + * + * @param event the event + * @param target the target + * @return the o resize location + */ + protected OResizeLocation startHorizontalResize(Event event, Element target) { + OResizeLocation resizeLocation; + resizingX = true; + Style style = wrapper.dragOverlayElement.getStyle(); + startClientX = WidgetUtil.getTouchOrMouseClientX(event); + style.setWidth(startWidth, Unit.PX); + + if (target.equals(wrapper.leftEdge)) { + revertX = true; + style.setRight(0, Unit.PX); + resizeLocation = OResizeLocation.LEFT; + } else { + revertX = false; + style.setLeft(0, Unit.PX); + resizeLocation = OResizeLocation.RIGHT; + } + style.setTop(0, Unit.PX); + style.setBottom(0, Unit.PX); + return resizeLocation; + } + + } + + /** + * The Class ResizableAbsoluteWrapper. + */ + public class ResizableAbsoluteWrapper extends AbsoluteWrapper { + + /** The Constant O_RESIZABLE_STYLE_NAME. */ + protected static final String O_RESIZABLE_STYLE_NAME = "o-resizable"; + + /** The Constant DEFAULT_DRAG_SIZE_PIXELS. */ + protected static final int DEFAULT_DRAG_SIZE_PIXELS = 10; + + // protected Element topLeftCorner; + // protected Element topRightCorner; + // protected Element bottomLeftCorner; + /** The top edge. */ + // protected Element bottomRightCorner; + protected Element topEdge; + + /** The right edge. */ + protected Element rightEdge; + + /** The bottom edge. */ + protected Element bottomEdge; + + /** The left edge. */ + protected Element leftEdge; + + /** The drag overlay element. */ + protected Element dragOverlayElement; + + /** The drag size pixels. */ + protected int dragSizePixels; + + /** The resizable. */ + protected boolean resizable; + + /** The resize handler. */ + protected ResizeHandler resizeHandler; + + /** + * Instantiates a new resizable absolute wrapper. + * + * @param child the child + */ + public ResizableAbsoluteWrapper(Widget child) { + super(child); + + resizeHandler = new ResizeHandler(this); + + child.addStyleName(O_RESIZABLE_STYLE_NAME); + // getElement().addClassName("resizable"); + + initDOM(); + initListeners(); + setResizeLocationSize(DEFAULT_DRAG_SIZE_PIXELS); + } + + /** + * Notify resized. + * + * @param width the width + * @param height the height + * @param oldWidth the old width + * @param oldHeight the old height + * @param location the location + */ + public void notifyResized(int width, int height, int oldWidth, int oldHeight, OResizeLocation location) { + ComponentConnector c = Util.findConnectorFor(getWidget()); + resizeListener.resized(c, width, height, oldWidth, oldHeight, location); + OAlignmentManager.get().resetAlignments(); + } + + /** + * Notify resizing. + * + * @param width the width + * @param height the height + * @param oldWidth the old width + * @param oldHeight the old height + * @param location the location + * @param draggedElement the dragged element + * @param dragOverlayElement the drag overlay element + */ + public void notifyResizing(int width, int height, int oldWidth, int oldHeight, OResizeLocation location, + Element draggedElement, Element dragOverlayElement) { + OAlignmentManager.get().updateAlignmentsForResize(draggedElement, dragOverlayElement); + } + + /** + * Notify resizing cancel. + */ + public void notifyResizingCancel() { + OAlignmentManager.get().resetAlignments(); + } + + /** + * Inits the dom. + */ + protected void initDOM() { + // topLeftCorner = DOM.createDiv(); + // topLeftCorner.addClassName("tlc"); + // topLeftCorner.addClassName(ICConstants.RESIZE_DIV); + // topRightCorner = DOM.createDiv(); + // topRightCorner.addClassName("trc"); + // topRightCorner.addClassName(ICConstants.RESIZE_DIV); + // bottomLeftCorner = DOM.createDiv(); + // bottomLeftCorner.addClassName("blc"); + // bottomLeftCorner.addClassName(ICConstants.RESIZE_DIV); + // bottomRightCorner = DOM.createDiv(); + // bottomRightCorner.addClassName("brc"); + // bottomRightCorner.addClassName(ICConstants.RESIZE_DIV); + + topEdge = DOM.createDiv(); + topEdge.addClassName("te"); + topEdge.addClassName(IOConstants.CSS_RESIZE_DIV); + rightEdge = DOM.createDiv(); + rightEdge.addClassName("re"); + rightEdge.addClassName(IOConstants.CSS_RESIZE_DIV); + bottomEdge = DOM.createDiv(); + bottomEdge.addClassName("be"); + bottomEdge.addClassName(IOConstants.CSS_RESIZE_DIV); + leftEdge = DOM.createDiv(); + leftEdge.addClassName("le"); + leftEdge.addClassName(IOConstants.CSS_RESIZE_DIV); + + dragOverlayElement = DOM.createDiv(); + dragOverlayElement.addClassName("drag-overlay"); + + // topEdge.appendChild(topLeftCorner); + // topEdge.appendChild(topRightCorner); + + // bottomEdge.appendChild(bottomLeftCorner); + // bottomEdge.appendChild(bottomRightCorner); + + setResizable(true); + } + + /** + * Inits the listeners. + */ + protected void initListeners() { + // Event.sinkEvents(topLeftCorner, Event.MOUSEEVENTS); + // Event.sinkEvents(topRightCorner, Event.MOUSEEVENTS); + // Event.sinkEvents(bottomLeftCorner, Event.MOUSEEVENTS); + // Event.sinkEvents(bottomRightCorner, Event.MOUSEEVENTS); + Event.sinkEvents(topEdge, Event.MOUSEEVENTS); + Event.sinkEvents(rightEdge, Event.MOUSEEVENTS); + Event.sinkEvents(bottomEdge, Event.MOUSEEVENTS); + Event.sinkEvents(leftEdge, Event.MOUSEEVENTS); + } + + /** + * Set the size of the resize locations in pixels. This will be the + * width&height for the corner locations, width for the left&right + * sides, and height for the top&bottom sides. + * <p> + * Default size is {@value #DEFAULT_DRAG_SIZE_PIXELS}. + * + * @param resizeLocationSize the new resize location size + */ + public void setResizeLocationSize(int resizeLocationSize) { + if (dragSizePixels != resizeLocationSize) { + dragSizePixels = resizeLocationSize; + // topLeftCorner.getStyle().setHeight(resizeLocationSize, + // Unit.PX); + // topLeftCorner.getStyle().setWidth(resizeLocationSize, + // Unit.PX); + // topRightCorner.getStyle().setHeight(resizeLocationSize, + // Unit.PX); + // topRightCorner.getStyle().setWidth(resizeLocationSize, + // Unit.PX); + // bottomLeftCorner.getStyle().setHeight(resizeLocationSize, + // Unit.PX); + // bottomLeftCorner.getStyle().setWidth(resizeLocationSize, + // Unit.PX); + // bottomRightCorner.getStyle().setHeight(resizeLocationSize, + // Unit.PX); + // bottomRightCorner.getStyle().setWidth(resizeLocationSize, + // Unit.PX); + + topEdge.getStyle().setHeight(resizeLocationSize, Unit.PX); + rightEdge.getStyle().setWidth(resizeLocationSize, Unit.PX); + bottomEdge.getStyle().setHeight(resizeLocationSize, Unit.PX); + leftEdge.getStyle().setWidth(resizeLocationSize, Unit.PX); + + int negativeMargin = new BigDecimal(resizeLocationSize).divideToIntegralValue(new BigDecimal(2)) + .negate().intValueExact(); + // topLeftCorner.getStyle().setMarginLeft(negativeMargin, + // Unit.PX); + // topRightCorner.getStyle().setMarginRight(negativeMargin, + // Unit.PX); + // bottomRightCorner.getStyle().setMarginRight(negativeMargin, + // Unit.PX); + // bottomLeftCorner.getStyle().setMarginLeft(negativeMargin, + // Unit.PX); + topEdge.getStyle().setMarginTop(negativeMargin, Unit.PX); + rightEdge.getStyle().setMarginRight(negativeMargin, Unit.PX); + bottomEdge.getStyle().setMarginBottom(negativeMargin, Unit.PX); + leftEdge.getStyle().setMarginLeft(negativeMargin, Unit.PX); + } + } + + /** + * Trigger the resizable mode for the component. + * + * @param resizable the new resizable + */ + public void setResizable(boolean resizable) { + if (this.resizable != resizable) { + this.resizable = resizable; + if (resizable) { + enableResize(topEdge); + enableResize(leftEdge); + enableResize(rightEdge); + enableResize(bottomEdge); + getElement().addClassName(O_RESIZABLE_STYLE_NAME); + } else { + disableResize(topEdge); + disableResize(leftEdge); + disableResize(rightEdge); + disableResize(bottomEdge); + getElement().removeClassName(O_RESIZABLE_STYLE_NAME); + } + } + } + + /** + * Enable resize. + * + * @param element the element + */ + protected void enableResize(Element element) { + getElement().appendChild(element); + Event.setEventListener(element, resizeHandler); + } + + /** + * Disable resize. + * + * @param element the element + */ + protected void disableResize(Element element) { + getElement().removeChild(element); + Event.setEventListener(element, null); + } + + /** + * Is the component in resizable mode. + * + * @return the resizable + */ + public boolean getResizable() { + return resizable; + } + + /* (non-Javadoc) + * @see com.vaadin.client.ui.VAbsoluteLayout.AbsoluteWrapper#setWrapperStyleNames(java.lang.String[]) + */ + public void setWrapperStyleNames(String... stylenames) { + List<String> styles = stylenames != null ? new ArrayList<String>(Arrays.asList(stylenames)) : new ArrayList<String>(); + styles.add(O_RESIZABLE_STYLE_NAME); + super.setWrapperStyleNames(styles.toArray(new String[styles.size()])); + } + + /* (non-Javadoc) + * @see com.vaadin.client.ui.VAbsoluteLayout.AbsoluteWrapper#destroy() + */ + public void destroy() { + setResizable(false); + + super.destroy(); + } + } +} \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAlignmentManager.java b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAlignmentManager.java new file mode 100644 index 0000000..11d10c3 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAlignmentManager.java
@@ -0,0 +1,536 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.absolutelayout.client; + +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import org.eclipse.osbp.vaadin.addons.absolutelayout.client.OAlignmentOverlay.AlignmentsLocation; + +import com.google.gwt.core.client.Scheduler; +import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.user.client.ui.Widget; +import com.vaadin.client.ui.dd.VDragEvent; + +import fi.jasoft.dragdroplayouts.client.ui.Constants; + +// TODO: Auto-generated Javadoc +/** + * This class handles alignments for drag and drop and resize operations. + */ +public class OAlignmentManager { + + /** The manager. */ + private static OAlignmentManager manager; + + /** The alignments. */ + protected Set<OAlignmentOverlay> alignments = new HashSet<>(); + + /** The snap. */ + protected int snap = 4; + + /** The layout. */ + private OAbsoluteLayoutWidget layout; + + /** The snap info. */ + private OAlignmentSnapInfo snapInfo; + + /** The resizing widget. */ + private OAbsoluteLayoutWidget.ResizableAbsoluteWrapper resizingWidget; + + /** The resizing overlay. */ + private Element resizingOverlay; + + /** The resize location. */ + private OResizeLocation resizeLocation; + + /** The use alignments. */ + private boolean useAlignments; + + /** + * Instantiates a new o alignment manager. + */ + private OAlignmentManager() { + + } + + /** + * Gets the. + * + * @return the o alignment manager + */ + public static OAlignmentManager get() { + if (manager == null) { + manager = new OAlignmentManager(); + } + return manager; + } + + /** + * Start. + * + * @param layout the layout + */ + protected void start(OAbsoluteLayoutWidget layout) { + this.layout = layout; + } + + /** + * Start drag and drop. + * + * @param layout the layout + */ + public void startDragAndDrop(OAbsoluteLayoutWidget layout) { + start(layout); + } + + /** + * Start resize. + * + * @param layout the layout + * @param resizingWidget the resizing widget + * @param resizeLocation the resize location + * @param resizingOverlay the resizing overlay + */ + public void startResize(OAbsoluteLayoutWidget layout, OAbsoluteLayoutWidget.ResizableAbsoluteWrapper resizingWidget, + OResizeLocation resizeLocation, Element resizingOverlay) { + this.layout = layout; + this.resizingWidget = resizingWidget; + this.resizeLocation = resizeLocation; + this.resizingOverlay = resizingOverlay; + + start(layout); + } + + /** + * Checks if is active. + * + * @return true, if is active + */ + public boolean isActive() { + return layout != null; + } + + /** + * Stop. + */ + public void stop() { + resetAlignments(); + layout = null; + alignments.clear(); + resizeLocation = null; + resizingWidget = null; + snapInfo = null; + } + + /** + * Update alignments for drop. + * + * @param drag the drag + */ + public void updateAlignmentsForDrop(final VDragEvent drag) { + if (!useAlignments) { + return; + } + + Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() { + @Override + public void execute() { + resetSnap(); + resetAlignments(); + + Map<String, Object> dropDetail = drag.getDropDetails(); + if (!dropDetail.containsKey(Constants.DROP_DETAIL_RELATIVE_TOP)) { + return; + } + int top = (int) dropDetail.get(Constants.DROP_DETAIL_RELATIVE_TOP); + int left = (int) dropDetail.get(Constants.DROP_DETAIL_RELATIVE_LEFT); + int width = (int) dropDetail.get(Constants.DROP_DETAIL_COMPONENT_WIDTH); + int height = (int) dropDetail.get(Constants.DROP_DETAIL_COMPONENT_HEIGHT); + + int topEdgeY = top; + int leftEdgeX = left; + int rightEdgeX = left + width; + int bottomEdgeY = top + height; + + int snapCount = 0; + for (Widget child : layout.getChildren()) { + int childTop = child.getElement().getOffsetTop(); + int childLeft = child.getElement().getOffsetLeft(); + int childWidth = child.getElement().getOffsetWidth(); + int childHeight = child.getElement().getOffsetHeight(); + + int childTopEdgeY = childTop; + int childLeftEdgeX = childLeft; + int childRightEdgeX = childLeft + childWidth; + int childBottomEdgeY = childTop + childHeight; + + boolean isDraggedLeftOf = false; + boolean isDraggedToOf = false; + if (left < child.getAbsoluteLeft()) { + isDraggedLeftOf = true; + } + + if (top < child.getAbsoluteTop()) { + isDraggedToOf = true; + } + + AlignmentsLocation location = null; + // paired sides -> left to left,... + int top_top_EdgeYDelta = topEdgeY - childTopEdgeY; + int bottom_bottom_EdgeYDelta = bottomEdgeY - childBottomEdgeY; + int left_left_EdgeXDelta = leftEdgeX - childLeftEdgeX; + int right_right_EdgeXDelta = rightEdgeX - childRightEdgeX; + int top_bottom_EdgeYDelta = topEdgeY - childBottomEdgeY; + int bottom_top_EdgeYDelta = bottomEdgeY - childTopEdgeY; + int left_right_EdgeXDelta = leftEdgeX - childRightEdgeX; + int right_left_EdgeXDelta = rightEdgeX - childLeftEdgeX; + + OAlignmentSnapInfo snapInfo = null; + if (isInsideSnapBounds(top_top_EdgeYDelta)) { + snapInfo = new OAlignmentSnapInfo(0, top_top_EdgeYDelta); + location = isDraggedLeftOf ? AlignmentsLocation.TOP_EDGE_TOLEFT + : AlignmentsLocation.TOP_EDGE_TORIGHT; + } else if (isInsideSnapBounds(left_left_EdgeXDelta)) { + snapInfo = new OAlignmentSnapInfo(left_left_EdgeXDelta, 0); + location = isDraggedToOf ? AlignmentsLocation.LEFT_EDGE_TOTOP + : AlignmentsLocation.LEFT_EDGE_TOBOTTOM; + } else if (isInsideSnapBounds(right_right_EdgeXDelta)) { + snapInfo = new OAlignmentSnapInfo(right_right_EdgeXDelta, 0); + location = isDraggedToOf ? AlignmentsLocation.RIGHT_EDGE_TOTOP + : AlignmentsLocation.RIGHT_EDGE_TOBOTTOM; + } else if (isInsideSnapBounds(bottom_bottom_EdgeYDelta)) { + snapInfo = new OAlignmentSnapInfo(0, bottom_bottom_EdgeYDelta); + location = isDraggedLeftOf ? AlignmentsLocation.BOTTOM_EDGE_TOLEFT + : AlignmentsLocation.BOTTOM_EDGE_TORIGHT; + // unpaired sides + } else if (isInsideSnapBounds(top_bottom_EdgeYDelta)) { + snapInfo = new OAlignmentSnapInfo(0, top_bottom_EdgeYDelta); + location = isDraggedLeftOf ? AlignmentsLocation.BOTTOM_EDGE_TOLEFT + : AlignmentsLocation.BOTTOM_EDGE_TORIGHT; + } else if (isInsideSnapBounds(left_right_EdgeXDelta)) { + snapInfo = new OAlignmentSnapInfo(left_right_EdgeXDelta, 0); + location = isDraggedToOf ? AlignmentsLocation.RIGHT_EDGE_TOTOP + : AlignmentsLocation.RIGHT_EDGE_TOBOTTOM; + } else if (isInsideSnapBounds(right_left_EdgeXDelta)) { + snapInfo = new OAlignmentSnapInfo(right_left_EdgeXDelta, 0); + location = isDraggedToOf ? AlignmentsLocation.LEFT_EDGE_TOTOP + : AlignmentsLocation.LEFT_EDGE_TOBOTTOM; + } else if (isInsideSnapBounds(bottom_top_EdgeYDelta)) { + snapInfo = new OAlignmentSnapInfo(0, bottom_top_EdgeYDelta); + location = isDraggedLeftOf ? AlignmentsLocation.TOP_EDGE_TOLEFT + : AlignmentsLocation.TOP_EDGE_TORIGHT; + } + + if (location != null) { + snapCount++; + + if (isFirstSnap(snapCount)) { + registerSnap(snapInfo); + } + + OAlignmentOverlay overlay = new OAlignmentOverlay(child, drag.getDragImage(), location, + snapInfo, false, snapCount == 1); + alignments.add(overlay); + overlay.show(); + } + } + } + }); + } + + /** + * Update alignments for resize. + * + * @param draggedElement the resize preview element + * @param dragOverlayElement the drag overlay element + */ + public void updateAlignmentsForResize(final Element draggedElement, final Element dragOverlayElement) { + if (dragOverlayElement == null || !useAlignments) { + return; + } + Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() { + @Override + public void execute() { + resetSnap(); + resetAlignments(); + + int top = (int) dragOverlayElement.getAbsoluteTop(); + int left = (int) dragOverlayElement.getAbsoluteLeft(); + int width = (int) dragOverlayElement.getOffsetWidth(); + int height = (int) dragOverlayElement.getOffsetHeight(); + + int topEdgeY = top; + int leftEdgeX = left; + int rightEdgeX = left + width; + int bottomEdgeY = top + height; + + int snapCount = 0; + + for (Widget child : layout.getChildren()) { + if (child == getResizingWidget()) { + continue; + } + + int childTop = child.getElement().getAbsoluteTop(); + int childLeft = child.getElement().getAbsoluteLeft(); + int childWidth = child.getElement().getOffsetWidth(); + int childHeight = child.getElement().getOffsetHeight(); + + int childTopEdgeY = childTop; + int childLeftEdgeX = childLeft; + int childRightEdgeX = childLeft + childWidth; + int childBottomEdgeY = childTop + childHeight; + + boolean isDraggedLeftOf = false; + boolean isDraggedToOf = false; + if (left < child.getAbsoluteLeft()) { + isDraggedLeftOf = true; + } + + if (top < child.getAbsoluteTop()) { + isDraggedToOf = true; + } + + AlignmentsLocation location = null; + // paired sides -> left to left,... + int top_top_EdgeYDelta = topEdgeY - childTopEdgeY; + int bottom_bottom_EdgeYDelta = bottomEdgeY - childBottomEdgeY; + int left_left_EdgeXDelta = leftEdgeX - childLeftEdgeX; + int right_right_EdgeXDelta = rightEdgeX - childRightEdgeX; + int top_bottom_EdgeYDelta = topEdgeY - childBottomEdgeY; + int bottom_top_EdgeYDelta = bottomEdgeY - childTopEdgeY; + int left_right_EdgeXDelta = leftEdgeX - childRightEdgeX; + int right_left_EdgeXDelta = rightEdgeX - childLeftEdgeX; + + OAlignmentSnapInfo snapInfo = null; + OResizeLocation resizeLoc = getResizeLocation(); + if (resizeLoc.isTop() && isInsideSnapBounds(top_top_EdgeYDelta)) { + snapInfo = new OAlignmentSnapInfo(0, top_top_EdgeYDelta, resizeLoc); + location = isDraggedLeftOf ? AlignmentsLocation.TOP_EDGE_TOLEFT + : AlignmentsLocation.TOP_EDGE_TORIGHT; + } else if (resizeLoc.isLeft() && isInsideSnapBounds(left_left_EdgeXDelta)) { + snapInfo = new OAlignmentSnapInfo(left_left_EdgeXDelta, 0, resizeLoc); + location = isDraggedToOf ? AlignmentsLocation.LEFT_EDGE_TOTOP + : AlignmentsLocation.LEFT_EDGE_TOBOTTOM; + } else if (resizeLoc.isRight() && isInsideSnapBounds(right_right_EdgeXDelta)) { + snapInfo = new OAlignmentSnapInfo(right_right_EdgeXDelta, 0, resizeLoc); + location = isDraggedToOf ? AlignmentsLocation.RIGHT_EDGE_TOTOP + : AlignmentsLocation.RIGHT_EDGE_TOBOTTOM; + } else if (resizeLoc.isBottom() && isInsideSnapBounds(bottom_bottom_EdgeYDelta)) { + snapInfo = new OAlignmentSnapInfo(0, bottom_bottom_EdgeYDelta, resizeLoc); + location = isDraggedLeftOf ? AlignmentsLocation.BOTTOM_EDGE_TOLEFT + : AlignmentsLocation.BOTTOM_EDGE_TORIGHT; + // unpaired sides + } else if (resizeLoc.isTop() && isInsideSnapBounds(top_bottom_EdgeYDelta)) { + snapInfo = new OAlignmentSnapInfo(0, top_bottom_EdgeYDelta, resizeLoc); + location = isDraggedLeftOf ? AlignmentsLocation.BOTTOM_EDGE_TOLEFT + : AlignmentsLocation.BOTTOM_EDGE_TORIGHT; + } else if (resizeLoc.isLeft() && isInsideSnapBounds(left_right_EdgeXDelta)) { + snapInfo = new OAlignmentSnapInfo(left_right_EdgeXDelta, 0, resizeLoc); + location = isDraggedToOf ? AlignmentsLocation.RIGHT_EDGE_TOTOP + : AlignmentsLocation.RIGHT_EDGE_TOBOTTOM; + } else if (resizeLoc.isRight() && isInsideSnapBounds(right_left_EdgeXDelta)) { + snapInfo = new OAlignmentSnapInfo(right_left_EdgeXDelta, 0, resizeLoc); + location = isDraggedToOf ? AlignmentsLocation.LEFT_EDGE_TOTOP + : AlignmentsLocation.LEFT_EDGE_TOBOTTOM; + } else if (resizeLoc.isBottom() && isInsideSnapBounds(bottom_top_EdgeYDelta)) { + snapInfo = new OAlignmentSnapInfo(0, bottom_top_EdgeYDelta, resizeLoc); + location = isDraggedLeftOf ? AlignmentsLocation.TOP_EDGE_TOLEFT + : AlignmentsLocation.TOP_EDGE_TORIGHT; + } + + if (location != null) { + snapCount++; + + if (isFirstSnap(snapCount)) { + registerSnap(snapInfo); + } + + OAlignmentOverlay overlay = new OAlignmentOverlay(child, dragOverlayElement, location, snapInfo, + true, isFirstSnap(snapCount)); + alignments.add(overlay); + overlay.show(); + } + } + } + }); + } + + /** + * Checks if is first snap. + * + * @param snapCount the snap count + * @return true, if is first snap + */ + private boolean isFirstSnap(int snapCount) { + return snapCount == 1; + } + + /** + * Resets all alignments. + */ + protected void resetAlignments() { + for (OAlignmentOverlay alignment : alignments) { + alignment.hide(); + } + alignments.clear(); + } + + /** + * Checks if is inside snap bounds. + * + * @param value the value + * @return true, if is inside snap bounds + */ + protected boolean isInsideSnapBounds(int value) { + int snap = getSnapFromCSS(); + return value <= snap && value >= -snap; + } + + /** + * Reads the snap in pixels from the elements style. + * + * @return the snap from css + */ + protected int getSnapFromCSS() { + String snapStr = layout.getElement().getStyle().getProperty(IOConstants.CSS_SNAP_PROPERTY); + if (snapStr != null) { + return Integer.valueOf(snapStr); + } else { + return snap; + } + } + + /** + * Registers the current snap. Only one snap definition can be active at a + * time. + * + * @param snapInfo the snap info + */ + protected void registerSnap(OAlignmentSnapInfo snapInfo) { + this.snapInfo = snapInfo; + } + + /** + * Resets the snap info. + */ + protected void resetSnap() { + this.snapInfo = null; + } + + /** + * Gets the snap. + * + * @return the snap + */ + protected OAlignmentSnapInfo getSnap() { + return snapInfo != null ? snapInfo : new OAlignmentSnapInfo(0, 0); + } + + /** + * Updates the dropDetails after drop event. + * + * @param drag the drag + */ + public void updateDropDetails(VDragEvent drag) { + if (snapInfo != null) { + Map<String, Object> dropDetail = drag.getDropDetails(); + int rTop = (int) dropDetail.get(Constants.DROP_DETAIL_RELATIVE_TOP); + int aTop = (int) dropDetail.get(Constants.DROP_DETAIL_ABSOLUTE_TOP); + int rLeft = (int) dropDetail.get(Constants.DROP_DETAIL_RELATIVE_LEFT); + int aLeft = (int) dropDetail.get(Constants.DROP_DETAIL_ABSOLUTE_LEFT); + + rTop -= snapInfo.getY(); + aTop -= snapInfo.getY(); + rLeft -= snapInfo.getX(); + aLeft -= snapInfo.getX(); + + dropDetail.put(Constants.DROP_DETAIL_RELATIVE_TOP, rTop); + dropDetail.put(Constants.DROP_DETAIL_ABSOLUTE_TOP, aTop); + dropDetail.put(Constants.DROP_DETAIL_RELATIVE_LEFT, rLeft); + dropDetail.put(Constants.DROP_DETAIL_ABSOLUTE_LEFT, aLeft); + } + } + + /** + * Updates the resized widget after the resizing was finished. + * + * @param accept the accept + * @param oldWidth the old width + * @param oldHeight the old height + */ + public void updateResizedWidget(boolean accept, int oldWidth, int oldHeight) { + if (accept) { + int width = resizingOverlay.getOffsetWidth(); + int height = resizingOverlay.getOffsetHeight(); + + resizingWidget.getElement().getStyle().setWidth(width, Unit.PX); + resizingWidget.getElement().getStyle().setHeight(height, Unit.PX); + + resizingWidget.notifyResized(width, height, oldWidth, oldHeight, resizeLocation); + } else { + resizingWidget.notifyResizingCancel(); + } + } + + /** + * Returns the widget that is currently resized. + * + * @return the resizing widget + */ + public Widget getResizingWidget() { + return resizingWidget; + } + + /** + * Returns the resizing operation currently performed. + * + * @return the resize location + */ + public OResizeLocation getResizeLocation() { + return resizeLocation; + } + + /** + * Returns true, if alignments should be used. + * + * @return true, if is use alignments + */ + public boolean isUseAlignments() { + return useAlignments; + } + + /** + * Sets the use alignments. + * + * @param useAlignments the new use alignments + */ + public void setUseAlignments(boolean useAlignments) { + // if alignments switched off, ensure that pending alignments are being + // removed. + if (this.useAlignments == true && useAlignments == false) { + Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() { + @Override + public void execute() { + resetSnap(); + resetAlignments(); + } + }); + } + this.useAlignments = useAlignments; + } + +}
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAlignmentOverlay.java b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAlignmentOverlay.java new file mode 100644 index 0000000..014c996 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAlignmentOverlay.java
@@ -0,0 +1,306 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.absolutelayout.client; + +import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.user.client.Timer; +import com.google.gwt.user.client.ui.Widget; +import com.vaadin.client.ui.VOverlay; + +// TODO: Auto-generated Javadoc +/** + * The Class OAlignmentOverlay. + */ +public class OAlignmentOverlay extends VOverlay { + + /** The Constant THICKNESS. */ + private static final int THICKNESS = 1; + + /** The Constant CLASSNAME. */ + private static final String CLASSNAME = "o-alignmentLine"; + + /** The alignment location. */ + private final AlignmentsLocation alignmentLocation; + + /** The drag element. */ + private final Element dragElement; + + /** The snap timer. */ + private Timer snapTimer; + + /** + * Shows alignment lines for drag and resize operations. + * + * @param owner the owner + * @param dragElement the drag element + * @param location the location + * @param snap the snap + * @param resize the resize + * @param autoSnap the auto snap + */ + public OAlignmentOverlay(Widget owner, final Element dragElement, AlignmentsLocation location, + final OAlignmentSnapInfo snap, final boolean resize, boolean autoSnap) { + super(false, false); + + super.setOwner(owner); + this.dragElement = dragElement; + this.alignmentLocation = location; + + setStyleName(CLASSNAME); + + setZIndex(VOverlay.Z_INDEX + 1); + + if (autoSnap && (snap.getX() != 0 || snap.getY() != 0)) { + snapTimer = new Timer() { + @Override + public void run() { + if (resize) { + snapResizeImagePosition(dragElement, snap); + } else { + snapDragImagePosition(dragElement, snap); + } + } + }; + } + } + + /* (non-Javadoc) + * @see com.vaadin.client.ui.VOverlay#show() + */ + @Override + public void show() { + int left = 0; + int top = 0; + int width = 0; + int height = 0; + + if (alignmentLocation == null) { + return; + } + + switch (alignmentLocation) { + case TOP_EDGE_TOLEFT: + width = getAlignmentLineX(); + left = getOwner().getOffsetWidth() - width; + height = THICKNESS; + break; + case TOP_EDGE_TORIGHT: + width = getAlignmentLineX(); + left = 0; + height = THICKNESS; + break; + case BOTTOM_EDGE_TOLEFT: + top = getOwner().getOffsetHeight(); + width = getAlignmentLineX(); + left = getOwner().getOffsetWidth() - width; + height = THICKNESS; + break; + case BOTTOM_EDGE_TORIGHT: + width = getAlignmentLineX(); + left = 0; + top = getOwner().getOffsetHeight(); + height = THICKNESS; + break; + case LEFT_EDGE_TOBOTTOM: + top = 0; + width = THICKNESS; + height = getAlignmentLineY(); + break; + case LEFT_EDGE_TOTOP: + top = getOwner().getOffsetHeight() - getAlignmentLineY(); + width = THICKNESS; + height = getAlignmentLineY(); + break; + case RIGHT_EDGE_TOBOTTOM: + top = 0; + left = getOwner().getOffsetWidth(); + width = THICKNESS; + height = getAlignmentLineY(); + break; + case RIGHT_EDGE_TOTOP: + top = getOwner().getOffsetHeight() - getAlignmentLineY(); + left = getOwner().getOffsetWidth(); + width = THICKNESS; + height = getAlignmentLineY(); + break; + } + + // set adjustment size + Element element = getContainerElement(); + element.getStyle().setWidth(width, Unit.PX); + element.getStyle().setHeight(height, Unit.PX); + String bg = element.getStyle().getBackgroundColor(); + if (bg == null || bg.equals("")) { + element.getStyle().setBackgroundColor("red"); + } + + // set the popup position + int absoluteLeft = getOwner().getAbsoluteLeft() + left; + int absoluteTop = getOwner().getAbsoluteTop() + top; + setPopupPosition(absoluteLeft, absoluteTop); + + super.show(); + + if (snapTimer != null) { + snapTimer.schedule(300); + } + } + + /** + * Calculates the horizontal alignment line. + * + * @return the alignment line x + */ + private int getAlignmentLineX() { + if (isOwnerLeftOfImage()) { + return dragElement.getAbsoluteLeft() - getOwner().getAbsoluteLeft() + +dragElement.getOffsetWidth(); + } else { + return getOwner().getAbsoluteLeft() - dragElement.getAbsoluteLeft() + getOwner().getOffsetWidth(); + } + } + + /** + * Checks if is owner left of image. + * + * @return true, if is owner left of image + */ + private boolean isOwnerLeftOfImage() { + return getOwner().getAbsoluteLeft() < dragElement.getAbsoluteLeft(); + } + + /** + * Calculates the vertical alignment line. + * + * @return the alignment line y + */ + private int getAlignmentLineY() { + if (isOwnerTopOfImage()) { + return dragElement.getAbsoluteTop() - getOwner().getAbsoluteTop() + dragElement.getOffsetHeight(); + } else { + return getOwner().getAbsoluteTop() - dragElement.getAbsoluteTop() + getOwner().getOffsetHeight(); + } + } + + /** + * Checks if is owner top of image. + * + * @return true, if is owner top of image + */ + private boolean isOwnerTopOfImage() { + return getOwner().getAbsoluteTop() < dragElement.getAbsoluteTop(); + } + + /* (non-Javadoc) + * @see com.vaadin.client.ui.VOverlay#hide() + */ + @Override + public void hide() { + if (snapTimer != null) { + snapTimer.cancel(); + } + + super.hide(); + } + + /** + * Snap drag image position. + * + * @param dragImage the drag image + * @param snap the snap + */ + private void snapDragImagePosition(final Element dragImage, final OAlignmentSnapInfo snap) { + int offsetTop = 0; + try { + String offsetTopStr = dragImage.getStyle().getMarginTop(); + offsetTop = Integer.parseInt(offsetTopStr.substring(0, offsetTopStr.length() - 2)); + } catch (NumberFormatException e) { + // nothing to do + } + dragImage.getStyle().setTop(dragImage.getAbsoluteTop() - offsetTop - snap.getY(), Unit.PX); + + int offsetLeft = 0; + try { + String offsetLeftStr = dragImage.getStyle().getMarginLeft(); + offsetLeft = Integer.parseInt(offsetLeftStr.substring(0, offsetLeftStr.length() - 2)); + } catch (NumberFormatException e) { + // nothing to do + } + dragImage.getStyle().setLeft(dragImage.getAbsoluteLeft() - offsetLeft - snap.getX(), Unit.PX); + } + + /** + * Snap resize image position. + * + * @param dragImage the drag image + * @param delta the delta + */ + private void snapResizeImagePosition(final Element dragImage, final OAlignmentSnapInfo delta) { + + OResizeLocation location = OAlignmentManager.get().getResizeLocation(); + int oldWidth = dragImage.getOffsetWidth(); + int oldHeigth = dragImage.getOffsetHeight(); + + int newWidth = 0; + int newHeight = 0; + + switch (location) { + case TOP: + case TOP_LEFT: + case LEFT: + newHeight = oldHeigth + delta.getY(); + newWidth = oldWidth + delta.getX(); + break; + case BOTTOM: + case BOTTOM_RIGHT: + case RIGHT: + newHeight = oldHeigth - delta.getY(); + newWidth = oldWidth - delta.getX(); + break; + case TOP_RIGHT: + newHeight = oldHeigth + delta.getY(); + newWidth = oldWidth - delta.getX(); + break; + case BOTTOM_LEFT: + newHeight = oldHeigth - delta.getY(); + newWidth = oldWidth + delta.getX(); + break; + } + + dragImage.getStyle().setWidth(newWidth, Unit.PX); + dragImage.getStyle().setHeight(newHeight, Unit.PX); + } + + /** + * Indicates where the alignments should be painted. + */ + public enum AlignmentsLocation { + + /** The top edge toleft. */ + TOP_EDGE_TOLEFT, + /** The top edge toright. */ + TOP_EDGE_TORIGHT, + /** The left edge totop. */ + LEFT_EDGE_TOTOP, + /** The left edge tobottom. */ + LEFT_EDGE_TOBOTTOM, + /** The bottom edge toleft. */ + BOTTOM_EDGE_TOLEFT, + /** The bottom edge toright. */ + BOTTOM_EDGE_TORIGHT, + /** The right edge totop. */ + RIGHT_EDGE_TOTOP, + /** The right edge tobottom. */ + RIGHT_EDGE_TOBOTTOM + } +}
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAlignmentSnapInfo.java b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAlignmentSnapInfo.java new file mode 100644 index 0000000..3f8668e --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OAlignmentSnapInfo.java
@@ -0,0 +1,89 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.absolutelayout.client; + +// TODO: Auto-generated Javadoc +/** + * Defines the x and y pixel to the next snapping position. Location defines the + * type of resizing operation done. + */ +public class OAlignmentSnapInfo { + + /** The x. */ + private final int x; + + /** The y. */ + private final int y; + + /** The location. */ + private final OResizeLocation location; + + /** + * Instantiates a new o alignment snap info. + * + * @param x the x + * @param y the y + */ + public OAlignmentSnapInfo(int x, int y) { + super(); + this.x = x; + this.y = y; + this.location = null; + } + + /** + * Instantiates a new o alignment snap info. + * + * @param x the x + * @param y the y + * @param location the location + */ + public OAlignmentSnapInfo(int x, int y, OResizeLocation location) { + super(); + this.x = x; + this.y = y; + this.location = location; + } + + /** + * X value is delta from dragElement - absoluteLayout#child. A negative + * value means, that the dragged element is more left (left is smaller) then + * the child from absolute layout. + * + * @return the x + */ + public int getX() { + return x; + } + + /** + * Y value is delta from dragElement - absoluteLayout#child. A negative + * value means, that the dragged element is more top (top is smaller) then + * the child from absolute layout. + * + * @return the y + */ + public int getY() { + return y; + } + + /** + * Gets the location. + * + * @return the location + */ + public OResizeLocation getLocation() { + return location; + } + +}
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OChildResizeListener.java b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OChildResizeListener.java new file mode 100644 index 0000000..0e86dd6 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OChildResizeListener.java
@@ -0,0 +1,37 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.absolutelayout.client; + +import com.vaadin.shared.Connector; + +// TODO: Auto-generated Javadoc +/** + * Listener that is notified, if the resize operation proceeded. + * + * see OChildResizeEvent + */ +public interface OChildResizeListener { + + /** + * Is called if the resize operation proceeded. + * + * @param child the child + * @param newWidth the new width + * @param newHeight the new height + * @param oldWidth the old width + * @param oldHeight the old height + * @param location the location + */ + void resized(Connector child, int newWidth, int newHeight, int oldWidth, int oldHeight, OResizeLocation location); + +}
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OResizeLocation.java b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OResizeLocation.java new file mode 100644 index 0000000..49b0c44 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/client/OResizeLocation.java
@@ -0,0 +1,92 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.absolutelayout.client; + +// TODO: Auto-generated Javadoc +/** + * The Enum OResizeLocation. + */ +public enum OResizeLocation { + + /** The top left. */ + TOP_LEFT, + /** The top. */ + TOP, + /** The top right. */ + TOP_RIGHT, + /** The right. */ + RIGHT, + /** The bottom right. */ + BOTTOM_RIGHT, + /** The bottom. */ + BOTTOM, + /** The bottom left. */ + BOTTOM_LEFT, + /** The left. */ + LEFT; + + /** + * Checks if is top. + * + * @return true, if is top + */ + public boolean isTop(){ + return this == OResizeLocation.TOP_LEFT || this == OResizeLocation.TOP || this == OResizeLocation.TOP_RIGHT; + } + + /** + * Checks if is bottom. + * + * @return true, if is bottom + */ + public boolean isBottom(){ + return this == OResizeLocation.BOTTOM_LEFT || this == OResizeLocation.BOTTOM || this == OResizeLocation.BOTTOM_RIGHT; + } + + /** + * Checks if is left. + * + * @return true, if is left + */ + public boolean isLeft(){ + return this == OResizeLocation.TOP_LEFT || this == OResizeLocation.LEFT || this == OResizeLocation.BOTTOM_LEFT; + } + + /** + * Checks if is right. + * + * @return true, if is right + */ + public boolean isRight(){ + return this == OResizeLocation.TOP_RIGHT || this == OResizeLocation.RIGHT || this == OResizeLocation.BOTTOM_RIGHT; + } + + /** + * Checks if is y. + * + * @return true, if is y + */ + public boolean isY(){ + return isTop() || isBottom(); + } + + /** + * Checks if is x. + * + * @return true, if is x + */ + public boolean isX(){ + return isLeft() || isRight(); + } +} +
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/public/oabsolutelayout/styles.css b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/public/oabsolutelayout/styles.css new file mode 100644 index 0000000..5fd286f --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/src/org/eclipse/osbp/vaadin/addons/absolutelayout/public/oabsolutelayout/styles.css
@@ -0,0 +1,66 @@ + + .v-absolutelayout .o-alignmentLine { + // the color of the alignment line + background-color: green; + } + + .o-absolutelayout{ + // the amount of pixels, a snap to alignment lines is done + snap: 7; + } + + .v-absolutelayout .v-absolutelayout-wrapper-o-resizable .resizing { + overflow: visible; + } + .v-absolutelayout .v-absolutelayout-wrapper-o-resizable .drag-overlay { + border: 1px solid red; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + position: absolute; + z-index: 10; + } + .v-absolutelayout .v-absolutelayout-wrapper-o-resizable .tlc, + .v-absolutelayout .v-absolutelayout-wrapper-o-resizable .te, + .v-absolutelayout .v-absolutelayout-wrapper-o-resizable .trc, + .v-absolutelayout .v-absolutelayout-wrapper-o-resizable .re, + .v-absolutelayout .v-absolutelayout-wrapper-o-resizable .brc, + .v-absolutelayout .v-absolutelayout-wrapper-o-resizable .be, + .v-absolutelayout .v-absolutelayout-wrapper-o-resizable .blc, + .v-absolutelayout .v-absolutelayout-wrapper-o-resizable .le { + background-color: transparent; + display: block; + overflow: visible; + position: absolute; + } + .v-absolutelayout .v-absolutelayout-wrapper-o-resizable .div.unused { + cursor: default !important; + } + .v-absolutelayout .v-absolutelayout-wrapper-o-resizable .te { + cursor: ns-resize; + top: 0; + left: 0; + right: 0; + z-index: 6; + } + .v-absolutelayout .v-absolutelayout-wrapper-o-resizable .re { + cursor: ew-resize; + top: 0; + right: 0; + bottom: 0; + z-index: 5; + } + .v-absolutelayout .v-absolutelayout-wrapper-o-resizable .le { + cursor: ew-resize; + top: 0; + bottom: 0; + left: 0; + z-index: 5; + } + .v-absolutelayout .v-absolutelayout-wrapper-o-resizable .be { + cursor: ns-resize; + right: 0; + bottom: 0; + left: 0; + z-index: 6; + }
diff --git a/org.eclipse.osbp.vaadin.addons.absolutelayout/test/org/eclipse/osbp/vaadin/addons/absolutelayout/AbsoluteLayoutTest.java b/org.eclipse.osbp.vaadin.addons.absolutelayout/test/org/eclipse/osbp/vaadin/addons/absolutelayout/AbsoluteLayoutTest.java new file mode 100644 index 0000000..602d9d2 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.absolutelayout/test/org/eclipse/osbp/vaadin/addons/absolutelayout/AbsoluteLayoutTest.java
@@ -0,0 +1,99 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ + package org.eclipse.osbp.vaadin.addons.absolutelayout; + +import com.vaadin.testbench.ScreenshotOnFailureRule; +import com.vaadin.testbench.TestBenchTestCase; +import com.vaadin.testbench.elements.ButtonElement; +import com.vaadin.testbench.elements.LabelElement; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.openqa.selenium.firefox.FirefoxDriver; + +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; + +/** + * This class contains JUnit tests, which are run using Vaadin TestBench 4. + * + * To run this, first get an evaluation license from + * https://vaadin.com/addon/vaadin-testbench and follow the instructions at + * https://vaadin.com/directory/help/installing-cval-license to install it. + * + * Once the license is installed, you can run this class as a JUnit test. + */ +public class AbsoluteLayoutTest extends TestBenchTestCase { + @Rule + public ScreenshotOnFailureRule screenshotOnFailureRule = + new ScreenshotOnFailureRule(this, true); + + @Before + public void setUp() throws Exception { + setDriver(new FirefoxDriver()); // Firefox + + // To use Chrome, first install chromedriver.exe from + // http://chromedriver.storage.googleapis.com/index.html + // on your system path (e.g. C:\Windows\System32\) + // setDriver(new ChromeDriver()); // Chrome + + // To use Internet Explorer, first install iedriverserver.exe from + // http://selenium-release.storage.googleapis.com/index.html?path=2.43/ + // on your system path (e.g. C:\Windows\System32\) + // setDriver(new InternetExplorerDriver()); // IE + + // To test headlessly (without a browser), first install phantomjs.exe + // from http://phantomjs.org/download.html on your system path + // (e.g. C:\Windows\System32\) + // setDriver(new PhantomJSDriver()); // PhantomJS headless browser + } + + /** + * Opens the URL where the application is deployed. + */ + private void openTestUrl() { + getDriver().get("http://localhost:8080/org.eclipse.osbp.vaadin.addons.absolutelayout"); + } + + @Test + public void testClickButton() throws Exception { + openTestUrl(); + + // At first there should be no labels + assertFalse($(LabelElement.class).exists()); + + // Click the button + ButtonElement clickMeButton = $(ButtonElement.class). + caption("Click Me").first(); + clickMeButton.click(); + + // There should now be one label + assertEquals(1, $(LabelElement.class).all().size()); + // ... with the specified text + assertEquals("Thank you for clicking", + $(LabelElement.class).first().getText()); + + // Click the button again + clickMeButton.click(); + + // There should now be two labels + List<LabelElement> allLabels = $(LabelElement.class).all(); + assertEquals(2, allLabels.size()); + // ... and the last label should have the correct text + LabelElement lastLabel = allLabels.get(1); + assertEquals("Thank you for clicking", lastLabel.getText()); + } +} \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/.designer/designer-theme.css b/org.eclipse.osbp.vaadin.addons.designer.overlay/.designer/designer-theme.css new file mode 100644 index 0000000..3aa7ca1 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/.designer/designer-theme.css
@@ -0,0 +1,12934 @@ +/** + * Checks if a list contains a certain value. + * + * @param {list} $list - the list to check + * @param {value} $var - the value to search for + * @param {bool} $recursive (false) - should any contained lists be checked for the value + * + * @return {bool} true if the value is found from the list, false otherwise + * + * @group lists + */ + +/** + * Cross-browser opacity. + * + * @param {number} $value - opacity value from 0 to 1 + * @param {bool} $important (false) - should the property value be declared with !important + * + * @group util + */ + +@-webkit-keyframes valo-animate-in-fade { + 0% { + opacity: 0; + } + } + +@-moz-keyframes valo-animate-in-fade { + 0% { + opacity: 0; + } + } + +@keyframes valo-animate-in-fade { + 0% { + opacity: 0; + } + } + +@-webkit-keyframes valo-animate-out-fade { + 100% { + opacity: 0; + } + } + +@-moz-keyframes valo-animate-out-fade { + 100% { + opacity: 0; + } + } + +@keyframes valo-animate-out-fade { + 100% { + opacity: 0; + } + } + +@-webkit-keyframes valo-animate-in-slide-down { + 0% { + -webkit-transform: translateY(-100%); + } + } + +@-moz-keyframes valo-animate-in-slide-down { + 0% { + -moz-transform: translateY(-100%); + } + } + +@keyframes valo-animate-in-slide-down { + 0% { + -webkit-transform: translateY(-100%); + -moz-transform: translateY(-100%); + -ms-transform: translateY(-100%); + -o-transform: translateY(-100%); + transform: translateY(-100%); + } + } + +@-webkit-keyframes valo-animate-in-slide-up { + 0% { + -webkit-transform: translateY(100%); + } + } + +@-moz-keyframes valo-animate-in-slide-up { + 0% { + -moz-transform: translateY(100%); + } + } + +@keyframes valo-animate-in-slide-up { + 0% { + -webkit-transform: translateY(100%); + -moz-transform: translateY(100%); + -ms-transform: translateY(100%); + -o-transform: translateY(100%); + transform: translateY(100%); + } + } + +@-webkit-keyframes valo-animate-in-slide-left { + 0% { + -webkit-transform: translateX(100%); + } + } + +@-moz-keyframes valo-animate-in-slide-left { + 0% { + -moz-transform: translateX(100%); + } + } + +@keyframes valo-animate-in-slide-left { + 0% { + -webkit-transform: translateX(100%); + -moz-transform: translateX(100%); + -ms-transform: translateX(100%); + -o-transform: translateX(100%); + transform: translateX(100%); + } + } + +@-webkit-keyframes valo-animate-in-slide-right { + 0% { + -webkit-transform: translateX(-100%); + } + } + +@-moz-keyframes valo-animate-in-slide-right { + 0% { + -moz-transform: translateX(-100%); + } + } + +@keyframes valo-animate-in-slide-right { + 0% { + -webkit-transform: translateX(-100%); + -moz-transform: translateX(-100%); + -ms-transform: translateX(-100%); + -o-transform: translateX(-100%); + transform: translateX(-100%); + } + } + +@-webkit-keyframes valo-animate-out-slide-down { + 100% { + -webkit-transform: translateY(100%); + } + } + +@-moz-keyframes valo-animate-out-slide-down { + 100% { + -moz-transform: translateY(100%); + } + } + +@keyframes valo-animate-out-slide-down { + 100% { + -webkit-transform: translateY(100%); + -moz-transform: translateY(100%); + -ms-transform: translateY(100%); + -o-transform: translateY(100%); + transform: translateY(100%); + } + } + +@-webkit-keyframes valo-animate-out-slide-up { + 100% { + -webkit-transform: translateY(-100%); + } + } + +@-moz-keyframes valo-animate-out-slide-up { + 100% { + -moz-transform: translateY(-100%); + } + } + +@keyframes valo-animate-out-slide-up { + 100% { + -webkit-transform: translateY(-100%); + -moz-transform: translateY(-100%); + -ms-transform: translateY(-100%); + -o-transform: translateY(-100%); + transform: translateY(-100%); + } + } + +@-webkit-keyframes valo-animate-out-slide-left { + 100% { + -webkit-transform: translateX(-100%); + } + } + +@-moz-keyframes valo-animate-out-slide-left { + 100% { + -moz-transform: translateX(-100%); + } + } + +@keyframes valo-animate-out-slide-left { + 100% { + -webkit-transform: translateX(-100%); + -moz-transform: translateX(-100%); + -ms-transform: translateX(-100%); + -o-transform: translateX(-100%); + transform: translateX(-100%); + } + } + +@-webkit-keyframes valo-animate-out-slide-right { + 100% { + -webkit-transform: translateX(100%); + } + } + +@-moz-keyframes valo-animate-out-slide-right { + 100% { + -moz-transform: translateX(100%); + } + } + +@keyframes valo-animate-out-slide-right { + 100% { + -webkit-transform: translateX(100%); + -moz-transform: translateX(100%); + -ms-transform: translateX(100%); + -o-transform: translateX(100%); + transform: translateX(100%); + } + } + +@-webkit-keyframes valo-overlay-animate-in { + 0% { + -webkit-transform: translatey(-4px); + opacity: 0; + } + } + +@-moz-keyframes valo-overlay-animate-in { + 0% { + -moz-transform: translatey(-4px); + opacity: 0; + } + } + +@keyframes valo-overlay-animate-in { + 0% { + -webkit-transform: translatey(-4px); + -moz-transform: translatey(-4px); + -ms-transform: translatey(-4px); + -o-transform: translatey(-4px); + transform: translatey(-4px); + opacity: 0; + } + } + +@-webkit-keyframes valo-animate-out-slide-down-fade { + 100% { + opacity: 0; + -webkit-transform: translatey(30%); + } + } + +@-moz-keyframes valo-animate-out-slide-down-fade { + 100% { + opacity: 0; + -moz-transform: translatey(30%); + } + } + +@keyframes valo-animate-out-slide-down-fade { + 100% { + opacity: 0; + -webkit-transform: translatey(30%); + -moz-transform: translatey(30%); + -ms-transform: translatey(30%); + -o-transform: translatey(30%); + transform: translatey(30%); + } + } + +/** + * Outputs cross-browser Valo-specific linear gradient background-image declarations. + * + * @group style + * + * @param {color} $color ($v-background-color) - The base color for the gradient color stops + * @param {list} $gradient ($v-gradient) - Valo-specific gradient value. See the documentation for $v-gradient. + * @param {color} $fallback (null) - A fallback color for browser which do not support linear gradients (IE8 and IE9 in particular). If null, the base $color is used instead. + * @param {string} $direction (to bottom) - the direction of the linear gradient. The color stops are by default so that a lighter shade is at the start and a darker shade is at the end. + */ + +/** + * Computes a CSS border property value for the given base color. + * + * @group style + * + * @param {list} $border ($v-border) - CSS border value which can contain any of the color keywords + * @param {color} $color ($v-background-color) - the base color to which the color keywords are applied to + * @param {color} $context (null) - context/surrounding color where the border is expected to appear. The color of the final border is the darker of the two parameters passed to this function. + * @param {number} $strength (1) - adjustment for the border contrast + * + * @return {list} The input $border value with any color keyword replaced with the corresponding actual color + */ + +/** + * Ouput selectors and properties to vertically center elements inside their parent. + * + * @param {string} $to-align (()) - The selector to match the elements which you wish to align vertically. The targeted elements should be inline or inline-block elements. + * @param {string} $align (middle) - The vertical-align value, e.g. top, middle, bottom + * @param {string} $pseudo-element (after) - Which pseudo element to use for the vertical align guide + * + * @group util + */ + +@font-face { + font-family: ThemeIcons; + font-weight: normal; + font-style: normal; + src: url(../valo/util/bourbon/css3/../../../../base/fonts/themeicons-webfont.eot); + src: url(../valo/util/bourbon/css3/../../../../base/fonts/themeicons-webfont.eot?#iefix) format("embedded-opentype"), url(../valo/util/bourbon/css3/../../../../base/fonts/themeicons-webfont.woff) format("woff"), url(../valo/util/bourbon/css3/../../../../base/fonts/themeicons-webfont.ttf) format("truetype"), url(../valo/util/bourbon/css3/../../../../base/fonts/themeicons-webfont.svg#ThemeIcons) format("svg"); +} + +.ThemeIcons { + font-family: ThemeIcons; + font-style: normal; + font-weight: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + display: inline-block; + text-align: center; +} + +@font-face { + font-family: FontAwesome; + font-weight: normal; + font-style: normal; + src: url(../valo/util/bourbon/css3/../../../../base/fonts/fontawesome-webfont.eot); + src: url(../valo/util/bourbon/css3/../../../../base/fonts/fontawesome-webfont.eot?#iefix) format("embedded-opentype"), url(../valo/util/bourbon/css3/../../../../base/fonts/fontawesome-webfont.woff) format("woff"), url(../valo/util/bourbon/css3/../../../../base/fonts/fontawesome-webfont.ttf) format("truetype"), url(../valo/util/bourbon/css3/../../../../base/fonts/fontawesome-webfont.svg#FontAwesome) format("svg"); +} + +.FontAwesome { + font-family: FontAwesome; + font-style: normal; + font-weight: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + display: inline-block; + text-align: center; +} + +@font-face { + font-family: "Open Sans"; + src: url(../valo/fonts/open-sans/OpenSans-Light-webfont.eot); + src: url(../valo/fonts/open-sans/OpenSans-Light-webfont.eot?#iefix) format("embedded-opentype"), url(../valo/fonts/open-sans/OpenSans-Light-webfont.woff) format("woff"), url(../valo/fonts/open-sans/OpenSans-Light-webfont.ttf) format("truetype"); + font-weight: 300; + font-style: normal; +} + +@font-face { + font-family: "Open Sans"; + src: url(../valo/fonts/open-sans/OpenSans-Regular-webfont.eot); + src: url(../valo/fonts/open-sans/OpenSans-Regular-webfont.eot?#iefix) format("embedded-opentype"), url(../valo/fonts/open-sans/OpenSans-Regular-webfont.woff) format("woff"), url(../valo/fonts/open-sans/OpenSans-Regular-webfont.ttf) format("truetype"); + font-weight: 400; + font-style: normal; +} + +@font-face { + font-family: "Open Sans"; + src: url(../valo/fonts/open-sans/OpenSans-Semibold-webfont.eot); + src: url(../valo/fonts/open-sans/OpenSans-Semibold-webfont.eot?#iefix) format("embedded-opentype"), url(../valo/fonts/open-sans/OpenSans-Semibold-webfont.woff) format("woff"), url(../valo/fonts/open-sans/OpenSans-Semibold-webfont.ttf) format("truetype"); + font-weight: 600; + font-style: normal; +} + +@-webkit-keyframes v-rotate-360 { + to { + -webkit-transform: rotate(360deg); + } + } + +@-moz-keyframes v-rotate-360 { + to { + -moz-transform: rotate(360deg); + } + } + +@-o-keyframes v-rotate-360 { + to { + -o-transform: rotate(360deg); + } + } + +@keyframes v-rotate-360 { + to { + transform: rotate(360deg); + } + } + +@-webkit-keyframes v-progress-start { + 0% { + width: 0%; + } + 100% { + width: 50%; + } + } + +@-moz-keyframes v-progress-start { + 0% { + width: 0%; + } + 100% { + width: 50%; + } + } + +@keyframes v-progress-start { + 0% { + width: 0%; + } + 100% { + width: 50%; + } + } + +@-webkit-keyframes v-progress-delay { + 0% { + width: 50%; + } + 100% { + width: 90%; + } + } + +@-moz-keyframes v-progress-delay { + 0% { + width: 50%; + } + 100% { + width: 90%; + } + } + +@keyframes v-progress-delay { + 0% { + width: 50%; + } + 100% { + width: 90%; + } + } + +@-webkit-keyframes v-progress-wait { + 0% { + width: 90%; + height: 4px; + } + 3% { + width: 91%; + height: 7px; + } + 100% { + width: 96%; + height: 7px; + } + } + +@-moz-keyframes v-progress-wait { + 0% { + width: 90%; + height: 4px; + } + 3% { + width: 91%; + height: 7px; + } + 100% { + width: 96%; + height: 7px; + } + } + +@keyframes v-progress-wait { + 0% { + width: 90%; + height: 4px; + } + 3% { + width: 91%; + height: 7px; + } + 100% { + width: 96%; + height: 7px; + } + } + +@-webkit-keyframes v-progress-wait-pulse { + 0% { + opacity: 1; + } + 50% { + opacity: 0.1; + } + 100% { + opacity: 1; + } + } + +@-moz-keyframes v-progress-wait-pulse { + 0% { + opacity: 1; + } + 50% { + opacity: 0.1; + } + 100% { + opacity: 1; + } + } + +@keyframes v-progress-wait-pulse { + 0% { + opacity: 1; + } + 50% { + opacity: 0.1; + } + 100% { + opacity: 1; + } + } + +/** + * Outputs the context menu selectors and styles, which is used by Table and Tree for instance. + * + * @requires {mixin} valo-selection-item-style + * @requires {mixin} valo-selection-item-selected-style + */ + +/** + * The background color for overlay elements. + * + * @type color + * @group overlay + */ + +.v-shadow, .v-shadow-window { + display: none; +} + +.v-ie8 .v-shadow, .v-ie8 .v-shadow-window { + display: block; +} + +.v-ie8 .v-shadow .top, .v-ie8 .v-shadow-window .top { + position: absolute; + top: -6px; + right: 10px; + bottom: 6px; + left: -10px; + background: black; + filter: alpha(opacity=5) progid:DXImageTransform.Microsoft.blur(pixelradius=10, makeShadow=false); +} + +.v-ie8 .v-shadow .top-left, .v-ie8 .v-shadow-window .top-left { + position: absolute; + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; + background: black; + filter: alpha(opacity=9) progid:DXImageTransform.Microsoft.blur(pixelradius=0, makeShadow=false); +} + +/** + * The backgound color for tooltips. + * + * @type color + * @group tooltip + */ + +/** + * + * + * @param {string} $primary-stylename (v-absolutelayout) - + * + * @group absolutelayout + */ + +/** + * Outputs the selectors and properties for the Accordion component. + * + * @param {string} $primary-stylename (v-accordion) - the primary style name for the selectors + * @param {bool} $include-additional-styles - should the mixin output all the different style variations of the component + * @group accordion + */ + +/** + * Outputs the selectors and properties for the Button component. + * + * @param {string} $primary-stylename (v-button) - the primary style name for the selectors + * @param {bool} $include-additional-styles - should the mixin output all the different style variations of the component + * + * @group button + */ + +/** + * A list of colors for custom event colors. Can be an empty list of you don't + * need any custom event colors. + * + * @example javascript + * // Java code + * // 'event' is an instance of EditableCalendarEvent + * event.setStyleName("color1"); // 1st color in the list + * event.setStyleName("color2"); // 2nd color in the list + * // etc. + * + * @group calendar + */ + +/** + * Outputs the selectors and properties for the CheckBox component. + * + * @param {string} $primary-stylename (v-checkbox) - the primary style name for the selectors + * @param {bool} $include-additional-styles - should the mixin output all the different style variations of the component + * + * @group checkbox + */ + +/** + * Outputs the global selectors and properties for the ColorPicker component - styles which are + * considered mandatory for the component to work properly. + * + * @param {string} $primary-stylename (v-colorpicker) - the primary style name for the selectors + * + * @group colorpicker + */ + +/** + * Outputs the selectors and properties for the ComboBox component. + * + * @param {string} $primary-stylename (v-filterselect) - the primary style name for the selectors + * @param {bool} $include-additional-styles - should the mixin output all the different style variations of the component + * + * @group combobox + */ + +/** + * The amount of spacing between different widgets in a component group. + * If null, a computed value is used ($v-border size * -1, or 1px if $v-border size is 0) + * + * @group csslayout + */ + +/** + * + * + * @param {string} $primary-stylename (v-customcomponent) - + * + * @group customcomponent + */ + +/** + * + * + * @param {string} $primary-stylename (v-customlayout) - + * + * @group customlayout + */ + +/** + * Outputs the selectors and properties for the DateField component. + * + * @param {string} $primary-stylename (v-datefield) - the primary style name for the selectors + * @param {bool} $include-additional-styles - should the mixin output all the different style variations of the component + * + * @group datefield + */ + +/** + * Outputs the styles and selectors for the DragAndDropWrapper component. + * + * @param {string} $primary-stylename (v-ddwrapper) - the primary style name for the selectors + * + * @group drag-n-drop + */ + +/** + * + * + * @param {string} $primary-stylename (v-form) - + * + * @group form + */ + +/** + * Outputs the selectors and properties for the FormLayout component. + * + * @param {string} $primary-stylename (v-formlayout) - the primary style name for the selectors + * @param {bool} $include-additional-styles - should the mixin output all the different style variations of the component + * + * @group formlayout + */ + +/** + * + * @group table + */ + +@-webkit-keyframes valo-grid-editor-footer-animate-in { + 0% { + margin-top: -37px; + } + } + +@-moz-keyframes valo-grid-editor-footer-animate-in { + 0% { + margin-top: -37px; + } + } + +@keyframes valo-grid-editor-footer-animate-in { + 0% { + margin-top: -37px; + } + } + +@-webkit-keyframes valo-grid-editor-footer-animate-in-alt { + 0% { + margin-bottom: -38px; + } + 100% { + margin-bottom: -1px; + } + } + +@-moz-keyframes valo-grid-editor-footer-animate-in-alt { + 0% { + margin-bottom: -38px; + } + 100% { + margin-bottom: -1px; + } + } + +@keyframes valo-grid-editor-footer-animate-in-alt { + 0% { + margin-bottom: -38px; + } + 100% { + margin-bottom: -1px; + } + } + +/** + * + * + * @param {string} $primary-stylename (v-gridlayout) - + * + * @group gridlayout + */ + +/** + * The font weight for headers. + * + * @group label + */ + +/** + * + * @group link + */ + +/** + * + * + * @param {string} $primary-stylename (v-loginform) - + * + * @group loginform + */ + +/** + * + * + * @param {string} $primary-stylename (v-menubar) - + * @param {bool} $include-additional-styles - + * + * @group menubar + */ + +/** + * + * + * @param {string} $primary-stylename (v-nativebutton) - + * + * @group nativebutton + */ + +/** + * + * + * @param {string} $primary-stylename (v-select) - + * + * @group nativeselect + */ + +/** + * + * @group notification + */ + +/** + * + * + * @param {string} $primary-stylename (v-select-optiongroup) - + * @param {bool} $include-additional-styles - + * + * @group optiongroup + */ + +/** + * + * + * + * @group orderedlayout + */ + +/** + * + * @group panel + */ + +@-webkit-keyframes v-popupview-animate-in { + 0% { + -webkit-transform: scale(0); + } + } + +@-moz-keyframes v-popupview-animate-in { + 0% { + -moz-transform: scale(0); + } + } + +@keyframes v-popupview-animate-in { + 0% { + -webkit-transform: scale(0); + -moz-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); + } + } + +/** + * + * @group progressbar + */ + +/** + * + * @group richtextarea + */ + +/** + * + * @group slider + */ + +/** + * + * + * @param {string} $primary-stylename (v-splitpanel) - + * @param {bool} $include-additional-styles - + * + * @group splitpanel + */ + +/** + * + * @group table + */ + +/** + * Should the tabsheet content changes be animated. + * + * @group tabsheet + */ + +/** + * The background color for text fields. + * @group textfield + */ + +/** + * Outputs the selectors and properties for the TextArea component. + * + * @param {string} $primary-stylename (v-textarea) - the primary style name for the selectors + * @param {bool} $include-additional-styles - should the mixin output all the different style variations of the component + * + * @group textarea + */ + +/** + * + * @group tree + */ + +/** + * + * + * @param {string} $primary-stylename (v-treetable) - + * + * @group treetable + */ + +/** + * + * + * @param {string} $primary-stylename (v-select-twincol) - + * + * @group twin-column-select + */ + +/** + * + * + * @param {string} $primary-stylename (v-upload) - + * + * @group upload + */ + +/** + * + */ + +/** + * @group window + */ + +@-webkit-keyframes valo-modal-window-indication { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + +@-moz-keyframes valo-modal-window-indication { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + +@keyframes valo-modal-window-indication { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + +@-webkit-keyframes valo-animate-out-scale-down-fade { + 100% { + -webkit-transform: scale(0.8); + opacity: 0; + } + } + +@-moz-keyframes valo-animate-out-scale-down-fade { + 100% { + -moz-transform: scale(0.8); + opacity: 0; + } + } + +@keyframes valo-animate-out-scale-down-fade { + 100% { + -webkit-transform: scale(0.8); + -moz-transform: scale(0.8); + -ms-transform: scale(0.8); + -o-transform: scale(0.8); + transform: scale(0.8); + opacity: 0; + } + } + +/** + * @group valo-menu + */ + +.v-vaadin-version:after { + content: "7.6.1"; +} + +.v-widget { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: inline-block; + vertical-align: top; + text-align: left; + white-space: normal; +} + +.v-generated-body { + overflow: hidden; + margin: 0; + padding: 0; + border: 0; +} + +.v-app { + height: 100%; + -webkit-tap-highlight-color: transparent; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.v-app input[type="text"], .v-app .v-slot > .v-caption, .v-app .v-gridlayout-slot > .v-caption, .v-app .v-has-caption > .v-caption, .v-app .v-formlayout-captioncell > .v-caption, .v-app .v-csslayout > .v-caption { + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; +} + +.v-app input::-ms-clear { + display: none; +} + +.v-ui { + position: relative; +} + +.v-ui.v-ui-embedded { + margin-top: -1px; + border-top: 1px solid transparent; +} + +.v-ui:focus { + outline: none; +} + +.v-overlay-container { + width: 0; + height: 0; +} + +.v-drag-element { + z-index: 60000; + position: absolute !important; + cursor: default; +} + +.v-clip { + overflow: hidden; +} + +.v-scrollable { + overflow: auto; +} + +.v-scrollable > .v-widget { + vertical-align: middle; + overflow: hidden; +} + +.v-ios.v-webkit .v-scrollable { + -webkit-overflow-scrolling: touch; +} + +.v-ios5.v-webkit .v-scrollable { + -webkit-overflow-scrolling: none; +} + +.v-webkit.v-ios .v-browserframe { + -webkit-overflow-scrolling: touch; + overflow: auto; +} + +.v-assistive-device-only { + position: absolute; + top: -2000px; + left: -2000px; + width: 10px; + overflow: hidden; +} + +.v-icon { + cursor: inherit; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.v-icon, .v-errorindicator, .v-required-field-indicator { + display: inline-block; + line-height: inherit; +} + +.v-caption { + display: inline-block; + white-space: nowrap; + line-height: 1.55; +} + +.v-captiontext { + display: inline-block; + line-height: inherit; +} + +div.v-layout.v-horizontal.v-widget { + white-space: nowrap; +} + +.v-layout.v-vertical > .v-expand, .v-layout.v-horizontal > .v-expand { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + height: 100%; +} + +.v-slot, .v-spacing { + display: inline-block; + white-space: nowrap; + vertical-align: top; +} + +.v-vertical > .v-slot:after { + display: inline-block; + clear: both; + width: 0; + height: 0; + overflow: hidden; +} + +.v-vertical > .v-slot, .v-vertical > .v-expand > .v-slot { + display: block; + clear: both; +} + +.v-horizontal > .v-slot, .v-horizontal > .v-expand > .v-slot { + height: 100%; +} + +.v-horizontal > .v-expand > .v-slot { + position: relative; +} + +.v-vertical > .v-spacing, .v-vertical > .v-expand > .v-spacing { + width: 0 !important; + display: block; + clear: both; +} + +.v-horizontal > .v-spacing, .v-horizontal > .v-expand > .v-spacing { + height: 0 !important; +} + +.v-align-middle:before, .v-align-bottom:before, .v-expand > .v-align-middle:before, .v-expand > .v-align-bottom:before { + content: ""; + display: inline-block; + height: 100%; + vertical-align: middle; + width: 0; +} + +.v-align-middle, .v-align-bottom { + white-space: nowrap; +} + +.v-align-middle > .v-widget, .v-align-bottom > .v-widget { + display: inline-block; +} + +.v-align-middle, .v-align-middle > .v-widget { + vertical-align: middle; +} + +.v-align-bottom, .v-align-bottom > .v-widget { + vertical-align: bottom; +} + +.v-align-center { + text-align: center; +} + +.v-align-center > .v-widget { + margin-left: auto; + margin-right: auto; +} + +.v-align-right { + text-align: right; +} + +.v-align-right > .v-widget { + margin-left: auto; +} + +.v-has-caption, .v-has-caption > .v-caption { + display: inline-block; +} + +.v-caption-on-left, .v-caption-on-right { + white-space: nowrap; +} + +.v-caption-on-top > .v-caption, .v-caption-on-bottom > .v-caption { + display: block; +} + +.v-caption-on-left > .v-caption { + padding-right: 0.5em; +} + +.v-caption-on-left > .v-widget, .v-caption-on-right > .v-widget { + display: inline-block; +} + +.v-has-caption.v-has-width > .v-widget { + width: 100% !important; +} + +.v-has-caption.v-has-height > .v-widget { + height: 100% !important; +} + +.v-gridlayout { + position: relative; +} + +.v-gridlayout-slot { + position: absolute; + line-height: 1.55; +} + +.v-gridlayout-spacing-on { + overflow: hidden; +} + +.v-gridlayout-spacing, .v-gridlayout-spacing-off { + padding-left: 0; + padding-top: 0; +} + +.v-gridlayout-spacing-off { + overflow: hidden; +} + +.v-calendar-month-day-scrollable { + overflow-y: scroll; +} + +.v-calendar-week-wrapper { + position: relative; + overflow: hidden; +} + +.v-calendar-current-time { + position: absolute; + left: 0; + width: 100%; + height: 1px; + background: red; + z-index: 2; +} + +.v-calendar-event-resizetop, .v-calendar-event-resizebottom { + position: absolute; + height: 5%; + min-height: 3px; + width: 100%; + z-index: 1; +} + +.v-calendar-event-resizetop { + cursor: row-resize; + top: 0; +} + +.v-calendar-event-resizebottom { + cursor: row-resize; + bottom: 0; +} + +.v-calendar-header-month td:first-child { + padding-left: 20px; +} + +.v-calendar-month-sizedheight .v-calendar-month-day { + height: 100px; +} + +.v-calendar-month-sizedwidth .v-calendar-month-day { + width: 100px; +} + +.v-calendar-header-month-Hsized .v-calendar-header-day { + width: 101px; +} + +.v-calendar-header-month-Hsized td:first-child { + padding-left: 21px; +} + +.v-calendar-header-day-Hsized { + width: 200px; +} + +.v-calendar-week-numbers-Vsized .v-calendar-week-number { + height: 100px; + line-height: 100px; +} + +.v-calendar-week-wrapper-Vsized { + height: 400px; + overflow-x: hidden !important; +} + +.v-calendar-times-Vsized .v-calendar-time { + height: 38px; +} + +.v-calendar-times-Hsized .v-calendar-time { + width: 42px; +} + +.v-calendar-day-times-Vsized .v-datecellslot, .v-calendar-day-times-Vsized .v-datecellslot-even { + height: 18px; +} + +.v-calendar-day-times-Hsized, .v-calendar-day-times-Hsized .v-datecellslot, .v-calendar-day-times-Hsized .v-datecellslot-even { + width: 200px; +} + +.v-colorpicker-popup.v-window { + min-width: 220px !important; +} + +.v-colorpicker-gradient-container { + overflow: visible !important; +} + +.v-colorpicker-gradient-clicklayer { + opacity: 0; + filter: alpha(opacity=0) ; +} + +.rgb-gradient .v-colorpicker-gradient-background { + background: url(../valo/components/img/colorpicker/gradient2.png); +} + +.hsv-gradient .v-colorpicker-gradient-foreground { + background: url(../valo/components/img/colorpicker/gradient.png); +} + +.v-colorpicker-gradient-higherbox:before { + content: ""; + width: 11px; + height: 11px; + border-radius: 7px; + border: 1px solid #fff; + -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3), inset 0 0 0 1px rgba(0, 0, 0, 0.3); + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3), inset 0 0 0 1px rgba(0, 0, 0, 0.3); + position: absolute; + bottom: -6px; + left: -6px; +} + +.v-colorpicker-popup .v-slider.v-slider-red:before { + background-color: red; +} + +.v-colorpicker-popup .v-slider.v-slider-green:before { + background-color: green; +} + +.v-colorpicker-popup .v-slider.v-slider-blue:before { + background-color: blue; +} + +.v-colorpicker-popup .v-slider.hue-slider:before { + background: url(../valo/components/img/colorpicker/slider_hue_bg.png); +} + +.v-colorpicker-popup input.v-textfield-dark { + color: #fff; +} + +.v-colorpicker-popup input.v-textfield-light { + color: #000; +} + +.v-colorpicker-grid { + height: 319px; +} + +.v-colorpicker-popup .colorselect td { + line-height: 15px; +} + +.v-table-header table, .v-table-footer table, .v-table-table { + border-spacing: 0; + border-collapse: separate; + margin: 0; + padding: 0; + border: 0; + line-height: 1.55; +} + +.v-table-resizer, .v-table-sort-indicator { + float: right; +} + +.v-table-caption-container-align-center { + text-align: center; +} + +.v-table-caption-container-align-right { + text-align: right; +} + +.v-table-header td, .v-table-footer td, .v-table-cell-content { + padding: 0; +} + +.v-table-sort-indicator { + width: 0; +} + +.v-tabsheet-hidetabs > .v-tabsheet-tabcontainer, .v-tabsheet-spacertd, .v-disabled .v-tabsheet-scroller, .v-tabsheet .v-disabled .v-tabsheet-caption-close { + display: none; +} + +.v-tabsheet { + overflow: visible !important; + position: relative; +} + +.v-tabsheet-tabcontainer table, .v-tabsheet-tabcontainer tbody, .v-tabsheet-tabcontainer tr { + display: inline-block; + border-spacing: 0; + border-collapse: collapse; + vertical-align: top; +} + +.v-tabsheet-tabcontainer td { + display: inline-block; + padding: 0; +} + +.v-tabsheet-tabs { + white-space: nowrap; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.v-tabsheet-content { + position: relative; +} + +.v-tabsheet-content > div > .v-scrollable > .v-margin-top { + padding-top: 12px; +} + +.v-tabsheet-content > div > .v-scrollable > .v-margin-right { + padding-right: 12px; +} + +.v-tabsheet-content > div > .v-scrollable > .v-margin-bottom { + padding-bottom: 12px; +} + +.v-tabsheet-content > div > .v-scrollable > .v-margin-left { + padding-left: 12px; +} + +.v-splitpanel-vertical, .v-splitpanel-horizontal { + overflow: hidden; + white-space: nowrap; +} + +.v-splitpanel-hsplitter { + z-index: 100; + cursor: e-resize; + cursor: col-resize; +} + +.v-splitpanel-vsplitter { + z-index: 100; + cursor: s-resize; + cursor: row-resize; +} + +.v-splitpanel-hsplitter:after, .v-splitpanel-vsplitter:after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; +} + +.v-splitpanel-hsplitter div, .v-splitpanel-vsplitter div { + width: inherit; + height: inherit; + overflow: hidden; + position: relative; +} + +.v-splitpanel-hsplitter div:before, .v-splitpanel-vsplitter div:before { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; +} + +.v-disabled [class$="splitter"] div { + cursor: default; +} + +.v-disabled [class$="splitter"] div:before { + display: none; +} + +.v-splitpanel-horizontal > div > .v-splitpanel-second-container { + position: static !important; + display: inline-block; + vertical-align: top; +} + +.v-splitpanel-horizontal > div > .v-splitpanel-first-container { + display: inline-block; + vertical-align: top; +} + +.org_osbee_vaadin_addons_designer_overlay.v-app, .org_osbee_vaadin_addons_designer_overlay.v-app-loading { + font: 300 16px/1.55 "Open Sans", sans-serif; + color: #464646; + background-color: #fafafa; + cursor: default; +} + +.org_osbee_vaadin_addons_designer_overlay .v-app-loading { + width: 100%; + height: 100%; + background: #fafafa; +} + +.org_osbee_vaadin_addons_designer_overlay .v-app-loading:before { + content: ""; + position: fixed; + z-index: 100; + top: 45%; + left: 50%; + width: 28px; + height: 28px; + padding: 9px; + margin-top: -24px; + margin-left: -24px; + background: #fff url(../valo/shared/img/spinner.gif) no-repeat 50%; + border-radius: 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-loading-indicator { + position: fixed !important; + z-index: 99999; + left: 0; + right: auto; + top: 0; + width: 50%; + opacity: 1; + height: 4px; + background-color: #197de1; + pointer-events: none; + -webkit-transition: none; + -moz-transition: none; + transition: none; + -webkit-animation: v-progress-start 1000ms 200ms both; + -moz-animation: v-progress-start 1000ms 200ms both; + animation: v-progress-start 1000ms 200ms both; +} + +.org_osbee_vaadin_addons_designer_overlay .v-loading-indicator[style*="none"] { + display: block !important; + width: 100% !important; + opacity: 0; + -webkit-animation: none; + -moz-animation: none; + animation: none; + -webkit-transition: opacity 500ms 300ms, width 300ms; + -moz-transition: opacity 500ms 300ms, width 300ms; + transition: opacity 500ms 300ms, width 300ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-loading-indicator-delay { + width: 90%; + -webkit-animation: v-progress-delay 3.8s forwards; + -moz-animation: v-progress-delay 3.8s forwards; + animation: v-progress-delay 3.8s forwards; +} + +.v-ff .org_osbee_vaadin_addons_designer_overlay .v-loading-indicator-delay { + width: 50%; +} + +.org_osbee_vaadin_addons_designer_overlay .v-loading-indicator-wait { + width: 96%; + -webkit-animation: v-progress-wait 5s forwards, v-progress-wait-pulse 1s 4s infinite backwards; + -moz-animation: v-progress-wait 5s forwards, v-progress-wait-pulse 1s 4s infinite backwards; + animation: v-progress-wait 5s forwards, v-progress-wait-pulse 1s 4s infinite backwards; +} + +.v-ff .org_osbee_vaadin_addons_designer_overlay .v-loading-indicator-wait { + width: 90%; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-loading-indicator, .v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-loading-indicator-delay, .v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-loading-indicator-wait, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-loading-indicator, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-loading-indicator-delay, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-loading-indicator-wait { + width: 28px !important; + height: 28px; + padding: 9px; + background: #fff url(../valo/shared/img/spinner.gif) no-repeat 50%; + border-radius: 4px; + top: 9px; + right: 9px; + left: auto; + filter: alpha(opacity=50); +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-loading-indicator[style*="none"], .v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-loading-indicator-delay[style*="none"], .v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-loading-indicator-wait[style*="none"], .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-loading-indicator[style*="none"], .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-loading-indicator-delay[style*="none"], .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-loading-indicator-wait[style*="none"] { + display: none !important; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-loading-indicator-wait, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-loading-indicator-wait { + filter: alpha(opacity=100); +} + +.org_osbee_vaadin_addons_designer_overlay .v-scrollable:focus { + outline: none; +} + +.org_osbee_vaadin_addons_designer_overlay img.v-icon { + vertical-align: middle; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption { + font-size: 14px; + font-weight: 400; + padding-bottom: 0.3em; + padding-left: 1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-on-left .v-caption, .org_osbee_vaadin_addons_designer_overlay .v-caption-on-right .v-caption { + padding-top: 0; + padding-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-icon + .v-captiontext, .org_osbee_vaadin_addons_designer_overlay .v-icon + span { + margin-left: 7px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-icon + .v-captiontext:empty, .org_osbee_vaadin_addons_designer_overlay .v-icon + span:empty { + margin-left: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-errorindicator { + color: #ed473b; + font-weight: 600; + width: 19px; + text-align: center; +} + +.org_osbee_vaadin_addons_designer_overlay .v-errorindicator:before { + content: "!"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-required-field-indicator { + color: #ed473b; + padding: 0 0.2em; +} + +.org_osbee_vaadin_addons_designer_overlay select { + font: inherit; + font-weight: 400; + line-height: inherit; + padding: 5px; + margin: 0; + border-radius: 4px; + border: 1px solid #c5c5c5; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + color: #464646; +} + +.org_osbee_vaadin_addons_designer_overlay select:focus { + outline: none; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay button { + font: inherit; + font-weight: 400; + line-height: 1.55; +} + +.org_osbee_vaadin_addons_designer_overlay a { + cursor: pointer; + color: #197de1; + text-decoration: underline; + font-weight: inherit; + -webkit-transition: color 140ms; + -moz-transition: color 140ms; + transition: color 140ms; +} + +.org_osbee_vaadin_addons_designer_overlay a:hover { + color: #4396ea; +} + +.org_osbee_vaadin_addons_designer_overlay a.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-disabled { + cursor: default !important; +} + +.org_osbee_vaadin_addons_designer_overlay .v-drag-element { + background: #fafafa; + color: #464646; + -webkit-box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); + border-radius: 4px; + overflow: hidden; + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tooltip { + background-color: #323232; + background-color: rgba(50, 50, 50, 0.9); + -webkit-box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2); + color: white; + padding: 5px 9px; + border-radius: 3px; + max-width: 35em; + overflow: hidden !important; + font-size: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tooltip div[style*="width"] { + width: auto !important; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tooltip .v-errormessage { + background-color: white; + background-color: #fff; + color: #ed473b; + margin: -5px -9px; + padding: 5px 9px; + max-height: 10em; + overflow: auto; + font-weight: 400; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tooltip .v-errormessage h2:only-child { + font: inherit; + line-height: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tooltip .v-tooltip-text { + max-height: 10em; + overflow: auto; + margin-top: 10px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tooltip .v-errormessage[aria-hidden="true"] + .v-tooltip-text { + margin-top: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tooltip h1, .org_osbee_vaadin_addons_designer_overlay .v-tooltip h2, .org_osbee_vaadin_addons_designer_overlay .v-tooltip h3, .org_osbee_vaadin_addons_designer_overlay .v-tooltip h4 { + color: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-contextmenu { + padding: 4px 4px; + border-radius: 4px; + background-color: white; + color: #474747; + -webkit-box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.1), 0 3px 5px 0 rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(0, 0, 0, 0.09098); + box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.1), 0 3px 5px 0 rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(0, 0, 0, 0.09098); + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + padding: 4px 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-contextmenu[class*="animate-in"] { + -webkit-animation: valo-overlay-animate-in 120ms; + -moz-animation: valo-overlay-animate-in 120ms; + animation: valo-overlay-animate-in 120ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-contextmenu[class*="animate-out"] { + -webkit-animation: valo-animate-out-fade 120ms; + -moz-animation: valo-animate-out-fade 120ms; + animation: valo-animate-out-fade 120ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-contextmenu table { + border-spacing: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-contextmenu .gwt-MenuItem { + cursor: pointer; + line-height: 27px; + padding: 0 20px 0 10px; + border-radius: 3px; + font-weight: 400; + white-space: nowrap; + position: relative; + display: block; +} + +.org_osbee_vaadin_addons_designer_overlay .v-contextmenu .gwt-MenuItem:active:before { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background: #0957a6; + opacity: 0.15; + filter: alpha(opacity=15.0) ; + pointer-events: none; + border-radius: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-contextmenu .gwt-MenuItem .v-icon { + max-height: 27px; + margin-right: 5px; + min-width: 1em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-contextmenu .gwt-MenuItem-selected { + background-color: #197de1; + background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%); + color: #ecf2f8; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.05); +} + +.org_osbee_vaadin_addons_designer_overlay .v-reconnect-dialog { + color: white; + top: 12px; + right: 12px; + max-width: 100%; + border-radius: 0; + -webkit-box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.25); + padding: 12px 15px; + background-color: #444; + background-color: rgba(68, 68, 68, 0.9); + line-height: 22px; + text-align: center; +} + +.org_osbee_vaadin_addons_designer_overlay .v-reconnect-dialog .text { + display: inline-block; + padding-left: 10px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-reconnect-dialog .spinner { + height: 24px !important; + width: 24px !important; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + border: 2px solid rgba(25, 125, 225, 0.2); + border-top-color: #197de1; + border-right-color: #197de1; + border-radius: 100%; + -webkit-animation: v-rotate-360 500ms infinite linear; + -moz-animation: v-rotate-360 500ms infinite linear; + animation: v-rotate-360 500ms infinite linear; + pointer-events: none; + display: none; + vertical-align: middle; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-reconnect-dialog .spinner, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-reconnect-dialog .spinner { + border: none; + border-radius: 4px; + background: #fff url(../valo/shared/img/spinner.gif) no-repeat 50% 50%; + background-size: 80%; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-reconnect-dialog .spinner { + min-width: 30px; + min-height: 30px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-reconnect-dialog.active .spinner { + display: inline-block; +} + +.org_osbee_vaadin_addons_designer_overlay .v-absolutelayout-wrapper { + position: absolute; +} + +.org_osbee_vaadin_addons_designer_overlay .v-absolutelayout-margin, .org_osbee_vaadin_addons_designer_overlay .v-absolutelayout-canvas { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.org_osbee_vaadin_addons_designer_overlay .v-absolutelayout.v-has-height > div, .org_osbee_vaadin_addons_designer_overlay .v-absolutelayout.v-has-height .v-absolutelayout-margin { + height: 100%; +} + +.org_osbee_vaadin_addons_designer_overlay .v-absolutelayout.v-has-height > div, .org_osbee_vaadin_addons_designer_overlay .v-absolutelayout.v-has-width .v-absolutelayout-margin { + width: 100%; +} + +.org_osbee_vaadin_addons_designer_overlay .v-margin-top { + padding-top: 37px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-margin-right { + padding-right: 37px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-margin-bottom { + padding-bottom: 37px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-margin-left { + padding-left: 37px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-spacing { + width: 12px; + height: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-verticallayout-well, .org_osbee_vaadin_addons_designer_overlay .v-horizontallayout-well { + background: #f5f5f5; + color: #454545; + -webkit-box-shadow: 0 1px 0 0 rgba(255, 255, 255, 0.05), inset 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 0 0 rgba(255, 255, 255, 0.05), inset 0 2px 3px rgba(0, 0, 0, 0.05); + border-radius: 4px; + border: 1px solid #c5c5c5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-verticallayout-well > div > [class*="-caption"], .org_osbee_vaadin_addons_designer_overlay .v-horizontallayout-well > div > [class*="-caption"] { + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-verticallayout-well > .v-margin-top, .org_osbee_vaadin_addons_designer_overlay .v-horizontallayout-well > .v-margin-top { + padding-top: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-verticallayout-well > .v-margin-right, .org_osbee_vaadin_addons_designer_overlay .v-horizontallayout-well > .v-margin-right { + padding-right: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-verticallayout-well > .v-margin-bottom, .org_osbee_vaadin_addons_designer_overlay .v-horizontallayout-well > .v-margin-bottom { + padding-bottom: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-verticallayout-well > .v-margin-left, .org_osbee_vaadin_addons_designer_overlay .v-horizontallayout-well > .v-margin-left { + padding-left: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-verticallayout-card, .org_osbee_vaadin_addons_designer_overlay .v-horizontallayout-card { + background: white; + color: #474747; + border-radius: 4px; + border: 1px solid #d5d5d5; + -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: 0 2px 3px rgba(0, 0, 0, 0.05); +} + +.org_osbee_vaadin_addons_designer_overlay .v-verticallayout-card > .v-margin-top, .org_osbee_vaadin_addons_designer_overlay .v-horizontallayout-card > .v-margin-top { + padding-top: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-verticallayout-card > .v-margin-right, .org_osbee_vaadin_addons_designer_overlay .v-horizontallayout-card > .v-margin-right { + padding-right: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-verticallayout-card > .v-margin-bottom, .org_osbee_vaadin_addons_designer_overlay .v-horizontallayout-card > .v-margin-bottom { + padding-bottom: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-verticallayout-card > .v-margin-left, .org_osbee_vaadin_addons_designer_overlay .v-horizontallayout-card > .v-margin-left { + padding-left: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-horizontallayout-wrapping { + white-space: normal !important; +} + +.org_osbee_vaadin_addons_designer_overlay .v-horizontallayout-wrapping > .v-spacing + .v-slot, .org_osbee_vaadin_addons_designer_overlay .v-horizontallayout-wrapping > .v-slot:first-child { + margin-bottom: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-horizontallayout-wrapping > .v-slot:first-child:last-child { + margin-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button { + position: relative; + text-align: center; + white-space: nowrap; + outline: none; + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + cursor: pointer; + height: 37px; + padding: 0 16px; + color: #191919; + font-weight: 400; + + + border-radius: 4px; + border: 1px solid #c5c5c5; + border-top-color: #c5c5c5; + border-bottom-color: #bcbcbc; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + -webkit-box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); +} + +.org_osbee_vaadin_addons_designer_overlay .v-button:before { + content: ""; + display: inline-block; + width: 0; + height: 100%; + vertical-align: middle; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button > div { + vertical-align: middle; +} + +.v-sa .org_osbee_vaadin_addons_designer_overlay .v-button:before { + height: 110%; +} + +.v-ff .org_osbee_vaadin_addons_designer_overlay .v-button:before { + height: 107%; +} + +.v-ie .org_osbee_vaadin_addons_designer_overlay .v-button:before { + margin-top: 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button:after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + border-radius: inherit; + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button:focus:after { + -webkit-transition: none; + -moz-transition: none; + transition: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button.v-disabled:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button:after { + border: inherit; + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button:hover:after { + background-color: rgba(186, 186, 186, 0.1); +} + +.org_osbee_vaadin_addons_designer_overlay .v-button:focus:after { + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-button:active:after { + background-color: rgba(125, 125, 125, 0.2); +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-primary { + height: 37px; + padding: 0 16px; + color: #ecf2f8; + font-weight: 400; + + + border-radius: 4px; + border: 1px solid #1362b1; + border-top-color: #156ab3; + border-bottom-color: #1156a8; + background-color: #197de1; + background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%); + -webkit-box-shadow: inset 0 1px 0 #4d98e6, inset 0 -1px 0 #166bca, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 #4d98e6, inset 0 -1px 0 #166bca, 0 2px 3px rgba(0, 0, 0, 0.05); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.05); + padding: 0 19px; + font-weight: bold; + min-width: 81px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-primary:after { + border: inherit; + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-primary:hover:after { + background-color: rgba(90, 163, 237, 0.1); +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-primary:focus:after { + border: inherit; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-primary:active:after { + background-color: rgba(2, 62, 122, 0.2); +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-button-primary { + min-width: 43px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-friendly { + height: 37px; + padding: 0 16px; + color: #eaf4e9; + font-weight: 400; + + + border-radius: 4px; + border: 1px solid #227719; + border-top-color: #257d1a; + border-bottom-color: #1e6b15; + background-color: #2c9720; + background-image: -webkit-linear-gradient(top, #2f9f22 2%, #26881b 98%); + background-image: linear-gradient(to bottom,#2f9f22 2%, #26881b 98%); + -webkit-box-shadow: inset 0 1px 0 #46b33a, inset 0 -1px 0 #26811b, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 #46b33a, inset 0 -1px 0 #26811b, 0 2px 3px rgba(0, 0, 0, 0.05); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.05); +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-friendly:after { + border: inherit; + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-friendly:hover:after { + background-color: rgba(65, 211, 48, 0.1); +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-friendly:focus:after { + border: inherit; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-friendly:active:after { + background-color: rgba(14, 86, 6, 0.2); +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-danger { + height: 37px; + padding: 0 16px; + color: #f9f0ef; + font-weight: 400; + + + border-radius: 4px; + border: 1px solid #bb382e; + border-top-color: #bc3c31; + border-bottom-color: #b13028; + background-color: #ed473b; + background-image: -webkit-linear-gradient(top, #ee4c3f 2%, #e13e33 98%); + background-image: linear-gradient(to bottom,#ee4c3f 2%, #e13e33 98%); + -webkit-box-shadow: inset 0 1px 0 #ef786f, inset 0 -1px 0 #da3c31, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 #ef786f, inset 0 -1px 0 #da3c31, 0 2px 3px rgba(0, 0, 0, 0.05); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.05); +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-danger:after { + border: inherit; + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-danger:hover:after { + background-color: rgba(243, 137, 129, 0.1); +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-danger:focus:after { + border: inherit; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-danger:active:after { + background-color: rgba(146, 12, 2, 0.2); +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-borderless { + border: none; + -webkit-box-shadow: none; + box-shadow: none; + background: transparent; + color: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-borderless:hover:after { + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-borderless:active { + opacity: 0.7; + filter: alpha(opacity=70) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-borderless:active:after { + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-borderless-colored { + border: none; + -webkit-box-shadow: none; + box-shadow: none; + background: transparent; + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-borderless-colored:hover { + color: #4396ea; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-borderless-colored:hover:after { + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-borderless-colored:active { + opacity: 0.7; + filter: alpha(opacity=70) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-borderless-colored:active:after { + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-quiet { + visibility: hidden; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-quiet:focus, .org_osbee_vaadin_addons_designer_overlay .v-button-quiet:hover { + visibility: visible; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-quiet [class*="wrap"] { + visibility: visible; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-quiet [class*="caption"] { + display: inline-block; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-link { + border: none; + -webkit-box-shadow: none; + box-shadow: none; + background: transparent; + color: inherit; + cursor: pointer; + color: #197de1; + text-decoration: underline; + font-weight: inherit; + -webkit-transition: color 140ms; + -moz-transition: color 140ms; + transition: color 140ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-link:hover:after { + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-link:active { + opacity: 0.7; + filter: alpha(opacity=70) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-link:active:after { + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-link:hover { + color: #4396ea; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-link.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-tiny { + height: 28px; + padding: 0 13px; + + + font-size: 12px; + + border-radius: 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-tiny:after { + border: inherit; + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-small { + height: 31px; + padding: 0 14px; + + + font-size: 14px; + + border-radius: 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-small:after { + border: inherit; + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-large { + height: 44px; + padding: 0 19px; + + + font-size: 20px; + + border-radius: 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-large:after { + border: inherit; + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-huge { + height: 59px; + padding: 0 26px; + + + font-size: 26px; + + border-radius: 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-huge:after { + border: inherit; + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-icon-align-right [class*="wrap"] { + display: inline-block; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-icon-align-right .v-icon { + float: right; + margin-left: 13px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-icon-align-right .v-icon + span:not(:empty) { + margin-left: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-icon-align-top { + height: auto; + padding-top: 5px; + padding-bottom: 5px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-icon-align-top [class*="wrap"] { + display: inline-block; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-icon-align-top .v-icon { + display: block; + margin-left: auto; + margin-right: auto; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-icon-align-top .v-icon + span:not(:empty) { + margin-top: 7px; + margin-left: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-icon-only { + width: 37px; + padding: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-icon-only.v-button-tiny { + width: 28px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-icon-only.v-button-small { + width: 31px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-icon-only.v-button-large { + width: 44px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-icon-only.v-button-huge { + width: 59px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-icon-only .v-button-caption { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-checkbox { + position: relative; + line-height: 19px; + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay .v-checkbox.v-has-width label { + white-space: normal; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox { + padding-left: 25px; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox label { + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + cursor: pointer; + display: inline-block; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox > input { + position: absolute; + clip: rect(0, 0, 0, 0); + left: 0.2em; + top: 0.2em; + z-index: 0; + margin: 0; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox > input:focus ~ label:before { + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox > input ~ label:before, :root .org_osbee_vaadin_addons_designer_overlay .v-checkbox > input ~ label:after { + content: ""; + display: inline-block; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 19px; + height: 19px; + position: absolute; + top: 0; + left: 0; + border-radius: 4px; + font-size: 13px; + text-align: center; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox > input ~ label:before { + height: 18.5px; + padding: 0 9px; + color: #191919; + font-weight: 400; + + + border-radius: 4px; + border: 1px solid #c5c5c5; + border-top-color: #c5c5c5; + border-bottom-color: #bcbcbc; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + -webkit-box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); + padding: 0; + height: 19px; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox > input ~ label:after { + content: "\f00c"; + font-family: ThemeIcons; + color: transparent; + -webkit-transition: color 100ms; + -moz-transition: color 100ms; + transition: color 100ms; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox > input:active ~ label:after { + background-color: rgba(125, 125, 125, 0.2); +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox > input:checked ~ label:after { + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-checkbox > .v-icon, .org_osbee_vaadin_addons_designer_overlay .v-checkbox > label .v-icon { + margin: 0 6px 0 3px; + min-width: 1em; + cursor: pointer; +} + +.org_osbee_vaadin_addons_designer_overlay .v-checkbox.v-disabled > label, .org_osbee_vaadin_addons_designer_overlay .v-checkbox.v-disabled > .v-icon { + cursor: default; + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-checkbox.v-disabled > label > .v-icon { + cursor: default; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox.v-disabled > input:active ~ label:after { + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-checkbox.v-readonly > label, .org_osbee_vaadin_addons_designer_overlay .v-checkbox.v-readonly > .v-icon { + cursor: default; +} + +.org_osbee_vaadin_addons_designer_overlay .v-checkbox.v-readonly > label > .v-icon { + cursor: default; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox.v-readonly > input:active ~ label:after { + background: transparent; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox.v-readonly > input ~ label:after { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-checkbox-small { + position: relative; + line-height: 16px; + white-space: nowrap; + font-size: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-checkbox-small.v-has-width label { + white-space: normal; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-small { + padding-left: 21px; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-small label { + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + cursor: pointer; + display: inline-block; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-small > input { + position: absolute; + clip: rect(0, 0, 0, 0); + left: 0.2em; + top: 0.2em; + z-index: 0; + margin: 0; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-small > input:focus ~ label:before { + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-small > input ~ label:before, :root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-small > input ~ label:after { + content: ""; + display: inline-block; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 16px; + height: 16px; + position: absolute; + top: 0; + left: 0; + border-radius: 4px; + font-size: 11px; + text-align: center; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-small > input ~ label:before { + height: 15.5px; + padding: 0 7px; + color: #191919; + font-weight: 400; + + + border-radius: 4px; + border: 1px solid #c5c5c5; + border-top-color: #c5c5c5; + border-bottom-color: #bcbcbc; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + -webkit-box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); + padding: 0; + height: 16px; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-small > input ~ label:after { + content: "\f00c"; + font-family: ThemeIcons; + color: transparent; + -webkit-transition: color 100ms; + -moz-transition: color 100ms; + transition: color 100ms; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-small > input:active ~ label:after { + background-color: rgba(125, 125, 125, 0.2); +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-small > input:checked ~ label:after { + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-checkbox-small > .v-icon, .org_osbee_vaadin_addons_designer_overlay .v-checkbox-small > label .v-icon { + margin: 0 5px 0 3px; + min-width: 1em; + cursor: pointer; +} + +.org_osbee_vaadin_addons_designer_overlay .v-checkbox-small.v-disabled > label, .org_osbee_vaadin_addons_designer_overlay .v-checkbox-small.v-disabled > .v-icon { + cursor: default; + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-checkbox-small.v-disabled > label > .v-icon { + cursor: default; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-small.v-disabled > input:active ~ label:after { + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-checkbox-small.v-readonly > label, .org_osbee_vaadin_addons_designer_overlay .v-checkbox-small.v-readonly > .v-icon { + cursor: default; +} + +.org_osbee_vaadin_addons_designer_overlay .v-checkbox-small.v-readonly > label > .v-icon { + cursor: default; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-small.v-readonly > input:active ~ label:after { + background: transparent; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-small.v-readonly > input ~ label:after { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-checkbox-large { + position: relative; + line-height: 22px; + white-space: nowrap; + font-size: 20px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-checkbox-large.v-has-width label { + white-space: normal; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-large { + padding-left: 29px; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-large label { + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + cursor: pointer; + display: inline-block; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-large > input { + position: absolute; + clip: rect(0, 0, 0, 0); + left: 0.2em; + top: 0.2em; + z-index: 0; + margin: 0; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-large > input:focus ~ label:before { + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-large > input ~ label:before, :root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-large > input ~ label:after { + content: ""; + display: inline-block; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 22px; + height: 22px; + position: absolute; + top: 0; + left: 0; + border-radius: 4px; + font-size: 15px; + text-align: center; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-large > input ~ label:before { + height: 22px; + padding: 0 10px; + color: #191919; + font-weight: 400; + + + border-radius: 4px; + border: 1px solid #c5c5c5; + border-top-color: #c5c5c5; + border-bottom-color: #bcbcbc; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + -webkit-box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); + padding: 0; + height: 22px; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-large > input ~ label:after { + content: "\f00c"; + font-family: ThemeIcons; + color: transparent; + -webkit-transition: color 100ms; + -moz-transition: color 100ms; + transition: color 100ms; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-large > input:active ~ label:after { + background-color: rgba(125, 125, 125, 0.2); +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-large > input:checked ~ label:after { + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-checkbox-large > .v-icon, .org_osbee_vaadin_addons_designer_overlay .v-checkbox-large > label .v-icon { + margin: 0 7px 0 4px; + min-width: 1em; + cursor: pointer; +} + +.org_osbee_vaadin_addons_designer_overlay .v-checkbox-large.v-disabled > label, .org_osbee_vaadin_addons_designer_overlay .v-checkbox-large.v-disabled > .v-icon { + cursor: default; + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-checkbox-large.v-disabled > label > .v-icon { + cursor: default; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-large.v-disabled > input:active ~ label:after { + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-checkbox-large.v-readonly > label, .org_osbee_vaadin_addons_designer_overlay .v-checkbox-large.v-readonly > .v-icon { + cursor: default; +} + +.org_osbee_vaadin_addons_designer_overlay .v-checkbox-large.v-readonly > label > .v-icon { + cursor: default; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-large.v-readonly > input:active ~ label:after { + background: transparent; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-checkbox-large.v-readonly > input ~ label:after { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect { + position: relative; + width: 185px; + height: 37px; + border-radius: 4px; + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect [class*="input"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 37px; + border-radius: 4px; + padding: 4px 9px; + border: 1px solid #c5c5c5; + background: white; + color: #474747; + -webkit-box-shadow: inset 0 1px 0 #f7f7f7, 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 #f7f7f7, 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; + width: 100% !important; + height: 100%; + padding-right: 38px; + border-radius: inherit; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-filterselect [class*="input"], .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-filterselect [class*="input"] { + line-height: 37px; + padding-top: 0; + padding-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect [class*="input"].v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect [class*="input"]:focus { + outline: none; + -webkit-transition: none; + -moz-transition: none; + transition: none; + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 #f7f7f7, 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 #f7f7f7, 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect [class*="input"][class*="prompt"] { + color: #a3a3a3; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect .v-icon + [class*="input"] { + padding-left: 37px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect img.v-icon { + max-height: 37px; + margin-left: 9px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect span.v-icon { + color: #474747; + width: 37px; + line-height: 1; + padding-top: 0.12em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect[class*="prompt"] > [class*="input"] { + color: #a3a3a3; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect [class$="button"] { + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + cursor: pointer; + position: absolute; + width: 37px; + top: 1px; + right: 1px; + bottom: 1px; + border-left: 1px solid #e4e4e4; + color: #a3a3a3; + border-radius: 0 3px 3px 0; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-filterselect [class$="button"] { + background-color: white; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect [class$="button"]:before { + font-family: ThemeIcons; + content: "\f078"; + -webkit-transition: color 140ms; + -moz-transition: color 140ms; + transition: color 140ms; + position: absolute; + width: 37px; + text-align: center; + top: 50%; + line-height: 1; + margin-top: -0.47em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect [class$="button"]:hover:before { + color: #474747; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect [class$="button"]:active:after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + border-radius: inherit; + background-color: rgba(128, 128, 128, 0.2); +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect.v-disabled [class$="button"] { + cursor: default; + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect.v-disabled [class$="button"]:active:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect.v-readonly [class*="input"] { + background: #fafafa; + color: #464646; + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect.v-readonly [class*="input"]:focus { + box-shadow: none; + border-color: #c5c5c5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect.v-readonly [class$="button"] { + cursor: default; + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect.v-readonly [class$="button"]:active:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect .v-icon { + position: absolute; + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-error .v-filterselect-input { + border-color: #ed473b !important; + background: #fffbfb; + color: #6c2621; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-error .v-filterselect-button { + color: #ed473b; + border-color: #ed473b; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup { + margin-top: 5px !important; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup[class*="animate-in"] { + -webkit-animation: valo-overlay-animate-in 120ms; + -moz-animation: valo-overlay-animate-in 120ms; + animation: valo-overlay-animate-in 120ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup [class$="suggestmenu"] { + padding: 4px 4px; + border-radius: 4px; + background-color: white; + color: #474747; + -webkit-box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.1), 0 3px 5px 0 rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(0, 0, 0, 0.09098); + box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.1), 0 3px 5px 0 rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(0, 0, 0, 0.09098); + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + padding: 4px 4px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + position: relative; + z-index: 1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup [class$="suggestmenu"][style*="height"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup table, .org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup tbody, .org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup tr, .org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup td { + display: block; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup .gwt-MenuItem { + cursor: pointer; + line-height: 27px; + padding: 0 20px 0 10px; + border-radius: 3px; + font-weight: 400; + white-space: nowrap; + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup .gwt-MenuItem:active:before { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background: #0957a6; + opacity: 0.15; + filter: alpha(opacity=15.0) ; + pointer-events: none; + border-radius: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup .gwt-MenuItem .v-icon { + max-height: 27px; + margin-right: 5px; + min-width: 1em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup .gwt-MenuItem-selected { + background-color: #197de1; + background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%); + color: #ecf2f8; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.05); +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup [class$="status"] { + position: absolute; + right: 4px; + background: rgba(212, 212, 212, 0.9); + color: #3b3b3b; + border-radius: 0 0 4px 4px; + height: 23px; + bottom: -23px; + font-size: 12px; + line-height: 23px; + padding: 0 6px; + cursor: default; + pointer-events: none; + -webkit-animation: valo-animate-in-slide-down 200ms 80ms backwards; + -moz-animation: valo-animate-in-slide-down 200ms 80ms backwards; + animation: valo-animate-in-slide-down 200ms 80ms backwards; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup [class$="status"] > * { + color: #3b3b3b; + text-decoration: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup div[class*="page"] { + position: absolute; + z-index: 3; + right: 0; + opacity: 0.2; + filter: alpha(opacity=20) ; + cursor: pointer; + -webkit-transition: all 200ms; + -moz-transition: all 200ms; + transition: all 200ms; + width: 25px; + height: 25px; + line-height: 25px; + text-align: center; + font-family: ThemeIcons; + -webkit-transform: scale(0.8); + -moz-transform: scale(0.8); + -ms-transform: scale(0.8); + -o-transform: scale(0.8); + transform: scale(0.8); + color: #464646; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup div[class*="page"]:after { + content: ""; + position: absolute; + display: block; + border-radius: 50%; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup div[class*="page"]:hover { + opacity: 1; + filter: none ; + background: rgba(250, 250, 250, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup div[class*="page"]:hover:after { + top: -10px; + bottom: -10px; + left: -20px; + right: -20px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup div[class*="page"] span { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup:hover div[class*="page"] { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup div[class*="prev"] { + top: 0; + -webkit-transform-origin: 100% 0%; + -moz-transform-origin: 100% 0%; + -ms-transform-origin: 100% 0%; + -o-transform-origin: 100% 0%; + transform-origin: 100% 0%; + border-radius: 0 4px 0 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup div[class*="prev"]:before { + content: "\f0d8"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup div[class*="next"] { + bottom: 0; + -webkit-transform-origin: 100% 100%; + -moz-transform-origin: 100% 100%; + -ms-transform-origin: 100% 100%; + -o-transform-origin: 100% 100%; + transform-origin: 100% 100%; + border-radius: 4px 0 4px 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup div[class*="next"]:before { + content: "\f0d7"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-suggestpopup div[class*="-off"] { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-no-input { + cursor: pointer; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-no-input [class*="input"] { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + cursor: inherit; + -webkit-box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + border: 1px solid #c5c5c5; + border-top-color: #c5c5c5; + border-bottom-color: #bcbcbc; + text-shadow: inherit; + text-overflow: ellipsis; + border-radius: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-no-input [class*="input"]:focus { + outline: none; + -webkit-transition: none; + -moz-transition: none; + transition: none; + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-no-input [class$="button"] { + border-left: none !important; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-no-input:hover [class$="button"]:before { + color: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-borderless .v-filterselect-input { + border: none; + border-radius: 0; + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; + color: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-borderless .v-filterselect-input:focus { + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-borderless .v-filterselect-input[class*="prompt"] { + color: inherit; + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-borderless .v-filterselect-button { + border: none; + color: inherit; + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-borderless.v-filterselect-prompt .v-filterselect-input { + color: inherit; + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-align-right input { + text-align: right; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-align-center input { + text-align: center; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-tiny { + height: 28px; + + font-size: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-tiny [class*="input"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 28px; + + padding: 3px 5px; + + + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; + width: 100% !important; + height: 100%; + padding-right: 29px; + border-radius: inherit; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-filterselect-tiny [class*="input"], .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-filterselect-tiny [class*="input"] { + line-height: 28px; + padding-top: 0; + padding-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-tiny .v-icon + [class*="input"] { + padding-left: 28px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-tiny img.v-icon { + max-height: 28px; + margin-left: 5px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-tiny span.v-icon { + + width: 28px; + line-height: 1; + padding-top: 0.12em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-tiny [class$="button"] { + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + cursor: pointer; + position: absolute; + width: 28px; + border-radius: 0 4px 4px 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-tiny [class$="button"]:before { + font-family: ThemeIcons; + content: "\f078"; + -webkit-transition: color 140ms; + -moz-transition: color 140ms; + transition: color 140ms; + position: absolute; + width: 28px; + text-align: center; + top: 50%; + line-height: 1; + margin-top: -0.47em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-tiny [class$="button"]:active:after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + border-radius: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-tiny.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-tiny.v-disabled [class$="button"] { + cursor: default; + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-tiny.v-disabled [class$="button"]:active:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-tiny.v-readonly [class*="input"] { + background: #fafafa; + color: #464646; + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-tiny.v-readonly [class*="input"]:focus { + box-shadow: none; + border-color: #c5c5c5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-tiny.v-readonly [class$="button"] { + cursor: default; + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-tiny.v-readonly [class$="button"]:active:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-compact, .org_osbee_vaadin_addons_designer_overlay .v-filterselect-small { + height: 31px; + +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-compact [class*="input"], .org_osbee_vaadin_addons_designer_overlay .v-filterselect-small [class*="input"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 31px; + + padding: 3px 6px; + + + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; + width: 100% !important; + height: 100%; + padding-right: 32px; + border-radius: inherit; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-filterselect-compact [class*="input"], .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-filterselect-compact [class*="input"], .v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-filterselect-small [class*="input"], .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-filterselect-small [class*="input"] { + line-height: 31px; + padding-top: 0; + padding-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-compact .v-icon + [class*="input"], .org_osbee_vaadin_addons_designer_overlay .v-filterselect-small .v-icon + [class*="input"] { + padding-left: 31px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-compact img.v-icon, .org_osbee_vaadin_addons_designer_overlay .v-filterselect-small img.v-icon { + max-height: 31px; + margin-left: 6px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-compact span.v-icon, .org_osbee_vaadin_addons_designer_overlay .v-filterselect-small span.v-icon { + + width: 31px; + line-height: 1; + padding-top: 0.12em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-compact [class$="button"], .org_osbee_vaadin_addons_designer_overlay .v-filterselect-small [class$="button"] { + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + cursor: pointer; + position: absolute; + width: 31px; + border-radius: 0 4px 4px 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-compact [class$="button"]:before, .org_osbee_vaadin_addons_designer_overlay .v-filterselect-small [class$="button"]:before { + font-family: ThemeIcons; + content: "\f078"; + -webkit-transition: color 140ms; + -moz-transition: color 140ms; + transition: color 140ms; + position: absolute; + width: 31px; + text-align: center; + top: 50%; + line-height: 1; + margin-top: -0.47em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-compact [class$="button"]:active:after, .org_osbee_vaadin_addons_designer_overlay .v-filterselect-small [class$="button"]:active:after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + border-radius: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-compact.v-disabled, .org_osbee_vaadin_addons_designer_overlay .v-filterselect-small.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-compact.v-disabled [class$="button"], .org_osbee_vaadin_addons_designer_overlay .v-filterselect-small.v-disabled [class$="button"] { + cursor: default; + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-compact.v-disabled [class$="button"]:active:after, .org_osbee_vaadin_addons_designer_overlay .v-filterselect-small.v-disabled [class$="button"]:active:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-compact.v-readonly [class*="input"], .org_osbee_vaadin_addons_designer_overlay .v-filterselect-small.v-readonly [class*="input"] { + background: #fafafa; + color: #464646; + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-compact.v-readonly [class*="input"]:focus, .org_osbee_vaadin_addons_designer_overlay .v-filterselect-small.v-readonly [class*="input"]:focus { + box-shadow: none; + border-color: #c5c5c5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-compact.v-readonly [class$="button"], .org_osbee_vaadin_addons_designer_overlay .v-filterselect-small.v-readonly [class$="button"] { + cursor: default; + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-compact.v-readonly [class$="button"]:active:after, .org_osbee_vaadin_addons_designer_overlay .v-filterselect-small.v-readonly [class$="button"]:active:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-small { + font-size: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-large { + height: 44px; + + font-size: 20px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-large [class*="input"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 44px; + + padding: 5px 8px; + + + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; + width: 100% !important; + height: 100%; + padding-right: 45px; + border-radius: inherit; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-filterselect-large [class*="input"], .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-filterselect-large [class*="input"] { + line-height: 44px; + padding-top: 0; + padding-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-large .v-icon + [class*="input"] { + padding-left: 44px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-large img.v-icon { + max-height: 44px; + margin-left: 8px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-large span.v-icon { + + width: 44px; + line-height: 1; + padding-top: 0.12em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-large [class$="button"] { + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + cursor: pointer; + position: absolute; + width: 44px; + border-radius: 0 4px 4px 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-large [class$="button"]:before { + font-family: ThemeIcons; + content: "\f078"; + -webkit-transition: color 140ms; + -moz-transition: color 140ms; + transition: color 140ms; + position: absolute; + width: 44px; + text-align: center; + top: 50%; + line-height: 1; + margin-top: -0.47em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-large [class$="button"]:active:after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + border-radius: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-large.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-large.v-disabled [class$="button"] { + cursor: default; + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-large.v-disabled [class$="button"]:active:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-large.v-readonly [class*="input"] { + background: #fafafa; + color: #464646; + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-large.v-readonly [class*="input"]:focus { + box-shadow: none; + border-color: #c5c5c5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-large.v-readonly [class$="button"] { + cursor: default; + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-large.v-readonly [class$="button"]:active:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-huge { + height: 59px; + + font-size: 26px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-huge [class*="input"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 59px; + + padding: 7px 10px; + + + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; + width: 100% !important; + height: 100%; + padding-right: 60px; + border-radius: inherit; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-filterselect-huge [class*="input"], .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-filterselect-huge [class*="input"] { + line-height: 59px; + padding-top: 0; + padding-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-huge .v-icon + [class*="input"] { + padding-left: 59px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-huge img.v-icon { + max-height: 59px; + margin-left: 10px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-huge span.v-icon { + + width: 59px; + line-height: 1; + padding-top: 0.12em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-huge [class$="button"] { + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + cursor: pointer; + position: absolute; + width: 59px; + border-radius: 0 4px 4px 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-huge [class$="button"]:before { + font-family: ThemeIcons; + content: "\f078"; + -webkit-transition: color 140ms; + -moz-transition: color 140ms; + transition: color 140ms; + position: absolute; + width: 59px; + text-align: center; + top: 50%; + line-height: 1; + margin-top: -0.47em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-huge [class$="button"]:active:after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + border-radius: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-huge.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-huge.v-disabled [class$="button"] { + cursor: default; + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-huge.v-disabled [class$="button"]:active:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-huge.v-readonly [class*="input"] { + background: #fafafa; + color: #464646; + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-huge.v-readonly [class*="input"]:focus { + box-shadow: none; + border-color: #c5c5c5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-huge.v-readonly [class$="button"] { + cursor: default; + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-filterselect-huge.v-readonly [class$="button"]:active:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-csslayout-well { + background: #f5f5f5; + color: #454545; + -webkit-box-shadow: 0 1px 0 0 rgba(255, 255, 255, 0.05), inset 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 0 0 rgba(255, 255, 255, 0.05), inset 0 2px 3px rgba(0, 0, 0, 0.05); + border-radius: 4px; + border: 1px solid #c5c5c5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-csslayout-well > div > [class*="-caption"] { + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-csslayout-well > .v-margin-top { + padding-top: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-csslayout-well > .v-margin-right { + padding-right: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-csslayout-well > .v-margin-bottom { + padding-bottom: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-csslayout-well > .v-margin-left { + padding-left: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-csslayout-card { + background: white; + color: #474747; + border-radius: 4px; + border: 1px solid #d5d5d5; + -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: 0 2px 3px rgba(0, 0, 0, 0.05); +} + +.org_osbee_vaadin_addons_designer_overlay .v-csslayout-card > .v-margin-top { + padding-top: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-csslayout-card > .v-margin-right { + padding-right: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-csslayout-card > .v-margin-bottom { + padding-bottom: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-csslayout-card > .v-margin-left { + padding-left: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-csslayout-v-component-group { + white-space: nowrap; + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-csslayout-v-component-group .v-widget ~ .v-widget:not(:last-child) { + border-radius: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-csslayout-v-component-group .v-widget:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-csslayout-v-component-group .v-widget:first-child, .org_osbee_vaadin_addons_designer_overlay .v-csslayout-v-component-group .v-caption:first-child + .v-widget { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-csslayout-v-component-group .v-widget ~ .v-widget.first.first { + border-radius: 4px 0 0 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-csslayout-v-component-group .v-widget ~ .v-widget.last.last { + border-radius: 0 4px 4px 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-csslayout-v-component-group .v-widget { + vertical-align: middle; + margin-left: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-csslayout-v-component-group .v-widget:first-child { + margin-left: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-csslayout-v-component-group .v-widget:focus, .org_osbee_vaadin_addons_designer_overlay .v-csslayout-v-component-group .v-widget[class*="focus"], .org_osbee_vaadin_addons_designer_overlay .v-csslayout-v-component-group .v-widget [class*="focus"] { + position: relative; + z-index: 5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-form fieldset { + border: none; + padding: 0; + margin: 0; + height: 100%; +} + +.org_osbee_vaadin_addons_designer_overlay .v-form-content { + height: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.org_osbee_vaadin_addons_designer_overlay [class*="spacing"] > tbody > [class*="row"] > td { + padding-top: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay [class*="spacing"] > tbody > [class*="firstrow"] > td { + padding-top: 0; +} + +.org_osbee_vaadin_addons_designer_overlay [class*="margin-top"] > tbody > [class*="firstrow"] > td { + padding-top: 37px; +} + +.org_osbee_vaadin_addons_designer_overlay [class*="margin-bottom"] > tbody > [class*="lastrow"] > td { + padding-bottom: 37px; +} + +.org_osbee_vaadin_addons_designer_overlay [class*="margin-left"] > tbody > [class*="row"] > [class*="captioncell"] { + padding-left: 37px; +} + +.org_osbee_vaadin_addons_designer_overlay [class*="margin-left"] > tbody > [class*="row"] > [class*="contentcell"] > .v-label-h2, .org_osbee_vaadin_addons_designer_overlay [class*="margin-left"] > tbody > [class*="row"] > [class*="contentcell"] > .v-label-h3, .org_osbee_vaadin_addons_designer_overlay [class*="margin-left"] > tbody > [class*="row"] > [class*="contentcell"] > .v-label-h4 { + left: 37px; +} + +.org_osbee_vaadin_addons_designer_overlay [class*="margin-right"] > tbody > [class*="row"] > [class*="contentcell"] { + padding-right: 37px; +} + +.org_osbee_vaadin_addons_designer_overlay [class*="margin-right"] > tbody > [class*="row"] > [class*="contentcell"] > .v-label-h2, .org_osbee_vaadin_addons_designer_overlay [class*="margin-right"] > tbody > [class*="row"] > [class*="contentcell"] > .v-label-h3, .org_osbee_vaadin_addons_designer_overlay [class*="margin-right"] > tbody > [class*="row"] > [class*="contentcell"] > .v-label-h4 { + right: 37px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout > table { + border-spacing: 0; + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout.v-has-width > table, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.v-has-width .v-formlayout-contentcell { + width: 100%; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout-error-indicator { + width: 19px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout-captioncell { + vertical-align: top; + line-height: 36px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout-captioncell .v-caption { + padding-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout-captioncell .v-caption-h2, .org_osbee_vaadin_addons_designer_overlay .v-formlayout-captioncell .v-caption-h3, .org_osbee_vaadin_addons_designer_overlay .v-formlayout-captioncell .v-caption-h4 { + height: 3em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout-contentcell .v-checkbox, .org_osbee_vaadin_addons_designer_overlay .v-formlayout-contentcell .v-radiobutton { + font-weight: 400; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout-contentcell > .v-label-h2, .org_osbee_vaadin_addons_designer_overlay .v-formlayout-contentcell > .v-label-h3, .org_osbee_vaadin_addons_designer_overlay .v-formlayout-contentcell > .v-label-h4 { + position: absolute; + left: 0; + right: 0; + width: auto !important; + margin-top: -0.5em; + padding-bottom: 0.5em; + border-bottom: 1px solid #dfdfdf; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table { + padding: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > tr > td { + padding-top: 0; + height: 37px; + border-bottom: 1px solid #eaeaea; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="lastrow"] > td { + border-bottom: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > tr > [class*="captioncell"] { + color: #7d7d7d; + text-align: right; + padding-left: 13px; + line-height: 37px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] { + padding-right: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-textfield, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-textarea, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-filterselect, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-datefield, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-filterselect-input, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-datefield-textfield { + width: 100%; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-textfield, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-textarea, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-filterselect input, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-datefield input, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-richtextarea { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 37px; + border-radius: 0; + padding: 4px 7px; + + -webkit-box-shadow: none; + box-shadow: none; + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; + background: transparent; + border: none; + color: inherit; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-textfield, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-textfield, .v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-textarea, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-textarea, .v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-filterselect input, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-filterselect input, .v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-datefield input, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-datefield input, .v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-richtextarea, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-richtextarea { + line-height: 37px; + padding-top: 0; + padding-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-textfield.v-disabled, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-textarea.v-disabled, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-filterselect input.v-disabled, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-datefield input.v-disabled, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-richtextarea.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-textfield:focus, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-textarea:focus, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-filterselect input:focus, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-datefield input:focus, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-richtextarea:focus { + outline: none; + -webkit-transition: none; + -moz-transition: none; + transition: none; + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), none; + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), none; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-textfield:focus, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-textarea:focus, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-filterselect input:focus, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-datefield input:focus, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-richtextarea:focus { + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-textfield-prompt, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-textarea-prompt, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-filterselect-prompt input, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-datefield-prompt input { + color: #a3a3a3; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-textarea, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-richtextarea { + height: auto; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-label-h2, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-label-h3, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-label-h4 { + border-bottom: none; + left: 0; + right: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-label-h3, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light > table > tbody > [class*="row"] > [class*="contentcell"] > .v-label-h4 { + margin-top: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout.light .v-richtextarea { + margin: 5px 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout.light .v-filterselect-button, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light .v-datefield-button { + border: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout.light .v-filterselect-button:active:after, .org_osbee_vaadin_addons_designer_overlay .v-formlayout.light .v-datefield-button:active:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout.light .v-datefield-button { + right: 0; + left: auto; +} + +.org_osbee_vaadin_addons_designer_overlay .v-formlayout.light .v-checkbox { + margin-left: 7px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid { + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-scroller { + position: absolute; + z-index: 1; + outline: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-scroller-horizontal { + left: 0; + right: 0; + bottom: 0; + overflow-y: hidden; + -ms-overflow-y: hidden; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-scroller-vertical { + right: 0; + top: 0; + bottom: 0; + overflow-x: hidden; + -ms-overflow-x: hidden; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-tablewrapper { + position: absolute; + overflow: hidden; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + z-index: 5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-tablewrapper > table { + border-spacing: 0; + table-layout: fixed; + width: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-header-deco, .org_osbee_vaadin_addons_designer_overlay .v-grid-footer-deco { + position: absolute; + right: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-horizontal-scrollbar-deco { + position: absolute; + bottom: 0; + left: 0; + right: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-header, .org_osbee_vaadin_addons_designer_overlay .v-grid-body, .org_osbee_vaadin_addons_designer_overlay .v-grid-footer { + position: absolute; + left: 0; + width: inherit; + z-index: 10; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-header, .org_osbee_vaadin_addons_designer_overlay .v-grid-header-deco { + top: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-footer, .org_osbee_vaadin_addons_designer_overlay .v-grid-footer-deco { + bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-body { + z-index: 0; + top: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-body .v-grid-row { + position: absolute; + top: 0; + left: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-row { + display: block; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-grid-row, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-grid-row { + float: left; + clear: left; + margin-top: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-row > td, .org_osbee_vaadin_addons_designer_overlay .v-grid-row > th { + background-color: white; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-row { + width: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-cell { + display: block; + float: left; + padding: 2px; + white-space: nowrap; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + overflow: hidden; + font-size: 16px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-cell.frozen { + position: relative; + z-index: 1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-spacer { + position: absolute; + display: block; + background-color: white; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-spacer > td { + width: 100%; + height: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-grid-spacer, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-grid-spacer { + margin-top: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid { + outline: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-scroller-vertical, .org_osbee_vaadin_addons_designer_overlay .v-grid-scroller-horizontal { + border: 1px solid #d4d4d4; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-scroller-vertical { + border-left: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-scroller-horizontal { + border-top: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-tablewrapper { + border: 1px solid #d4d4d4; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid .header-drag-table { + border-spacing: 0; + position: relative; + table-layout: fixed; + width: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid .header-drag-table .v-grid-header { + position: absolute; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid .header-drag-table .v-grid-header > .v-grid-cell { + border: 1px solid #d4d4d4; + margin-top: -10px; + opacity: 0.9; + filter: alpha(opacity=90); + z-index: 30000; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid .header-drag-table .v-grid-header > .v-grid-drop-marker { + background-color: #197de1; + position: absolute; + width: 3px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-sidebar.v-contextmenu { + -webkit-box-shadow: none; + box-shadow: none; + border-radius: 0; + position: absolute; + top: 0; + right: 0; + background-color: #fafafa; + border: 1px solid #d4d4d4; + padding: 0; + z-index: 5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-sidebar.v-contextmenu.v-grid-sidebar-popup { + right: auto; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-sidebar.v-contextmenu .v-grid-sidebar-button { + background: transparent; + border: none; + color: inherit; + cursor: pointer; + outline: none; + padding: 0 4px; + text-align: right; + line-height: 1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-sidebar.v-contextmenu .v-grid-sidebar-button[disabled] { + cursor: default; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-sidebar.v-contextmenu .v-grid-sidebar-button::-moz-focus-inner { + border: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-sidebar.v-contextmenu .v-grid-sidebar-button:after { + content: "\f0c9"; + display: block; + font-family: ThemeIcons, sans-serif; + font-size: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-sidebar.v-contextmenu.closed { + border-radius: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-sidebar.v-contextmenu.open .v-grid-sidebar-button { + width: 100%; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-sidebar.v-contextmenu.open .v-grid-sidebar-button:after { + content: "\f0c9"; + font-size: 14px; + line-height: 1; +} + +.v-ie .org_osbee_vaadin_addons_designer_overlay .v-grid-sidebar.v-contextmenu.open .v-grid-sidebar-button { + vertical-align: middle; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-grid-sidebar.v-contextmenu.open .v-grid-sidebar-button:after { + vertical-align: middle; + text-align: center; + display: inline; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-sidebar.v-contextmenu .v-grid-sidebar-content { + padding: 4px 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-sidebar.v-contextmenu .v-grid-sidebar-content .gwt-MenuBar .gwt-MenuItem .column-hiding-toggle { + text-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-cell { + background-color: white; + padding: 0 18px; + line-height: 37px; + text-overflow: ellipsis; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-cell > * { + line-height: 1.55; + vertical-align: middle; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-cell > div { + display: inline-block; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-cell.frozen { + -webkit-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1); + box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1); + border-right: 1px solid #d4d4d4; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-cell.frozen + th, .org_osbee_vaadin_addons_designer_overlay .v-grid-cell.frozen + td { + border-left: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-row > td, .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div { + border-left: 1px solid #d4d4d4; + border-bottom: 1px solid #d4d4d4; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-row > td:first-child, .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div:first-child { + border-left: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells.frozen > div { + -webkit-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1); + box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1); + border-right: 1px solid #d4d4d4; + border-left: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-row-stripe > td { + background-color: #f5f5f5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-row-selected > td { + background: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-row-focused > td { + +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-header th { + position: relative; + background-color: #fafafa; + font-size: 14px; + font-weight: inherit; + border-left: 1px solid #d4d4d4; + border-bottom: 1px solid #d4d4d4; + + text-align: left; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-header th:first-child { + border-left: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-header .sort-asc, .org_osbee_vaadin_addons_designer_overlay .v-grid-header .sort-desc { + padding-right: 35px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-header .sort-asc:after, .org_osbee_vaadin_addons_designer_overlay .v-grid-header .sort-desc:after { + font-family: ThemeIcons, sans-serif; + content: "\f0de" " " attr(sort-order); + position: absolute; + right: 18px; + font-size: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-header .sort-desc:after { + content: "\f0dd" " " attr(sort-order); +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-column-resize-handle { + position: absolute; + width: 36px; + right: -18px; + top: 0px; + bottom: 0px; + cursor: col-resize; + z-index: 10; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-footer td { + background-color: #fafafa; + font-size: 14px; + font-weight: inherit; + border-left: 1px solid #d4d4d4; + border-top: 1px solid #d4d4d4; + border-bottom: none; + +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-footer td:first-child { + border-left: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-header .v-grid-cell, .org_osbee_vaadin_addons_designer_overlay .v-grid-footer .v-grid-cell { + overflow: visible; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-column-header-content, .org_osbee_vaadin_addons_designer_overlay .v-grid-column-footer-content { + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + line-height: 37px; + vertical-align: baseline; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-header-deco { + border-top: 1px solid #d4d4d4; + border-right: 1px solid #d4d4d4; + background-color: #fafafa; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-footer-deco { + border-bottom: 1px solid #d4d4d4; + border-right: 1px solid #d4d4d4; + background-color: #fafafa; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-horizontal-scrollbar-deco { + background-color: #fafafa; + border: 1px solid #d4d4d4; + border-top: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-cell-focused { + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-cell-focused:before { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + border: 2px solid #197de1; + display: none; + pointer-events: none; +} + +.ie8 .org_osbee_vaadin_addons_designer_overlay .v-grid-cell-focused:before, .ie9 .org_osbee_vaadin_addons_designer_overlay .v-grid-cell-focused:before, .ie10 .org_osbee_vaadin_addons_designer_overlay .v-grid-cell-focused:before { + content: url(data:image/svg+xml;charset=utf-8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==); +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid:focus .v-grid-cell-focused:before { + display: block; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid.v-disabled:focus .v-grid-cell-focused:before { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor { + position: absolute; + z-index: 20; + overflow: hidden; + left: 0; + right: 0; + border: 1px solid #d4d4d4; + box-sizing: border-box; + -moz-box-sizing: border-box; + margin-top: -1px; + -webkit-box-shadow: 0 0 9px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 9px rgba(0, 0, 0, 0.2); +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor.unbuffered .v-grid-editor-footer { + width: 100%; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells { + position: relative; + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells.frozen { + z-index: 2; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div { + display: inline-block; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + vertical-align: middle; + background: white; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div:first-child { + border-left: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div > * { + vertical-align: middle; + display: inline-block; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-filterselect { + padding-left: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div input[type="text"], .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div input[type="text"].v-filterselect-input, .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div input[type="password"] { + padding-left: 18px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div input[type="text"]:not(.v-filterselect-input), .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div input[type="password"] { + padding-right: 9px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div input[type="checkbox"] { + margin-left: 18px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-textfield, .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-datefield, .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-filterselect { + min-width: 100%; + max-width: 100%; + min-height: 100%; + max-height: 100%; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-datefield-button { + margin-left: -30px; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-filterselect-button { + margin-left: -27px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-select, .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-select-select { + min-width: 100%; + max-width: 100%; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div.not-editable.v-grid-cell { + float: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells .error::before { + position: absolute; + display: block; + height: 0; + width: 0; + content: ""; + border-top: 5px solid red; + border-right: 5px solid transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells .error, .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells .error > input { + background-color: #fee; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-footer { + display: table; + height: 37px; + border-top: 1px solid #d4d4d4; + margin-top: -1px; + background: white; + padding: 0 5px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-footer + .v-grid-editor-cells > div { + border-bottom: none; + border-top: 1px solid #d4d4d4; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-footer:first-child { + border-top: none; + margin-top: 0; + border-bottom: 1px solid #d4d4d4; + margin-bottom: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-message, .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-buttons { + display: table-cell; + white-space: nowrap; + vertical-align: middle; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-message { + width: 100%; + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-message > div { + position: absolute; + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + line-height: 37px; + top: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-save { + margin-right: 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-spacer { + padding-left: 1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-spacer > td { + display: block; + padding: 0; + background-color: white; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #d4d4d4; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-spacer.stripe > td { + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + border-bottom: 1px solid #d4d4d4; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-spacer-deco-container { + border-top: 1px solid transparent; + position: relative; + top: 0; + z-index: 5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-spacer-deco { + top: 0; + left: 0; + width: 2px; + background-color: #197de1; + position: absolute; + height: 100%; + pointer-events: none; +} + +.ie8 .org_osbee_vaadin_addons_designer_overlay .v-grid-spacer-deco:before, .ie9 .org_osbee_vaadin_addons_designer_overlay .v-grid-spacer-deco:before, .ie10 .org_osbee_vaadin_addons_designer_overlay .v-grid-spacer-deco:before { + content: url(data:image/svg+xml;charset=utf-8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==); +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-cell > .v-progressbar { + width: 100%; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid { + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + background-color: #fafafa; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-header .v-grid-cell { + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-header .v-grid-cell.dragged { + opacity: 0.5; + filter: alpha(opacity=50) ; + -webkit-transition: opacity 0.3s ease-in-out; + -moz-transition: opacity 0.3s ease-in-out; + transition: opacity 0.3s ease-in-out; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-header .v-grid-cell.dragged-column-header { + margin-top: -19px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-footer .v-grid-cell { + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-header-deco { + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-footer-deco, .org_osbee_vaadin_addons_designer_overlay .v-grid-horizontal-scrollbar-deco { + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-row-selected > .v-grid-cell { + background-color: #197de1; + background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%); + color: #c8dbed; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.05); + border-color: #1d69b4; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-row-selected > .v-grid-cell-focused:before { + border-color: #71b0ef; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor { + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + border-color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-footer { + font-size: 14px; + padding: 0 6px; + background: #fafafa; + -webkit-animation: valo-grid-editor-footer-animate-in 200ms 120ms backwards; + -moz-animation: valo-grid-editor-footer-animate-in 200ms 120ms backwards; + animation: valo-grid-editor-footer-animate-in 200ms 120ms backwards; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-footer:first-child { + -webkit-animation: valo-grid-editor-footer-animate-in-alt 200ms 120ms backwards; + -moz-animation: valo-grid-editor-footer-animate-in-alt 200ms 120ms backwards; + animation: valo-grid-editor-footer-animate-in-alt 200ms 120ms backwards; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells { + z-index: 1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div:before { + content: ""; + display: inline-block; + height: 100%; + vertical-align: middle; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div.not-editable.v-grid-cell { + float: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .error::before { + border-top: 9px solid #ed473b; + border-right: 9px solid transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .error, .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .error > input { + background-color: #fffbfb; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-textfield, .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-textfield-focus, .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-datefield, .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-datefield .v-textfield-focus, .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-filterselect-input, .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-filterselect-input:focus { + border: none; + border-radius: 0; + background: transparent; + -webkit-box-shadow: inset 0 1px 0 #f2f2f2; + box-shadow: inset 0 1px 0 #f2f2f2; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div input[type="text"].v-datefield-textfield { + padding-left: 44.4px; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-datefield-button { + margin-left: 0px; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-filterselect-button { + margin-left: 0px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-textfield-focus, .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-datefield .v-textfield-focus, .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-filterselect-input:focus { + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-select { + padding-left: 9px; + padding-right: 9px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-checkbox { + margin: 0 9px 0 18px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-checkbox > input[type="checkbox"] { + margin-left: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cells > div .v-checkbox > label { + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-message > div:before { + display: inline-block; + color: #ed473b; + font-weight: 600; + width: 19px; + text-align: center; + content: "!"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-save, .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cancel { + cursor: pointer; + color: #197de1; + text-decoration: underline; + font-weight: inherit; + -webkit-transition: color 140ms; + -moz-transition: color 140ms; + transition: color 140ms; + font-weight: 400; + text-decoration: none; + border: none; + background: transparent; + padding: 6px 6px; + margin: 0; + outline: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-save:hover, .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cancel:hover { + color: #4396ea; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-editor-save.v-disabled, .org_osbee_vaadin_addons_designer_overlay .v-grid-editor-cancel.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-spacer { + margin-top: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-sidebar.v-contextmenu.open .v-grid-sidebar-content { + margin: 0 0 2px; + padding: 4px 4px 2px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-sidebar.v-contextmenu.closed { + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-scroller::-webkit-scrollbar { + border: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-scroller::-webkit-scrollbar-thumb { + border-radius: 10px; + border: 4px solid transparent; + background: rgba(0, 0, 0, 0.3); + -webkit-background-clip: content-box; + background-clip: content-box; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-scroller-vertical::-webkit-scrollbar-thumb { + min-height: 30px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-grid-scroller-horizontal::-webkit-scrollbar-thumb { + min-width: 30px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 37px; + border-radius: 4px; + padding: 4px 9px; + border: 1px solid #c5c5c5; + background: white; + color: #474747; + -webkit-box-shadow: inset 0 1px 0 #f7f7f7, 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 #f7f7f7, 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; + width: 185px; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-textfield, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-textfield { + line-height: 37px; + padding-top: 0; + padding-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield:focus { + outline: none; + -webkit-transition: none; + -moz-transition: none; + transition: none; + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 #f7f7f7, 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 #f7f7f7, 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield[class*="prompt"] { + color: #a3a3a3; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield-readonly { + background: #fafafa; + color: #464646; + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield-readonly:focus { + box-shadow: none; + border-color: #c5c5c5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield-error { + border-color: #ed473b !important; + background: #fffbfb; + color: #6c2621; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield-borderless { + border: none; + border-radius: 0; + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; + color: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield-borderless:focus { + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield-borderless[class*="prompt"] { + color: inherit; + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield-tiny { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 28px; + border-radius: 4px; + padding: 3px 7px; + + + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; + font-size: 12px; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-textfield-tiny, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-textfield-tiny { + line-height: 28px; + padding-top: 0; + padding-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield-compact, .org_osbee_vaadin_addons_designer_overlay .v-textfield-small { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 31px; + border-radius: 4px; + padding: 3px 8px; + + + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-textfield-compact, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-textfield-compact, .v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-textfield-small, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-textfield-small { + line-height: 31px; + padding-top: 0; + padding-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield-small { + font-size: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield-large { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 44px; + border-radius: 4px; + padding: 5px 10px; + + + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; + font-size: 20px; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-textfield-large, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-textfield-large { + line-height: 44px; + padding-top: 0; + padding-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield-huge { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 59px; + border-radius: 4px; + padding: 7px 12px; + + + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; + font-size: 26px; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-textfield-huge, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-textfield-huge { + line-height: 59px; + padding-top: 0; + padding-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slot-inline-icon { + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon { + padding: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon .v-captiontext { + font-size: 14px; + font-weight: 400; + padding-bottom: 0.3em; + padding-left: 1px; + margin: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon .v-icon { + position: absolute; + z-index: 10; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon span.v-icon { + left: 1px; + bottom: 1px; + width: 37px; + line-height: 35px; + text-align: center; + font-size: 16px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon img.v-icon { + left: 11px; + bottom: 11px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield-inline-icon { + padding-left: 37px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slot-inline-icon.v-slot-tiny { + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-tiny { + padding: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-tiny .v-captiontext { + font-size: 14px; + font-weight: 400; + padding-bottom: 0.3em; + padding-left: 1px; + margin: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-tiny .v-icon { + position: absolute; + z-index: 10; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-tiny span.v-icon { + left: 1px; + bottom: 1px; + width: 28px; + line-height: 26px; + text-align: center; + font-size: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-tiny img.v-icon { + left: 6px; + bottom: 6px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield-inline-icon.v-textfield-tiny { + padding-left: 28px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slot-inline-icon.v-slot-compact { + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-compact { + padding: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-compact .v-captiontext { + font-size: 14px; + font-weight: 400; + padding-bottom: 0.3em; + padding-left: 1px; + margin: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-compact .v-icon { + position: absolute; + z-index: 10; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-compact span.v-icon { + left: 1px; + bottom: 1px; + width: 31px; + line-height: 29px; + text-align: center; + font-size: 16px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-compact img.v-icon { + left: 8px; + bottom: 8px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield-inline-icon.v-textfield-compact { + padding-left: 31px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slot-inline-icon.v-slot-small { + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-small { + padding: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-small .v-captiontext { + font-size: 14px; + font-weight: 400; + padding-bottom: 0.3em; + padding-left: 1px; + margin: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-small .v-icon { + position: absolute; + z-index: 10; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-small span.v-icon { + left: 1px; + bottom: 1px; + width: 31px; + line-height: 29px; + text-align: center; + font-size: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-small img.v-icon { + left: 8px; + bottom: 8px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield-inline-icon.v-textfield-small { + padding-left: 31px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slot-inline-icon.v-slot-large { + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-large { + padding: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-large .v-captiontext { + font-size: 14px; + font-weight: 400; + padding-bottom: 0.3em; + padding-left: 1px; + margin: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-large .v-icon { + position: absolute; + z-index: 10; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-large span.v-icon { + left: 1px; + bottom: 1px; + width: 44px; + line-height: 42px; + text-align: center; + font-size: 20px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-large img.v-icon { + left: 14px; + bottom: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield-inline-icon.v-textfield-large { + padding-left: 44px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slot-inline-icon.v-slot-huge { + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-huge { + padding: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-huge .v-captiontext { + font-size: 14px; + font-weight: 400; + padding-bottom: 0.3em; + padding-left: 1px; + margin: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-huge .v-icon { + position: absolute; + z-index: 10; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-huge span.v-icon { + left: 1px; + bottom: 1px; + width: 59px; + line-height: 57px; + text-align: center; + font-size: 26px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-caption-inline-icon.v-caption-huge img.v-icon { + left: 22px; + bottom: 22px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield-inline-icon.v-textfield-huge { + padding-left: 59px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield-align-right { + text-align: right; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textfield-align-center { + text-align: center; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textarea { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 37px; + border-radius: 4px; + padding: 6px; + border: 1px solid #c5c5c5; + background: white; + color: #474747; + -webkit-box-shadow: inset 0 1px 0 #f7f7f7, 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 #f7f7f7, 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; + height: auto; + resize: none; + white-space: pre-wrap; + width: 185px; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-textarea, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-textarea { + line-height: 37px; + padding-top: 0; + padding-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textarea.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textarea:focus { + outline: none; + -webkit-transition: none; + -moz-transition: none; + transition: none; + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 #f7f7f7, 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 #f7f7f7, 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-textarea[class*="prompt"] { + color: #a3a3a3; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-textarea, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-textarea { + line-height: inherit; + padding-top: 4px; + padding-bottom: 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textarea-readonly { + background: #fafafa; + color: #464646; + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textarea-readonly:focus { + box-shadow: none; + border-color: #c5c5c5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textarea-error { + border-color: #ed473b !important; + background: #fffbfb; + color: #6c2621; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textarea-borderless { + border: none; + border-radius: 0; + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; + color: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textarea-borderless:focus { + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textarea-borderless[class*="prompt"] { + color: inherit; + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textarea-tiny { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 28px; + border-radius: 4px; + padding: 6px; + + + + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; + height: auto; + resize: none; + white-space: pre-wrap; + font-size: 12px; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-textarea-tiny, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-textarea-tiny { + line-height: 28px; + padding-top: 0; + padding-bottom: 0; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-textarea-tiny, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-textarea-tiny { + line-height: inherit; + padding-top: 3px; + padding-bottom: 3px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textarea-small { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 31px; + border-radius: 4px; + padding: 6px; + + + + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; + height: auto; + resize: none; + white-space: pre-wrap; + font-size: 14px; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-textarea-small, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-textarea-small { + line-height: 31px; + padding-top: 0; + padding-bottom: 0; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-textarea-small, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-textarea-small { + line-height: inherit; + padding-top: 3px; + padding-bottom: 3px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textarea-large { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 44px; + border-radius: 4px; + padding: 6px; + + + + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; + height: auto; + resize: none; + white-space: pre-wrap; + font-size: 20px; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-textarea-large, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-textarea-large { + line-height: 44px; + padding-top: 0; + padding-bottom: 0; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-textarea-large, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-textarea-large { + line-height: inherit; + padding-top: 5px; + padding-bottom: 5px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textarea-huge { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 59px; + border-radius: 4px; + padding: 6px; + + + + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; + height: auto; + resize: none; + white-space: pre-wrap; + font-size: 26px; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-textarea-huge, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-textarea-huge { + line-height: 59px; + padding-top: 0; + padding-bottom: 0; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-textarea-huge, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-textarea-huge { + line-height: inherit; + padding-top: 7px; + padding-bottom: 7px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textarea-align-right { + text-align: right; +} + +.org_osbee_vaadin_addons_designer_overlay .v-textarea-align-center { + text-align: center; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield { + position: relative; + width: 185px; + height: 37px; + border-radius: 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield [class*="textfield"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 37px; + border-radius: 4px; + padding: 4px 9px; + border: 1px solid #c5c5c5; + background: white; + color: #474747; + -webkit-box-shadow: inset 0 1px 0 #f7f7f7, 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 #f7f7f7, 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; + padding-left: 44.4px; + width: 100%; + height: 100%; + border-radius: inherit; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-datefield [class*="textfield"], .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-datefield [class*="textfield"] { + line-height: 37px; + padding-top: 0; + padding-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield [class*="textfield"].v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield [class*="textfield"]:focus { + outline: none; + -webkit-transition: none; + -moz-transition: none; + transition: none; + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 #f7f7f7, 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 #f7f7f7, 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield [class*="textfield"][class*="prompt"] { + color: #a3a3a3; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield[class*="prompt"] > [class*="textfield"] { + color: #a3a3a3; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield [class*="button"] { + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + cursor: pointer; + -webkit-appearance: none; + background: transparent; + padding: 0; + position: absolute; + z-index: 10; + width: 37px; + line-height: 35px; + text-align: center; + font: inherit; + outline: none; + margin: 0; + top: 1px; + bottom: 1px; + left: 1px; + border: none; + border-right: 1px solid #e4e4e4; + color: #a3a3a3; + border-radius: 3px 0 0 3px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield [class*="button"]:hover { + color: #474747; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield [class*="button"]:before { + font-family: ThemeIcons; + content: "\f073"; + -webkit-transition: color 140ms; + -moz-transition: color 140ms; + transition: color 140ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield [class*="button"]:active:after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-color: rgba(128, 128, 128, 0.2); + border-radius: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield.v-disabled [class*="button"] { + cursor: default; + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield.v-disabled [class*="button"]:active:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield.v-readonly [class*="textfield"] { + background: #fafafa; + color: #464646; + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield.v-readonly [class*="textfield"]:focus { + box-shadow: none; + border-color: #c5c5c5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield.v-readonly [class*="button"] { + cursor: default; + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield.v-readonly [class*="button"]:active:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-error .v-datefield-textfield { + border-color: #ed473b !important; + background: #fffbfb; + color: #6c2621; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-error .v-datefield-button { + color: #ed473b; + border-color: #ed473b; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-full { + width: 240px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-day { + width: 185px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-month { + width: 120px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-year { + width: 104px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup { + padding: 4px 4px; + border-radius: 4px; + background-color: white; + color: #474747; + -webkit-box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.1), 0 3px 5px 0 rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(0, 0, 0, 0.09098); + box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.1), 0 3px 5px 0 rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(0, 0, 0, 0.09098); + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + margin-top: 5px !important; + margin-bottom: 5px !important; + margin-right: 5px !important; + cursor: default; + width: auto; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup[class*="animate-in"] { + -webkit-animation: valo-overlay-animate-in 120ms; + -moz-animation: valo-overlay-animate-in 120ms; + animation: valo-overlay-animate-in 120ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup[class*="animate-out"] { + -webkit-animation: valo-animate-out-fade 120ms; + -moz-animation: valo-animate-out-fade 120ms; + animation: valo-animate-out-fade 120ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup table { + border-collapse: collapse; + border-spacing: 0; + margin: 0 auto; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup td { + padding: 2px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-datefield-calendarpanel { + font-size: 16px; + text-align: center; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-datefield-calendarpanel:focus { + outline: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-datefield-calendarpanel-day { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 30px; + height: 26px; + border: 1px solid transparent; + line-height: 26px; + text-align: center; + font-size: 14px; + background: #fafafa; + border-radius: 2px; + -webkit-transition: color 200ms; + -moz-transition: color 200ms; + transition: color 200ms; + display: inline-block; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-datefield-calendarpanel-day:hover { + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-datefield-calendarpanel-day-offmonth { + color: #a0a0a0; + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-datefield-calendarpanel-day-today { + color: #191919; + font-weight: 600; + border-color: #afafaf; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-datefield-calendarpanel-day.v-datefield-calendarpanel-day-selected, .org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-datefield-calendarpanel-day.v-datefield-calendarpanel-day-selected:hover { + color: #c8dbed; + background-color: #197de1; + background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%); + border: none; + font-weight: 600; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-datefield-calendarpanel-day.v-datefield-calendarpanel-day-focused { + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + position: relative; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-datefield-calendarpanel-day.v-datefield-calendarpanel-day-focused { + border-color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-datefield-calendarpanel-day.v-datefield-calendarpanel-day-outside-range, .org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-datefield-calendarpanel-day.v-datefield-calendarpanel-day-outside-range:hover { + color: #a0a0a0; + cursor: not-allowed; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-datefield-calendarpanel-weekdays { + height: 26px; + color: rgba(133, 133, 133, 0.85); +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-datefield-calendarpanel-weekdays strong { + font: inherit; + font-size: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-datefield-calendarpanel-header { + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup td[class*="year"] button, .org_osbee_vaadin_addons_designer_overlay .v-datefield-popup td[class*="month"] button { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + border: none; + background: transparent; + padding: 0; + margin: 0; + cursor: pointer; + color: transparent; + font-size: 0; + width: 19px; + height: 25px; + outline: none; + position: relative; + vertical-align: middle; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup td[class*="year"] button:before, .org_osbee_vaadin_addons_designer_overlay .v-datefield-popup td[class*="month"] button:before { + color: #a0a0a0; + font-size: 21px; + line-height: 24px; + -webkit-transition: color 200ms; + -moz-transition: color 200ms; + transition: color 200ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup td[class*="year"] button:hover:before, .org_osbee_vaadin_addons_designer_overlay .v-datefield-popup td[class*="month"] button:hover:before { + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup td[class*="year"] button.outside-range, .org_osbee_vaadin_addons_designer_overlay .v-datefield-popup td[class*="month"] button.outside-range { + cursor: default; + opacity: 0.3; + filter: alpha(opacity=30.0) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup td[class*="year"] button.outside-range:hover:before, .org_osbee_vaadin_addons_designer_overlay .v-datefield-popup td[class*="month"] button.outside-range:hover:before { + color: #a0a0a0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-button-prevyear:before { + font-family: ThemeIcons; + content: "\f100"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-button-prevmonth:before { + font-family: ThemeIcons; + content: "\f104"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-button-nextyear:before { + font-family: ThemeIcons; + content: "\f101"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-button-nextmonth:before { + font-family: ThemeIcons; + content: "\f105"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup td.v-datefield-calendarpanel-month { + width: 148px; + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-datefield-calendarpanel-year td.v-datefield-calendarpanel-month { + width: 74px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-datefield-calendarpanel-weeknumber, .org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-datefield-calendarpanel-weekdays.v-datefield-calendarpanel-weeknumbers td:first-child { + width: 30px; + color: rgba(133, 133, 133, 0.85); + font-size: 14px; + display: inline-block; + text-align: left; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-datefield-calendarpanel-weeknumber { + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup .v-datefield-calendarpanel-weeknumbers .v-first:before { + content: ""; + position: absolute; + top: 38px; + bottom: 0; + left: 0; + width: 34px; + border-top: 1px solid #eaeaea; + border-right: 1px solid #eaeaea; + border-top-right-radius: 4px; + border-bottom-left-radius: 4px; + background: #fafafa; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup td.v-datefield-calendarpanel-time { + width: 100%; + font-size: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-popup td.v-datefield-calendarpanel-time .v-label { + display: inline; + margin: 0 0.1em; + font-weight: 400; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-calendarpanel { + font-size: 16px; + text-align: center; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-calendarpanel:focus { + outline: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-calendarpanel-day { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 30px; + height: 26px; + border: 1px solid transparent; + line-height: 26px; + text-align: center; + font-size: 14px; + background: #fafafa; + border-radius: 2px; + -webkit-transition: color 200ms; + -moz-transition: color 200ms; + transition: color 200ms; + display: inline-block; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-calendarpanel-day:hover { + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-calendarpanel-day-offmonth { + color: #a0a0a0; + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-calendarpanel-day-today { + color: #191919; + font-weight: 600; + border-color: #afafaf; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-calendarpanel-day.v-datefield-calendarpanel-day-selected, .org_osbee_vaadin_addons_designer_overlay .v-datefield-calendarpanel-day.v-datefield-calendarpanel-day-selected:hover { + color: #c8dbed; + background-color: #197de1; + background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%); + border: none; + font-weight: 600; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-calendarpanel-day.v-datefield-calendarpanel-day-focused { + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + position: relative; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-datefield-calendarpanel-day.v-datefield-calendarpanel-day-focused { + border-color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-calendarpanel-day.v-datefield-calendarpanel-day-outside-range, .org_osbee_vaadin_addons_designer_overlay .v-datefield-calendarpanel-day.v-datefield-calendarpanel-day-outside-range:hover { + color: #a0a0a0; + cursor: not-allowed; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-calendarpanel-weekdays { + height: 26px; + color: rgba(133, 133, 133, 0.85); +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-calendarpanel-weekdays strong { + font: inherit; + font-size: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-calendarpanel-header { + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay td[class*="year"] button, .org_osbee_vaadin_addons_designer_overlay td[class*="month"] button { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + border: none; + background: transparent; + padding: 0; + margin: 0; + cursor: pointer; + color: transparent; + font-size: 0; + width: 19px; + height: 25px; + outline: none; + position: relative; + vertical-align: middle; +} + +.org_osbee_vaadin_addons_designer_overlay td[class*="year"] button:before, .org_osbee_vaadin_addons_designer_overlay td[class*="month"] button:before { + color: #a0a0a0; + font-size: 21px; + line-height: 24px; + -webkit-transition: color 200ms; + -moz-transition: color 200ms; + transition: color 200ms; +} + +.org_osbee_vaadin_addons_designer_overlay td[class*="year"] button:hover:before, .org_osbee_vaadin_addons_designer_overlay td[class*="month"] button:hover:before { + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay td[class*="year"] button.outside-range, .org_osbee_vaadin_addons_designer_overlay td[class*="month"] button.outside-range { + cursor: default; + opacity: 0.3; + filter: alpha(opacity=30.0) ; +} + +.org_osbee_vaadin_addons_designer_overlay td[class*="year"] button.outside-range:hover:before, .org_osbee_vaadin_addons_designer_overlay td[class*="month"] button.outside-range:hover:before { + color: #a0a0a0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-prevyear:before { + font-family: ThemeIcons; + content: "\f100"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-prevmonth:before { + font-family: ThemeIcons; + content: "\f104"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-nextyear:before { + font-family: ThemeIcons; + content: "\f101"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-nextmonth:before { + font-family: ThemeIcons; + content: "\f105"; +} + +.org_osbee_vaadin_addons_designer_overlay td.v-datefield-calendarpanel-month { + width: 148px; + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-calendarpanel-year td.v-datefield-calendarpanel-month { + width: 74px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-calendarpanel-weeknumber, .org_osbee_vaadin_addons_designer_overlay .v-datefield-calendarpanel-weekdays.v-datefield-calendarpanel-weeknumbers td:first-child { + width: 30px; + color: rgba(133, 133, 133, 0.85); + font-size: 14px; + display: inline-block; + text-align: left; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-calendarpanel-weeknumber { + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-calendarpanel-weeknumbers .v-first:before { + content: ""; + position: absolute; + top: 38px; + bottom: 0; + left: 0; + width: 34px; + border-top: 1px solid #eaeaea; + border-right: 1px solid #eaeaea; + border-top-right-radius: 4px; + border-bottom-left-radius: 4px; + background: #fafafa; +} + +.org_osbee_vaadin_addons_designer_overlay td.v-datefield-calendarpanel-time { + width: 100%; + font-size: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay td.v-datefield-calendarpanel-time .v-label { + display: inline; + margin: 0 0.1em; + font-weight: 400; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-borderless .v-datefield-textfield { + border: none; + border-radius: 0; + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; + color: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-borderless .v-datefield-textfield:focus { + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-borderless .v-datefield-textfield[class*="prompt"] { + color: inherit; + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-borderless .v-datefield-button { + border: none; + color: inherit; + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-align-right input { + text-align: right; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-align-center input { + text-align: center; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-tiny { + height: 28px; + border-radius: 4px; + font-size: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-tiny [class*="textfield"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 28px; + border-radius: 4px; + padding: 3px 7px; + + + + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; + padding-left: 33.6px; + width: 100%; + height: 100%; + border-radius: inherit; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-datefield-tiny [class*="textfield"], .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-datefield-tiny [class*="textfield"] { + line-height: 28px; + padding-top: 0; + padding-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-tiny [class*="button"] { + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + cursor: pointer; + -webkit-appearance: none; + background: transparent; + padding: 0; + position: absolute; + z-index: 10; + width: 28px; + line-height: 28px; + text-align: center; + font: inherit; + outline: none; + margin: 0; + border-radius: 4px 0 0 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-tiny [class*="button"]:before { + font-family: ThemeIcons; + content: "\f073"; + -webkit-transition: color 140ms; + -moz-transition: color 140ms; + transition: color 140ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-tiny [class*="button"]:active:after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + border-radius: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-tiny.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-tiny.v-disabled [class*="button"] { + cursor: default; + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-tiny.v-disabled [class*="button"]:active:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-tiny.v-readonly [class*="textfield"] { + background: #fafafa; + color: #464646; + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-tiny.v-readonly [class*="textfield"]:focus { + box-shadow: none; + border-color: #c5c5c5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-tiny.v-readonly [class*="button"] { + cursor: default; + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-tiny.v-readonly [class*="button"]:active:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-compact, .org_osbee_vaadin_addons_designer_overlay .v-datefield-small { + height: 31px; + border-radius: 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-compact [class*="textfield"], .org_osbee_vaadin_addons_designer_overlay .v-datefield-small [class*="textfield"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 31px; + border-radius: 4px; + padding: 3px 8px; + + + + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; + padding-left: 37.2px; + width: 100%; + height: 100%; + border-radius: inherit; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-datefield-compact [class*="textfield"], .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-datefield-compact [class*="textfield"], .v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-datefield-small [class*="textfield"], .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-datefield-small [class*="textfield"] { + line-height: 31px; + padding-top: 0; + padding-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-compact [class*="button"], .org_osbee_vaadin_addons_designer_overlay .v-datefield-small [class*="button"] { + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + cursor: pointer; + -webkit-appearance: none; + background: transparent; + padding: 0; + position: absolute; + z-index: 10; + width: 31px; + line-height: 31px; + text-align: center; + font: inherit; + outline: none; + margin: 0; + border-radius: 4px 0 0 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-compact [class*="button"]:before, .org_osbee_vaadin_addons_designer_overlay .v-datefield-small [class*="button"]:before { + font-family: ThemeIcons; + content: "\f073"; + -webkit-transition: color 140ms; + -moz-transition: color 140ms; + transition: color 140ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-compact [class*="button"]:active:after, .org_osbee_vaadin_addons_designer_overlay .v-datefield-small [class*="button"]:active:after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + border-radius: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-compact.v-disabled, .org_osbee_vaadin_addons_designer_overlay .v-datefield-small.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-compact.v-disabled [class*="button"], .org_osbee_vaadin_addons_designer_overlay .v-datefield-small.v-disabled [class*="button"] { + cursor: default; + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-compact.v-disabled [class*="button"]:active:after, .org_osbee_vaadin_addons_designer_overlay .v-datefield-small.v-disabled [class*="button"]:active:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-compact.v-readonly [class*="textfield"], .org_osbee_vaadin_addons_designer_overlay .v-datefield-small.v-readonly [class*="textfield"] { + background: #fafafa; + color: #464646; + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-compact.v-readonly [class*="textfield"]:focus, .org_osbee_vaadin_addons_designer_overlay .v-datefield-small.v-readonly [class*="textfield"]:focus { + box-shadow: none; + border-color: #c5c5c5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-compact.v-readonly [class*="button"], .org_osbee_vaadin_addons_designer_overlay .v-datefield-small.v-readonly [class*="button"] { + cursor: default; + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-compact.v-readonly [class*="button"]:active:after, .org_osbee_vaadin_addons_designer_overlay .v-datefield-small.v-readonly [class*="button"]:active:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-small { + font-size: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-large { + height: 44px; + border-radius: 4px; + font-size: 20px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-large [class*="textfield"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 44px; + border-radius: 4px; + padding: 5px 10px; + + + + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; + padding-left: 52.8px; + width: 100%; + height: 100%; + border-radius: inherit; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-datefield-large [class*="textfield"], .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-datefield-large [class*="textfield"] { + line-height: 44px; + padding-top: 0; + padding-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-large [class*="button"] { + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + cursor: pointer; + -webkit-appearance: none; + background: transparent; + padding: 0; + position: absolute; + z-index: 10; + width: 44px; + line-height: 44px; + text-align: center; + font: inherit; + outline: none; + margin: 0; + border-radius: 4px 0 0 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-large [class*="button"]:before { + font-family: ThemeIcons; + content: "\f073"; + -webkit-transition: color 140ms; + -moz-transition: color 140ms; + transition: color 140ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-large [class*="button"]:active:after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + border-radius: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-large.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-large.v-disabled [class*="button"] { + cursor: default; + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-large.v-disabled [class*="button"]:active:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-large.v-readonly [class*="textfield"] { + background: #fafafa; + color: #464646; + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-large.v-readonly [class*="textfield"]:focus { + box-shadow: none; + border-color: #c5c5c5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-large.v-readonly [class*="button"] { + cursor: default; + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-large.v-readonly [class*="button"]:active:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-huge { + height: 59px; + border-radius: 4px; + font-size: 26px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-huge [class*="textfield"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 59px; + border-radius: 4px; + padding: 7px 12px; + + + + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; + padding-left: 70.8px; + width: 100%; + height: 100%; + border-radius: inherit; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-datefield-huge [class*="textfield"], .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-datefield-huge [class*="textfield"] { + line-height: 59px; + padding-top: 0; + padding-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-huge [class*="button"] { + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + cursor: pointer; + -webkit-appearance: none; + background: transparent; + padding: 0; + position: absolute; + z-index: 10; + width: 59px; + line-height: 59px; + text-align: center; + font: inherit; + outline: none; + margin: 0; + border-radius: 4px 0 0 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-huge [class*="button"]:before { + font-family: ThemeIcons; + content: "\f073"; + -webkit-transition: color 140ms; + -moz-transition: color 140ms; + transition: color 140ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-huge [class*="button"]:active:after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + border-radius: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-huge.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-huge.v-disabled [class*="button"] { + cursor: default; + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-huge.v-disabled [class*="button"]:active:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-huge.v-readonly [class*="textfield"] { + background: #fafafa; + color: #464646; + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-huge.v-readonly [class*="textfield"]:focus { + box-shadow: none; + border-color: #c5c5c5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-huge.v-readonly [class*="button"] { + cursor: default; + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-datefield-huge.v-readonly [class*="button"]:active:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-inline-datefield-calendarpanel { + font-size: 16px; + text-align: center; +} + +.org_osbee_vaadin_addons_designer_overlay .v-inline-datefield-calendarpanel:focus { + outline: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-inline-datefield-calendarpanel-day { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 30px; + height: 26px; + border: 1px solid transparent; + line-height: 26px; + text-align: center; + font-size: 14px; + background: #fafafa; + border-radius: 2px; + -webkit-transition: color 200ms; + -moz-transition: color 200ms; + transition: color 200ms; + display: inline-block; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer; +} + +.org_osbee_vaadin_addons_designer_overlay .v-inline-datefield-calendarpanel-day:hover { + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-inline-datefield-calendarpanel-day-offmonth { + color: #a0a0a0; + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-inline-datefield-calendarpanel-day-today { + color: #191919; + font-weight: 600; + border-color: #afafaf; +} + +.org_osbee_vaadin_addons_designer_overlay .v-inline-datefield-calendarpanel-day.v-inline-datefield-calendarpanel-day-selected, .org_osbee_vaadin_addons_designer_overlay .v-inline-datefield-calendarpanel-day.v-inline-datefield-calendarpanel-day-selected:hover { + color: #c8dbed; + background-color: #197de1; + background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%); + border: none; + font-weight: 600; +} + +.org_osbee_vaadin_addons_designer_overlay .v-inline-datefield-calendarpanel-day.v-inline-datefield-calendarpanel-day-focused { + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + position: relative; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-inline-datefield-calendarpanel-day.v-inline-datefield-calendarpanel-day-focused { + border-color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-inline-datefield-calendarpanel-day.v-inline-datefield-calendarpanel-day-outside-range, .org_osbee_vaadin_addons_designer_overlay .v-inline-datefield-calendarpanel-day.v-inline-datefield-calendarpanel-day-outside-range:hover { + color: #a0a0a0; + cursor: not-allowed; +} + +.org_osbee_vaadin_addons_designer_overlay .v-inline-datefield-calendarpanel-weekdays { + height: 26px; + color: rgba(133, 133, 133, 0.85); +} + +.org_osbee_vaadin_addons_designer_overlay .v-inline-datefield-calendarpanel-weekdays strong { + font: inherit; + font-size: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-inline-datefield-calendarpanel-header { + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay td[class*="year"] button, .org_osbee_vaadin_addons_designer_overlay td[class*="month"] button { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + border: none; + background: transparent; + padding: 0; + margin: 0; + cursor: pointer; + color: transparent; + font-size: 0; + width: 19px; + height: 25px; + outline: none; + position: relative; + vertical-align: middle; +} + +.org_osbee_vaadin_addons_designer_overlay td[class*="year"] button:before, .org_osbee_vaadin_addons_designer_overlay td[class*="month"] button:before { + color: #a0a0a0; + font-size: 21px; + line-height: 24px; + -webkit-transition: color 200ms; + -moz-transition: color 200ms; + transition: color 200ms; +} + +.org_osbee_vaadin_addons_designer_overlay td[class*="year"] button:hover:before, .org_osbee_vaadin_addons_designer_overlay td[class*="month"] button:hover:before { + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay td[class*="year"] button.outside-range, .org_osbee_vaadin_addons_designer_overlay td[class*="month"] button.outside-range { + cursor: default; + opacity: 0.3; + filter: alpha(opacity=30.0) ; +} + +.org_osbee_vaadin_addons_designer_overlay td[class*="year"] button.outside-range:hover:before, .org_osbee_vaadin_addons_designer_overlay td[class*="month"] button.outside-range:hover:before { + color: #a0a0a0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-prevyear:before { + font-family: ThemeIcons; + content: "\f100"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-prevmonth:before { + font-family: ThemeIcons; + content: "\f104"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-nextyear:before { + font-family: ThemeIcons; + content: "\f101"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-button-nextmonth:before { + font-family: ThemeIcons; + content: "\f105"; +} + +.org_osbee_vaadin_addons_designer_overlay td.v-inline-datefield-calendarpanel-month { + width: 148px; + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-inline-datefield-calendarpanel-year td.v-inline-datefield-calendarpanel-month { + width: 74px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-inline-datefield-calendarpanel-weeknumber, .org_osbee_vaadin_addons_designer_overlay .v-inline-datefield-calendarpanel-weekdays.v-inline-datefield-calendarpanel-weeknumbers td:first-child { + width: 30px; + color: rgba(133, 133, 133, 0.85); + font-size: 14px; + display: inline-block; + text-align: left; +} + +.org_osbee_vaadin_addons_designer_overlay .v-inline-datefield-calendarpanel-weeknumber { + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-inline-datefield-calendarpanel-weeknumbers .v-first:before { + content: ""; + position: absolute; + top: 38px; + bottom: 0; + left: 0; + width: 34px; + border-top: 1px solid #eaeaea; + border-right: 1px solid #eaeaea; + border-top-right-radius: 4px; + border-bottom-left-radius: 4px; + background: #fafafa; +} + +.org_osbee_vaadin_addons_designer_overlay td.v-inline-datefield-calendarpanel-time { + width: 100%; + font-size: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay td.v-inline-datefield-calendarpanel-time .v-label { + display: inline; + margin: 0 0.1em; + font-weight: 400; +} + +.org_osbee_vaadin_addons_designer_overlay .v-inline-datefield-calendarpanel { + position: relative; + background: white; + padding: 6px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-gridlayout-margin-top { + padding-top: 37px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-gridlayout-margin-bottom { + padding-bottom: 37px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-gridlayout-margin-left { + padding-left: 37px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-gridlayout-margin-right { + padding-right: 37px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-gridlayout-spacing-on { + padding-left: 12px; + padding-top: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar { + position: relative; + text-align: center; + white-space: nowrap; + outline: none; + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + cursor: pointer; + height: 37px; + padding: 0 16px; + color: #191919; + font-weight: 400; + + cursor: default; + border-radius: 4px; + border: 1px solid #c5c5c5; + border-top-color: #c5c5c5; + border-bottom-color: #bcbcbc; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + -webkit-box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); + padding: 0; + text-align: left; + line-height: 35px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar:after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + border-radius: inherit; + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar:focus:after { + -webkit-transition: none; + -moz-transition: none; + transition: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar.v-disabled:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar:after { + border: inherit; + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar:focus:after { + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar > .v-menubar-menuitem { + padding: 0 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar > .v-menubar-menuitem[class*="-icon-only"] { + width: 37px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar:active:after { + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar > .v-menubar-menuitem { + position: relative; + z-index: 1; + display: inline-block; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + height: 37px; + padding: 0 15px; + color: inherit; + font-weight: 400; + + cursor: pointer; + border-radius: 0; + border: 1px solid #c5c5c5; + border-top-color: #c5c5c5; + border-bottom-color: #bcbcbc; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + -webkit-box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7; + box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7; + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; + border-width: 0 1px 0 0; + border-color: inherit; + height: 100%; + line-height: inherit; + vertical-align: top; + text-align: center; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar > .v-menubar-menuitem:first-child { + border-left-width: 0; + border-radius: 3px 0 0 3px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar > .v-menubar-menuitem:last-child { + border-radius: 0 3px 3px 0; + border-right-width: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar > .v-menubar-menuitem:first-child:last-child { + border-radius: 3px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar > .v-menubar-menuitem:before { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + border-radius: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar > .v-menubar-menuitem:hover { + zoom: 1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar > .v-menubar-menuitem:hover:before { + background-color: rgba(186, 186, 186, 0.1); + border: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar > .v-menubar-menuitem:active:before { + background-color: rgba(125, 125, 125, 0.2); +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar > .v-menubar-menuitem .v-icon { + margin: 0 4px 0 -4px; + cursor: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar > .v-menubar-menuitem[class*="-icon-only"] { + width: 37px; + padding: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar > .v-menubar-menuitem[class*="-icon-only"] .v-icon { + margin: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar > .v-menubar-menuitem-checked { + -webkit-box-shadow: none; + box-shadow: none; + background-color: #ededed; + background-image: -webkit-linear-gradient(bottom, #ededed 2%, #e9e9e9 98%); + background-image: linear-gradient(to top,#ededed 2%, #e9e9e9 98%); + color: #181818; +} + +.org_osbee_vaadin_addons_designer_overlay .v-disabled > .v-menubar-menuitem, .org_osbee_vaadin_addons_designer_overlay .v-menubar > .v-menubar-menuitem-disabled { + cursor: default; +} + +.org_osbee_vaadin_addons_designer_overlay .v-disabled > .v-menubar-menuitem:before, .org_osbee_vaadin_addons_designer_overlay .v-menubar > .v-menubar-menuitem-disabled:before { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-menuitem-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar > .v-menubar-menuitem-selected { + color: #ecf2f8; + + + + border-radius: 0; + border: 1px solid #1362b1; + border-top-color: #156ab3; + border-bottom-color: #1156a8; + background-color: #197de1; + background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%); + -webkit-box-shadow: inset 0 1px 0 #4d98e6, inset 0 -1px 0 #166bca; + box-shadow: inset 0 1px 0 #4d98e6, inset 0 -1px 0 #166bca; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.05); + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + z-index: 2; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar > .v-menubar-menuitem-selected:hover:before { + background: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar .v-menubar-submenu-indicator { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar .v-menubar-submenu-indicator + .v-menubar-menuitem-caption:after { + font-family: ThemeIcons; + content: "\f078"; + font-size: 0.7em; + vertical-align: 0.15em; + margin: 0 -0.2em 0 0.5em; + opacity: 0.5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar .v-menubar-submenu-indicator + .v-menubar-menuitem-caption:empty:after { + margin-left: -0.2em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-popup { + padding: 4px 4px; + border-radius: 4px; + background-color: white; + color: #474747; + -webkit-box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.1), 0 3px 5px 0 rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(0, 0, 0, 0.09098); + box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.1), 0 3px 5px 0 rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(0, 0, 0, 0.09098); + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + padding: 4px 4px; + margin: 5px 0 0 1px !important; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-popup[class*="animate-in"] { + -webkit-animation: valo-overlay-animate-in 120ms; + -moz-animation: valo-overlay-animate-in 120ms; + animation: valo-overlay-animate-in 120ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-popup[class*="animate-out"] { + -webkit-animation: valo-animate-out-fade 120ms; + -moz-animation: valo-animate-out-fade 120ms; + animation: valo-animate-out-fade 120ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-popup .v-menubar-submenu { + outline: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-popup .v-menubar-menuitem { + display: block; + cursor: pointer; + line-height: 27px; + padding: 0 20px 0 10px; + border-radius: 3px; + font-weight: 400; + white-space: nowrap; + position: relative; + padding-left: 32px; + padding-right: 37px; + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-popup .v-menubar-menuitem:active:before { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background: #0957a6; + opacity: 0.15; + filter: alpha(opacity=15.0) ; + pointer-events: none; + border-radius: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-popup .v-menubar-menuitem .v-icon { + max-height: 27px; + margin-right: 5px; + min-width: 1em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-popup .v-menubar-submenu-indicator { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-popup .v-menubar-submenu-indicator + .v-menubar-menuitem-caption:after { + position: absolute; + right: 10px; + font-family: ThemeIcons; + content: "\f054"; + line-height: 29px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-popup .v-menubar-menuitem-selected { + background-color: #197de1; + background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%); + color: #ecf2f8; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.05); +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-popup .v-menubar-separator { + display: block; + margin: 4px 0; + height: 0; + overflow: hidden; + border-bottom: 1px solid #e4e4e4; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-popup [class*="checked"] .v-menubar-menuitem-caption:before { + content: "\f00c"; + font-family: ThemeIcons; + position: absolute; + left: 10px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-popup [class*="unchecked"] .v-menubar-menuitem-caption:before { + content: ""; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-popup [class*="disabled"] { + cursor: default; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-small { + height: 31px; + padding: 0 14px; + + font-weight: 400; + + cursor: default; + border-radius: 4px; + padding: 0; + text-align: left; + line-height: 29px; + font-size: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-small:after { + border: inherit; + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-small > .v-menubar-menuitem { + padding: 0 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-small > .v-menubar-menuitem[class*="-icon-only"] { + width: 31px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-borderless { + border: none; + border-radius: 0; + padding: 1px; + -webkit-box-shadow: none; + box-shadow: none; + text-shadow: none; + background: transparent; + color: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-borderless:focus:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-borderless .v-menubar-menuitem { + -webkit-box-shadow: none; + box-shadow: none; + border: none; + margin-right: 1px; + border-radius: 4px; + color: #197de1; + padding: 0 12px; + -webkit-transition: color 140ms; + -moz-transition: color 140ms; + transition: color 140ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-borderless .v-menubar-menuitem:first-child, .org_osbee_vaadin_addons_designer_overlay .v-menubar-borderless .v-menubar-menuitem:last-child, .org_osbee_vaadin_addons_designer_overlay .v-menubar-borderless .v-menubar-menuitem:first-child:last-child { + border-radius: 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-borderless .v-menubar-menuitem:before { + content: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-borderless .v-menubar-menuitem:hover { + color: #4396ea; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-borderless .v-menubar-menuitem:active { + color: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-borderless .v-menubar-menuitem-checked, .org_osbee_vaadin_addons_designer_overlay .v-menubar-borderless .v-menubar-menuitem-checked:first-child { + border: 1px solid #c5c5c5; + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-borderless .v-menubar-menuitem-checked .v-menubar-menuitem-caption, .org_osbee_vaadin_addons_designer_overlay .v-menubar-borderless .v-menubar-menuitem-checked:first-child .v-menubar-menuitem-caption { + position: relative; + top: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-borderless .v-menubar-menuitem-selected { + color: #ecf2f8; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.05); +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-borderless .v-menubar-menuitem-selected:hover { + color: #ecf2f8; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-borderless .v-menubar-menuitem-disabled, .org_osbee_vaadin_addons_designer_overlay .v-menubar-borderless .v-menubar-menuitem-disabled:hover { + color: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-radiobutton { + position: relative; + line-height: 19px; + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay .v-radiobutton.v-has-width label { + white-space: normal; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-radiobutton { + padding-left: 25px; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-radiobutton label { + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + cursor: pointer; + display: inline-block; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-radiobutton > input { + position: absolute; + clip: rect(0, 0, 0, 0); + left: 0.2em; + top: 0.2em; + z-index: 0; + margin: 0; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-radiobutton > input:focus ~ label:before { + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-radiobutton > input ~ label:before, :root .org_osbee_vaadin_addons_designer_overlay .v-radiobutton > input ~ label:after { + content: ""; + display: inline-block; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 19px; + height: 19px; + position: absolute; + top: 0; + left: 0; + border-radius: 4px; + font-size: 13px; + text-align: center; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-radiobutton > input ~ label:before { + height: 18.5px; + padding: 0 9px; + color: #191919; + font-weight: 400; + + + border-radius: 4px; + border: 1px solid #c5c5c5; + border-top-color: #c5c5c5; + border-bottom-color: #bcbcbc; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + -webkit-box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); + padding: 0; + height: 19px; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-radiobutton > input ~ label:after { + content: "\f00c"; + font-family: ThemeIcons; + color: transparent; + -webkit-transition: color 100ms; + -moz-transition: color 100ms; + transition: color 100ms; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-radiobutton > input:active ~ label:after { + background-color: rgba(125, 125, 125, 0.2); +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-radiobutton > input:checked ~ label:after { + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-radiobutton > .v-icon, .org_osbee_vaadin_addons_designer_overlay .v-radiobutton > label .v-icon { + margin: 0 6px 0 3px; + min-width: 1em; + cursor: pointer; +} + +.org_osbee_vaadin_addons_designer_overlay .v-radiobutton.v-disabled > label, .org_osbee_vaadin_addons_designer_overlay .v-radiobutton.v-disabled > .v-icon { + cursor: default; + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-radiobutton.v-disabled > label > .v-icon { + cursor: default; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-radiobutton.v-disabled > input:active ~ label:after { + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-radiobutton.v-readonly > label, .org_osbee_vaadin_addons_designer_overlay .v-radiobutton.v-readonly > .v-icon { + cursor: default; +} + +.org_osbee_vaadin_addons_designer_overlay .v-radiobutton.v-readonly > label > .v-icon { + cursor: default; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-radiobutton.v-readonly > input:active ~ label:after { + background: transparent; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-radiobutton.v-readonly > input ~ label:after { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-radiobutton > input:checked ~ label:after { + width: 7px; + height: 7px; + top: 6px; + left: 6px; + background: #197de1; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-radiobutton > input ~ label:before, :root .org_osbee_vaadin_addons_designer_overlay .v-radiobutton > input ~ label:after { + border-radius: 50%; + content: ""; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup .v-radiobutton, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup .v-checkbox { + display: block; + margin: 9px 16px 0 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup .v-radiobutton:first-child, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup .v-checkbox:first-child { + margin-top: 6px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup .v-radiobutton:last-child, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup .v-checkbox:last-child { + margin-bottom: 6px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup.v-has-width label { + white-space: normal; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small { + font-size: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox { + position: relative; + line-height: 16px; + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox.v-has-width label { + white-space: normal; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox { + padding-left: 21px; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox label { + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + cursor: pointer; + display: inline-block; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox > input { + position: absolute; + clip: rect(0, 0, 0, 0); + left: 0.2em; + top: 0.2em; + z-index: 0; + margin: 0; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox > input:focus ~ label:before { + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox > input ~ label:before, :root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox > input ~ label:after { + content: ""; + display: inline-block; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 16px; + height: 16px; + position: absolute; + top: 0; + left: 0; + border-radius: 4px; + font-size: 11px; + text-align: center; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox > input ~ label:before { + height: 15.5px; + padding: 0 7px; + color: #191919; + font-weight: 400; + + + border-radius: 4px; + border: 1px solid #c5c5c5; + border-top-color: #c5c5c5; + border-bottom-color: #bcbcbc; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + -webkit-box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); + padding: 0; + height: 16px; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox > input ~ label:after { + content: "\f00c"; + font-family: ThemeIcons; + color: transparent; + -webkit-transition: color 100ms; + -moz-transition: color 100ms; + transition: color 100ms; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox > input:active ~ label:after { + background-color: rgba(125, 125, 125, 0.2); +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox > input:checked ~ label:after { + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox > .v-icon, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox > label .v-icon { + margin: 0 5px 0 3px; + min-width: 1em; + cursor: pointer; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox.v-disabled > label, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox.v-disabled > .v-icon { + cursor: default; + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox.v-disabled > label > .v-icon { + cursor: default; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox.v-disabled > input:active ~ label:after { + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox.v-readonly > label, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox.v-readonly > .v-icon { + cursor: default; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox.v-readonly > label > .v-icon { + cursor: default; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox.v-readonly > input:active ~ label:after { + background: transparent; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox.v-readonly > input ~ label:after { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton { + position: relative; + line-height: 16px; + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton.v-has-width label { + white-space: normal; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton { + padding-left: 21px; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton label { + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + cursor: pointer; + display: inline-block; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton > input { + position: absolute; + clip: rect(0, 0, 0, 0); + left: 0.2em; + top: 0.2em; + z-index: 0; + margin: 0; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton > input:focus ~ label:before { + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton > input ~ label:before, :root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton > input ~ label:after { + content: ""; + display: inline-block; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 16px; + height: 16px; + position: absolute; + top: 0; + left: 0; + border-radius: 4px; + font-size: 11px; + text-align: center; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton > input ~ label:before { + height: 15.5px; + padding: 0 7px; + color: #191919; + font-weight: 400; + + + border-radius: 4px; + border: 1px solid #c5c5c5; + border-top-color: #c5c5c5; + border-bottom-color: #bcbcbc; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + -webkit-box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); + padding: 0; + height: 16px; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton > input ~ label:after { + content: "\f00c"; + font-family: ThemeIcons; + color: transparent; + -webkit-transition: color 100ms; + -moz-transition: color 100ms; + transition: color 100ms; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton > input:active ~ label:after { + background-color: rgba(125, 125, 125, 0.2); +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton > input:checked ~ label:after { + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton > .v-icon, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton > label .v-icon { + margin: 0 5px 0 3px; + min-width: 1em; + cursor: pointer; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton.v-disabled > label, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton.v-disabled > .v-icon { + cursor: default; + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton.v-disabled > label > .v-icon { + cursor: default; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton.v-disabled > input:active ~ label:after { + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton.v-readonly > label, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton.v-readonly > .v-icon { + cursor: default; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton.v-readonly > label > .v-icon { + cursor: default; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton.v-readonly > input:active ~ label:after { + background: transparent; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton.v-readonly > input ~ label:after { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton > input:checked ~ label:after { + width: 6px; + height: 6px; + top: 5px; + left: 5px; + background: #197de1; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton > input ~ label:before, :root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton > input ~ label:after { + border-radius: 50%; + content: ""; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox { + display: block; + margin: 8px 16px 0 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton:first-child, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox:first-child { + margin-top: 5px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-radiobutton:last-child, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small .v-checkbox:last-child { + margin-bottom: 5px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-small.v-has-width label { + white-space: normal; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large { + font-size: 20px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox { + position: relative; + line-height: 22px; + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox.v-has-width label { + white-space: normal; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox { + padding-left: 29px; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox label { + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + cursor: pointer; + display: inline-block; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox > input { + position: absolute; + clip: rect(0, 0, 0, 0); + left: 0.2em; + top: 0.2em; + z-index: 0; + margin: 0; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox > input:focus ~ label:before { + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox > input ~ label:before, :root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox > input ~ label:after { + content: ""; + display: inline-block; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 22px; + height: 22px; + position: absolute; + top: 0; + left: 0; + border-radius: 4px; + font-size: 15px; + text-align: center; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox > input ~ label:before { + height: 22px; + padding: 0 10px; + color: #191919; + font-weight: 400; + + + border-radius: 4px; + border: 1px solid #c5c5c5; + border-top-color: #c5c5c5; + border-bottom-color: #bcbcbc; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + -webkit-box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); + padding: 0; + height: 22px; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox > input ~ label:after { + content: "\f00c"; + font-family: ThemeIcons; + color: transparent; + -webkit-transition: color 100ms; + -moz-transition: color 100ms; + transition: color 100ms; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox > input:active ~ label:after { + background-color: rgba(125, 125, 125, 0.2); +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox > input:checked ~ label:after { + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox > .v-icon, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox > label .v-icon { + margin: 0 7px 0 4px; + min-width: 1em; + cursor: pointer; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox.v-disabled > label, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox.v-disabled > .v-icon { + cursor: default; + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox.v-disabled > label > .v-icon { + cursor: default; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox.v-disabled > input:active ~ label:after { + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox.v-readonly > label, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox.v-readonly > .v-icon { + cursor: default; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox.v-readonly > label > .v-icon { + cursor: default; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox.v-readonly > input:active ~ label:after { + background: transparent; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox.v-readonly > input ~ label:after { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton { + position: relative; + line-height: 22px; + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton.v-has-width label { + white-space: normal; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton { + padding-left: 29px; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton label { + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + cursor: pointer; + display: inline-block; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton > input { + position: absolute; + clip: rect(0, 0, 0, 0); + left: 0.2em; + top: 0.2em; + z-index: 0; + margin: 0; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton > input:focus ~ label:before { + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5), inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton > input ~ label:before, :root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton > input ~ label:after { + content: ""; + display: inline-block; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 22px; + height: 22px; + position: absolute; + top: 0; + left: 0; + border-radius: 4px; + font-size: 15px; + text-align: center; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton > input ~ label:before { + height: 22px; + padding: 0 10px; + color: #191919; + font-weight: 400; + + + border-radius: 4px; + border: 1px solid #c5c5c5; + border-top-color: #c5c5c5; + border-bottom-color: #bcbcbc; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + -webkit-box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); + padding: 0; + height: 22px; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton > input ~ label:after { + content: "\f00c"; + font-family: ThemeIcons; + color: transparent; + -webkit-transition: color 100ms; + -moz-transition: color 100ms; + transition: color 100ms; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton > input:active ~ label:after { + background-color: rgba(125, 125, 125, 0.2); +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton > input:checked ~ label:after { + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton > .v-icon, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton > label .v-icon { + margin: 0 7px 0 4px; + min-width: 1em; + cursor: pointer; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton.v-disabled > label, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton.v-disabled > .v-icon { + cursor: default; + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton.v-disabled > label > .v-icon { + cursor: default; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton.v-disabled > input:active ~ label:after { + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton.v-readonly > label, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton.v-readonly > .v-icon { + cursor: default; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton.v-readonly > label > .v-icon { + cursor: default; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton.v-readonly > input:active ~ label:after { + background: transparent; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton.v-readonly > input ~ label:after { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton > input:checked ~ label:after { + width: 8px; + height: 8px; + top: 7px; + left: 7px; + background: #197de1; +} + +:root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton > input ~ label:before, :root .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton > input ~ label:after { + border-radius: 50%; + content: ""; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox { + display: block; + margin: 11px 16px 0 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton:first-child, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox:first-child { + margin-top: 7px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-radiobutton:last-child, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large .v-checkbox:last-child { + margin-bottom: 7px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-large.v-has-width label { + white-space: normal; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-horizontal { + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-horizontal .v-radiobutton, .org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-horizontal .v-checkbox { + display: inline-block; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-horizontal.v-has-width { + white-space: normal; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-optiongroup-horizontal.v-has-width label { + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay .v-link { + cursor: pointer; + color: #197de1; + text-decoration: underline; + font-weight: inherit; + -webkit-transition: color 140ms; + -moz-transition: color 140ms; + transition: color 140ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-link:hover { + color: #4396ea; +} + +.org_osbee_vaadin_addons_designer_overlay .v-link.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-link a { + cursor: inherit; + color: inherit; + text-decoration: inherit; + -webkit-transition: inherit; + -moz-transition: inherit; + transition: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-link .v-icon { + cursor: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-link-small { + font-size: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-link-large { + font-size: 20px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window { + padding: 4px 4px; + border-radius: 4px; + background-color: white; + color: #474747; + -webkit-box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.1), 0 3px 5px 0 rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(0, 0, 0, 0.09098); + box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.1), 0 3px 5px 0 rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(0, 0, 0, 0.09098); + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1), 0 16px 80px -6px rgba(0, 0, 0, 0.15), 0 0 0 1px rgba(0, 0, 0, 0.09098); + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1), 0 16px 80px -6px rgba(0, 0, 0, 0.15), 0 0 0 1px rgba(0, 0, 0, 0.09098); + padding: 0; + min-width: 148px !important; + min-height: 37px !important; + white-space: nowrap; + overflow: hidden !important; + -webkit-transition: width 200ms, height 200ms, top 200ms, left 200ms; + -moz-transition: width 200ms, height 200ms, top 200ms, left 200ms; + transition: width 200ms, height 200ms, top 200ms, left 200ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window[class*="animate-in"] { + -webkit-animation: valo-animate-in-fade 140ms; + -moz-animation: valo-animate-in-fade 140ms; + animation: valo-animate-in-fade 140ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window[class*="animate-out"] { + -webkit-animation: valo-animate-out-scale-down-fade 100ms; + -moz-animation: valo-animate-out-scale-down-fade 100ms; + animation: valo-animate-out-scale-down-fade 100ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window.v-window-animate-in { + -webkit-transition: none; + -moz-transition: none; + transition: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-modalitycurtain { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-color: #222; + background-image: -webkit-radial-gradient(50% 50%, circle, #222, #0e0e0e); + background-image: radial-gradient( circle at 50% 50%, #222, #0e0e0e); + opacity: 0.72; + filter: alpha(opacity=72) ; + -webkit-animation: valo-animate-in-fade 400ms 100ms backwards; + -moz-animation: valo-animate-in-fade 400ms 100ms backwards; + animation: valo-animate-in-fade 400ms 100ms backwards; +} + +.v-op12 .org_osbee_vaadin_addons_designer_overlay .v-window-modalitycurtain { + -webkit-animation: none; + -moz-animation: none; + animation: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-draggingCurtain { + position: fixed !important; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-resizingCurtain + .v-window, .org_osbee_vaadin_addons_designer_overlay .v-window-draggingCurtain + .v-window { + -webkit-transition: none; + -moz-transition: none; + transition: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-outerheader { + cursor: move; + position: absolute; + z-index: 2; + top: 0; + left: 0; + right: 0; + -webkit-transform: translatez(0); + -moz-transform: translatez(0); + -ms-transform: translatez(0); + -o-transform: translatez(0); + transform: translatez(0); +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-outerheader:after { + content: ""; + position: absolute; + bottom: -1px; + right: 0; + left: 0; + height: 0; + border-top: 1px solid #dfdfdf; + border-color: rgba(197, 197, 197, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-header { + line-height: 36px; + padding-left: 12px; + margin-right: 74px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + color: #7e7e7e; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-restorebox-disabled ~ .v-window-closebox ~ .v-window-header, .org_osbee_vaadin_addons_designer_overlay .v-window-maximizebox-disabled ~ .v-window-closebox ~ .v-window-header { + margin-right: 37px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-restorebox-disabled ~ .v-window-closebox-disabled ~ .v-window-header, .org_osbee_vaadin_addons_designer_overlay .v-window-maximizebox-disabled ~ .v-window-closebox-disabled ~ .v-window-header { + margin-right: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-closebox, .org_osbee_vaadin_addons_designer_overlay .v-window-maximizebox, .org_osbee_vaadin_addons_designer_overlay .v-window-restorebox { + position: absolute; + z-index: 3; + top: 0; + right: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 33px; + height: 36px; + background-color: white; + line-height: 34px; + text-align: center; + cursor: pointer; + font-size: 21px; + color: #999999; + -webkit-transition: color 140ms; + -moz-transition: color 140ms; + transition: color 140ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-closebox:focus, .org_osbee_vaadin_addons_designer_overlay .v-window-maximizebox:focus, .org_osbee_vaadin_addons_designer_overlay .v-window-restorebox:focus { + outline: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-closebox:hover, .org_osbee_vaadin_addons_designer_overlay .v-window-maximizebox:hover, .org_osbee_vaadin_addons_designer_overlay .v-window-restorebox:hover { + opacity: 1; + filter: none ; + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-closebox:active, .org_osbee_vaadin_addons_designer_overlay .v-window-maximizebox:active, .org_osbee_vaadin_addons_designer_overlay .v-window-restorebox:active { + color: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-closebox { + padding-right: 4px; + border-radius: 0 4px 0 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-closebox:before { + content: "\00d7"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-maximizebox, .org_osbee_vaadin_addons_designer_overlay .v-window-restorebox { + right: 33px; + padding-left: 4px; + border-radius: 0 0 0 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-maximizebox + .v-window-closebox, .org_osbee_vaadin_addons_designer_overlay .v-window-restorebox + .v-window-closebox { + border-bottom-left-radius: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-closebox-disabled, .org_osbee_vaadin_addons_designer_overlay .v-window-resizebox-disabled, .org_osbee_vaadin_addons_designer_overlay .v-window-restorebox-disabled, .org_osbee_vaadin_addons_designer_overlay .v-window-maximizebox-disabled { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-closebox-disabled + .v-window-closebox, .org_osbee_vaadin_addons_designer_overlay .v-window-resizebox-disabled + .v-window-closebox, .org_osbee_vaadin_addons_designer_overlay .v-window-restorebox-disabled + .v-window-closebox, .org_osbee_vaadin_addons_designer_overlay .v-window-maximizebox-disabled + .v-window-closebox { + width: 37px; + padding-right: 0; + border-bottom-left-radius: 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-maximizebox:before { + content: "+"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-restorebox:before { + content: "\2013"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window > .popupContent, .org_osbee_vaadin_addons_designer_overlay .v-window-wrap, .org_osbee_vaadin_addons_designer_overlay .v-window-contents, .org_osbee_vaadin_addons_designer_overlay .v-window-contents > .v-scrollable { + height: 100%; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-contents { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + border-radius: 4px; + margin-top: 0 !important; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-contents > .v-scrollable { + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-contents > .v-scrollable > .v-margin-top { + padding-top: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-contents > .v-scrollable > .v-margin-right { + padding-right: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-contents > .v-scrollable > .v-margin-bottom { + padding-bottom: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-contents > .v-scrollable > .v-margin-left { + padding-left: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-contents > .v-scrollable > .v-formlayout [class*="margin-top"] > tbody > [class*="firstrow"] > td { + padding-top: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-contents > .v-scrollable > .v-formlayout [class*="margin-bottom"] > tbody > [class*="lastrow"] > td { + padding-bottom: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-contents > .v-scrollable > .v-formlayout [class*="margin-left"] > tbody > [class*="row"] > [class*="captioncell"] { + padding-left: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-contents > .v-scrollable > .v-formlayout [class*="margin-left"] > tbody > [class*="row"] > [class*="contentcell"] > .v-label-h2, .org_osbee_vaadin_addons_designer_overlay .v-window-contents > .v-scrollable > .v-formlayout [class*="margin-left"] > tbody > [class*="row"] > [class*="contentcell"] > .v-label-h3, .org_osbee_vaadin_addons_designer_overlay .v-window-contents > .v-scrollable > .v-formlayout [class*="margin-left"] > tbody > [class*="row"] > [class*="contentcell"] > .v-label-h4 { + left: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-contents > .v-scrollable > .v-formlayout [class*="margin-right"] > tbody > [class*="row"] > [class*="contentcell"] { + padding-right: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-contents > .v-scrollable > .v-formlayout [class*="margin-right"] > tbody > [class*="row"] > [class*="contentcell"] > .v-label-h2, .org_osbee_vaadin_addons_designer_overlay .v-window-contents > .v-scrollable > .v-formlayout [class*="margin-right"] > tbody > [class*="row"] > [class*="contentcell"] > .v-label-h3, .org_osbee_vaadin_addons_designer_overlay .v-window-contents > .v-scrollable > .v-formlayout [class*="margin-right"] > tbody > [class*="row"] > [class*="contentcell"] > .v-label-h4 { + right: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-contents > .v-scrollable:focus { + outline: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-contents > .v-scrollable:before { + content: ""; + position: absolute; + z-index: 2; + top: 0; + height: 0; + border-top: 1px solid white; + left: 0; + right: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-contents > .v-scrollable .v-panel-captionwrap:after { + border-color: #dfdfdf; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-contents > .v-scrollable .v-panel-content:before { + border-color: white; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-footer { + height: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-resizebox { + position: absolute; + z-index: 1000; + right: 0; + bottom: 0; + width: 19px; + height: 19px; + cursor: nwse-resize; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-window-resizebox { + background: #000; + filter: alpha(opacity=0.1); +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-window-resizebox, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-window-resizebox { + cursor: se-resize; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-modalitycurtain:active ~ .v-window { + -webkit-animation: none; + -moz-animation: none; + animation: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-top-toolbar > .v-widget, .org_osbee_vaadin_addons_designer_overlay .v-window-bottom-toolbar > .v-widget { + vertical-align: top; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-top-toolbar .v-label, .org_osbee_vaadin_addons_designer_overlay .v-window-bottom-toolbar .v-label { + line-height: 36px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-top-toolbar .v-spacing, .org_osbee_vaadin_addons_designer_overlay .v-window-bottom-toolbar .v-spacing { + width: 6px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-top-toolbar.v-layout { + padding: 7px 12px; + position: relative; + z-index: 2; + border-top: 1px solid #dfdfdf; + border-bottom: 1px solid #dfdfdf; + background-color: #fafafa; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-top-toolbar.v-menubar { + margin: 12px 12px 6px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-top-toolbar.v-menubar-borderless { + padding-left: 6px; + padding-right: 6px; + margin: 5px 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-window-bottom-toolbar.v-layout { + padding: 7px 12px; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #f0f0f0 0, #fafafa 4px); + background-image: linear-gradient(to bottom,#f0f0f0 0, #fafafa 4px); + border-top: 1px solid #dfdfdf; + border-radius: 0 0 4px 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-margin-left.v-margin-right.v-margin-top .v-window-top-toolbar.v-layout { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + margin: -12px -12px 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-margin-left.v-margin-right.v-margin-top .v-window-top-toolbar.v-menubar { + margin: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-margin-left.v-margin-right.v-margin-top .v-window-top-toolbar.v-menubar-borderless { + margin: -6px -6px 0; + padding: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-margin-left.v-margin-right.v-margin-bottom .v-window-bottom-toolbar.v-layout { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + margin: 0 -12px -12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tree { + position: relative; + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tree:focus { + outline: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tree-node:before { + content: ""; + position: absolute; + display: inline-block; + z-index: 3; + width: 1.9em; + height: 28px; + cursor: pointer; + background: red; + opacity: 0; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-tree-node:before { + position: static; + margin-left: -1.9em; + vertical-align: top; + content: "\f0da"; + font-family: ThemeIcons; + text-align: center; + background: transparent; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-tree-node { + padding-left: 1.9em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tree-node-caption { + height: 28px; + line-height: 27px; + overflow: hidden; + white-space: nowrap; + vertical-align: top; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tree-node-caption > div { + display: inline-block; + width: 100%; + position: relative; + z-index: 2; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tree-node-caption > div:before { + content: "\f0da"; + font-family: ThemeIcons; + display: inline-block; + width: 0.5em; + text-align: center; + margin: 0 0.6em 0 0.8em; + -webkit-transition: all 100ms; + -moz-transition: all 100ms; + transition: all 100ms; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-tree-node-caption > div:before { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tree-node-caption span { + padding-right: 28px; + cursor: pointer; + display: inline-block; + width: 100%; +} + +.v-ie .org_osbee_vaadin_addons_designer_overlay .v-tree-node-caption span { + width: auto; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tree-node-caption .v-icon { + padding-right: 0; + width: auto; + min-width: 1em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tree-node-caption:after { + content: ""; + display: block; + vertical-align: top; + position: absolute; + z-index: 1; + left: 0; + margin-top: -28px; + width: 100%; + height: 28px; + border-radius: 4px; + opacity: 0; + -webkit-transition: opacity 120ms; + -moz-transition: opacity 120ms; + transition: opacity 120ms; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-tree-node-caption:after { + content: none; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-tree-node-caption { + display: inline-block; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tree-node-expanded > .v-tree-node-caption > div:before { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + content: "\f0da"; + font-family: ThemeIcons; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-tree-node-expanded:before { + content: "\f0d7"; + font-family: ThemeIcons; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tree-node-leaf:before, .org_osbee_vaadin_addons_designer_overlay .v-tree-node-leaf > .v-tree-node-caption > div:before { + visibility: hidden; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tree-node-focused:after { + opacity: 1; + border: 1px solid #197de1; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-tree-node-focused { + outline: 1px dotted #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tree-node-selected { + color: #ecf2f8; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.05); +} + +.org_osbee_vaadin_addons_designer_overlay .v-tree-node-selected:after { + opacity: 1; + background-color: #197de1; + background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%); + border: none; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-tree-node-selected { + background-color: #197de1; + background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%); +} + +.org_osbee_vaadin_addons_designer_overlay .v-tree-node-children { + padding-left: 19px; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-tree-node-children { + padding-left: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tree-node-drag-top:before, .org_osbee_vaadin_addons_designer_overlay .v-tree-node-drag-bottom:after, .org_osbee_vaadin_addons_designer_overlay .v-tree-node-drag-bottom.v-tree-node-dragfolder.v-tree-node-expanded > .v-tree-node-children:before { + content: "\2022"; + display: block; + position: absolute; + height: 2px; + width: 100%; + background: #197de1; + font-size: 32px; + line-height: 2px; + color: #197de1; + text-indent: -4px; + text-shadow: 0 0 1px #fafafa, 0 0 1px #fafafa; + opacity: 1; + visibility: visible; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tree-node-drag-bottom.v-tree-node-dragfolder.v-tree-node-expanded:after { + content: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tree-node-caption-drag-center { + -webkit-box-shadow: 0 0 0 2px #197de1; + box-shadow: 0 0 0 2px #197de1; + position: relative; + border-radius: 4px; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-tree-node-caption-drag-center { + outline: 2px solid #197de1; +} + +.v-ff .org_osbee_vaadin_addons_designer_overlay .v-tree-node-drag-top:before, .v-ff .org_osbee_vaadin_addons_designer_overlay .v-tree-node-drag-bottom:after { + line-height: 1px; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-tree-node-drag-top:before, .v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-tree-node-drag-bottom:after { + line-height: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table { + position: relative; + background: #fafafa; + color: #464646; + overflow: hidden; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-header table, .org_osbee_vaadin_addons_designer_overlay .v-table-footer table, .org_osbee_vaadin_addons_designer_overlay .v-table-table { + -webkit-box-shadow: 0 0 0 1px #d4d4d4; + box-shadow: 0 0 0 1px #d4d4d4; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-table-header table, .v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-table-footer table, .v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-table-table { + outline: 1px solid #d4d4d4; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-header-wrap, .org_osbee_vaadin_addons_designer_overlay .v-table-footer-wrap, .org_osbee_vaadin_addons_designer_overlay .v-table-header-drag { + border: 1px solid #d4d4d4; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + white-space: nowrap; + font-size: 14px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-header-wrap { + position: relative; + border-bottom: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-footer-wrap { + border-top: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-footer td { + border-left: 1px solid #d4d4d4; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-footer-container, .org_osbee_vaadin_addons_designer_overlay .v-table-caption-container { + overflow: hidden; + line-height: 1; + min-height: 37px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-table-footer-container, .v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-table-caption-container { + min-height: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-footer-container { + padding: 11px 12px 12px; + float: right; +} + +.org_osbee_vaadin_addons_designer_overlay [class^="v-table-header-cell"] { + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-caption-container, .org_osbee_vaadin_addons_designer_overlay .v-table-header-drag { + padding: 12px 12px 11px; + border-left: 1px solid #d4d4d4; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-caption-container-align-right { + padding-right: 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-resizer { + height: 37px; + width: 8px; + cursor: e-resize; + cursor: col-resize; + position: relative; + right: -4px; + z-index: 1; + margin-left: -8px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-cell-content { + border-left: 1px solid #d4d4d4; + overflow: hidden; + height: 37px; + vertical-align: middle; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-cell-content:first-child { + border-left: none; + padding-left: 1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-header td:first-child .v-table-caption-container, .org_osbee_vaadin_addons_designer_overlay .v-table-footer td:first-child { + border-left-color: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-cell-wrapper { + line-height: 1; + padding: 0 12px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + margin-right: 0 !important; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-cell-wrapper > .v-widget { + margin: 3px -6px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-cell-wrapper > .v-widget.v-label, .org_osbee_vaadin_addons_designer_overlay .v-table-cell-wrapper > .v-widget.v-checkbox, .org_osbee_vaadin_addons_designer_overlay .v-table-cell-wrapper > .v-widget.v-select-optiongroup { + margin: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-cell-wrapper > .v-widget.v-progressbar { + margin-left: 0; + margin-right: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-body { + border: 1px solid #d4d4d4; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-table { + background-color: white; + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-table td { + border-top: 1px solid #d4d4d4; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-table tr:first-child > td { + border-top: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-row { + background-color: white; + cursor: pointer; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-row-odd { + background-color: #f5f5f5; + cursor: pointer; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-body-noselection .v-table-row, .org_osbee_vaadin_addons_designer_overlay .v-table-body-noselection .v-table-row-odd { + cursor: default; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table [class*="-row"].v-selected { + background-color: #197de1; + background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%); + background-origin: border-box; + color: #ecf2f8; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.05); +} + +.org_osbee_vaadin_addons_designer_overlay .v-table [class*="-row"].v-selected + .v-selected { + background: #166ed5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table [class*="-row"].v-selected + .v-selected td { + border-top-color: #166ed5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table [class*="-row"].v-selected .v-table-cell-content { + border-color: transparent; + border-left-color: #1d69b4; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table [class*="-row"].v-selected .v-table-cell-content:first-child { + border-left-color: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-header-cell-asc .v-table-sort-indicator, .org_osbee_vaadin_addons_designer_overlay .v-table-header-cell-desc .v-table-sort-indicator { + background: transparent; + width: 19px; + height: 37px; + line-height: 37px; + margin-left: -19px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-header-cell-asc .v-table-sort-indicator:before, .org_osbee_vaadin_addons_designer_overlay .v-table-header-cell-desc .v-table-sort-indicator:before { + font-style: normal; + font-weight: normal; + display: inline-block; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-header-cell-asc .v-table-sort-indicator:before { + content: "\f0de"; + font-family: ThemeIcons; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-header-cell-desc .v-table-sort-indicator:before { + content: "\f0dd"; + font-family: ThemeIcons; +} + +.org_osbee_vaadin_addons_designer_overlay [class*="rowheader"] span.v-icon { + min-width: 1em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-focus { + outline: 1px solid #197de1; + outline-offset: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-drag-element.v-table-focus, .org_osbee_vaadin_addons_designer_overlay .v-drag-element .v-table-focus { + outline: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-header-drag { + position: absolute; + opacity: 0.9; + filter: alpha(opacity=90) ; + margin-top: -19px; + z-index: 30000; + line-height: 1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-focus-slot-right { + border-right: 3px solid #197de1; + right: -2px; + margin-left: -11px !important; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-focus-slot-left { + float: left; + border-left: 3px solid #197de1; + left: -1px; + right: auto; + margin-left: 0 !important; + margin-right: -11px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-column-selector { + height: 37px; + padding: 0 16px; + color: #191919; + font-weight: 400; + + + border-radius: 4px; + border: 1px solid #c5c5c5; + border-top-color: #c5c5c5; + border-bottom-color: #bcbcbc; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + -webkit-box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7; + box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); + position: absolute; + z-index: 2; + top: 0; + right: 0; + width: 19px; + height: 19px; + line-height: 19px; + padding: 0; + border-top-width: 0; + border-right-width: 0; + border-radius: 0 0 0 4px; + cursor: pointer; + text-align: center; + opacity: 0; + filter: alpha(opacity=0) ; + -webkit-transition: opacity 200ms 2s; + -moz-transition: opacity 200ms 2s; + transition: opacity 200ms 2s; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-column-selector:after { + border: inherit; + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-column-selector:hover:after { + background-color: rgba(186, 186, 186, 0.1); +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-column-selector:focus:after { + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-column-selector:active:after { + background-color: rgba(125, 125, 125, 0.2); +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-column-selector:after { + content: ""; + position: absolute; + border: none; + top: 0; + right: 0; + bottom: 0; + left: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-column-selector:active:after { + background-color: rgba(125, 125, 125, 0.2); +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-column-selector:before { + font-family: ThemeIcons; + content: "\f013"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-header-wrap:hover .v-table-column-selector { + opacity: 1; + filter: none ; + -webkit-transition-delay: 200ms; + -moz-transition-delay: 200ms; + transition-delay: 200ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-on:before, .org_osbee_vaadin_addons_designer_overlay .v-off:before { + content: "\f00c"; + font-family: ThemeIcons; + font-size: 0.9em; + margin-right: 6px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-on div, .org_osbee_vaadin_addons_designer_overlay .v-off div { + display: inline; +} + +.org_osbee_vaadin_addons_designer_overlay .v-off:before { + visibility: hidden; +} + +.org_osbee_vaadin_addons_designer_overlay tbody.v-drag-element { + display: block; + overflow: visible; + -webkit-box-shadow: none; + box-shadow: none; + background: transparent; + opacity: 1; + filter: none ; +} + +.org_osbee_vaadin_addons_designer_overlay tbody.v-drag-element tr { + display: block; + + + -webkit-box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); + border-radius: 4px; + overflow: hidden; + opacity: 0.5; + filter: alpha(opacity=50) ; + background: white; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-body { + position: relative; + z-index: 1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-scrollposition { + position: absolute; + top: 50%; + width: 100%; + height: 37px; + line-height: 37px; + margin: -19px 0 0 !important; + text-align: center; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-drag { + overflow: visible; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-drag .v-table-body { + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + border-color: #197de1; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-table-drag .v-table-body { + border-color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-drag .v-table-body .v-table-focus { + outline: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-row-drag-middle .v-table-cell-content { + background-color: #d1e5f9; + color: #214060; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-row-drag-bottom td.v-table-cell-content { + border-bottom: 2px solid #197de1; + height: 35px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-row-drag-bottom .v-table-cell-wrapper { + margin-bottom: -2px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-row-drag-top td.v-table-cell-content { + border-top: 2px solid #197de1; + height: 36px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-row-drag-top .v-table-cell-wrapper { + margin-top: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-no-stripes .v-table-row, .org_osbee_vaadin_addons_designer_overlay .v-table-no-stripes .v-table-row-odd { + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-no-vertical-lines .v-table-cell-content { + border-left: none; + padding-left: 1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-no-vertical-lines.v-treetable .v-table-cell-content { + padding-left: 13px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-no-horizontal-lines .v-table-cell-content { + border-top: none; + border-bottom: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-no-horizontal-lines .v-table-row-drag-top .v-table-cell-content, .org_osbee_vaadin_addons_designer_overlay .v-table-no-horizontal-lines .v-table-row-drag-bottom .v-table-cell-content { + height: 36px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-no-header .v-table-header-wrap { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-borderless .v-table-header-wrap, .org_osbee_vaadin_addons_designer_overlay .v-table-borderless .v-table-footer-wrap, .org_osbee_vaadin_addons_designer_overlay .v-table-borderless .v-table-header-drag, .org_osbee_vaadin_addons_designer_overlay .v-table-borderless .v-table-body { + border: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-borderless .v-table-header-wrap { + border-bottom: 1px solid #d9d9d9; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-borderless .v-table-footer-wrap { + border-top: 1px solid #d9d9d9; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-compact .v-table-header-wrap, .org_osbee_vaadin_addons_designer_overlay .v-table-compact .v-table-footer-wrap, .org_osbee_vaadin_addons_designer_overlay .v-table-compact .v-table-header-drag, .org_osbee_vaadin_addons_designer_overlay .v-table-small .v-table-header-wrap, .org_osbee_vaadin_addons_designer_overlay .v-table-small .v-table-footer-wrap, .org_osbee_vaadin_addons_designer_overlay .v-table-small .v-table-header-drag { + font-size: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-compact .v-table-footer-container, .org_osbee_vaadin_addons_designer_overlay .v-table-small .v-table-footer-container { + padding: 8px 7px 9px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-compact .v-table-caption-container, .org_osbee_vaadin_addons_designer_overlay .v-table-compact .v-table-header-drag, .org_osbee_vaadin_addons_designer_overlay .v-table-small .v-table-caption-container, .org_osbee_vaadin_addons_designer_overlay .v-table-small .v-table-header-drag { + padding-top: 9px; + padding-bottom: 8px; + padding-left: 6px; + padding-right: 6px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-compact .v-table-caption-container-align-right, .org_osbee_vaadin_addons_designer_overlay .v-table-small .v-table-caption-container-align-right { + padding-right: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-compact .v-table-resizer, .org_osbee_vaadin_addons_designer_overlay .v-table-small .v-table-resizer { + height: 31px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-compact .v-table-cell-content, .org_osbee_vaadin_addons_designer_overlay .v-table-small .v-table-cell-content { + height: 31px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-compact .v-table-cell-wrapper, .org_osbee_vaadin_addons_designer_overlay .v-table-small .v-table-cell-wrapper { + padding-left: 6px; + padding-right: 6px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-compact .v-table-cell-wrapper > .v-widget, .org_osbee_vaadin_addons_designer_overlay .v-table-small .v-table-cell-wrapper > .v-widget { + margin: 2px -3px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-compact .v-table-cell-wrapper > .v-widget.v-label, .org_osbee_vaadin_addons_designer_overlay .v-table-compact .v-table-cell-wrapper > .v-widget.v-checkbox, .org_osbee_vaadin_addons_designer_overlay .v-table-compact .v-table-cell-wrapper > .v-widget.v-select-optiongroup, .org_osbee_vaadin_addons_designer_overlay .v-table-small .v-table-cell-wrapper > .v-widget.v-label, .org_osbee_vaadin_addons_designer_overlay .v-table-small .v-table-cell-wrapper > .v-widget.v-checkbox, .org_osbee_vaadin_addons_designer_overlay .v-table-small .v-table-cell-wrapper > .v-widget.v-select-optiongroup { + margin: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-compact .v-table-cell-wrapper > .v-widget.v-progressbar, .org_osbee_vaadin_addons_designer_overlay .v-table-small .v-table-cell-wrapper > .v-widget.v-progressbar { + margin-left: 0; + margin-right: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-compact .v-table-header-cell-asc .v-table-sort-indicator, .org_osbee_vaadin_addons_designer_overlay .v-table-compact .v-table-header-cell-desc .v-table-sort-indicator, .org_osbee_vaadin_addons_designer_overlay .v-table-small .v-table-header-cell-asc .v-table-sort-indicator, .org_osbee_vaadin_addons_designer_overlay .v-table-small .v-table-header-cell-desc .v-table-sort-indicator { + height: 31px; + line-height: 31px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-compact .v-table-header-drag, .org_osbee_vaadin_addons_designer_overlay .v-table-small .v-table-header-drag { + margin-top: -16px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-compact.v-treetable .v-table-cell-wrapper, .org_osbee_vaadin_addons_designer_overlay .v-table-small.v-treetable .v-table-cell-wrapper { + padding-left: 0; + padding-right: 0; + min-height: 16px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-compact.v-treetable .v-table-cell-content, .org_osbee_vaadin_addons_designer_overlay .v-table-small.v-treetable .v-table-cell-content { + padding-left: 6px; + padding-right: 6px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-compact.v-treetable .v-table-cell-content:first-child, .org_osbee_vaadin_addons_designer_overlay .v-table-small.v-treetable .v-table-cell-content:first-child { + padding-left: 7px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-compact.v-treetable .v-table-footer-container, .org_osbee_vaadin_addons_designer_overlay .v-table-small.v-treetable .v-table-footer-container { + padding-left: 6px; + padding-right: 6px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-compact .v-table-row-drag-top .v-table-cell-content, .org_osbee_vaadin_addons_designer_overlay .v-table-compact .v-table-row-drag-bottom .v-table-cell-content, .org_osbee_vaadin_addons_designer_overlay .v-table-small .v-table-row-drag-top .v-table-cell-content, .org_osbee_vaadin_addons_designer_overlay .v-table-small .v-table-row-drag-bottom .v-table-cell-content { + height: 30px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-small { + font-size: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-table-small.v-treetable .v-table-cell-wrapper { + min-height: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-treetable [class*="caption-container"], .org_osbee_vaadin_addons_designer_overlay .v-treetable [class*="footer-container"], .org_osbee_vaadin_addons_designer_overlay .v-treetable [class*="cell-wrapper"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + padding-left: 0; + padding-right: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-treetable [class*="caption-container"], .org_osbee_vaadin_addons_designer_overlay .v-treetable [class*="footer-container"] { + min-height: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-treetable [class*="cell-wrapper"] { + min-height: 16px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-treetable [class*="caption-container"] { + padding-left: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-treetable [class*="caption-container-align-right"] { + padding-left: 20px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-treetable [class*="footer-container"] { + padding-right: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-treetable [class*="cell-content"] { + padding-left: 12px; + padding-right: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-treetable [class*="cell-content"]:first-child { + padding-left: 13px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-treetable-treespacer { + display: inline-block; + position: absolute; + width: 19px !important; + margin-left: -25px; + text-align: center; + cursor: pointer; +} + +.org_osbee_vaadin_addons_designer_overlay .v-treetable-node-closed:before { + content: "\f0da"; + font-family: ThemeIcons; +} + +.org_osbee_vaadin_addons_designer_overlay .v-treetable-node-open:before { + content: "\f0d7"; + font-family: ThemeIcons; +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-horizontal > div > .v-splitpanel-hsplitter { + width: 1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-horizontal > div > .v-splitpanel-hsplitter:after { + left: -6px; + right: -6px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-horizontal > div > .v-splitpanel-hsplitter div:before { + height: 37px; + padding: 0 16px; + color: #191919; + font-weight: 400; + + + border-radius: 4px; + border: 1px solid #c5c5c5; + border-top-color: #c5c5c5; + border-bottom-color: #bcbcbc; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + -webkit-box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, none; + box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, none; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); + height: auto; + padding: 0; + border-radius: 0; + background-color: #fafafa; + background-image: -webkit-linear-gradient(left, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to right,#fafafa 2%, #efefef 98%); +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-horizontal > div > .v-splitpanel-hsplitter div:before:after { + border: inherit; + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-horizontal > div > .v-splitpanel-hsplitter div:before:hover:after { + background-color: rgba(186, 186, 186, 0.1); +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-horizontal > div > .v-splitpanel-hsplitter div:before:focus:after { + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-horizontal > div > .v-splitpanel-hsplitter div:before:active:after { + background-color: rgba(125, 125, 125, 0.2); +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-horizontal > div > .v-splitpanel-second-container { + margin-left: 1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-vertical > div > .v-splitpanel-vsplitter { + height: 1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-vertical > div > .v-splitpanel-vsplitter:after { + top: -6px; + bottom: -6px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-vertical > div > .v-splitpanel-vsplitter div:before { + height: 37px; + padding: 0 16px; + color: #191919; + font-weight: 400; + + + border-radius: 4px; + border: 1px solid #c5c5c5; + border-top-color: #c5c5c5; + border-bottom-color: #bcbcbc; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + -webkit-box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, none; + box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, none; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); + height: auto; + padding: 0; + border-radius: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-vertical > div > .v-splitpanel-vsplitter div:before:after { + border: inherit; + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-vertical > div > .v-splitpanel-vsplitter div:before:hover:after { + background-color: rgba(186, 186, 186, 0.1); +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-vertical > div > .v-splitpanel-vsplitter div:before:focus:after { + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-vertical > div > .v-splitpanel-vsplitter div:before:active:after { + background-color: rgba(125, 125, 125, 0.2); +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-horizontal.large > div > .v-splitpanel-hsplitter { + width: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-horizontal.large > div > .v-splitpanel-hsplitter:after { + left: 0px; + right: 0px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-horizontal.large > div > .v-splitpanel-hsplitter div:before { + height: 37px; + padding: 0 16px; + color: #191919; + font-weight: 400; + + + border-radius: 4px; + border: 1px solid #c5c5c5; + border-top-color: #c5c5c5; + border-bottom-color: #bcbcbc; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + -webkit-box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, none; + box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, none; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); + height: auto; + padding: 0; + border-radius: 0; + background-color: #fafafa; + background-image: -webkit-linear-gradient(left, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to right,#fafafa 2%, #efefef 98%); +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-horizontal.large > div > .v-splitpanel-hsplitter div:before:after { + border: inherit; + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-horizontal.large > div > .v-splitpanel-hsplitter div:before:hover:after { + background-color: rgba(186, 186, 186, 0.1); +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-horizontal.large > div > .v-splitpanel-hsplitter div:before:focus:after { + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-horizontal.large > div > .v-splitpanel-hsplitter div:before:active:after { + background-color: rgba(125, 125, 125, 0.2); +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-horizontal.large > div > .v-splitpanel-hsplitter div:after { + content: ""; + border: 1px solid #dadada; + border-top-color: #bababa; + border-left-color: #bababa; + position: absolute; + top: 50%; + left: 50%; + width: 0; + height: 37px; + margin-left: -1px; + margin-top: -19px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-horizontal.large > div > .v-splitpanel-second-container { + margin-left: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-vertical.large > div > .v-splitpanel-vsplitter { + height: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-vertical.large > div > .v-splitpanel-vsplitter:after { + top: 0px; + bottom: 0px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-vertical.large > div > .v-splitpanel-vsplitter div:before { + height: 37px; + padding: 0 16px; + color: #191919; + font-weight: 400; + + + border-radius: 4px; + border: 1px solid #c5c5c5; + border-top-color: #c5c5c5; + border-bottom-color: #bcbcbc; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + -webkit-box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, none; + box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, none; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); + height: auto; + padding: 0; + border-radius: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-vertical.large > div > .v-splitpanel-vsplitter div:before:after { + border: inherit; + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-vertical.large > div > .v-splitpanel-vsplitter div:before:hover:after { + background-color: rgba(186, 186, 186, 0.1); +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-vertical.large > div > .v-splitpanel-vsplitter div:before:focus:after { + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-vertical.large > div > .v-splitpanel-vsplitter div:before:active:after { + background-color: rgba(125, 125, 125, 0.2); +} + +.org_osbee_vaadin_addons_designer_overlay .v-splitpanel-vertical.large > div > .v-splitpanel-vsplitter div:after { + content: ""; + border: 1px solid #dadada; + border-top-color: #bababa; + border-left-color: #bababa; + position: absolute; + top: 50%; + left: 50%; + width: 37px; + height: 0; + margin-left: -19px; + margin-top: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-progressbar-wrapper { + border-radius: 4px; + height: 9px; + background-color: #d4d4d4; + background-image: -webkit-linear-gradient(bottom, #d7d7d7 2%, #c7c7c7 98%); + background-image: linear-gradient(to top,#d7d7d7 2%, #c7c7c7 98%); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + min-width: 74px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-progressbar-indicator { + border-radius: 4px; + height: inherit; + background-color: #197de1; + background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%); + + + border: 1px solid #1362b1; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + max-width: 100%; + min-width: 8px; + -webkit-transition: width 160ms; + -moz-transition: width 160ms; + transition: width 160ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-progressbar-point .v-progressbar-indicator { + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; + border: none; + text-align: right; + overflow: hidden; +} + +.org_osbee_vaadin_addons_designer_overlay .v-progressbar-point .v-progressbar-indicator:before { + content: ""; + display: inline-block; + border-radius: 4px; + height: inherit; + background-color: #197de1; + background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%); + + + border: 1px solid #1362b1; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + max-width: 100%; + width: 9px; + vertical-align: top; +} + +.org_osbee_vaadin_addons_designer_overlay .v-progressbar-indeterminate { + height: 24px !important; + width: 24px !important; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + border: 2px solid rgba(25, 125, 225, 0.2); + border-top-color: #197de1; + border-right-color: #197de1; + border-radius: 100%; + -webkit-animation: v-rotate-360 500ms infinite linear; + -moz-animation: v-rotate-360 500ms infinite linear; + animation: v-rotate-360 500ms infinite linear; + pointer-events: none; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-progressbar-indeterminate, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-progressbar-indeterminate { + border: none; + border-radius: 4px; + background: #fff url(../valo/shared/img/spinner.gif) no-repeat 50% 50%; + background-size: 80%; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-progressbar-indeterminate { + min-width: 30px; + min-height: 30px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-progressbar-indeterminate .v-progressbar-wrapper { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider { + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider:focus { + outline: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider:focus .v-slider-handle:after { + opacity: 1; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-slider:focus .v-slider-handle:after { + visibility: visible; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider-base { + border-radius: 4px; + height: 9px; + background-color: #d4d4d4; + background-image: -webkit-linear-gradient(bottom, #d7d7d7 2%, #c7c7c7 98%); + background-image: linear-gradient(to top,#d7d7d7 2%, #c7c7c7 98%); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + min-width: 74px; + height: 6px; + margin: 16px 11px; + white-space: nowrap; + overflow: hidden; + +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider-base:before { + content: ""; + position: absolute; + top: 16px; + bottom: 16px; + left: 11px; + width: 8px; + border-radius: 4px; + border-left: 1px solid #1362b1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider-base:after { + border-radius: 4px; + height: inherit; + background-color: #197de1; + background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%); + + + border: 1px solid #1362b1; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + max-width: 100%; + content: ""; + display: inline-block; + margin-left: -100%; + width: 100%; + vertical-align: top; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-slider-base:after { + position: relative; + left: -11px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-has-width > .v-slider-base { + min-width: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider-handle { + margin-top: -16px; + width: 0.1px; + display: inline-block; + vertical-align: top; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider-handle:before { + height: 37px; + padding: 0 16px; + color: #191919; + font-weight: 400; + + + border-radius: 4px; + border: 1px solid #c5c5c5; + border-top-color: #c5c5c5; + border-bottom-color: #bcbcbc; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + -webkit-box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7, 0 2px 3px rgba(0, 0, 0, 0.05); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider-handle:before:after { + border: inherit; + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider-handle:before:hover:after { + background-color: rgba(186, 186, 186, 0.1); +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider-handle:before:focus:after { + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider-handle:before:active:after { + background-color: rgba(125, 125, 125, 0.2); +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider-handle:after { + border: 1px solid #c5c5c5; + border-color: #197de1; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + opacity: 0; + -webkit-transition: opacity 200ms; + -moz-transition: opacity 200ms; + transition: opacity 200ms; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-slider-handle:after { + visibility: hidden; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider-handle:before, .org_osbee_vaadin_addons_designer_overlay .v-slider-handle:after { + content: ""; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; + width: 22px; + height: 22px; + border-radius: 11px; + position: absolute; + z-index: 1; + margin-top: 8px; + margin-left: -11px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider-feedback { + background-color: #323232; + background-color: rgba(50, 50, 50, 0.9); + -webkit-box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2); + color: white; + padding: 5px 9px; + border-radius: 3px; + max-width: 35em; + overflow: hidden !important; + font-size: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider-vertical { + padding: 11px 0; + height: 96px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider-vertical .v-slider-base { + background-color: #d4d4d4; + background-image: -webkit-linear-gradient(right, #d7d7d7 2%, #c7c7c7 98%); + background-image: linear-gradient(to left,#d7d7d7 2%, #c7c7c7 98%); + width: 6px; + height: 100% !important; + min-width: 0; + margin: 0 16px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider-vertical .v-slider-base:before { + top: auto; + bottom: 11px; + left: 16px; + right: 16px; + width: auto; + height: 8px; + border-left: none; + border-bottom: 1px solid #1362b1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider-vertical .v-slider-base:after { + height: 101%; + margin-left: 0; + background-color: #197de1; + background-image: -webkit-linear-gradient(left, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to right,#1b87e3 2%, #166ed5 98%); +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-slider-vertical .v-slider-base:after { + top: 11px; + left: 0; + height: 130%; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider-vertical .v-slider-handle { + width: 0; + height: 0.1px; + width: 37px; + display: block; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider-vertical .v-slider-handle:before, .org_osbee_vaadin_addons_designer_overlay .v-slider-vertical .v-slider-handle:after { + width: 22px; + height: 22px; + margin-top: -11px; + margin-left: -8px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-slider-no-indicator .v-slider-base:before, .org_osbee_vaadin_addons_designer_overlay .v-slider-no-indicator .v-slider-base:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet:not(.v-has-width) { + width: auto !important; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-spacertd { + display: none !important; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-tabcontainer { + position: relative; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-tabcontainer:before { + content: ""; + position: absolute; + height: 0; + border-top: 1px solid #dfdfdf; + bottom: 0; + left: 0; + right: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-tabcontainer .v-tabsheet-tabs { + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-tabitemcell { + vertical-align: bottom; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-tabitemcell .v-tabsheet-tabitem { + line-height: 0; + overflow: hidden; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-tabitemcell .v-caption { + margin-left: 19px; + padding: 0 4px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer; + text-align: center; + line-height: 37px; + font-size: 15px; + font-weight: 300; + color: #696969; + width: auto !important; + overflow: hidden; + text-overflow: ellipsis; + border-bottom: 2px solid transparent; + position: relative; + -webkit-transition: border-bottom 200ms, color 200ms; + -moz-transition: border-bottom 200ms, color 200ms; + transition: border-bottom 200ms, color 200ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-tabitemcell .v-caption .v-captiontext { + display: inline; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-tabitemcell .v-caption .v-icon + .v-captiontext { + margin-left: 9px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-tabitemcell .v-caption:hover { + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-tabitemcell .v-caption.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; + cursor: default; + color: inherit !important; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-tabitemcell:first-child .v-caption, .org_osbee_vaadin_addons_designer_overlay .v-tabsheet-tabitemcell[aria-hidden="true"] + td .v-caption { + margin-left: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-tabitemcell:focus { + outline: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-tabitemcell:focus .v-caption { + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-tabitemcell .v-tabsheet-tabitem-selected .v-caption.v-caption { + border-bottom-color: #197de1; + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-tabitemcell .v-caption-closable { + padding-right: 22px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-tabitemcell.icons-on-top .v-caption-closable { + padding-right: 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-tabitemcell .v-tabsheet-caption-close { + position: absolute; + right: 0; + top: 50%; + margin: -8px 0 0; + font-size: 18px; + line-height: 18px; + width: 18px; + text-align: center; + border-radius: 2px; + color: #969696; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-tabitemcell .v-tabsheet-caption-close:hover { + background: rgba(0, 0, 0, 0.03); + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-tabitemcell .v-tabsheet-caption-close:active { + background: #197de1; + color: #c8dbed; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-scroller { + position: absolute; + top: 0; + right: 0; + bottom: 0; + padding-left: 19px; + background-color: transparent; + background-image: -webkit-linear-gradient(right, #fafafa 70%, rgba(250, 250, 250, 0) 100%); + background-image: linear-gradient(to left,#fafafa 70%, rgba(250, 250, 250, 0) 100%); + pointer-events: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-scroller:after { + content: ""; + height: 1px; + position: absolute; + bottom: 0; + left: 0; + right: 0; + display: block; + background-color: transparent; + background-image: -webkit-linear-gradient(right, #dfdfdf 70%, rgba(223, 223, 223, 0) 100%); + background-image: linear-gradient(to left,#dfdfdf 70%, rgba(223, 223, 223, 0) 100%); +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-tabsheet-scroller, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-tabsheet-scroller { + background-color: #fafafa; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-tabsheet-scroller:after, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-tabsheet-scroller:after { + background-color: #dfdfdf; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-scroller button { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + border: none; + background: transparent; + font: inherit; + color: inherit; + height: 100%; + margin: 0; + padding: 0 9px; + outline: none; + cursor: pointer; + pointer-events: auto; + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-scroller button:hover { + opacity: 1; + filter: none ; + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-scroller button:active { + opacity: 0.7; + filter: alpha(opacity=70) ; + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-scroller button::-moz-focus-inner { + padding: 0; + border: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-scroller [class*="Next"] { + padding-left: 5px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-scroller [class*="Next"]:before { + font-family: ThemeIcons; + content: "\f054"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-scroller [class*="Prev"] { + padding-right: 5px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-scroller [class*="Prev"]:before { + font-family: ThemeIcons; + content: "\f053"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-scroller [class*="disabled"] { + cursor: default; + color: inherit !important; + opacity: 0.1 !important; + filter: alpha(opacity=10) !important; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-tabsheetpanel > .v-scrollable > .v-widget { + -webkit-animation: valo-animate-in-fade 300ms backwards; + -moz-animation: valo-animate-in-fade 300ms backwards; + animation: valo-animate-in-fade 300ms backwards; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-deco { + height: 20px !important; + width: 20px !important; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + border: 2px solid rgba(25, 125, 225, 0.2); + border-top-color: #197de1; + border-right-color: #197de1; + border-radius: 100%; + -webkit-animation: v-rotate-360 500ms infinite linear; + -moz-animation: v-rotate-360 500ms infinite linear; + animation: v-rotate-360 500ms infinite linear; + pointer-events: none; + display: none; + position: absolute; + z-index: 1; + bottom: 50%; + margin-bottom: -29px; + left: 50%; + margin-left: -10px; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-tabsheet-deco, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-tabsheet-deco { + border: none; + border-radius: 4px; + background: #fff url(../valo/shared/img/spinner.gif) no-repeat 50% 50%; + background-size: 80%; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-tabsheet-deco { + min-width: 30px; + min-height: 30px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-loading .v-tabsheet-deco { + display: block; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-equal-width-tabs > .v-tabsheet-tabcontainer table, .org_osbee_vaadin_addons_designer_overlay .v-tabsheet-equal-width-tabs > .v-tabsheet-tabcontainer tbody, .org_osbee_vaadin_addons_designer_overlay .v-tabsheet-equal-width-tabs > .v-tabsheet-tabcontainer tr { + width: 100%; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-equal-width-tabs > .v-tabsheet-tabcontainer tr { + display: table; + table-layout: fixed; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-equal-width-tabs > .v-tabsheet-tabcontainer td { + display: table-cell; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-equal-width-tabs > .v-tabsheet-tabcontainer .v-caption { + margin: 0; + display: block; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-framed > .v-tabsheet-tabcontainer .v-caption { + margin-left: 4px; + padding: 0 12px; + background-color: #fafafa; + border: 1px solid transparent; + line-height: 36px; + border-radius: 4px 4px 0 0; + font-weight: 400; + -webkit-transition: background-color 160ms; + -moz-transition: background-color 160ms; + transition: background-color 160ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-framed > .v-tabsheet-tabcontainer .v-caption:hover { + background-color: #f2f2f2; + border-bottom-color: #dfdfdf; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-framed > .v-tabsheet-tabcontainer .v-caption.v-disabled:hover { + background-color: #fafafa; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-framed > .v-tabsheet-tabcontainer .v-caption-closable { + padding-right: 30px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-framed > .v-tabsheet-tabcontainer .v-tabsheet-caption-close { + top: 4px; + right: 4px; + margin-top: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-framed > .v-tabsheet-tabcontainer td:first-child .v-caption, .org_osbee_vaadin_addons_designer_overlay .v-tabsheet-framed > .v-tabsheet-tabcontainer [aria-hidden="true"] + td .v-caption { + margin-left: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-framed > .v-tabsheet-tabcontainer .v-tabsheet-tabitem .v-caption { + border-color: #dfdfdf; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-framed > .v-tabsheet-tabcontainer .v-tabsheet-tabitem-selected .v-caption { + background: white; + border-color: #dfdfdf; + border-bottom: none; + padding-bottom: 1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-framed > .v-tabsheet-content { + border: 1px solid #dfdfdf; + border-top: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-framed > .v-tabsheet-content > div { + background: white; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-framed.padded-tabbar > .v-tabsheet-tabcontainer { + border: 1px solid #dfdfdf; + border-bottom: none; + background: #fafafa; + padding-top: 6px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-framed.icons-on-top > .v-tabsheet-tabcontainer .v-tabsheet-tabitem-selected .v-caption { + padding-bottom: 7px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-centered-tabs > .v-tabsheet-tabcontainer { + text-align: center; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-right-aligned-tabs > .v-tabsheet-tabcontainer { + text-align: right; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-padded-tabbar > .v-tabsheet-tabcontainer .v-tabsheet-tabs { + padding: 0 9px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-icons-on-top > .v-tabsheet-tabcontainer .v-caption { + padding-top: 6px; + padding-bottom: 6px; + line-height: 1.2; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-icons-on-top > .v-tabsheet-tabcontainer .v-icon { + display: block; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-icons-on-top > .v-tabsheet-tabcontainer .v-icon + .v-captiontext.v-captiontext { + margin-left: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-icons-on-top > .v-tabsheet-tabcontainer .v-caption-closable { + padding-right: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-icons-on-top > .v-tabsheet-tabcontainer .v-tabsheet-caption-close { + top: 4px; + margin-top: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-compact-tabbar > .v-tabsheet-tabcontainer-compact-tabbar .v-caption { + line-height: 1.8; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-only-selected-closable > .v-tabsheet-tabcontainer .v-tabsheet-caption-close { + visibility: hidden; +} + +.org_osbee_vaadin_addons_designer_overlay .v-tabsheet-only-selected-closable > .v-tabsheet-tabcontainer .v-tabsheet-tabitem-selected .v-tabsheet-caption-close { + visibility: visible; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-popup.v-window { + min-width: 220px !important; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-popup .v-tabsheet-tabs { + padding: 0 9px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-popup [class$="sliders"] { + padding: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-popup [class$="sliders"] .v-widget { + width: 100% !important; + vertical-align: middle; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-popup [class$="sliders"] .v-has-caption { + white-space: nowrap; + padding-left: 48px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-popup [class$="sliders"] .v-caption { + display: inline-block; + margin-left: -48px; + width: 48px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-popup [class$="sliders"] .v-slot-hue-slider + .v-slot .v-has-caption { + padding-left: 80px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-popup [class$="sliders"] .v-slot-hue-slider + .v-slot .v-caption { + margin-left: -80px; + width: 80px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-popup .v-slider-red .v-slider-base:after { + background: red; + border: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-popup .v-slider-green .v-slider-base:after { + background: green; + border: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-popup .v-slider-blue .v-slider-base:after { + background: blue; + border: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-popup .v-margin-bottom { + padding-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-popup .resize-button { + width: 100% !important; + height: auto !important; + text-align: center; + outline: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-popup .resize-button:before { + font-family: ThemeIcons; + content: "\f141"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-popup .resize-button-caption { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-popup .v-horizontallayout { + height: auto !important; + padding: 9px 0; + background-color: #fafafa; + border-top: 1px solid #ededed; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-popup .v-horizontallayout .v-expand { + overflow: visible; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-popup .v-horizontallayout .v-button { + width: 80% !important; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-preview { + width: 100% !important; + height: auto !important; + padding: 9px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-preview-textfield { + height: auto !important; + text-align: center; + border: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker { + width: auto; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-button-color { + position: absolute; + top: 6px; + right: 6px; + bottom: 6px; + left: 6px; + border-radius: 3px; + border: 1px solid rgba(0, 0, 0, 0.5); + max-width: 23px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-colorpicker-button-color + .v-button-caption:not(:empty) { + margin-left: 19px; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-colorpicker-button-color { + position: relative; + top: auto; + right: auto; + bottom: auto; + left: auto; + width: 16px; + height: 16px; + display: inline-block; + vertical-align: middle; + margin: 0 -8px; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-colorpicker-button-color + .v-button-caption { + margin-left: 19px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-panel { + background: white; + color: #474747; + border-radius: 4px; + border: 1px solid #d5d5d5; + -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: 0 2px 3px rgba(0, 0, 0, 0.05); + overflow: visible !important; +} + +.org_osbee_vaadin_addons_designer_overlay .v-panel-caption { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0 12px; + line-height: 36px; + border-bottom: 1px solid #d5d5d5; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #f6f6f6 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #f6f6f6 98%); + color: #464646; + font-weight: 400; + font-size: 14px; + -webkit-box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #eeeeee; + box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #eeeeee; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); + border-radius: 3px 3px 0 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-panel-content { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + height: 100%; +} + +.org_osbee_vaadin_addons_designer_overlay .v-panel-content > .v-margin-top { + padding-top: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-panel-content > .v-margin-right { + padding-right: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-panel-content > .v-margin-bottom { + padding-bottom: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-panel-content > .v-margin-left { + padding-left: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-panel-borderless { + background: transparent; + color: inherit; + border: none; + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-panel-borderless > div > [class*="-caption"] { + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; + color: inherit; + padding: 0; + margin: 0 12px; + border-bottom: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-panel-well { + background: #f5f5f5; + color: #454545; + -webkit-box-shadow: 0 1px 0 0 rgba(255, 255, 255, 0.05), inset 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 0 0 rgba(255, 255, 255, 0.05), inset 0 2px 3px rgba(0, 0, 0, 0.05); + border-radius: 4px; + border: 1px solid #c5c5c5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-panel-well > div > [class*="-caption"] { + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-panel-scroll-divider > [class*="-captionwrap"] { + position: relative; + z-index: 2; +} + +.org_osbee_vaadin_addons_designer_overlay .v-panel-scroll-divider > [class*="-captionwrap"]:after { + content: ""; + position: absolute; + bottom: -1px; + right: 0; + left: 0; + height: 0; + border-top: 1px solid #dfdfdf; + border-color: rgba(197, 197, 197, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-panel-scroll-divider > [class*="-content"]:before { + content: ""; + position: absolute; + z-index: 2; + top: 0; + height: 0; + border-top: 1px solid #fafafa; + left: 0; + right: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-panel-caption.v-horizontallayout { + height: auto !important; + line-height: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-panel-caption.v-horizontallayout .v-slot { + vertical-align: middle; +} + +.org_osbee_vaadin_addons_designer_overlay .v-panel-caption.v-horizontallayout .v-label { + line-height: 37px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-accordion { + background: white; + color: #474747; + border-radius: 4px; + border: 1px solid #d5d5d5; + -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: 0 2px 3px rgba(0, 0, 0, 0.05); + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #f4f4f4 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #f4f4f4 98%); + overflow: hidden; +} + +.org_osbee_vaadin_addons_designer_overlay .v-accordion-item { + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-accordion-item:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-accordion-item:last-child { + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-accordion-item:last-child [class*="item-content"] { + border-radius: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-accordion-item[class*="item-open"]:last-child > div > .v-caption { + border-radius: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-accordion-item:not([class*="item-open"]):last-child > div > .v-caption { + border-bottom: none; + margin-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-accordion-item[class*="item-open"] + [class*="item"] { + border-top: 1px solid #d9d9d9; +} + +.org_osbee_vaadin_addons_designer_overlay .v-accordion-item-caption { + border-radius: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-accordion-item-caption > .v-caption { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0 12px; + line-height: 36px; + border-bottom: 1px solid #d5d5d5; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #f6f6f6 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #f6f6f6 98%); + color: #464646; + font-weight: 400; + font-size: 14px; + -webkit-box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #eeeeee; + box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #eeeeee; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); + display: block; + background: transparent; + border-bottom-color: #c9c9c9; + border-radius: inherit; + cursor: pointer; + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-accordion-item-caption > .v-caption:hover:before, .org_osbee_vaadin_addons_designer_overlay .v-accordion-item-caption > .v-caption:active:before { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + border-radius: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-accordion-item-caption > .v-caption:hover:before { + background-color: rgba(186, 186, 186, 0.1); + border: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-accordion-item-caption > .v-caption:active:before { + background-color: rgba(125, 125, 125, 0.2); +} + +.org_osbee_vaadin_addons_designer_overlay .v-accordion-item-content { + -webkit-box-shadow: inset 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 3px rgba(0, 0, 0, 0.05); + background-color: white; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.org_osbee_vaadin_addons_designer_overlay .v-accordion-item-content > .v-margin-top { + padding-top: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-accordion-item-content > .v-margin-right { + padding-right: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-accordion-item-content > .v-margin-bottom { + padding-bottom: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-accordion-item-content > .v-margin-left { + padding-left: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-accordion-borderless { + border: none; + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-accordion-borderless > .v-accordion-item, .org_osbee_vaadin_addons_designer_overlay .v-accordion-borderless > .v-accordion-item > div > .v-caption, .org_osbee_vaadin_addons_designer_overlay .v-accordion-borderless > .v-accordion-item > .v-accordion-item-content { + border-radius: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-twincol { + white-space: normal; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-twincol select { + border: 1px solid #c5c5c5; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + color: #464646; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-twincol select:focus { + outline: none; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-twincol .v-textfield, .org_osbee_vaadin_addons_designer_overlay .v-select-twincol .v-nativebutton { + width: auto !important; + margin-top: 9px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-twincol .v-nativebutton { + margin-left: 9px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-twincol-caption-left, .org_osbee_vaadin_addons_designer_overlay .v-select-twincol-caption-right { + font-size: 14px; + font-weight: 400; + padding-bottom: 0.3em; + padding-left: 1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-twincol-buttons { + white-space: nowrap; + display: inline-block; + vertical-align: top; + position: relative; + min-width: 3.5em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-twincol-buttons .v-button { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: inline-block; + vertical-align: top; + text-align: left; + white-space: normal; + position: absolute; + left: 9px; + right: 9px; + top: 36px; + padding: 0; + text-align: center; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-twincol-buttons .v-button:first-child { + top: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-twincol-buttons .v-button-caption { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-twincol-buttons .v-button:focus { + z-index: 1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-twincol-buttons .v-button:first-child { + border-radius: 4px 4px 0 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-twincol-buttons .v-button:last-child { + border-radius: 0 0 4px 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-twincol-buttons .v-button-wrap:before { + font-family: ThemeIcons; + content: "\f053"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-twincol-buttons .v-button:first-child .v-button-wrap:before { + font-family: ThemeIcons; + content: "\f054"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select select { + border: 1px solid #c5c5c5; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + color: #464646; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select select:focus { + outline: none; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-select { + display: block; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-select + .v-textfield { + width: auto !important; + margin-top: 9px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-select + .v-textfield + .v-nativebutton { + margin-top: 9px; + margin-left: 9px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-header-day { + font-weight: 400; + text-align: center; + padding: 7px 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-header-week .v-calendar-back, .org_osbee_vaadin_addons_designer_overlay .v-calendar-header-week .v-calendar-next { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + background: transparent; + border: none; + padding: 0; + margin: 0; + cursor: pointer; + outline: none; + color: inherit; + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-header-week .v-calendar-back:focus, .org_osbee_vaadin_addons_designer_overlay .v-calendar-header-week .v-calendar-next:focus { + outline: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-header-week .v-calendar-back:hover, .org_osbee_vaadin_addons_designer_overlay .v-calendar-header-week .v-calendar-next:hover { + opacity: 1; + filter: none ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-header-week .v-calendar-back:active, .org_osbee_vaadin_addons_designer_overlay .v-calendar-header-week .v-calendar-next:active { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-header-week .v-calendar-back:before { + font-family: ThemeIcons; + content: "\f053"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-header-week .v-calendar-next:before { + font-family: ThemeIcons; + content: "\f054"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-month { + outline: none; + overflow: hidden; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-month td { + vertical-align: top; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-week-number { + cursor: pointer; + width: 20px; + text-align: center; + font-size: 0.8em; + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-week-number:hover { + opacity: 1; + filter: none ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-month-day { + outline: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + line-height: 1.2; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-bottom-spacer, .org_osbee_vaadin_addons_designer_overlay .v-calendar-spacer, .org_osbee_vaadin_addons_designer_overlay .v-calendar-bottom-spacer-empty { + height: 19px; + margin-bottom: 3px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-bottom-spacer { + font-size: 0.8em; + padding: 0 5px; + cursor: pointer; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-bottom-spacer:hover { + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-day-number { + line-height: 25px; + font-size: 16px; + text-align: right; + margin: 0 5px; + white-space: nowrap; + border-top: 1px solid #f2f2f2; + cursor: pointer; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-day-number:hover { + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-month-day-today { + background: #eef3f8; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-month-day-today .v-calendar-day-number { + font-weight: 400; + color: #197de1; + border-top: 2px solid #197de1; + line-height: 24px; + margin: 0; + padding: 0 5px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-month-day-selected { + background-color: #e3edf7; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-month-day-dragemphasis { + background-color: #a8a8a8; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-month-day-scrollable { + overflow-y: scroll; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-weekly-longevents { + margin-left: 50px; + border-bottom: 3px solid #e0e0e0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-weekly-longevents .v-calendar-event-all-day { + height: 22px; + line-height: 1.6; + margin-bottom: 3px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-header-week td { + vertical-align: middle !important; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-header-week .v-calendar-header-day { + cursor: pointer; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-times { + width: 50px; + font-size: 0.77em; + line-height: 1; + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-time { + text-align: right; + padding-right: 9px; + margin-top: -6px; + padding-bottom: 6px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-day-times, .org_osbee_vaadin_addons_designer_overlay .v-calendar-day-times-today { + outline: none; + border-right: 1px solid transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-day-times:focus, .org_osbee_vaadin_addons_designer_overlay .v-calendar-day-times-today:focus { + outline: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar .v-datecellslot, .org_osbee_vaadin_addons_designer_overlay .v-calendar .v-datecellslot-even { + border-top: 1px solid #dfdfdf; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar .v-datecellslot:first-child, .org_osbee_vaadin_addons_designer_overlay .v-calendar .v-datecellslot-even:first-child { + border-top-color: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar .v-datecellslot { + border-top-style: dotted; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar .v-datecellslot, .org_osbee_vaadin_addons_designer_overlay .v-calendar .v-datecellslot-even { + margin-right: 5px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-current-time { + background: #197de1; + line-height: 1px; + pointer-events: none; + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-current-time:before { + content: "\2022"; + color: #197de1; + font-size: 22px; + margin-left: -0.07em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar .v-daterange { + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar .v-daterange:before { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: -1px; + left: 0; + background: #197de1; + opacity: 0.5; + filter: alpha(opacity=50) ; + border-radius: 4px 4px 0 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar .v-daterange + .v-daterange { + border-color: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar .v-daterange + .v-daterange:before { + border-radius: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event { + font-size: 0.85em; + overflow: hidden; + cursor: pointer; + outline: none; + border-radius: 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event:focus { + outline: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event-month { + padding: 0 5px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + margin-bottom: 3px; + white-space: nowrap; + text-overflow: ellipsis; + height: 19px; + line-height: 19px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event-month .v-calendar-event-time { + float: right; + font-size: 0.9em; + line-height: 19px; + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event-month:before { + content: "\25cf"; + margin-right: 0.2em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event-all-day { + padding: 0 5px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + height: 19px; + line-height: 19px; + border-radius: 0; + margin-left: -1px; + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event-all-day:before { + content: ""; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event-start { + overflow: visible; + margin-left: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event-start.v-calendar-event-continued-to, .org_osbee_vaadin_addons_designer_overlay .v-calendar-event-start.v-calendar-event-end { + overflow: hidden; + text-overflow: ellipsis; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event-start { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + margin-left: 5px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event-end { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + margin-right: 5px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event-caption { + font-weight: 500; + line-height: 1.2; + padding: 5px 0; + position: absolute; + overflow: hidden; + right: 9px; + left: 5px; + bottom: 0; + top: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event-caption span { + font-weight: 300; + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-week-wrapper .v-calendar-event { + overflow: visible; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-week-wrapper .v-calendar-event-content { + margin-top: -1px; + border-radius: 5px; + border: 1px solid #fafafa; + padding-top: 3px; + margin-right: 5px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event-month:before { + color: #00ace0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event-all-day { + background-color: #c8eaf4; + background-color: rgba(200, 234, 244, 0.8); + color: #00ace0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-week-wrapper .v-calendar-event { + color: #00ace0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-week-wrapper .v-calendar-event .v-calendar-event-content { + background-color: #c8eaf4; + background-color: rgba(200, 234, 244, 0.8); +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event-month[class*="color2"]:before { + color: #2d9f19; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event-all-day[class*="color2"] { + background-color: #d1e7cd; + background-color: rgba(209, 231, 205, 0.8); + color: #2d9f19; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-week-wrapper .v-calendar-event[class*="color2"] { + color: #2d9f19; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-week-wrapper .v-calendar-event[class*="color2"] .v-calendar-event-content { + background-color: #d1e7cd; + background-color: rgba(209, 231, 205, 0.8); +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event-month[class*="color3"]:before { + color: #d18100; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event-all-day[class*="color3"] { + background-color: #f1e1c8; + background-color: rgba(241, 225, 200, 0.8); + color: #d18100; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-week-wrapper .v-calendar-event[class*="color3"] { + color: #d18100; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-week-wrapper .v-calendar-event[class*="color3"] .v-calendar-event-content { + background-color: #f1e1c8; + background-color: rgba(241, 225, 200, 0.8); +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event-month[class*="color4"]:before { + color: #ce3812; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event-all-day[class*="color4"] { + background-color: #f1d3cb; + background-color: rgba(241, 211, 203, 0.8); + color: #ce3812; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-week-wrapper .v-calendar-event[class*="color4"] { + color: #ce3812; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-week-wrapper .v-calendar-event[class*="color4"] .v-calendar-event-content { + background-color: #f1d3cb; + background-color: rgba(241, 211, 203, 0.8); +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event-month[class*="color5"]:before { + color: #2d55cd; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-event-all-day[class*="color5"] { + background-color: #d1d9f1; + background-color: rgba(209, 217, 241, 0.8); + color: #2d55cd; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-week-wrapper .v-calendar-event[class*="color5"] { + color: #2d55cd; +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar-week-wrapper .v-calendar-event[class*="color5"] .v-calendar-event-content { + background-color: #d1d9f1; + background-color: rgba(209, 217, 241, 0.8); +} + +.org_osbee_vaadin_addons_designer_overlay .v-calendar.v-disabled * { + cursor: default; +} + +.org_osbee_vaadin_addons_designer_overlay .v-label { + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; +} + +.org_osbee_vaadin_addons_designer_overlay .v-label-undef-w { + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay h1, .org_osbee_vaadin_addons_designer_overlay .v-label-h1, .org_osbee_vaadin_addons_designer_overlay h2, .org_osbee_vaadin_addons_designer_overlay .v-label-h2, .org_osbee_vaadin_addons_designer_overlay h3, .org_osbee_vaadin_addons_designer_overlay .v-label-h3 { + line-height: 1.1; + font-weight: 200; + color: #141414; +} + +.org_osbee_vaadin_addons_designer_overlay h1, .org_osbee_vaadin_addons_designer_overlay .v-label-h1 { + font-size: 2.4em; + margin-top: 1.4em; + margin-bottom: 1em; + + letter-spacing: -0.03em; +} + +.org_osbee_vaadin_addons_designer_overlay h2, .org_osbee_vaadin_addons_designer_overlay .v-label-h2 { + font-size: 1.6em; + + margin-top: 1.6em; + margin-bottom: 0.77em; + letter-spacing: -0.02em; +} + +.org_osbee_vaadin_addons_designer_overlay h3, .org_osbee_vaadin_addons_designer_overlay .v-label-h3 { + font-size: 1.2em; + + margin-top: 1.8em; + margin-bottom: 0.77em; + letter-spacing: 0; +} + +.org_osbee_vaadin_addons_designer_overlay h4, .org_osbee_vaadin_addons_designer_overlay .v-label-h4 { + line-height: 1.1; + font-weight: 500; + font-size: 14px; + color: #414141; + text-transform: uppercase; + letter-spacing: 0; + margin-top: 2.4em; + margin-bottom: 0.8em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-csslayout > h1:first-child, .org_osbee_vaadin_addons_designer_overlay .v-csslayout > h2:first-child, .org_osbee_vaadin_addons_designer_overlay .v-csslayout > h3:first-child, .org_osbee_vaadin_addons_designer_overlay .v-csslayout > h4 > .v-label-h1:first-child, .org_osbee_vaadin_addons_designer_overlay .v-csslayout > .v-label-h2:first-child, .org_osbee_vaadin_addons_designer_overlay .v-csslayout > .v-label-h3:first-child, .org_osbee_vaadin_addons_designer_overlay .v-csslayout > .v-label-h4:first-child { + margin-top: 16px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-verticallayout > .v-slot:first-child h1, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > .v-slot:first-child .v-label-h1, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > .v-slot:first-child h2, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > .v-slot:first-child .v-label-h2, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > .v-slot:first-child h3, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > .v-slot:first-child .v-label-h3, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > .v-slot:first-child h4, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > .v-slot:first-child .v-label-h4, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > div > .v-slot:first-child h1, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > div > .v-slot:first-child .v-label-h1, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > div > .v-slot:first-child h2, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > div > .v-slot:first-child .v-label-h2, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > div > .v-slot:first-child h3, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > div > .v-slot:first-child .v-label-h3, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > div > .v-slot:first-child h4, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > div > .v-slot:first-child .v-label-h4 { + margin-top: 16px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-verticallayout > .v-slot:first-child .v-formlayout-contentcell h1, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > .v-slot:first-child .v-formlayout-contentcell .v-label-h1, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > .v-slot:first-child .v-formlayout-contentcell h2, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > .v-slot:first-child .v-formlayout-contentcell .v-label-h2, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > .v-slot:first-child .v-formlayout-contentcell h3, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > .v-slot:first-child .v-formlayout-contentcell .v-label-h3, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > .v-slot:first-child .v-formlayout-contentcell h4, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > .v-slot:first-child .v-formlayout-contentcell .v-label-h4, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > div > .v-slot:first-child .v-formlayout-contentcell h1, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > div > .v-slot:first-child .v-formlayout-contentcell .v-label-h1, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > div > .v-slot:first-child .v-formlayout-contentcell h2, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > div > .v-slot:first-child .v-formlayout-contentcell .v-label-h2, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > div > .v-slot:first-child .v-formlayout-contentcell h3, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > div > .v-slot:first-child .v-formlayout-contentcell .v-label-h3, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > div > .v-slot:first-child .v-formlayout-contentcell h4, .org_osbee_vaadin_addons_designer_overlay .v-verticallayout > div > .v-slot:first-child .v-formlayout-contentcell .v-label-h4 { + margin-top: -0.5em; +} + +.org_osbee_vaadin_addons_designer_overlay h1.no-margin, .org_osbee_vaadin_addons_designer_overlay .v-label-h1.no-margin, .org_osbee_vaadin_addons_designer_overlay h2.no-margin, .org_osbee_vaadin_addons_designer_overlay .v-label-h2.no-margin, .org_osbee_vaadin_addons_designer_overlay h3.no-margin, .org_osbee_vaadin_addons_designer_overlay .v-label-h3.no-margin, .org_osbee_vaadin_addons_designer_overlay h4.no-margin, .org_osbee_vaadin_addons_designer_overlay .v-label-h4.no-margin { + margin: 0 !important; +} + +.org_osbee_vaadin_addons_designer_overlay .v-label-colored { + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-label-large { + font-size: 20px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-label-small { + font-size: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-label-tiny { + font-size: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-label-huge { + font-size: 26px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-label-bold { + font-weight: 500; +} + +.org_osbee_vaadin_addons_designer_overlay .v-label-light { + font-weight: 200; + color: #7d7d7d; +} + +.org_osbee_vaadin_addons_designer_overlay .v-label-align-right { + text-align: right; +} + +.org_osbee_vaadin_addons_designer_overlay .v-label-align-center { + text-align: center; +} + +.org_osbee_vaadin_addons_designer_overlay .v-label-spinner { + height: 24px !important; + width: 24px !important; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + border: 2px solid rgba(25, 125, 225, 0.2); + border-top-color: #197de1; + border-right-color: #197de1; + border-radius: 100%; + -webkit-animation: v-rotate-360 500ms infinite linear; + -moz-animation: v-rotate-360 500ms infinite linear; + animation: v-rotate-360 500ms infinite linear; + pointer-events: none; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-label-spinner, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-label-spinner { + border: none; + border-radius: 4px; + background: #fff url(../valo/shared/img/spinner.gif) no-repeat 50% 50%; + background-size: 80%; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-label-spinner { + min-width: 30px; + min-height: 30px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-label-success, .org_osbee_vaadin_addons_designer_overlay .v-label-failure { + background: white; + color: #474747; + border: 2px solid #2c9720; + border-radius: 4px; + padding: 7px 19px 7px 37px; + font-weight: 400; + font-size: 15px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-label-success:before, .org_osbee_vaadin_addons_designer_overlay .v-label-failure:before { + font-family: ThemeIcons; + content: "\f00c"; + margin-right: 0.5em; + margin-left: -19px; + color: #2c9720; +} + +.org_osbee_vaadin_addons_designer_overlay .v-label-failure { + border-color: #ed473b; +} + +.org_osbee_vaadin_addons_designer_overlay .v-label-failure:before { + content: "\f05e"; + color: #ed473b; +} + +.org_osbee_vaadin_addons_designer_overlay [draggable=true] { + -khtml-user-drag: element; + -webkit-user-drag: element; +} + +.org_osbee_vaadin_addons_designer_overlay .v-ddwrapper { + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .v-ddwrapper-over:before, .org_osbee_vaadin_addons_designer_overlay .v-ddwrapper-over:after { + content: ""; + position: absolute; + z-index: 10; + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; + border: 0 solid #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-ddwrapper-over-top:before { + border-top-width: 2px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-ddwrapper-over-right:before { + border-right-width: 2px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-ddwrapper-over-bottom:before { + border-bottom-width: 2px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-ddwrapper-over-left:before { + border-left-width: 2px; +} + +.org_osbee_vaadin_addons_designer_overlay .no-vertical-drag-hints .v-ddwrapper-over-top:before, .org_osbee_vaadin_addons_designer_overlay .no-vertical-drag-hints.v-ddwrapper-over-top:before { + border-top-width: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .no-vertical-drag-hints .v-ddwrapper-over-top:after, .org_osbee_vaadin_addons_designer_overlay .no-vertical-drag-hints.v-ddwrapper-over-top:after { + border-width: 2px; + border-radius: 4px; + opacity: 0.3; + filter: alpha(opacity=30.0) ; + background: #8abef2; +} + +.org_osbee_vaadin_addons_designer_overlay .no-vertical-drag-hints .v-ddwrapper-over-bottom:before, .org_osbee_vaadin_addons_designer_overlay .no-vertical-drag-hints.v-ddwrapper-over-bottom:before { + border-bottom-width: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .no-vertical-drag-hints .v-ddwrapper-over-bottom:after, .org_osbee_vaadin_addons_designer_overlay .no-vertical-drag-hints.v-ddwrapper-over-bottom:after { + border-width: 2px; + border-radius: 4px; + opacity: 0.3; + filter: alpha(opacity=30.0) ; + background: #8abef2; +} + +.org_osbee_vaadin_addons_designer_overlay .no-horizontal-drag-hints.v-ddwrapper-over-left:before, .org_osbee_vaadin_addons_designer_overlay .no-horizontal-drag-hints .v-ddwrapper-over-left:before { + border-left-width: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .no-horizontal-drag-hints.v-ddwrapper-over-left:after, .org_osbee_vaadin_addons_designer_overlay .no-horizontal-drag-hints .v-ddwrapper-over-left:after { + border-width: 2px; + border-radius: 4px; + opacity: 0.3; + filter: alpha(opacity=30.0) ; + background: #8abef2; +} + +.org_osbee_vaadin_addons_designer_overlay .no-horizontal-drag-hints.v-ddwrapper-over-right:before, .org_osbee_vaadin_addons_designer_overlay .no-horizontal-drag-hints .v-ddwrapper-over-right:before { + border-right-width: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .no-horizontal-drag-hints.v-ddwrapper-over-right:after, .org_osbee_vaadin_addons_designer_overlay .no-horizontal-drag-hints .v-ddwrapper-over-right:after { + border-width: 2px; + border-radius: 4px; + opacity: 0.3; + filter: alpha(opacity=30.0) ; + background: #8abef2; +} + +.org_osbee_vaadin_addons_designer_overlay .v-ddwrapper-over-middle:after, .org_osbee_vaadin_addons_designer_overlay .v-ddwrapper-over-center:after { + border-width: 2px; + border-radius: 4px; + opacity: 0.3; + filter: alpha(opacity=30.0) ; + background: #8abef2; +} + +.org_osbee_vaadin_addons_designer_overlay .no-box-drag-hints.v-ddwrapper:after, .org_osbee_vaadin_addons_designer_overlay .no-box-drag-hints .v-ddwrapper:after { + display: none !important; + content: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-nativebutton { + -webkit-touch-callout: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select select { + border: 1px solid #c5c5c5; + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + color: #464646; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select select:focus { + outline: none; + -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); + box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5); +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-select { + display: block; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-select + .v-textfield { + width: auto !important; + margin-top: 9px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-select-select + .v-textfield + .v-nativebutton { + margin-top: 9px; + margin-left: 9px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-popupview { + cursor: pointer; + color: #197de1; + text-decoration: underline; + font-weight: inherit; + -webkit-transition: color 140ms; + -moz-transition: color 140ms; + transition: color 140ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-popupview:hover { + color: #4396ea; +} + +.org_osbee_vaadin_addons_designer_overlay .v-popupview.v-disabled { + opacity: 0.5; + filter: alpha(opacity=50) ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-popupview-popup { + padding: 4px 4px; + border-radius: 4px; + background-color: white; + color: #474747; + -webkit-box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.1), 0 3px 5px 0 rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(0, 0, 0, 0.09098); + box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.1), 0 3px 5px 0 rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(0, 0, 0, 0.09098); + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; +} + +.org_osbee_vaadin_addons_designer_overlay .v-popupview-popup[class*="animate-in"] { + -webkit-animation: v-popupview-animate-in 120ms; + -moz-animation: v-popupview-animate-in 120ms; + animation: v-popupview-animate-in 120ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-popupview-popup[class*="animate-out"] { + -webkit-animation: valo-animate-out-fade 120ms; + -moz-animation: valo-animate-out-fade 120ms; + animation: valo-animate-out-fade 120ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-popupview-popup .popupContent > .v-margin-top { + padding-top: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-popupview-popup .popupContent > .v-margin-right { + padding-right: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-popupview-popup .popupContent > .v-margin-bottom { + padding-bottom: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-popupview-popup .popupContent > .v-margin-left { + padding-left: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-popupview-loading { + margin: 12px 12px; + height: 24px !important; + width: 24px !important; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + border: 2px solid rgba(25, 125, 225, 0.2); + border-top-color: #197de1; + border-right-color: #197de1; + border-radius: 100%; + -webkit-animation: v-rotate-360 500ms infinite linear; + -moz-animation: v-rotate-360 500ms infinite linear; + animation: v-rotate-360 500ms infinite linear; + pointer-events: none; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-popupview-loading, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-popupview-loading { + border: none; + border-radius: 4px; + background: #fff url(../valo/shared/img/spinner.gif) no-repeat 50% 50%; + background-size: 80%; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-popupview-loading { + min-width: 30px; + min-height: 30px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + margin: 0; + font: inherit; + + font-weight: 400; + line-height: normal; + height: 37px; + border-radius: 4px; + padding: 0; + border: 1px solid #c5c5c5; + background: white; + color: #474747; + -webkit-box-shadow: inset 0 1px 0 #f7f7f7, 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 #f7f7f7, 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-transition: box-shadow 180ms, border 180ms; + -moz-transition: box-shadow 180ms, border 180ms; + transition: box-shadow 180ms, border 180ms; + height: auto; + overflow: hidden; +} + +.v-ie8 .org_osbee_vaadin_addons_designer_overlay .v-richtextarea, .v-ie9 .org_osbee_vaadin_addons_designer_overlay .v-richtextarea { + line-height: 37px; + padding-top: 0; + padding-bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea[class*="prompt"] { + color: #a3a3a3; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar { + background-color: #fafafa; + background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%); + background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%); + -webkit-box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7; + box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #e7e7e7; + border-bottom: 1px solid #c5c5c5; + color: #464646; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-ToggleButton, .org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-PushButton { + display: inline-block; + line-height: 37px; + width: 37px; + text-align: center; + outline: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-ToggleButton:hover, .org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-PushButton:hover { + color: black; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-ToggleButton-down, .org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-ToggleButton-down-hovering { + background-color: #e0e0e0; + background-image: -webkit-linear-gradient(bottom, #e0e0e0 2%, #dcdcdc 98%); + background-image: linear-gradient(to top,#e0e0e0 2%, #dcdcdc 98%); +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-top img { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-top div:before { + font-family: ThemeIcons; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-top div[title="Toggle Bold"]:before { + content: "\f032"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-top div[title="Toggle Italic"]:before { + content: "\f033"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-top div[title="Toggle Underline"]:before { + content: "\f0cd"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-top div[title="Toggle Subscript"]:before { + content: "\f12c"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-top div[title="Toggle Superscript"]:before { + content: "\f12b"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-top div[title="Left Justify"]:before { + content: "\f036"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-top div[title="Center"]:before { + content: "\f037"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-top div[title="Right Justify"]:before { + content: "\f038"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-top div[title="Toggle Strikethrough"]:before { + content: "\f0cc"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-top div[title="Indent Right"]:before { + content: "\f03c"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-top div[title="Indent Left"]:before { + content: "\f03b"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-top div[title="Insert Horizontal Rule"]:before { + content: "\2014"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-top div[title="Insert Ordered List"]:before { + content: "\f0cb"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-top div[title="Insert Unordered List"]:before { + content: "\f0ca"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-top div[title="Insert Image"]:before { + content: "\f03e"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-top div[title="Create Link"]:before { + content: "\f0c1"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-top div[title="Remove Link"]:before { + content: "\f127"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-top div[title="Remove Formatting"]:before { + content: "\f12d"; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-bottom { + font-size: 13px; + padding: 0 9px 9px 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextToolbar-bottom select { + margin: 9px 0 0 9px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea .gwt-RichTextArea { + background: #fff; + border: none; + display: block; +} + +.org_osbee_vaadin_addons_designer_overlay .v-richtextarea-readonly { + padding: 5px 7px; + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-upload .v-button { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: inline-block; + vertical-align: top; + text-align: left; + white-space: normal; +} + +.org_osbee_vaadin_addons_designer_overlay .v-upload-immediate .v-button { + width: 100%; +} + +.org_osbee_vaadin_addons_designer_overlay .v-upload-immediate input[type="file"] { + opacity: 0; + filter: alpha(opacity=0) ; + z-index: -1; + position: absolute; + right: 0; + height: 37px; + text-align: right; + border: none; + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.v-position-top { + top: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.v-position-right { + right: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.v-position-bottom { + bottom: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.v-position-left { + left: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.v-position-assistive { + top: -9999px; + left: -9999px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification-animate-in { + -webkit-animation: valo-animate-in-fade 180ms 10ms backwards; + -moz-animation: valo-animate-in-fade 180ms 10ms backwards; + animation: valo-animate-in-fade 180ms 10ms backwards; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification-animate-in.v-position-top { + -webkit-animation: valo-animate-in-slide-down 400ms 10ms backwards; + -moz-animation: valo-animate-in-slide-down 400ms 10ms backwards; + animation: valo-animate-in-slide-down 400ms 10ms backwards; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification-animate-in.v-position-bottom { + -webkit-animation: valo-animate-in-slide-up 400ms 10ms backwards; + -moz-animation: valo-animate-in-slide-up 400ms 10ms backwards; + animation: valo-animate-in-slide-up 400ms 10ms backwards; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification-animate-out { + -webkit-animation: valo-animate-out-fade 150ms; + -moz-animation: valo-animate-out-fade 150ms; + animation: valo-animate-out-fade 150ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification-animate-out.v-position-top, .org_osbee_vaadin_addons_designer_overlay .v-Notification-animate-out.v-position-bottom { + -webkit-animation: valo-animate-out-slide-down-fade 200ms; + -moz-animation: valo-animate-out-slide-down-fade 200ms; + animation: valo-animate-out-slide-down-fade 200ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification { + border-radius: 4px; + text-align: center; + position: fixed !important; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + background: white; + -webkit-box-shadow: 0px 5px 15px 0px rgba(0, 0, 0, 0.15); + box-shadow: 0px 5px 15px 0px rgba(0, 0, 0, 0.15); + padding: 19px 22px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification .v-Notification-caption { + color: #197de1; + font-size: 19px; + line-height: 1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification .v-Notification-description { + line-height: 1.4; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification-caption { + margin: 0; + display: inline-block; + text-align: left; + font-weight: inherit; + line-height: inherit; + white-space: nowrap; + letter-spacing: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification-description, .org_osbee_vaadin_addons_designer_overlay .v-Notification-details { + margin: 0; + display: inline-block; + vertical-align: middle; + max-width: 30em; + text-align: left; + max-height: 20em; + overflow: auto; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification-caption ~ .v-Notification-description, .org_osbee_vaadin_addons_designer_overlay .v-Notification-caption ~ .v-Notification-details { + margin-left: 24px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-icon + .v-Notification-caption { + margin-left: 16px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification-system { + left: 0 !important; + right: 0; + max-width: 100%; + margin: 0 !important; + border-radius: 0; + -webkit-box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.25); + padding: 12px 15px; + background-color: #444; + background-color: rgba(68, 68, 68, 0.9); + font-weight: 400; + line-height: 22px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification-system .v-Notification-description, .org_osbee_vaadin_addons_designer_overlay .v-Notification-system .v-Notification-details { + max-width: 50em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification-system.v-position-top { + top: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification-system.v-position-top[class*="animate-in"] { + -webkit-animation: valo-animate-in-slide-down 300ms 10ms backwards; + -moz-animation: valo-animate-in-slide-down 300ms 10ms backwards; + animation: valo-animate-in-slide-down 300ms 10ms backwards; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification-system.v-position-top[class*="animate-out"] { + -webkit-animation: valo-animate-out-slide-up 200ms; + -moz-animation: valo-animate-out-slide-up 200ms; + animation: valo-animate-out-slide-up 200ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification-system.v-position-bottom { + bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification-system.v-position-bottom[class*="animate-in"] { + -webkit-animation: valo-animate-in-slide-up 300ms 10ms backwards; + -moz-animation: valo-animate-in-slide-up 300ms 10ms backwards; + animation: valo-animate-in-slide-up 300ms 10ms backwards; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification-system.v-position-bottom[class*="animate-out"] { + -webkit-animation: valo-animate-out-slide-down 200ms; + -moz-animation: valo-animate-out-slide-down 200ms; + animation: valo-animate-out-slide-down 200ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification-system .v-Notification-caption { + color: #fff; + vertical-align: middle; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification-system .v-Notification-description, .org_osbee_vaadin_addons_designer_overlay .v-Notification-system .v-Notification-details { + color: #e6e6e6; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification-system u { + text-decoration: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.tray { + text-align: left; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.tray .v-Notification-caption + .v-Notification-description { + display: block; + margin: 0.5em 0 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.warning { + background: #FFF3D2; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.warning .v-Notification-caption { + color: #AC7C00; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.warning .v-Notification-description { + color: #9D874D; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.error { + background: #ed473b; + font-weight: 400; + -webkit-box-shadow: 0px 5px 15px 0px rgba(0, 0, 0, 0.25); + box-shadow: 0px 5px 15px 0px rgba(0, 0, 0, 0.25); +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.error .v-Notification-caption { + color: white; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.error .v-Notification-description { + color: #f4e0df; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.dark { + background-color: #444; + background-color: rgba(68, 68, 68, 0.9); + font-weight: 400; + line-height: 22px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.dark .v-Notification-caption { + color: #fff; + vertical-align: middle; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.dark .v-Notification-description, .org_osbee_vaadin_addons_designer_overlay .v-Notification.dark .v-Notification-details { + color: #e6e6e6; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.bar { + left: 0 !important; + right: 0; + max-width: 100%; + margin: 0 !important; + border-radius: 0; + -webkit-box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.25); + padding: 12px 15px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.bar .v-Notification-description, .org_osbee_vaadin_addons_designer_overlay .v-Notification.bar .v-Notification-details { + max-width: 50em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.bar.v-position-top { + top: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.bar.v-position-top[class*="animate-in"] { + -webkit-animation: valo-animate-in-slide-down 300ms 10ms backwards; + -moz-animation: valo-animate-in-slide-down 300ms 10ms backwards; + animation: valo-animate-in-slide-down 300ms 10ms backwards; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.bar.v-position-top[class*="animate-out"] { + -webkit-animation: valo-animate-out-slide-up 200ms; + -moz-animation: valo-animate-out-slide-up 200ms; + animation: valo-animate-out-slide-up 200ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.bar.v-position-bottom { + bottom: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.bar.v-position-bottom[class*="animate-in"] { + -webkit-animation: valo-animate-in-slide-up 300ms 10ms backwards; + -moz-animation: valo-animate-in-slide-up 300ms 10ms backwards; + animation: valo-animate-in-slide-up 300ms 10ms backwards; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.bar.v-position-bottom[class*="animate-out"] { + -webkit-animation: valo-animate-out-slide-down 200ms; + -moz-animation: valo-animate-out-slide-down 200ms; + animation: valo-animate-out-slide-down 200ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.small { + padding: 11px 13px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.small .v-Notification-caption { + font-size: 16px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.small .v-Notification-description { + font-size: 14px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.closable { + padding-right: 59px; + overflow: hidden !important; + cursor: pointer; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.closable:after { + content: "\00d7"; + font-size: 1.5em; + position: absolute; + top: 50%; + margin-top: -12px; + right: 12px; + width: 25px; + height: 25px; + line-height: 24px; + cursor: pointer; + color: #000; + opacity: 0.5; + filter: alpha(opacity=50) ; + text-align: center; + border: 1px solid #000; + border-color: rgba(0, 0, 0, 0.3); + border-radius: 50%; + -webkit-transition: opacity 200ms; + -moz-transition: opacity 200ms; + transition: opacity 200ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.closable:hover:after { + opacity: 1; + filter: none ; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.closable:active:after { + background-color: #000; + color: #fff; + opacity: 0.3; + filter: alpha(opacity=30.0) ; + -webkit-transition: none 200ms; + -moz-transition: none 200ms; + transition: none 200ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.closable.dark:after, .org_osbee_vaadin_addons_designer_overlay .v-Notification.closable.error:after, .org_osbee_vaadin_addons_designer_overlay .v-Notification.closable.system:after { + color: #fff; + border-color: #fff; + border-color: rgba(255, 255, 255, 0.3); +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.closable.dark:active:after, .org_osbee_vaadin_addons_designer_overlay .v-Notification.closable.error:active:after, .org_osbee_vaadin_addons_designer_overlay .v-Notification.closable.system:active:after { + background-color: #fff; + color: #000; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.closable.tray:after { + top: 16px; + margin-top: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.success, .org_osbee_vaadin_addons_designer_overlay .v-Notification.failure { + background: #fff; + color: #555; + border: 2px solid #2c9720; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.success .v-Notification-caption, .org_osbee_vaadin_addons_designer_overlay .v-Notification.failure .v-Notification-caption { + color: #2c9720; + font-weight: 400; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.success .v-Notification-caption:before, .org_osbee_vaadin_addons_designer_overlay .v-Notification.failure .v-Notification-caption:before { + font-family: ThemeIcons; + content: "\f00c"; + margin-right: 0.5em; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.success.bar, .org_osbee_vaadin_addons_designer_overlay .v-Notification.failure.bar { + margin: -2px !important; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.failure { + border-color: #ed473b; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.failure .v-Notification-caption { + color: #ed473b; +} + +.org_osbee_vaadin_addons_designer_overlay .v-Notification.failure .v-Notification-caption:before { + content: "\f05e"; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu { + height: 100%; + background-color: #4b4b4b; + background-image: -webkit-linear-gradient(right, #414141 0%, #4b4b4b 9px); + background-image: linear-gradient(to left,#414141 0%, #4b4b4b 9px); + color: #a5a5a5; + font-size: 14px; + line-height: 30px; + border-right: 1px solid #3b3b3b; + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-toggle { + display: none; + position: fixed; + z-index: 200; + top: 3px; + left: 3px; + min-width: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-part { + border-left: 1px solid #414141; + height: 100%; + padding-bottom: 37px; + overflow: auto; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-part:first-child { + border-left: none; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-title, .org_osbee_vaadin_addons_designer_overlay .valo-menu-subtitle, .org_osbee_vaadin_addons_designer_overlay .valo-menu-item { + display: block; + line-height: inherit; + white-space: nowrap; + position: relative; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-title .valo-menu-badge, .org_osbee_vaadin_addons_designer_overlay .valo-menu-subtitle .valo-menu-badge, .org_osbee_vaadin_addons_designer_overlay .valo-menu-item .valo-menu-badge { + position: absolute; + right: 19px; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-title { + line-height: 1.2; + background-color: #197de1; + background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%); + color: white; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.05); + padding: 12px 19px; + font-size: 14px; + border-bottom: 1px solid #1362b1; + -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: 0 2px 3px rgba(0, 0, 0, 0.05); + text-align: center; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-title .v-menubar.v-menubar { + background: transparent; + border-color: #1362b1; + color: inherit; + -webkit-box-shadow: none; + box-shadow: none; + text-shadow: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-title .v-menubar-menuitem { + background: transparent; + -webkit-box-shadow: inset 0 1px 0 #4d98e6, inset 0 -1px 0 #166bca; + box-shadow: inset 0 1px 0 #4d98e6, inset 0 -1px 0 #166bca; + text-shadow: inherit; + font-size: 16px; + border-color: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-title h1, .org_osbee_vaadin_addons_designer_overlay .valo-menu-title .v-label-h1, .org_osbee_vaadin_addons_designer_overlay .valo-menu-title h2, .org_osbee_vaadin_addons_designer_overlay .valo-menu-title .v-label-h2, .org_osbee_vaadin_addons_designer_overlay .valo-menu-title h3, .org_osbee_vaadin_addons_designer_overlay .valo-menu-title .v-label-h3, .org_osbee_vaadin_addons_designer_overlay .valo-menu-title h4, .org_osbee_vaadin_addons_designer_overlay .valo-menu-title .v-label-h4 { + margin-top: 0; + margin-bottom: 0; + color: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-user-menu { + border: none; + border-radius: 0; + padding: 1px; + -webkit-box-shadow: none; + box-shadow: none; + text-shadow: none; + background: transparent; + color: inherit; + margin: 19px 7px; + display: block; + overflow: hidden; + text-align: center; + height: auto; + color: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-user-menu:focus:after { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-user-menu .v-menubar-menuitem { + -webkit-box-shadow: none; + box-shadow: none; + border: none; + margin-right: 1px; + border-radius: 4px; + color: #197de1; + padding: 0 12px; + -webkit-transition: color 140ms; + -moz-transition: color 140ms; + transition: color 140ms; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-user-menu .v-menubar-menuitem:first-child, .org_osbee_vaadin_addons_designer_overlay .v-menubar-user-menu .v-menubar-menuitem:last-child, .org_osbee_vaadin_addons_designer_overlay .v-menubar-user-menu .v-menubar-menuitem:first-child:last-child { + border-radius: 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-user-menu .v-menubar-menuitem:before { + content: none; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-user-menu .v-menubar-menuitem:hover { + color: #4396ea; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-user-menu .v-menubar-menuitem:active { + color: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-user-menu .v-menubar-menuitem-checked, .org_osbee_vaadin_addons_designer_overlay .v-menubar-user-menu .v-menubar-menuitem-checked:first-child { + border: 1px solid #c5c5c5; + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-user-menu .v-menubar-menuitem-checked .v-menubar-menuitem-caption, .org_osbee_vaadin_addons_designer_overlay .v-menubar-user-menu .v-menubar-menuitem-checked:first-child .v-menubar-menuitem-caption { + position: relative; + top: -1px; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-user-menu .v-menubar-menuitem-selected { + color: #ecf2f8; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.05); +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-user-menu .v-menubar-menuitem-selected:hover { + color: #ecf2f8; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-user-menu .v-menubar-menuitem-disabled, .org_osbee_vaadin_addons_designer_overlay .v-menubar-user-menu .v-menubar-menuitem-disabled:hover { + color: inherit; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-user-menu > .v-menubar-menuitem { + color: inherit; + white-space: normal; + line-height: 1.4; + margin: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-user-menu > .v-menubar-menuitem img.v-icon { + width: 56px; + height: 56px; + border-radius: 29px; + box-shadow: 0 2px 3px rgba(0, 0, 0, 0.05); + display: block; + margin: 0 auto 0.3em; + border: 1px solid #c5c5c5; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-user-menu > .v-menubar-menuitem:after { + top: 0; + right: 0; + bottom: 0; + left: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .v-menubar-user-menu .v-menubar-menuitem-selected { + background: transparent; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-subtitle { + color: #868686; + margin: 7px 0 7px 19px; + border-bottom: 1px solid #666666; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-subtitle [class*="badge"] { + color: #73a5d7; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menuitems { + display: block; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-item { + outline: none; + font-weight: 400; + padding: 0 37px 0 19px; + cursor: pointer; + position: relative; + overflow: hidden; + text-shadow: 0 2px 0 rgba(0, 0, 0, 0.05); + -webkit-transition: background-color 300ms, color 60ms; + -moz-transition: background-color 300ms, color 60ms; + transition: background-color 300ms, color 60ms; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-item [class*="caption"] { + vertical-align: middle; + display: inline-block; + width: 90%; + max-width: 15em; + padding-right: 19px; + text-overflow: ellipsis; + overflow: hidden; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-item [class*="badge"] { + color: #73a5d7; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-item.selected { + background: #434343; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-item.selected .v-icon { + color: #197de1; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-item.selected [class*="badge"] { + background-color: #197de1; + background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%); + color: #c8dbed; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-item:focus, .org_osbee_vaadin_addons_designer_overlay .valo-menu-item:hover, .org_osbee_vaadin_addons_designer_overlay .valo-menu-item.selected { + color: white; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-item span.v-icon { + min-width: 1em; + margin-right: 19px; + text-align: center; + vertical-align: middle; + -webkit-mask-image: -webkit-gradient(linear, left top, left bottom, from(black), to(rgba(0, 0, 0, 0.75))); +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-item span.v-icon + span { + margin-left: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-item [class*="badge"] { + background-color: #585858; + -webkit-transition: background-color 300ms; + -moz-transition: background-color 300ms; + transition: background-color 300ms; + line-height: 1; + padding: 4px 6px; + min-width: 11px; + text-align: center; + top: 4px; + border-radius: 4px; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-part.large-icons { + background-color: #4b4b4b; + min-width: 74px; + max-width: 111px; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-part.large-icons .valo-menu-title { + font-size: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-part.large-icons .valo-menu-title .v-label-undef-w { + white-space: normal; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-part.large-icons .v-menubar-user-menu { + margin-left: 0; + margin-right: 0; + font-size: 11px; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-part.large-icons .v-menubar-user-menu img.v-icon { + width: 28px; + height: 28px; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-part.large-icons [class*="subtitle"] { + margin: 9px 0 0; + padding: 7px 25px 7px 9px; + line-height: 1; + border: none; + text-overflow: ellipsis; + overflow: hidden; + background: #3c3c3c; + font-size: 13px; + box-shadow: 0 2px 3px rgba(0, 0, 0, 0.05); +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-part.large-icons [class*="subtitle"] [class*="badge"] { + right: 9px; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-part.large-icons [class*="subtitle"] + .valo-menu-item { + border-top: none; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-part.large-icons .valo-menu-item { + display: block; + font-size: 26px; + line-height: 1; + padding: 12px; + text-align: center; + border-top: 1px solid #555555; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-part.large-icons .valo-menu-item:first-child { + border-top: none; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-part.large-icons .valo-menu-item [class*="caption"] { + display: block; + width: auto; + margin: 0.3em 0 0; + padding: 0; + font-size: 11px; + line-height: 1.3; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-part.large-icons .valo-menu-item .v-icon { + margin: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-part.large-icons .valo-menu-item span.v-icon { + opacity: 0.8; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-part.large-icons .valo-menu-item.selected { + background: #434343; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-part.large-icons .valo-menu-item.selected .v-icon { + opacity: 1; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-part.large-icons .valo-menu-item.selected [class*="badge"] { + border-color: #434343; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-part.large-icons .valo-menu-item [class*="badge"] { + padding-left: 4px; + padding-right: 4px; + top: 7px; + right: 7px; + border: 2px solid #4b4b4b; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-logo { + display: block; + overflow: hidden; + width: 44px !important; + height: 44px; + border-radius: 4px; + text-align: center; + background-color: #197de1; + background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%); + background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%); + color: white; + font-size: 25px; + line-height: 44px; + margin: 19px auto; + -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.05); + box-shadow: 0 2px 3px rgba(0, 0, 0, 0.05); +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-logo:focus { + outline: none; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="801px-1100px"] .valo-menu-part { + background-color: #4b4b4b; + min-width: 74px; + max-width: 111px; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="801px-1100px"] .valo-menu-part .valo-menu-title { + font-size: 12px; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="801px-1100px"] .valo-menu-part .valo-menu-title .v-label-undef-w { + white-space: normal; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="801px-1100px"] .valo-menu-part .v-menubar-user-menu { + margin-left: 0; + margin-right: 0; + font-size: 11px; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="801px-1100px"] .valo-menu-part .v-menubar-user-menu img.v-icon { + width: 28px; + height: 28px; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="801px-1100px"] .valo-menu-part [class*="subtitle"] { + margin: 9px 0 0; + padding: 7px 25px 7px 9px; + line-height: 1; + border: none; + text-overflow: ellipsis; + overflow: hidden; + background: #3c3c3c; + font-size: 13px; + box-shadow: 0 2px 3px rgba(0, 0, 0, 0.05); +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="801px-1100px"] .valo-menu-part [class*="subtitle"] [class*="badge"] { + right: 9px; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="801px-1100px"] .valo-menu-part [class*="subtitle"] + .valo-menu-item { + border-top: none; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="801px-1100px"] .valo-menu-part .valo-menu-item { + display: block; + font-size: 26px; + line-height: 1; + padding: 12px; + text-align: center; + border-top: 1px solid #555555; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="801px-1100px"] .valo-menu-part .valo-menu-item:first-child { + border-top: none; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="801px-1100px"] .valo-menu-part .valo-menu-item [class*="caption"] { + display: block; + width: auto; + margin: 0.3em 0 0; + padding: 0; + font-size: 11px; + line-height: 1.3; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="801px-1100px"] .valo-menu-part .valo-menu-item .v-icon { + margin: 0; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="801px-1100px"] .valo-menu-part .valo-menu-item span.v-icon { + opacity: 0.8; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="801px-1100px"] .valo-menu-part .valo-menu-item.selected { + background: #434343; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="801px-1100px"] .valo-menu-part .valo-menu-item.selected .v-icon { + opacity: 1; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="801px-1100px"] .valo-menu-part .valo-menu-item.selected [class*="badge"] { + border-color: #434343; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="801px-1100px"] .valo-menu-part .valo-menu-item [class*="badge"] { + padding-left: 4px; + padding-right: 4px; + top: 7px; + right: 7px; + border: 2px solid #4b4b4b; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="0-800px"] { + padding-top: 37px; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="0-800px"] .v-loading-indicator { + top: 37px; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="0-800px"] > .v-widget { + position: relative !important; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="0-800px"] .valo-menu { + border-right: none; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="0-800px"] .valo-menu-part { + overflow: visible; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="0-800px"] .valo-menu-toggle { + display: inline-block; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="0-800px"] .valo-menu-title { + position: fixed; + z-index: 100; + top: 0; + left: 0; + right: 0; + height: 37px !important; + padding-top: 0; + padding-bottom: 0; + -webkit-backface-visibility: hidden; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="0-800px"] .valo-menu .v-menubar-user-menu { + position: fixed; + z-index: 100; + top: 0; + right: 0; + margin: 0; + padding: 0; + height: 37px; + color: #97bee5; + max-width: 30%; + -webkit-backface-visibility: hidden; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="0-800px"] .valo-menu .v-menubar-user-menu .v-menubar-menuitem { + line-height: 36px; + white-space: nowrap; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="0-800px"] .valo-menu .v-menubar-user-menu img.v-icon { + display: inline-block; + margin: 0 6px 0 0; + width: 19px; + height: 19px; + border-radius: 10px; + border: none; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="0-800px"] .valo-menuitems { + height: 100%; + background-color: #4b4b4b; + background-image: -webkit-linear-gradient(right, #414141 0%, #4b4b4b 9px); + background-image: linear-gradient(to left,#414141 0%, #4b4b4b 9px); + color: #a5a5a5; + font-size: 14px; + line-height: 30px; + border-right: 1px solid #3b3b3b; + white-space: nowrap; + position: fixed; + z-index: 9000; + top: 37px; + bottom: 0; + height: auto; + max-width: 100%; + overflow: auto; + padding: 19px 0; + -webkit-transform: translatex(-100%); + -moz-transform: translatex(-100%); + -ms-transform: translatex(-100%); + -o-transform: translatex(-100%); + transform: translatex(-100%); + -webkit-transition: all 300ms; + -moz-transition: all 300ms; + transition: all 300ms; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="0-800px"] .valo-menu-visible .valo-menuitems { + -webkit-transform: translatex(0%); + -moz-transform: translatex(0%); + -ms-transform: translatex(0%); + -o-transform: translatex(0%); + transform: translatex(0%); +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="0-500px"] .valo-menu-toggle .v-button-caption { + display: none; +} + +.org_osbee_vaadin_addons_designer_overlay .valo-menu-responsive[width-range~="0-500px"] .valo-menu .v-menubar-user-menu .v-menubar-menuitem-caption { + display: inline-block; + width: 19px; + overflow: hidden; +} \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/.project b/org.eclipse.osbp.vaadin.addons.designer.overlay/.project new file mode 100644 index 0000000..bcf7e85 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/.project
@@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.osbp.vaadin.addons.designer.overlay</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.wst.jsdt.core.javascriptValidator</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.wst.common.project.facet.core.builder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.wst.validation.validationbuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>com.vaadin.integration.eclipse.widgetsetBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>com.vaadin.integration.eclipse.addonStylesBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.sonarlint.eclipse.core.sonarlintBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.m2e.core.maven2Builder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.m2e.core.maven2Nature</nature> + <nature>org.eclipse.jem.workbench.JavaEMFNature</nature> + <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> + <nature>org.eclipse.wst.common.project.facet.core.nature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>com.vaadin.integration.eclipse.widgetsetNature</nature> + <nature>org.apache.ivyde.eclipse.ivynature</nature> + <nature>org.eclipse.wst.jsdt.core.jsNature</nature> + </natures> +</projectDescription>
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/LICENSE.txt b/org.eclipse.osbp.vaadin.addons.designer.overlay/LICENSE.txt new file mode 100644 index 0000000..ff42ad4 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/LICENSE.txt
@@ -0,0 +1,161 @@ +Eclipse Public License -v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION +OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and + +b) in the case of each subsequent Contributor: + +i) changes to the Program, and + +ii) additions to the Program; + +where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. +A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone +acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate +modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not +derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of +its Contribution alone or when combined with the Program. + +"Program" means the Contributions distributed in accordance with this Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. + +2. GRANT OF RIGHTS + +a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, +royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute +and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code +form. + +b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, +royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the +Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the +combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such +addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not +apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. + +c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no +assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property +rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity +based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and +licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property +rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the +Program, it is Recipient's responsibility to acquire that license before distributing the Program. + +d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to +grant the copyright license set forth in this Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and + +b) its license agreement: + +i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including +warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and +fitness for a particular purpose; + +ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, +incidental and consequential damages, such as lost profits; + +iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any +other party; and + +iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it +in a reasonable manner on or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and + +b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained within the Program. + +Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows +subsequent Recipients to identify the originator of the Contribution. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and +the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes +the Program in a commercial product offering should do so in a manner which does not create potential liability for +other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor +("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") +against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions +brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The +obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual +property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial +Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the +Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may + participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is +then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties +related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. +Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to +those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, +the Commercial Contributor must pay those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, +NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for +determining the appropriateness of using and distributing the Program and assumes all risks associated with its +exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance +with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or +enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such +provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) +alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such +Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or +conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such +noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution +of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses + granted by Recipient relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement +is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish +new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the +right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may +assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the +Agreement will be given a distinguishing version number. The Program (including Contributions) may always be +distributed subject to the version of the Agreement under which it was received. In addition, after a new version of +the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the +new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to +the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or +otherwise. All rights in the Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States +of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause +of action arose. Each party waives its rights to a jury trial in any resulting litigation. \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaadin.addons.designer.overlay/META-INF/MANIFEST.MF new file mode 100644 index 0000000..f464b05 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/META-INF/MANIFEST.MF
@@ -0,0 +1,32 @@ +Manifest-Version: 1.0 +Bnd-LastModified: 1491902102912 +Build-Jdk: 1.8.0_91 +Built-By: mollik +Bundle-ActivationPolicy: lazy +Bundle-Description: A parent POM aimed to set up the build of general Ma + ven based projects. +Bundle-DocURL: http://www.eclipse.org/osbp +Bundle-ManifestVersion: 2 +Bundle-Name: org.eclipse.osbp.vaadin.addons.designer.overlay +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Bundle-SymbolicName: org.eclipse.osbp.vaadin.addons.designer.overlay +Bundle-Vendor: Eclipse OSBP +Bundle-Version: 0.9.0.qualifier +Created-By: Apache Maven Bundle Plugin +Export-Package: org.eclipse.osbp.vaadin.addons.designer.overlay;version= + "0.9.0",org.eclipse.osbp.vaadin.addons.designer.overlay.client;version= + "0.9.0",org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets; + version="0.9.0",org.eclipse.osbp.vaadin.addons.designer.overlay.public. + designer_overlay;version="0.9.0" +Import-Package: javax.servlet.annotation;resolution:=optional;version="[ + 3.0,4)",com.vaadin.annotations;version="[7.7,8)",com.vaadin.client;vers + ion="[7.7,8)",com.vaadin.client.communication;version="[7.7,8)",com.vaa + din.server;version="[7.7,8)",com.vaadin.ui;version="[7.7,8)",org.eclips + e.osbp.vaadin.addons.designer.overlay.client;version="[0.9,1)",org.ecli + pse.osbp.vaadin.addons.designer.overlay.client.widgets;version="[0.9,1) + ",org.junit +Require-Bundle: com.vaadin.server;bundle-version="[7.5.7,7.7.0)",com.vaa + din.client;bundle-version="[7.5.7,7.7.0)",com.vaadin.shared;bundle-vers + ion="[7.5.7,7.7.0)",org.jsoup;bundle-version="[1.8.3,1.8.4)" +Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))" +Tool: Bnd-3.2.0.201605172007
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/META-INF/git.properties b/org.eclipse.osbp.vaadin.addons.designer.overlay/META-INF/git.properties new file mode 100644 index 0000000..f8505c5 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/META-INF/git.properties
@@ -0,0 +1,14 @@ +#Generated by Git-Commit-Id-Plugin +#Tue Apr 11 11:17:33 CEST 2017 +git.remote.origin.url=ssh\://compex@10.1.13.14/osbpgit/org.eclipse.osbp.vaadin.addons.git +git.closest.tag.name=OSBP-initial-commit-2-Eclipse-4-luna-2017-03-31-17-10-39 +git.commit.id.describe-short=OSBP-initial-commit-2-Eclipse-4-luna-2017-03-31-17-10-39-dirty +git.commit.time=02.02.2017 @ 18\:04\:55 MEZ +git.commit.message.full=remove the feature from build +git.commit.message.short=remove the feature from build +git.commit.id.abbrev=90dd482 +git.branch=OSBP-initial-commit-2-Eclipse-4-luna +git.closest.tag.commit.count=0 +git.commit.id.describe=OSBP-initial-commit-2-Eclipse-4-luna-2017-03-31-17-10-39-dirty +git.commit.id=90dd482e5bc78cd1a404d12445cebc868ee417b0 +git.tags=OSBP-initial-commit-2-Eclipse-4-luna-2017-03-31-17-10-39
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/SuperDevMode code server for org.eclipse.osbp.vaadin.addons.designer.overlay.launch b/org.eclipse.osbp.vaadin.addons.designer.overlay/SuperDevMode code server for org.eclipse.osbp.vaadin.addons.designer.overlay.launch new file mode 100644 index 0000000..c8dc517 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/SuperDevMode code server for org.eclipse.osbp.vaadin.addons.designer.overlay.launch
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication"> +<listAttribute key="org.eclipse.jdt.launching.CLASSPATH"> +<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry id="org.eclipse.jdt.launching.classpathentry.defaultClasspath"> <memento exportedEntriesOnly="false" project="org.eclipse.osbp.vaadin.addons.designer.overlay"/> </runtimeClasspathEntry> "/> +<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaadin.addons.designer.overlay/src" path="3" type="2"/> "/> +<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaadin.addons.designer.overlay/sample" path="3" type="2"/> "/> +<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaadin.addons.designer.overlay/test" path="3" type="2"/> "/> +</listAttribute> +<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/> +<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/> +<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.codeserver.CodeServer"/> +<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value=" org.eclipse.osbp.vaadin.addons.designer.overlay.OverlayWidgetset"/> +<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.osbp.vaadin.addons.designer.overlay"/> +<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/> +<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xss8M -Xmx512M -XX:MaxPermSize=512M"/> +<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="/Users/florianpirchner/Work/dev/osbp_client/git/org.eclipse.osbp.vaadin.addons/org.eclipse.osbp.vaadin.addons.designer.overlay"/> +</launchConfiguration>
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/epl-v10.html b/org.eclipse.osbp.vaadin.addons.designer.overlay/epl-v10.html new file mode 100644 index 0000000..b398acc --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/epl-v10.html
@@ -0,0 +1,259 @@ +<!--?xml version="1.0" encoding="ISO-8859-1" ?--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>Eclipse Public License - Version 1.0</title> +<style type="text/css"> + body { + size: 8.5in 11.0in; + margin: 0.25in 0.5in 0.25in 0.5in; + tab-interval: 0.5in; + } + p { + margin-left: auto; + margin-top: 0.5em; + margin-bottom: 0.5em; + } + p.list { + margin-left: 0.5in; + margin-top: 0.05em; + margin-bottom: 0.05em; + } + </style> + +</head> + +<body lang="EN-US"> + +<h2>Eclipse Public License - v 1.0</h2> + +<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE +PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR +DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS +AGREEMENT.</p> + +<p><b>1. DEFINITIONS</b></p> + +<p>"Contribution" means:</p> + +<p class="list">a) in the case of the initial Contributor, the initial +code and documentation distributed under this Agreement, and</p> +<p class="list">b) in the case of each subsequent Contributor:</p> +<p class="list">i) changes to the Program, and</p> +<p class="list">ii) additions to the Program;</p> +<p class="list">where such changes and/or additions to the Program +originate from and are distributed by that particular Contributor. A +Contribution 'originates' from a Contributor if it was added to the +Program by such Contributor itself or anyone acting on such +Contributor's behalf. Contributions do not include additions to the +Program which: (i) are separate modules of software distributed in +conjunction with the Program under their own license agreement, and (ii) +are not derivative works of the Program.</p> + +<p>"Contributor" means any person or entity that distributes +the Program.</p> + +<p>"Licensed Patents" mean patent claims licensable by a +Contributor which are necessarily infringed by the use or sale of its +Contribution alone or when combined with the Program.</p> + +<p>"Program" means the Contributions distributed in accordance +with this Agreement.</p> + +<p>"Recipient" means anyone who receives the Program under +this Agreement, including all Contributors.</p> + +<p><b>2. GRANT OF RIGHTS</b></p> + +<p class="list">a) Subject to the terms of this Agreement, each +Contributor hereby grants Recipient a non-exclusive, worldwide, +royalty-free copyright license to reproduce, prepare derivative works +of, publicly display, publicly perform, distribute and sublicense the +Contribution of such Contributor, if any, and such derivative works, in +source code and object code form.</p> + +<p class="list">b) Subject to the terms of this Agreement, each +Contributor hereby grants Recipient a non-exclusive, worldwide, +royalty-free patent license under Licensed Patents to make, use, sell, +offer to sell, import and otherwise transfer the Contribution of such +Contributor, if any, in source code and object code form. This patent +license shall apply to the combination of the Contribution and the +Program if, at the time the Contribution is added by the Contributor, +such addition of the Contribution causes such combination to be covered +by the Licensed Patents. The patent license shall not apply to any other +combinations which include the Contribution. No hardware per se is +licensed hereunder.</p> + +<p class="list">c) Recipient understands that although each Contributor +grants the licenses to its Contributions set forth herein, no assurances +are provided by any Contributor that the Program does not infringe the +patent or other intellectual property rights of any other entity. Each +Contributor disclaims any liability to Recipient for claims brought by +any other entity based on infringement of intellectual property rights +or otherwise. As a condition to exercising the rights and licenses +granted hereunder, each Recipient hereby assumes sole responsibility to +secure any other intellectual property rights needed, if any. For +example, if a third party patent license is required to allow Recipient +to distribute the Program, it is Recipient's responsibility to acquire +that license before distributing the Program.</p> + +<p class="list">d) Each Contributor represents that to its knowledge it +has sufficient copyright rights in its Contribution, if any, to grant +the copyright license set forth in this Agreement.</p> + +<p><b>3. REQUIREMENTS</b></p> + +<p>A Contributor may choose to distribute the Program in object code +form under its own license agreement, provided that:</p> + +<p class="list">a) it complies with the terms and conditions of this +Agreement; and</p> + +<p class="list">b) its license agreement:</p> + +<p class="list">i) effectively disclaims on behalf of all Contributors +all warranties and conditions, express and implied, including warranties +or conditions of title and non-infringement, and implied warranties or +conditions of merchantability and fitness for a particular purpose;</p> + +<p class="list">ii) effectively excludes on behalf of all Contributors +all liability for damages, including direct, indirect, special, +incidental and consequential damages, such as lost profits;</p> + +<p class="list">iii) states that any provisions which differ from this +Agreement are offered by that Contributor alone and not by any other +party; and</p> + +<p class="list">iv) states that source code for the Program is available +from such Contributor, and informs licensees how to obtain it in a +reasonable manner on or through a medium customarily used for software +exchange.</p> + +<p>When the Program is made available in source code form:</p> + +<p class="list">a) it must be made available under this Agreement; and</p> + +<p class="list">b) a copy of this Agreement must be included with each +copy of the Program.</p> + +<p>Contributors may not remove or alter any copyright notices contained +within the Program.</p> + +<p>Each Contributor must identify itself as the originator of its +Contribution, if any, in a manner that reasonably allows subsequent +Recipients to identify the originator of the Contribution.</p> + +<p><b>4. COMMERCIAL DISTRIBUTION</b></p> + +<p>Commercial distributors of software may accept certain +responsibilities with respect to end users, business partners and the +like. While this license is intended to facilitate the commercial use of +the Program, the Contributor who includes the Program in a commercial +product offering should do so in a manner which does not create +potential liability for other Contributors. Therefore, if a Contributor +includes the Program in a commercial product offering, such Contributor +("Commercial Contributor") hereby agrees to defend and +indemnify every other Contributor ("Indemnified Contributor") +against any losses, damages and costs (collectively "Losses") +arising from claims, lawsuits and other legal actions brought by a third +party against the Indemnified Contributor to the extent caused by the +acts or omissions of such Commercial Contributor in connection with its +distribution of the Program in a commercial product offering. The +obligations in this section do not apply to any claims or Losses +relating to any actual or alleged intellectual property infringement. In +order to qualify, an Indemnified Contributor must: a) promptly notify +the Commercial Contributor in writing of such claim, and b) allow the +Commercial Contributor to control, and cooperate with the Commercial +Contributor in, the defense and any related settlement negotiations. The +Indemnified Contributor may participate in any such claim at its own +expense.</p> + +<p>For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those +performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor +must pay those damages.</p> + +<p><b>5. NO WARRANTY</b></p> + +<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS +PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS +OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, +ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY +OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely +responsible for determining the appropriateness of using and +distributing the Program and assumes all risks associated with its +exercise of rights under this Agreement , including but not limited to +the risks and costs of program errors, compliance with applicable laws, +damage to or loss of data, programs or equipment, and unavailability or +interruption of operations.</p> + +<p><b>6. DISCLAIMER OF LIABILITY</b></p> + +<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT +NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING +WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR +DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p> + +<p><b>7. GENERAL</b></p> + +<p>If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further action +by the parties hereto, such provision shall be reformed to the minimum +extent necessary to make such provision valid and enforceable.</p> + +<p>If Recipient institutes patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that the +Program itself (excluding combinations of the Program with other +software or hardware) infringes such Recipient's patent(s), then such +Recipient's rights granted under Section 2(b) shall terminate as of the +date such litigation is filed.</p> + +<p>All Recipient's rights under this Agreement shall terminate if it +fails to comply with any of the material terms or conditions of this +Agreement and does not cure such failure in a reasonable period of time +after becoming aware of such noncompliance. If all Recipient's rights +under this Agreement terminate, Recipient agrees to cease use and +distribution of the Program as soon as reasonably practicable. However, +Recipient's obligations under this Agreement and any licenses granted by +Recipient relating to the Program shall continue and survive.</p> + +<p>Everyone is permitted to copy and distribute copies of this +Agreement, but in order to avoid inconsistency the Agreement is +copyrighted and may only be modified in the following manner. The +Agreement Steward reserves the right to publish new versions (including +revisions) of this Agreement from time to time. No one other than the +Agreement Steward has the right to modify this Agreement. The Eclipse +Foundation is the initial Agreement Steward. The Eclipse Foundation may +assign the responsibility to serve as the Agreement Steward to a +suitable separate entity. Each new version of the Agreement will be +given a distinguishing version number. The Program (including +Contributions) may always be distributed subject to the version of the +Agreement under which it was received. In addition, after a new version +of the Agreement is published, Contributor may elect to distribute the +Program (including its Contributions) under the new version. Except as +expressly stated in Sections 2(a) and 2(b) above, Recipient receives no +rights or licenses to the intellectual property of any Contributor under +this Agreement, whether expressly, by implication, estoppel or +otherwise. All rights in the Program not expressly granted under this +Agreement are reserved.</p> + +<p>This Agreement is governed by the laws of the State of New York and +the intellectual property laws of the United States of America. No party +to this Agreement will bring a legal action under this Agreement more +than one year after the cause of action arose. Each party waives its +rights to a jury trial in any resulting litigation.</p> + + + +</body></html> \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/ivy.xml b/org.eclipse.osbp.vaadin.addons.designer.overlay/ivy.xml new file mode 100644 index 0000000..7d808a5 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/ivy.xml
@@ -0,0 +1,47 @@ +<?xml version="1.0"?> +<!DOCTYPE ivy-module [ + <!ENTITY vaadin.version "7.5.7"> +]> +<ivy-module version="2.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"> + <info organisation="com.example" module="v7proj" /> + <configurations> + <!-- The default configuration, which should be deployed to the server --> + <conf name="default" /> + <!-- A configuration only needed when compiling the widget set. Should + not be deployed to the server --> + <conf name="widgetset-compile" /> + <!-- A configuration used in compilation of server side classes only. + Should be deployed to the server --> + <conf name="nodeploy" /> + </configurations> + <dependencies defaultconf="default" defaultconfmapping="default->default"> + <!-- The core server part of Vaadin --> + <dependency org="com.vaadin" name="vaadin-server" rev="&vaadin.version;" /> + + <!-- Vaadin themes --> + <dependency org="com.vaadin" name="vaadin-themes" rev="&vaadin.version;" /> + + <!-- Push support --> + <dependency org="com.vaadin" name="vaadin-push" rev="&vaadin.version;" /> + + <!-- Servlet 3.0 API --> + <dependency org="javax.servlet" name="javax.servlet-api" rev="3.0.1" conf="nodeploy->default" /> + + <!-- TestBench 4 --> + <dependency org="com.vaadin" name="vaadin-testbench-api" rev="latest.release" conf="nodeploy -> default" /> + + <!-- Precompiled DefaultWidgetSet --> + <dependency org="com.vaadin" name="vaadin-client-compiled" + rev="&vaadin.version;" /> + + <!-- Vaadin client side, needed for widget set compilation --> + <dependency org="com.vaadin" name="vaadin-client" rev="&vaadin.version;" + conf="widgetset-compile->default" /> + + <!-- Compiler for custom widget sets. Should not be deployed --> + <dependency org="com.vaadin" name="vaadin-client-compiler" + rev="&vaadin.version;" conf="widgetset-compile->default" /> + </dependencies> +</ivy-module>
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/ivysettings.xml b/org.eclipse.osbp.vaadin.addons.designer.overlay/ivysettings.xml new file mode 100644 index 0000000..9c0f653 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/ivysettings.xml
@@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ivysettings> + <settings defaultResolver="default" /> + <resolvers> + <chain name="default"> + <!-- Public Maven repository --> + <ibiblio name="public" m2compatible="true" /> + + <!-- Vaadin Add-on repository --> + <ibiblio name="vaadin-addons" usepoms="true" m2compatible="true" + root="http://maven.vaadin.com/vaadin-addons" /> + + <!-- Vaadin snapshots repository --> + <ibiblio name="vaadin-snapshots" usepoms="true" m2compatible="true" + root="https://oss.sonatype.org/content/repositories/vaadin-snapshots" /> + <!-- Repository used for Vaadin modified smartsprites library --> + <dual name="custom-smartsprites"> + <filesystem name="smartsprites-ivy"> + <ivy pattern="${basedir}/ivymodule/[module]-ivy-[revision].xml" /> + </filesystem> + <url name="smartsprites-artifact"> + <artifact + pattern="http://dev.vaadin.com/svn/versions/6.8/build/smartsprites/lib/[artifact](-[revision]).[ext]" /> + </url> + </dual> + </chain> + </resolvers> + <modules> + <!-- Vaadin patched SmartSprites --> + <module organisation="com.carrotsearch" name="smartsprites" + revision="0.2.3-itmill" resolver="custom-smartsprites" /> + </modules> + + +</ivysettings> \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/license.html b/org.eclipse.osbp.vaadin.addons.designer.overlay/license.html new file mode 100644 index 0000000..6e579a5 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/license.html
@@ -0,0 +1,164 @@ +<!--?xml version="1.0" encoding="ISO-8859-1" ?--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>Eclipse Foundation Software User Agreement</title> +</head> + +<body lang="EN-US"> +<h2>Eclipse Foundation Software User Agreement</h2> +<p>February 1, 2011</p> + +<h3>Usage Of Content</h3> + +<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS + (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND + CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE + OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR + NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND + CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p> + +<h3>Applicable Licenses</h3> + +<p>Unless otherwise indicated, all Content made available by the Eclipse + Foundation is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 + ("EPL"). A copy of the EPL is provided with this Content and is also + available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. + For purposes of the EPL, "Program" will mean the Content.</p> + +<p>Content includes, but is not limited to, source code, object code, +documentation and other files maintained in the Eclipse Foundation +source code + repository ("Repository") in software modules ("Modules") and made +available as downloadable archives ("Downloads").</p> + +<ul> + <li>Content may be structured and packaged into modules to +facilitate delivering, extending, and upgrading the Content. Typical +modules may include plug-ins ("Plug-ins"), plug-in fragments +("Fragments"), and features ("Features").</li> + <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</li> + <li>A Feature is a bundle of one or more Plug-ins and/or +Fragments and associated material. Each Feature may be packaged as a +sub-directory in a directory named "features". Within a Feature, files +named "feature.xml" may contain a list of the names and version numbers +of the Plug-ins + and/or Fragments associated with that Feature.</li> + <li>Features may also include other Features ("Included +Features"). Within a Feature, files named "feature.xml" may contain a +list of the names and version numbers of Included Features.</li> +</ul> + +<p>The terms and conditions governing Plug-ins and Fragments should be +contained in files named "about.html" ("Abouts"). The terms and +conditions governing Features and +Included Features should be contained in files named "license.html" +("Feature Licenses"). Abouts and Feature Licenses may be located in any + directory of a Download or Module +including, but not limited to the following locations:</p> + +<ul> + <li>The top-level (root) directory</li> + <li>Plug-in and Fragment directories</li> + <li>Inside Plug-ins and Fragments packaged as JARs</li> + <li>Sub-directories of the directory named "src" of certain Plug-ins</li> + <li>Feature directories</li> +</ul> + +<p>Note: if a Feature made available by the Eclipse Foundation is +installed using the Provisioning Technology (as defined below), you must + agree to a license ("Feature Update License") during the +installation process. If the Feature contains Included Features, the +Feature Update License should either provide you with the terms and +conditions governing the Included Features or +inform you where you can locate them. Feature Update Licenses may be +found in the "license" property of files named "feature.properties" +found within a Feature. +Such Abouts, Feature Licenses, and Feature Update Licenses contain the +terms and conditions (or references to such terms and conditions) that +govern your use of the associated Content in +that directory.</p> + +<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER +TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. + SOME OF THESE +OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p> + +<ul> + <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li> + <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li> + <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li> + <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li> + <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li> + <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li> +</ul> + +<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND +CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, +or Feature Update License is provided, please +contact the Eclipse Foundation to determine what terms and conditions +govern that particular Content.</p> + + +<h3>Use of Provisioning Technology</h3> + +<p>The Eclipse Foundation makes available provisioning software, +examples of which include, but are not limited to, p2 and the Eclipse + Update Manager ("Provisioning Technology") for the purpose of +allowing users to install software, documentation, information and/or + other materials (collectively "Installable Software"). This +capability is provided with the intent of allowing such users to + install, extend and update Eclipse-based products. Information about +packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a> + ("Specification").</p> + +<p>You may use Provisioning Technology to allow other parties to install + Installable Software. You shall be responsible for enabling the + applicable license agreements relating to the Installable Software to + be presented to, and accepted by, the users of the Provisioning +Technology + in accordance with the Specification. By using Provisioning +Technology in such a manner and making it available in accordance with +the + Specification, you further acknowledge your agreement to, and the +acquisition of all necessary rights to permit the following:</p> + +<ol> + <li>A series of actions may occur ("Provisioning Process") in +which a user may execute the Provisioning Technology + on a machine ("Target Machine") with the intent of installing, +extending or updating the functionality of an Eclipse-based + product.</li> + <li>During the Provisioning Process, the Provisioning Technology +may cause third party Installable Software or a portion thereof to be + accessed and copied to the Target Machine.</li> + <li>Pursuant to the Specification, you will provide to the user +the terms and conditions that govern the use of the Installable + Software ("Installable Software Agreement") and such Installable +Software Agreement shall be accessed from the Target + Machine in accordance with the Specification. Such Installable +Software Agreement must inform the user of the terms and conditions that + govern + the Installable Software and must solicit acceptance by the end +user in the manner prescribed in such Installable Software Agreement. +Upon such + indication of agreement by the user, the provisioning Technology +will complete installation of the Installable Software.</li> +</ol> + +<h3>Cryptography</h3> + +<p>Content may contain encryption software. The country in which you are + currently may have restrictions on the import, possession, and use, +and/or re-export to + another country, of encryption software. BEFORE using any encryption +software, please check the country's laws, regulations and policies +concerning the import, + possession, or use, and re-export of encryption software, to see if +this is permitted.</p> + +<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p> + + +</body></html> \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/pom.xml b/org.eclipse.osbp.vaadin.addons.designer.overlay/pom.xml new file mode 100644 index 0000000..cb11805 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/pom.xml
@@ -0,0 +1,184 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.eclipse.osbp.releng.maven</groupId> + <artifactId>org.eclipse.osbp.releng.maven.parent.mbp</artifactId> + <version>0.9.0-SNAPSHOT</version> + <relativePath /> + </parent> + + <groupId>org.eclipse.osbp.vaadin.addons</groupId> + <artifactId>org.eclipse.osbp.vaadin.addons.designer.overlay</artifactId> + <packaging>bundle</packaging> + + <dependencies> + <dependency> + <groupId>com.vaadin</groupId> + <artifactId>vaadin-server</artifactId> + <version>${vaadin.version}</version> + </dependency> + <dependency> + <groupId>com.vaadin</groupId> + <artifactId>vaadin-client</artifactId> + <version>${vaadin.version}</version> + </dependency> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>javax.servlet-api</artifactId> + <version>3.0.1</version> + </dependency> + </dependencies> + + <build> + <sourceDirectory>${basedir}/src</sourceDirectory> + + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-resources-plugin</artifactId> + <configuration> + <encoding>UTF-8</encoding> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.0</version> + <configuration> + <encoding>UTF-8</encoding> + <source>1.8</source> + <target>1.8</target> + </configuration> + </plugin> + + <!--<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> + <version>2.3.1</version> <configuration> <archive> <index>true</index> <manifestEntries> + <Bundle-SymbolicName>org.eclipse.osbp.vaadin.addons.absolutelayout</Bundle-SymbolicName> + <Vaadin-Stylesheets>/VAADIN/addons/osbee/vaadin/addons/absolutelayout/styles.scss</Vaadin-Stylesheets> + </manifestEntries> </archive> </configuration> </plugin> --> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Bundle-Name>OSBP Addon for Vaadin: Designer Overlay</Bundle-Name> + <Bundle-SymbolicName>org.eclipse.osbp.vaadin.addons.designer.overlay</Bundle-SymbolicName> + <Bundle-Version>0.9.0.{osgi-version-qualifier}</Bundle-Version> + <Require-Bundle>com.vaadin.server;bundle-version="[7.5.7,7.7.0)", + com.vaadin.client;bundle-version="[7.5.7,7.7.0)", + com.vaadin.shared;bundle-version="[7.5.7,7.7.0)", + org.jsoup;bundle-version="[1.8.3,1.8.4)" + </Require-Bundle> + <Import-Package> + javax.servlet.annotation;resolution:=optional, + * + </Import-Package> + <Export-Package> + !LICENSE,!LICENSE.txt,!THIRD-PARTY.txt,!NOTICE,!README.txt,!VERSION.txt,!build.properties, + !VAADIN.*, + org.eclipse.osbp.vaadin.addons.*;version="0.9.0" + </Export-Package> + <Include-Resource>{maven-resources},LICENSE.txt,epl-v10.html</Include-Resource> + <_nouses>true</_nouses> + </instructions> + </configuration> + </plugin> + <!-- <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> + <version>2.9</version> <executions> <execution> <id>attach-javadoc</id> <goals> + <goal>jar</goal> </goals> </execution> </executions> </plugin> --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <version>2.2.1</version> + <executions> + <execution> + <id>attach-sources</id> + <goals> + <goal>jar</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + <pluginManagement> + <plugins> + + <!--This plugin's configuration is used to store Eclipse m2e settings + only. It has no influence on the Maven build itself. --> + <plugin> + <groupId>org.eclipse.m2e</groupId> + <artifactId>lifecycle-mapping</artifactId> + <version>1.0.0</version> + <configuration> + <lifecycleMappingMetadata> + <pluginExecutions> + <pluginExecution> + <pluginExecutionFilter> + <groupId> + org.apache.maven.plugins + </groupId> + <artifactId> + maven-dependency-plugin + </artifactId> + <versionRange> + [2.0.0,) + </versionRange> + <goals> + <goal> + copy-dependencies + </goal> + </goals> + </pluginExecutionFilter> + <action> + <ignore></ignore> + </action> + </pluginExecution> + <pluginExecution> + <pluginExecutionFilter> + <groupId>com.vaadin</groupId> + <artifactId> + vaadin-maven-plugin + </artifactId> + <versionRange> + [7.0-SNAPSHOT,) + </versionRange> + <goals> + <goal>compile</goal> + </goals> + </pluginExecutionFilter> + <action> + <ignore></ignore> + </action> + </pluginExecution> + </pluginExecutions> + </lifecycleMappingMetadata> + </configuration> + </plugin> + </plugins> + </pluginManagement> + <!-- This is needed for the sources required by the client-side compiler + to be included in the produced JARs --> + <resources> + <resource> + <directory>src</directory> + </resource> + </resources> + + </build> + +</project>
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/sample/org/eclipse/osbp/vaadin/addons/designer/overlay/OverlayApplication.java b/org.eclipse.osbp.vaadin.addons.designer.overlay/sample/org/eclipse/osbp/vaadin/addons/designer/overlay/OverlayApplication.java new file mode 100644 index 0000000..422fb70 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/sample/org/eclipse/osbp/vaadin/addons/designer/overlay/OverlayApplication.java
@@ -0,0 +1,485 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.designer.overlay; + +import javax.servlet.annotation.WebServlet; + +import org.eclipse.osbp.vaadin.addons.designer.overlay.DesignerOverlayExtension.AddChildEvent; +import org.eclipse.osbp.vaadin.addons.designer.overlay.DesignerOverlayExtension.RemoveChildEvent; +import org.eclipse.osbp.vaadin.addons.designer.overlay.DesignerOverlayExtension.ShowPropertiesEvent; +import org.eclipse.osbp.vaadin.addons.designer.overlay.DesignerOverlayExtension.ShowPropertiesListener; +import org.eclipse.osbp.vaadin.addons.designer.overlay.DesignerOverlayExtension.SwitchEditableEvent; +import org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets.AlignmentInfo; + +import com.vaadin.annotations.Theme; +import com.vaadin.annotations.VaadinServletConfiguration; +import com.vaadin.server.ThemeResource; +import com.vaadin.server.VaadinRequest; +import com.vaadin.server.VaadinServlet; +import com.vaadin.ui.Component; +import com.vaadin.ui.GridLayout; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.Notification; +import com.vaadin.ui.TabSheet; +import com.vaadin.ui.TextField; +import com.vaadin.ui.UI; +import com.vaadin.ui.VerticalLayout; + +@SuppressWarnings("serial") +@Theme("valo") +public class OverlayApplication extends UI { + + @WebServlet(value = "/*", asyncSupported = true) + @VaadinServletConfiguration(productionMode = false, ui = OverlayApplication.class, widgetset = "org.eclipse.osbp.vaadin.addons.designer.overlay.OverlayWidgetset") + public static class Servlet extends VaadinServlet { + } + + @Override + protected void init(VaadinRequest request) { + + TabSheet tabSheet = new TabSheet(); + tabSheet.setSizeFull(); + setContent(tabSheet); + + addGridlayout(tabSheet); + addHorizontallayout(tabSheet); + addVerticallayout(tabSheet); + addLayoutInlayout(tabSheet); + } + + /** + * Add gridlayout to the tabsheet. + * + * @param tabSheet + */ + private void addGridlayout(TabSheet tabSheet) { + final GridLayout gridLayout = new GridLayout(3, 3); + gridLayout.setSizeFull(); + gridLayout.setMargin(true); + tabSheet.addTab(gridLayout, "GridLayout"); + + DesignerOverlayExtension layoutExt = DesignerOverlayExtension.create(gridLayout); + layoutExt.setSupportsAlignments(false); + layoutExt.setSupportsMargins(true); + layoutExt.setSupportsSpacing(true); + layoutExt.setSupportsPropertiesDialog(true); + layoutExt.setSupportsRemove(false); + layoutExt.setSupportsAdd(true); + layoutExt.setIcon(new ThemeResource("sample/sample.gif")); + layoutExt.addSwitchEditableListener(new DesignerOverlayExtension.SwitchEditableListener() { + @Override + public void switchEditable(DesignerOverlayExtension.SwitchEditableEvent event) { + gridLayout.setEnabled(!gridLayout.isReadOnly()); + } + }); + + layoutExt.addSwitchMarginListener(new DesignerOverlayExtension.SwitchMarginListener() { + @Override + public void switchMargin(DesignerOverlayExtension.SwitchMarginEvent event) { + gridLayout.setMargin(gridLayout.getMargin().getBitMask() == 0); + } + }); + + layoutExt.addSwitchSpacingListener(new DesignerOverlayExtension.SwitchSpacingListener() { + @Override + public void switchSpacing(DesignerOverlayExtension.SwitchSpacingEvent event) { + gridLayout.setSpacing(!gridLayout.isSpacing()); + } + }); + + layoutExt.addShowPropertiesListener(new ShowPropertiesListener() { + @Override + public void showProperties(ShowPropertiesEvent event) { + Notification.show("Requested properties dialog"); + } + }); + + layoutExt.addAddChildListener(new DesignerOverlayExtension.AddChildListener() { + @Override + public void addChild(DesignerOverlayExtension.AddChildEvent event) { + gridLayout.addComponent(new TextField("added")); + } + }); + + addToGrid(gridLayout, 0, 0); + addToGrid(gridLayout, 0, 1); + addToGrid(gridLayout, 0, 2); + addToGrid(gridLayout, 1, 0); + addToGrid(gridLayout, 1, 1); + addToGrid(gridLayout, 1, 2); + addToGrid(gridLayout, 2, 0); + addToGrid(gridLayout, 2, 1); + addToGrid(gridLayout, 2, 2); + } + + private void addToGrid(final GridLayout gridLayout, int col, int row) { + final Component text = new TextField("Text " + col + "/" + row); + text.setId("Text " + col + "/" + row); + gridLayout.addComponent(text, col, row); + + DesignerOverlayExtension extension = DesignerOverlayExtension.create(text); + extension.setSupportsAlignments(true); + extension.setSupportsMargins(false); + extension.setSupportsSpacing(false); + extension.setSupportsPropertiesDialog(true); + extension.setSupportsRemove(true); + extension.setSupportsEditable(true); + + extension.addAlignmentChangedListener(new DesignerOverlayExtension.AlignmentChangedListener() { + @Override + public void alignmentChanged(DesignerOverlayExtension.AlignmentChangedEvent event) { + AlignmentInfoUtil.apply(gridLayout, text, event.getAlignment()); + } + }); + + extension.addRemoveChildListener(new DesignerOverlayExtension.RemoveChildListener() { + @Override + public void removeChild(RemoveChildEvent event) { + gridLayout.removeComponent(event.getComponent()); + } + }); + + extension.addSwitchEditableListener(new DesignerOverlayExtension.SwitchEditableListener() { + @Override + public void switchEditable(SwitchEditableEvent event) { + text.setReadOnly(!text.isReadOnly()); + } + }); + + extension.addShowPropertiesListener(new ShowPropertiesListener() { + @Override + public void showProperties(ShowPropertiesEvent event) { + Notification.show("Requested properties dialog"); + } + }); + + extension.getState().alignment = AlignmentInfo.MIDDLE_CENTER; + AlignmentInfoUtil.apply(gridLayout, text, AlignmentInfo.MIDDLE_CENTER); + } + + /** + * Add verticallayout to the tabsheet. + * + * @param tabSheet + */ + private void addVerticallayout(TabSheet tabSheet) { + final VerticalLayout verticalLayout = new VerticalLayout(); + verticalLayout.setSizeFull(); + verticalLayout.setMargin(true); + tabSheet.addTab(verticalLayout, "VerticalLayout"); + + DesignerOverlayExtension layoutExt = DesignerOverlayExtension.create(verticalLayout); + layoutExt.setSupportsAlignments(false); + layoutExt.setSupportsMargins(true); + layoutExt.setSupportsSpacing(true); + layoutExt.setSupportsPropertiesDialog(true); + layoutExt.setSupportsRemove(false); + layoutExt.setSupportsAdd(true); + layoutExt.addAllEventHanndler(new DesignerOverlayExtension.AllEventHanndler() { + @Override + public void switchEditable(DesignerOverlayExtension.SwitchEditableEvent event) { + verticalLayout.setReadOnly(!verticalLayout.isReadOnly()); + } + + @Override + public void switchMargin(DesignerOverlayExtension.SwitchMarginEvent event) { + verticalLayout.setMargin(verticalLayout.getMargin().getBitMask() == 0); + } + + @Override + public void switchSpacing(DesignerOverlayExtension.SwitchSpacingEvent event) { + verticalLayout.setSpacing(!verticalLayout.isSpacing()); + } + + @Override + public void showProperties(ShowPropertiesEvent event) { + Notification.show("Requested properties dialog"); + } + + @Override + public void addChild(AddChildEvent event) { + addToVerticalLayout(verticalLayout, 10); + } + }); + + addToVerticalLayout(verticalLayout, 0); + addToVerticalLayout(verticalLayout, 1); + addToVerticalLayout(verticalLayout, 2); + addToVerticalLayout(verticalLayout, 3); + addToVerticalLayout(verticalLayout, 4); + addToVerticalLayout(verticalLayout, 5); + } + + private void addToVerticalLayout(final VerticalLayout verticalLayout, int index) { + final TextField text = new TextField("Mouse over " + index); + text.setId("Mouse over " + index); + verticalLayout.addComponent(text); + + DesignerOverlayExtension extension = DesignerOverlayExtension.create(text); + extension.setSupportsAlignments(true); + extension.setSupportsMargins(false); + extension.setSupportsSpacing(false); + extension.setSupportsPropertiesDialog(true); + extension.setSupportsRemove(true); + extension.setSupportsEditable(true); + + extension.addAllEventHanndler(new DesignerOverlayExtension.AllEventHanndler() { + @Override + public void alignmentChanged(DesignerOverlayExtension.AlignmentChangedEvent event) { + AlignmentInfoUtil.apply(verticalLayout, text, event.getAlignment()); + } + + @Override + public void removeChild(RemoveChildEvent event) { + verticalLayout.removeComponent(event.getComponent()); + } + + @Override + public void switchEditable(SwitchEditableEvent event) { + text.setReadOnly(!text.isReadOnly()); + } + + @Override + public void showProperties(ShowPropertiesEvent event) { + Notification.show("Requested properties dialog"); + } + }); + + extension.getState().alignment = AlignmentInfo.TOP_CENTER; + AlignmentInfoUtil.apply(verticalLayout, text, AlignmentInfo.TOP_CENTER); + } + + /** + * Add horizontallayout to the tabsheet. + * + * @param tabSheet + */ + private void addHorizontallayout(TabSheet tabSheet) { + final HorizontalLayout horizontalLayout = new HorizontalLayout(); + horizontalLayout.setSizeFull(); + horizontalLayout.setMargin(true); + tabSheet.addTab(horizontalLayout, "HorizontalLayout"); + + DesignerOverlayExtension layoutExt = DesignerOverlayExtension.create(horizontalLayout); + layoutExt.setSupportsAlignments(false); + layoutExt.setSupportsMargins(true); + layoutExt.setSupportsSpacing(true); + layoutExt.setSupportsPropertiesDialog(true); + layoutExt.setSupportsRemove(false); + layoutExt.setSupportsAdd(true); + layoutExt.addAllEventHanndler(new DesignerOverlayExtension.AllEventHanndler() { + @Override + public void switchEditable(DesignerOverlayExtension.SwitchEditableEvent event) { + horizontalLayout.setReadOnly(!horizontalLayout.isReadOnly()); + } + + public void switchMargin(DesignerOverlayExtension.SwitchMarginEvent event) { + horizontalLayout.setMargin(horizontalLayout.getMargin().getBitMask() == 0); + } + + public void switchSpacing(DesignerOverlayExtension.SwitchSpacingEvent event) { + horizontalLayout.setSpacing(!horizontalLayout.isSpacing()); + } + + @Override + public void showProperties(ShowPropertiesEvent event) { + Notification.show("Requested properties dialog"); + } + + @Override + public void addChild(AddChildEvent event) { + addToHorizontalLayout(horizontalLayout, 10); + } + }); + + addToHorizontalLayout(horizontalLayout, 0); + addToHorizontalLayout(horizontalLayout, 1); + addToHorizontalLayout(horizontalLayout, 2); + addToHorizontalLayout(horizontalLayout, 3); + } + + private void addToHorizontalLayout(final HorizontalLayout horizontalLayout, int index) { + final TextField text = new TextField("Mouse over " + index); + text.setId("Mouse over " + index); + horizontalLayout.addComponent(text); + + DesignerOverlayExtension extension = DesignerOverlayExtension.create(text); + extension.setSupportsAlignments(true); + extension.setSupportsMargins(false); + extension.setSupportsSpacing(false); + extension.setSupportsPropertiesDialog(true); + extension.setSupportsRemove(true); + extension.setSupportsEditable(true); + + extension.addAllEventHanndler(new DesignerOverlayExtension.AllEventHanndler() { + @Override + public void alignmentChanged(DesignerOverlayExtension.AlignmentChangedEvent event) { + AlignmentInfoUtil.apply(horizontalLayout, text, event.getAlignment()); + } + + @Override + public void removeChild(RemoveChildEvent event) { + horizontalLayout.removeComponent(event.getComponent()); + } + + @Override + public void switchEditable(SwitchEditableEvent event) { + text.setReadOnly(!text.isReadOnly()); + } + + @Override + public void showProperties(ShowPropertiesEvent event) { + Notification.show("Requested properties dialog"); + } + }); + + extension.getState().alignment = AlignmentInfo.TOP_CENTER; + AlignmentInfoUtil.apply(horizontalLayout, text, AlignmentInfo.TOP_CENTER); + } + + /** + * Add texts in horizontal layouts in verticallayout to the tabsheet. + * + * @param tabSheet + */ + private void addLayoutInlayout(TabSheet tabSheet) { + final VerticalLayout verticalLayout = new VerticalLayout(); + verticalLayout.setSizeFull(); + verticalLayout.setMargin(true); + tabSheet.addTab(verticalLayout, "Layout in Layout"); + + DesignerOverlayExtension layoutExt = DesignerOverlayExtension.create(verticalLayout); + layoutExt.setSupportsAlignments(false); + layoutExt.setSupportsMargins(true); + layoutExt.setSupportsSpacing(true); + layoutExt.setSupportsPropertiesDialog(true); + layoutExt.setSupportsRemove(false); + + layoutExt.addAllEventHanndler(new DesignerOverlayExtension.AllEventHanndler() { + + @Override + public void switchEditable(DesignerOverlayExtension.SwitchEditableEvent event) { + verticalLayout.setReadOnly(!verticalLayout.isReadOnly()); + } + + @Override + public void switchMargin(DesignerOverlayExtension.SwitchMarginEvent event) { + verticalLayout.setMargin(verticalLayout.getMargin().getBitMask() == 0); + } + + @Override + public void switchSpacing(DesignerOverlayExtension.SwitchSpacingEvent event) { + verticalLayout.setSpacing(!verticalLayout.isSpacing()); + } + + @Override + public void showProperties(ShowPropertiesEvent event) { + Notification.show("Requested properties dialog"); + } + }); + + addToLayoutInLayout(verticalLayout, 0); + addToLayoutInLayout(verticalLayout, 1); + addToLayoutInLayout(verticalLayout, 2); + addToLayoutInLayout(verticalLayout, 3); + addToLayoutInLayout(verticalLayout, 4); + addToLayoutInLayout(verticalLayout, 5); + } + + private void addToLayoutInLayout(final VerticalLayout verticalLayout, int index) { + final HorizontalLayout hl = new HorizontalLayout(); + verticalLayout.addComponent(hl); + + DesignerOverlayExtension extension = DesignerOverlayExtension.create(hl); + extension.setSupportsAlignments(true); + extension.setSupportsMargins(true); + extension.setSupportsSpacing(true); + extension.setSupportsPropertiesDialog(true); + extension.setSupportsRemove(true); + + extension.addAllEventHanndler(new DesignerOverlayExtension.AllEventHanndler() { + @Override + public void alignmentChanged(DesignerOverlayExtension.AlignmentChangedEvent event) { + AlignmentInfoUtil.apply(verticalLayout, hl, event.getAlignment()); + } + + @Override + public void removeChild(RemoveChildEvent event) { + verticalLayout.removeComponent(event.getComponent()); + } + + @Override + public void switchMargin(DesignerOverlayExtension.SwitchMarginEvent event) { + hl.setMargin(hl.getMargin().getBitMask() == 0); + } + + @Override + public void switchSpacing(DesignerOverlayExtension.SwitchSpacingEvent event) { + hl.setSpacing(!hl.isSpacing()); + } + + @Override + public void switchEditable(SwitchEditableEvent event) { + hl.setReadOnly(!hl.isReadOnly()); + } + + @Override + public void showProperties(ShowPropertiesEvent event) { + Notification.show("Requested properties dialog"); + } + }); + + extension.getState().alignment = AlignmentInfo.TOP_CENTER; + AlignmentInfoUtil.apply(verticalLayout, hl, AlignmentInfo.TOP_CENTER); + + addToHorizontalLayoutNoAlignment(hl, 0); + addToHorizontalLayoutNoAlignment(hl, 1); + addToHorizontalLayoutNoAlignment(hl, 2); + addToHorizontalLayoutNoAlignment(hl, 3); + addToHorizontalLayoutNoAlignment(hl, 4); + addToHorizontalLayoutNoAlignment(hl, 5); + } + + private void addToHorizontalLayoutNoAlignment(final HorizontalLayout horizontalLayout, int index) { + final TextField text = new TextField("Mouse over " + index); + text.setId("Mouse over " + index); + text.setSizeFull(); + horizontalLayout.addComponent(text); + + DesignerOverlayExtension extension = DesignerOverlayExtension.create(text); + extension.setSupportsAlignments(false); + extension.addAllEventHanndler(new DesignerOverlayExtension.AllEventHanndler() { + @Override + public void alignmentChanged(DesignerOverlayExtension.AlignmentChangedEvent event) { + AlignmentInfoUtil.apply(horizontalLayout, text, event.getAlignment()); + } + + @Override + public void removeChild(RemoveChildEvent event) { + horizontalLayout.removeComponent(event.getComponent()); + } + + @Override + public void switchEditable(SwitchEditableEvent event) { + text.setReadOnly(!text.isReadOnly()); + } + + @Override + public void showProperties(ShowPropertiesEvent event) { + Notification.show("Requested properties dialog"); + } + }); + + AlignmentInfoUtil.apply(horizontalLayout, text, AlignmentInfo.FILL_FILL); + } +} \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/AlignmentInfoUtil.java b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/AlignmentInfoUtil.java new file mode 100644 index 0000000..b33da83 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/AlignmentInfoUtil.java
@@ -0,0 +1,175 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.designer.overlay; + +import org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets.AlignmentInfo; + +import com.vaadin.ui.Alignment; +import com.vaadin.ui.Component; +import com.vaadin.ui.GridLayout; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.VerticalLayout; + +// TODO: Auto-generated Javadoc +/** + * Util to deal with {@link AlignmentInfo}. + */ +public class AlignmentInfoUtil { + + /** + * Returns the horizontal width for the given alignment. + * + * @param alignment the alignment + * @return the horizonal width + */ + public static String getHorizonalWidth(AlignmentInfo alignment) { + if (alignment.isHorizontalFill()) { + return "100%"; + } else { + return "-1px"; + } + } + + /** + * Returns the vertical height for the given alignment. + * + * @param alignment the alignment + * @return the vertical height + */ + public static String getVerticalHeight(AlignmentInfo alignment) { + if (alignment.isVerticalFill()) { + return "100%"; + } else { + return "-1px"; + } + } + + /** + * Converts alignment info to vaadin alignment. + * + * @param alignment the alignment + * @return the alignment + */ + public static Alignment toVaadin(AlignmentInfo alignment) { + switch (alignment) { + case BOTTOM_CENTER: + return Alignment.BOTTOM_CENTER; + case BOTTOM_LEFT: + return Alignment.BOTTOM_LEFT; + case BOTTOM_RIGHT: + return Alignment.BOTTOM_RIGHT; + case MIDDLE_CENTER: + return Alignment.MIDDLE_CENTER; + case MIDDLE_LEFT: + return Alignment.MIDDLE_LEFT; + case MIDDLE_RIGHT: + return Alignment.MIDDLE_RIGHT; + case TOP_LEFT: + return Alignment.TOP_LEFT; + case TOP_RIGHT: + return Alignment.TOP_RIGHT; + case TOP_CENTER: + return Alignment.TOP_CENTER; + // fill here + case BOTTOM_FILL: + // fill the bottom line -> position at origin + return Alignment.BOTTOM_LEFT; + case MIDDLE_FILL: + // fill the middle line -> position at origin + return Alignment.MIDDLE_LEFT; + case TOP_FILL: + // fill the top line -> position at origin + return Alignment.TOP_LEFT; + case FILL_CENTER: + // fill the center row -> position at origin + return Alignment.TOP_CENTER; + case FILL_FILL: + // fill the all -> position at origin + return Alignment.TOP_LEFT; + case FILL_LEFT: + // fill the left row -> position at origin + return Alignment.TOP_LEFT; + case FILL_RIGHT: + // fill the right row -> position at origin + return Alignment.TOP_RIGHT; + } + + return Alignment.TOP_LEFT; + } + + /** + * Applies the alignment to the given layout and child. + * + * @param layout the layout + * @param child the child + * @param alignment the alignment + */ + public static void apply(GridLayout layout, Component child, AlignmentInfo alignment) { + layout.setComponentAlignment(child, AlignmentInfoUtil.toVaadin(alignment)); + + child.setWidth(AlignmentInfoUtil.getHorizonalWidth(alignment)); + child.setHeight(AlignmentInfoUtil.getVerticalHeight(alignment)); + + if (alignment.isHorizontalFill()) { + layout.setColumnExpandRatio(layout.getComponentArea(child).getColumn1(), 1.0f); + } else { + layout.setColumnExpandRatio(layout.getComponentArea(child).getColumn1(), 0f); + } + + if (alignment.isVerticalFill()) { + layout.setRowExpandRatio(layout.getComponentArea(child).getRow1(), 1.0f); + } else { + layout.setRowExpandRatio(layout.getComponentArea(child).getRow1(), 0f); + } + } + + /** + * Applies the alignment to the given layout and child. + * + * @param layout the layout + * @param child the child + * @param alignment the alignment + */ + public static void apply(VerticalLayout layout, Component child, AlignmentInfo alignment) { + layout.setComponentAlignment(child, AlignmentInfoUtil.toVaadin(alignment)); + + child.setWidth(AlignmentInfoUtil.getHorizonalWidth(alignment)); + child.setHeight(AlignmentInfoUtil.getVerticalHeight(alignment)); + + if (alignment.isVerticalFill()) { + layout.setExpandRatio(child, 1.0f); + } else { + layout.setExpandRatio(child, 0f); + } + } + + /** + * Applies the alignment to the given layout and child. + * + * @param layout the layout + * @param child the child + * @param alignment the alignment + */ + public static void apply(HorizontalLayout layout, Component child, AlignmentInfo alignment) { + layout.setComponentAlignment(child, AlignmentInfoUtil.toVaadin(alignment)); + + child.setWidth(AlignmentInfoUtil.getHorizonalWidth(alignment)); + child.setHeight(AlignmentInfoUtil.getVerticalHeight(alignment)); + + if (alignment.isHorizontalFill()) { + layout.setExpandRatio(child, 1.0f); + } else { + layout.setExpandRatio(child, 0f); + } + } +}
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/DesignerOverlayExtension.java b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/DesignerOverlayExtension.java new file mode 100644 index 0000000..4bf2d40 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/DesignerOverlayExtension.java
@@ -0,0 +1,997 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.designer.overlay; + +import java.io.Serializable; +import java.lang.reflect.Method; + +import org.eclipse.osbp.vaadin.addons.designer.overlay.client.DesignerExtensionServerRpc; +import org.eclipse.osbp.vaadin.addons.designer.overlay.client.DesignerExtensionState; +import org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets.AlignmentInfo; + +import com.vaadin.server.AbstractClientConnector; +import com.vaadin.server.AbstractExtension; +import com.vaadin.server.Resource; +import com.vaadin.shared.ComponentConstants; +import com.vaadin.ui.Component; +import com.vaadin.ui.Component.Event; +import com.vaadin.util.ReflectTools; + +// TODO: Auto-generated Javadoc +/** + * This extension adds an overlay to children of layouts. Listeners are being + * notified if events. + */ +@SuppressWarnings("serial") +public class DesignerOverlayExtension extends AbstractExtension { + + /** The owner. */ + private Component owner; + + /** The rpc. */ + private DesignerExtensionServerRpc rpc = new DesignerExtensionServerRpc() { + @Override + public void alignmentChanged(AlignmentInfo alignment) { + fireEvent(new AlignmentChangedEvent(owner, alignment)); + } + + @Override + public void removeChild() { + fireEvent(new RemoveChildEvent(owner)); + } + + @Override + public void openProperties() { + fireEvent(new ShowPropertiesEvent(owner)); + } + + @Override + public void switchEditable() { + fireEvent(new SwitchEditableEvent(owner)); + } + + @Override + public void switchMargin() { + fireEvent(new SwitchMarginEvent(owner)); + } + + @Override + public void switchSpacing() { + fireEvent(new SwitchSpacingEvent(owner)); + } + + @Override + public void addChild() { + fireEvent(new AddChildEvent(owner)); + } + }; + + /** + * Creates the. + * + * @param target + * the target + * @return the designer overlay extension + */ + public static DesignerOverlayExtension create(Component target) { + DesignerOverlayExtension extension = new DesignerOverlayExtension(); + extension.owner = target; + extension.extend((AbstractClientConnector) target); + return extension; + } + + /** + * Instantiates a new designer overlay extension. + */ + private DesignerOverlayExtension() { + registerRpc(rpc); + } + + /* + * (non-Javadoc) + * + * @see com.vaadin.server.AbstractClientConnector#getState() + */ + @Override + protected DesignerExtensionState getState() { + return (DesignerExtensionState) super.getState(); + } + + /* + * (non-Javadoc) + * + * @see com.vaadin.server.AbstractClientConnector#getState(boolean) + */ + @Override + protected DesignerExtensionState getState(boolean markDirty) { + return (DesignerExtensionState) super.getState(markDirty); + } + + /** + * Sets the icon to be shown at the overlay. + * + * @param source + * the new icon + */ + public void setIcon(Resource source) { + setResource(ComponentConstants.ICON_RESOURCE, source); + } + + /** + * Returns the icon which is shown at the overlay. + * + * @return the icon + */ + public Resource getIcon() { + return getResource(ComponentConstants.ICON_RESOURCE); + } + + /** + * Checks if is supports remove. + * + * @return true, if is supports remove + */ + public boolean isSupportsRemove() { + return getState(false).supportsRemove; + } + + /** + * Sets the supports remove. + * + * @param supportsRemove + * the new supports remove + */ + public void setSupportsRemove(boolean supportsRemove) { + if (isSupportsRemove() != supportsRemove) { + getState(true).supportsRemove = supportsRemove; + } + } + + /** + * Checks if is supports add. + * + * @return true, if is supports add + */ + public boolean isSupportsAdd() { + return getState(false).supportsAdd; + } + + /** + * Sets the supports add. + * + * @param supportsAdd + * the new supports add + */ + public void setSupportsAdd(boolean supportsAdd) { + if (isSupportsAdd() != supportsAdd) { + getState(true).supportsAdd = supportsAdd; + } + } + + /** + * Checks if is supports editable. + * + * @return true, if is supports editable + */ + public boolean isSupportsEditable() { + return getState(false).supportsEditable; + } + + /** + * Sets the supports editable. + * + * @param supportsEditable + * the new supports editable + */ + public void setSupportsEditable(boolean supportsEditable) { + if (isSupportsEditable() != supportsEditable) { + getState(true).supportsEditable = supportsEditable; + } + } + + /** + * Checks if is supports properties dialog. + * + * @return true, if is supports properties dialog + */ + public boolean isSupportsPropertiesDialog() { + return getState(false).supportsPropertiesDialog; + } + + /** + * Sets the supports properties dialog. + * + * @param supportsPropertiesDialog + * the new supports properties dialog + */ + public void setSupportsPropertiesDialog(boolean supportsPropertiesDialog) { + if (isSupportsPropertiesDialog() != supportsPropertiesDialog) { + getState(true).supportsPropertiesDialog = supportsPropertiesDialog; + } + } + + /** + * Checks if is supports margins. + * + * @return true, if is supports margins + */ + public boolean isSupportsMargins() { + return getState(false).supportsMargins; + } + + /** + * Sets the supports margins. + * + * @param supportsMargins + * the new supports margins + */ + public void setSupportsMargins(boolean supportsMargins) { + if (isSupportsMargins() != supportsMargins) { + getState(true).supportsMargins = supportsMargins; + } + } + + /** + * Checks if is supports spacing. + * + * @return true, if is supports spacing + */ + public boolean isSupportsSpacing() { + return getState(false).supportsSpacing; + } + + /** + * Sets the supports spacing. + * + * @param supportsSpacing + * the new supports spacing + */ + public void setSupportsSpacing(boolean supportsSpacing) { + if (isSupportsSpacing() != supportsSpacing) { + getState(true).supportsSpacing = supportsSpacing; + } + } + + /** + * Checks if is supports alignments. + * + * @return true, if is supports alignments + */ + public boolean isSupportsAlignments() { + return getState(false).supportsAlignments; + } + + /** + * Sets the supports alignments. + * + * @param supportsAlignments + * the new supports alignments + */ + public void setSupportsAlignments(boolean supportsAlignments) { + if (isSupportsAlignments() != supportsAlignments) { + getState(true).supportsAlignments = supportsAlignments; + } + } + + /** + * Gets the description remove. + * + * @return the descriptionRemove + */ + public String getDescriptionRemove() { + return getState(false).descriptionRemove; + } + + /** + * Sets the description remove. + * + * @param descriptionRemove + * the descriptionRemove to set + */ + public void setDescriptionRemove(String descriptionRemove) { + getState(true).descriptionRemove = descriptionRemove; + } + + /** + * Gets the description editable. + * + * @return the descriptionEditable + */ + public String getDescriptionEditable() { + return getState(false).descriptionEditable; + } + + /** + * Sets the description editable. + * + * @param descriptionEditable + * the descriptionEditable to set + */ + public void setDescriptionEditable(String descriptionEditable) { + getState(true).descriptionEditable = descriptionEditable; + } + + /** + * Gets the description properties dialog. + * + * @return the descriptionPropertiesDialog + */ + public String getDescriptionPropertiesDialog() { + return getState(false).descriptionPropertiesDialog; + } + + /** + * Sets the description properties dialog. + * + * @param descriptionPropertiesDialog + * the descriptionPropertiesDialog to set + */ + public void setDescriptionPropertiesDialog(String descriptionPropertiesDialog) { + getState(true).descriptionPropertiesDialog = descriptionPropertiesDialog; + } + + /** + * Gets the description margins. + * + * @return the descriptionMargins + */ + public String getDescriptionMargins() { + return getState(false).descriptionMargins; + } + + /** + * Sets the description margins. + * + * @param descriptionMargins + * the descriptionMargins to set + */ + public void setDescriptionMargins(String descriptionMargins) { + getState(true).descriptionMargins = descriptionMargins; + } + + /** + * Gets the description spacing. + * + * @return the descriptionSpacing + */ + public String getDescriptionSpacing() { + return getState(false).descriptionSpacing; + } + + /** + * Sets the description spacing. + * + * @param descriptionSpacing + * the descriptionSpacing to set + */ + public void setDescriptionSpacing(String descriptionSpacing) { + getState(true).descriptionSpacing = descriptionSpacing; + } + + /** + * Gets the description alignments. + * + * @return the descriptionAlignments + */ + public String getDescriptionAlignments() { + return getState(false).descriptionAlignments; + } + + /** + * Sets the description alignments. + * + * @param descriptionAlignments + * the descriptionAlignments to set + */ + public void setDescriptionAlignments(String descriptionAlignments) { + getState(true).descriptionAlignments = descriptionAlignments; + } + + /** + * Gets the description add. + * + * @return the descriptionAdd + */ + public String getDescriptionAdd() { + return getState(false).descriptionAdd; + } + + /** + * Sets the description add. + * + * @param descriptionAdd + * the descriptionAdd to set + */ + public void setDescriptionAdd(String descriptionAdd) { + getState(true).descriptionAdd = descriptionAdd; + } + + /** + * Adds the all event hanndler. + * + * @param handler + * the handler + */ + public void addAllEventHanndler(AllEventHanndler handler) { + addSwitchEditableListener(handler); + addAlignmentChangedListener(handler); + addRemoveChildListener(handler); + addShowPropertiesListener(handler); + addSwitchMarginListener(handler); + addSwitchSpacingListener(handler); + addAddChildListener(handler); + } + + /** + * Removes the all event hanndler. + * + * @param handler + * the handler + */ + public void removeAllEventHanndler(AllEventHanndler handler) { + removeSwitchEditableListener(handler); + removeAlignmentChangedListener(handler); + removeRemoveChildListener(handler); + removeShowPropertiesListener(handler); + removeSwitchMarginListener(handler); + removeSwitchSpacingListener(handler); + removeAddChildListener(handler); + } + + /** + * Add listener which is being notified if the alignment changes. + * + * @param listener + * the listener + */ + public void addAlignmentChangedListener(AlignmentChangedListener listener) { + addListener(AlignmentChangedEvent.class, listener, AlignmentChangedListener.ALIGNMENT_CHANGED_METHOD); + } + + /** + * Removes listener which is being notified if the alignment changes. + * + * @param listener + * the listener + */ + public void removeAlignmentChangedListener(AlignmentChangedListener listener) { + removeListener(AlignmentChangedEvent.class, listener); + } + + /** + * Add listener which is being notified if a child should be removed. + * + * @param listener + * the listener + */ + public void addRemoveChildListener(RemoveChildListener listener) { + addListener(RemoveChildEvent.class, listener, RemoveChildListener.REMOVE_CHILD_METHOD); + } + + /** + * Removes listener which is being notified if a child should be removed. + * + * @param listener + * the listener + */ + public void removeRemoveChildListener(RemoveChildListener listener) { + removeListener(RemoveChildEvent.class, listener); + } + + /** + * Add listener which is being notified if a child should be added. + * + * @param listener + * the listener + */ + public void addAddChildListener(AddChildListener listener) { + addListener(AddChildEvent.class, listener, AddChildListener.ADD_CHILD_METHOD); + } + + /** + * Removes listener which is being notified if a child should be added. + * + * @param listener + * the listener + */ + public void removeAddChildListener(AddChildListener listener) { + removeListener(AddChildEvent.class, listener); + } + + /** + * Add listener which is being notified if the editable state should be + * switched. + * + * @param listener + * the listener + */ + public void addSwitchEditableListener(SwitchEditableListener listener) { + addListener(SwitchEditableEvent.class, listener, SwitchEditableListener.SWITCH_EDITABLE_METHOD); + } + + /** + * Removes listener which is being notified if the editable state should be + * switched. + * + * @param listener + * the listener + */ + public void removeSwitchEditableListener(SwitchEditableListener listener) { + removeListener(SwitchEditableEvent.class, listener); + } + + /** + * Add listener which is being notified if a properties dialog should be + * shown. + * + * @param listener + * the listener + */ + public void addShowPropertiesListener(ShowPropertiesListener listener) { + addListener(ShowPropertiesEvent.class, listener, ShowPropertiesListener.SHOW_PROPERTIES_METHOD); + } + + /** + * Removes listener which is being notified if a properties dialog should be + * shown. + * + * @param listener + * the listener + */ + public void removeShowPropertiesListener(ShowPropertiesListener listener) { + removeListener(ShowPropertiesEvent.class, listener); + } + + /** + * Add listener which is being notified if the spacing state should be + * switched. + * + * @param listener + * the listener + */ + public void addSwitchSpacingListener(SwitchSpacingListener listener) { + addListener(SwitchSpacingEvent.class, listener, SwitchSpacingListener.SWITCH_SPACING_METHOD); + } + + /** + * Remove listener which is being notified if the spacing state should be + * switched. + * + * @param listener + * the listener + */ + public void removeSwitchSpacingListener(SwitchSpacingListener listener) { + removeListener(SwitchSpacingEvent.class, listener); + } + + /** + * Add listener which is being notified if the margin state should be + * switched. + * + * @param listener + * the listener + */ + public void addSwitchMarginListener(SwitchMarginListener listener) { + addListener(SwitchMarginEvent.class, listener, SwitchMarginListener.SWITCH_MARGIN_METHOD); + } + + /** + * Remove listener which is being notified if the margin state should be + * switched. + * + * @param listener + * the listener + */ + public void removeSwitchMarginListener(SwitchMarginListener listener) { + removeListener(SwitchMarginEvent.class, listener); + } + + /** + * The Class AlignmentChangedEvent. + */ + public static class AlignmentChangedEvent extends Event { + + /** The alignment. */ + private final AlignmentInfo alignment; + + /** + * Instantiates a new alignment changed event. + * + * @param source + * the source + * @param alignment + * the alignment + */ + public AlignmentChangedEvent(Component source, AlignmentInfo alignment) { + super(source); + this.alignment = alignment; + } + + /** + * Gets the alignment. + * + * @return the alignment + */ + public AlignmentInfo getAlignment() { + return alignment; + } + + } + + /** + * The listener interface for receiving alignmentChanged events. The class + * that is interested in processing a alignmentChanged event implements this + * interface, and the object created with that class is registered with a + * component using the component's <code>addAlignmentChangedListener</code> + * method. When the alignmentChanged event occurs, that object's appropriate + * method is invoked. + * + * @see AlignmentChangedEvent + */ + public interface AlignmentChangedListener extends Serializable { + + /** The Constant ALIGNMENT_CHANGED_METHOD. */ + public static final Method ALIGNMENT_CHANGED_METHOD = ReflectTools.findMethod(AlignmentChangedListener.class, + "alignmentChanged", AlignmentChangedEvent.class); + + /** + * Alignment changed. + * + * @param event + * the event + */ + void alignmentChanged(AlignmentChangedEvent event); + + } + + /** + * This event is fired, if a properties dialog should be shown. + */ + public class ShowPropertiesEvent extends Event { + + /** + * Instantiates a new show properties event. + * + * @param source + * the source + */ + public ShowPropertiesEvent(Component source) { + super(source); + } + } + + /** + * Listens for ShowPropertiesEvent. + * + * @see ShowPropertiesEvent + */ + public interface ShowPropertiesListener { + + /** The Constant SHOW_PROPERTIES_METHOD. */ + public static final Method SHOW_PROPERTIES_METHOD = ReflectTools.findMethod(ShowPropertiesListener.class, + "showProperties", ShowPropertiesEvent.class); + + /** + * Show properties. + * + * @param event + * the event + */ + void showProperties(ShowPropertiesEvent event); + + } + + /** + * The Class RemoveChildEvent. + */ + public static class RemoveChildEvent extends Event { + + /** + * Instantiates a new removes the child event. + * + * @param source + * the source + */ + public RemoveChildEvent(Component source) { + super(source); + } + } + + /** + * The listener interface for receiving removeChild events. The class that + * is interested in processing a removeChild event implements this + * interface, and the object created with that class is registered with a + * component using the component's <code>addRemoveChildListener</code> + * method. When the removeChild event occurs, that object's appropriate + * method is invoked. + * + * @see RemoveChildEvent + */ + public interface RemoveChildListener extends Serializable { + + /** The Constant REMOVE_CHILD_METHOD. */ + public static final Method REMOVE_CHILD_METHOD = ReflectTools.findMethod(RemoveChildListener.class, + "removeChild", RemoveChildEvent.class); + + /** + * Removes the child. + * + * @param event + * the event + */ + void removeChild(RemoveChildEvent event); + } + + /** + * The Class AddChildEvent. + */ + public static class AddChildEvent extends Event { + + /** + * Instantiates a new adds the child event. + * + * @param source + * the source + */ + public AddChildEvent(Component source) { + super(source); + } + } + + /** + * The listener interface for receiving addChild events. The class that is + * interested in processing a addChild event implements this interface, and + * the object created with that class is registered with a component using + * the component's <code>addAddChildListener</code> method. When the + * addChild event occurs, that object's appropriate method is invoked. + * + * @see AddChildEvent + */ + public interface AddChildListener extends Serializable { + + /** The Constant ADD_CHILD_METHOD. */ + public static final Method ADD_CHILD_METHOD = ReflectTools.findMethod(AddChildListener.class, "addChild", + AddChildEvent.class); + + /** + * Adds the child. + * + * @param event + * the event + */ + void addChild(AddChildEvent event); + } + + /** + * The Class SwitchEditableEvent. + */ + public static class SwitchEditableEvent extends Event { + + /** + * Instantiates a new switch editable event. + * + * @param source + * the source + */ + public SwitchEditableEvent(Component source) { + super(source); + } + } + + /** + * The listener interface for receiving switchEditable events. The class + * that is interested in processing a switchEditable event implements this + * interface, and the object created with that class is registered with a + * component using the component's <code>addSwitchEditableListener</code> + * method. When the switchEditable event occurs, that object's appropriate + * method is invoked. + * + * @see SwitchEditableEvent + */ + public interface SwitchEditableListener extends Serializable { + + /** The Constant SWITCH_EDITABLE_METHOD. */ + public static final Method SWITCH_EDITABLE_METHOD = ReflectTools.findMethod(SwitchEditableListener.class, + "switchEditable", SwitchEditableEvent.class); + + /** + * Switch editable. + * + * @param event + * the event + */ + void switchEditable(SwitchEditableEvent event); + } + + /** + * The Class AllEventHanndler. + */ + public static abstract class AllEventHanndler + implements AlignmentChangedListener, RemoveChildListener, SwitchEditableListener, ShowPropertiesListener, + SwitchMarginListener, SwitchSpacingListener, AddChildListener { + + /* + * (non-Javadoc) + * + * @see org.eclipse.osbp.vaadin.addons.designer.overlay. + * DesignerOverlayExtension.SwitchEditableListener#switchEditable(org. + * eclipse.osbp.vaadin.addons.designer.overlay.DesignerOverlayExtension. + * SwitchEditableEvent) + */ + @Override + public void switchEditable(SwitchEditableEvent event) { + + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.osbp.vaadin.addons.designer.overlay. + * DesignerOverlayExtension.RemoveChildListener#removeChild(org.eclipse. + * osbp.vaadin.addons.designer.overlay.DesignerOverlayExtension. + * RemoveChildEvent) + */ + @Override + public void removeChild(RemoveChildEvent event) { + + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.osbp.vaadin.addons.designer.overlay. + * DesignerOverlayExtension.AddChildListener#addChild(org.eclipse.osbp. + * vaadin.addons.designer.overlay.DesignerOverlayExtension. + * AddChildEvent) + */ + @Override + public void addChild(AddChildEvent event) { + + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.osbp.vaadin.addons.designer.overlay. + * DesignerOverlayExtension.AlignmentChangedListener#alignmentChanged( + * org.eclipse.osbp.vaadin.addons.designer.overlay. + * DesignerOverlayExtension.AlignmentChangedEvent) + */ + @Override + public void alignmentChanged(AlignmentChangedEvent event) { + + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.osbp.vaadin.addons.designer.overlay. + * DesignerOverlayExtension.ShowPropertiesListener#showProperties(org. + * eclipse.osbp.vaadin.addons.designer.overlay.DesignerOverlayExtension. + * ShowPropertiesEvent) + */ + @Override + public void showProperties(ShowPropertiesEvent event) { + + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.osbp.vaadin.addons.designer.overlay. + * DesignerOverlayExtension.SwitchSpacingListener#switchSpacing(org. + * eclipse.osbp.vaadin.addons.designer.overlay.DesignerOverlayExtension. + * SwitchSpacingEvent) + */ + @Override + public void switchSpacing(SwitchSpacingEvent event) { + + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.osbp.vaadin.addons.designer.overlay. + * DesignerOverlayExtension.SwitchMarginListener#switchMargin(org. + * eclipse.osbp.vaadin.addons.designer.overlay.DesignerOverlayExtension. + * SwitchMarginEvent) + */ + @Override + public void switchMargin(SwitchMarginEvent event) { + + } + + } + + /** + * The Class SwitchMarginEvent. + */ + public static class SwitchMarginEvent extends Event { + + /** + * Instantiates a new switch margin event. + * + * @param source + * the source + */ + public SwitchMarginEvent(Component source) { + super(source); + } + } + + /** + * The listener interface for receiving switchMargin events. The class that + * is interested in processing a switchMargin event implements this + * interface, and the object created with that class is registered with a + * component using the component's <code>addSwitchMarginListener</code> + * method. When the switchMargin event occurs, that object's appropriate + * method is invoked. + * + * @see SwitchMarginEvent + */ + public interface SwitchMarginListener extends Serializable { + + /** The Constant SWITCH_MARGIN_METHOD. */ + public static final Method SWITCH_MARGIN_METHOD = ReflectTools.findMethod(SwitchMarginListener.class, + "switchMargin", SwitchMarginEvent.class); + + /** + * Switch margin. + * + * @param event + * the event + */ + void switchMargin(SwitchMarginEvent event); + } + + /** + * The Class SwitchSpacingEvent. + */ + public static class SwitchSpacingEvent extends Event { + + /** + * Instantiates a new switch spacing event. + * + * @param source + * the source + */ + public SwitchSpacingEvent(Component source) { + super(source); + } + } + + /** + * The listener interface for receiving switchSpacing events. The class that + * is interested in processing a switchSpacing event implements this + * interface, and the object created with that class is registered with a + * component using the component's <code>addSwitchSpacingListener</code> + * method. When the switchSpacing event occurs, that object's appropriate + * method is invoked. + * + * @see SwitchSpacingEvent + */ + public interface SwitchSpacingListener extends Serializable { + + /** The Constant SWITCH_SPACING_METHOD. */ + public static final Method SWITCH_SPACING_METHOD = ReflectTools.findMethod(SwitchSpacingListener.class, + "switchSpacing", SwitchSpacingEvent.class); + + /** + * Switch spacing. + * + * @param event + * the event + */ + void switchSpacing(SwitchSpacingEvent event); + } +}
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/OverlayWidgetset.gwt.xml b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/OverlayWidgetset.gwt.xml new file mode 100644 index 0000000..80e78b1 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/OverlayWidgetset.gwt.xml
@@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.5.1//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.5.1/distro-source/core/src/gwt-module.dtd"> +<module> + <inherits name="com.vaadin.DefaultWidgetSet" /> + + <!-- Uncomment the following to compile the widgetset for one browser only. + Multiple browsers can be specified as a comma separated list. The supported + user agents at the moment of writing were: ie8,ie9,gecko1_8,safari,opera + The value gecko1_8 is used for Firefox and safari is used for webkit based + browsers including Google Chrome. --> + + <!-- To enable SuperDevMode, uncomment this line. See https://vaadin.com/wiki/-/wiki/Main/Using%20SuperDevMode + for more information and instructions. --> + <!-- <set-configuration-property name="devModeRedirectEnabled" value="true" /> --> + +<!-- <add-linker name="xsiframe" /> --> +<!-- <set-configuration-property name="devModeRedirectEnabled" --> +<!-- value="true" /> --> +<!-- <set-property name="user.agent" value="safari" /> --> + + <stylesheet src="designer_overlay/styles.css" /> +</module>
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/DesignerExtensionClientRpc.java b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/DesignerExtensionClientRpc.java new file mode 100644 index 0000000..c51a89a --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/DesignerExtensionClientRpc.java
@@ -0,0 +1,22 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.designer.overlay.client; + +import com.vaadin.shared.communication.ClientRpc; + +/** + * The Interface DesignerExtensionClientRpc. + */ +public interface DesignerExtensionClientRpc extends ClientRpc { + +} \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/DesignerExtensionConnector.java b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/DesignerExtensionConnector.java new file mode 100644 index 0000000..52a3a96 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/DesignerExtensionConnector.java
@@ -0,0 +1,232 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.designer.overlay.client; + +import org.eclipse.osbp.vaadin.addons.designer.overlay.DesignerOverlayExtension; +import org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets.OAlignmentChangedEvent; +import org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets.OAlignmentChangedHandler; +import org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets.OButtonClickEvent; +import org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets.OButtonClickHandler; +import org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets.OOverlayController; + +import com.google.gwt.core.shared.GWT; +import com.google.gwt.dom.client.Element; +import com.google.gwt.event.dom.client.KeyCodes; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.user.client.Event; +import com.google.gwt.user.client.Event.NativePreviewEvent; +import com.google.gwt.user.client.ui.RootPanel; +import com.google.gwt.user.client.ui.Widget; +import com.vaadin.client.ComponentConnector; +import com.vaadin.client.ServerConnector; +import com.vaadin.client.communication.RpcProxy; +import com.vaadin.client.communication.StateChangeEvent; +import com.vaadin.client.extensions.AbstractExtensionConnector; +import com.vaadin.shared.ui.Connect; + +// TODO: Auto-generated Javadoc +/** + * The Class DesignerExtensionConnector. + */ +@Connect(DesignerOverlayExtension.class) +public class DesignerExtensionConnector extends AbstractExtensionConnector implements OAlignmentChangedHandler, + OButtonClickHandler, com.google.gwt.user.client.Event.NativePreviewHandler { + + /** The Constant serialVersionUID. */ + private static final long serialVersionUID = -3501965859455838012L; + + /** The rpc. */ + private DesignerExtensionServerRpc rpc = RpcProxy.create(DesignerExtensionServerRpc.class, this); + + /** The hreg. */ + private HandlerRegistration hreg; + + /** The overlay. */ + private ODesignerOverlay overlay; + + private Widget widget; + + /* + * (non-Javadoc) + * + * @see + * com.vaadin.client.extensions.AbstractExtensionConnector#extend(com.vaadin + * .client.ServerConnector) + */ + @Override + protected void extend(ServerConnector target) { + widget = ((ComponentConnector) target).getWidget(); + + overlay = GWT.create(ODesignerOverlay.class); + overlay.setConnector(DesignerExtensionConnector.this); + overlay.setOwner(widget); + + OOverlayController.getInstance().register(widget.getElement(), overlay); + + hreg = Event.addNativePreviewHandler(this); + } + + /* + * (non-Javadoc) + * + * @see + * com.google.gwt.user.client.ui.PopupPanel#onPreviewNativeEvent(com.google. + * gwt.user.client.Event.NativePreviewEvent) + */ + public void onPreviewNativeEvent(final NativePreviewEvent event) { + Element target = Element.as(event.getNativeEvent().getEventTarget()); + int type = event.getTypeInt(); + + if (type == Event.ONCLICK) { + if (!event.getNativeEvent().getAltKey()) { + return; + } + if (event.isCanceled()) { + return; + } + if (!isEventOnTarget(target)) { + return; + } + + if (!overlay.isShowing()) { + int top = widget.getAbsoluteTop() + widget.getOffsetHeight(); + int windowHeight = RootPanel.get().getOffsetHeight(); + if (windowHeight - top < 30) { + // place the popup above + top = widget.getAbsoluteTop(); + } + + OOverlayController.getInstance().show(overlay, event.getNativeEvent().getClientX(), + event.getNativeEvent().getClientY()); + event.cancel(); + } + overlay.setAlignmentInfo(getState().alignment); + + } else if (type == Event.ONKEYUP) { + if (event.isCanceled()) { + return; + } + if (!isEventOnTarget(target)) { + return; + } + int keyCode = event.getNativeEvent().getKeyCode(); + if (KeyCodes.KEY_UP == keyCode && event.getNativeEvent().getAltKey()) { + OOverlayController.getInstance().navigateUp(); + event.cancel(); + } else if (KeyCodes.KEY_DOWN == keyCode && event.getNativeEvent().getAltKey()) { + OOverlayController.getInstance().navigateDown(); + event.cancel(); + } else if (KeyCodes.KEY_ESCAPE == keyCode) { + OOverlayController.getInstance().close(); + event.cancel(); + } + } + } + + /** + * Checks if is mouse on target. + * + * @param target + * the target + * @return true, if is mouse on target + */ + protected boolean isEventOnTarget(Element target) { + // is owner the target? + boolean eventTargetsThis = widget.getElement().isOrHasChild(target); + return eventTargetsThis; + } + + /* + * (non-Javadoc) + * + * @see com.vaadin.client.ui.AbstractConnector#getState() + */ + @Override + public DesignerExtensionState getState() { + return (DesignerExtensionState) super.getState(); + } + + /* + * (non-Javadoc) + * + * @see + * com.vaadin.client.ui.AbstractConnector#onStateChanged(com.vaadin.client. + * communication.StateChangeEvent) + */ + @Override + public void onStateChanged(StateChangeEvent stateChangeEvent) { + super.onStateChanged(stateChangeEvent); + + if (overlay != null) { + overlay.setAlignmentInfo(getState().alignment); + } + } + + /* + * (non-Javadoc) + * + * @see com.vaadin.client.ui.AbstractConnector#onUnregister() + */ + @Override + public void onUnregister() { + + OOverlayController.getInstance().unregister(widget.getElement()); + + hreg.removeHandler(); + hreg = null; + + if (overlay != null) { + overlay.destroy(); + overlay = null; + } + + super.onUnregister(); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets. + * OAlignmentChangedHandler#onAlignmentChanged(org.eclipse.osbp.vaadin. + * addons.designer.overlay.client.widgets.OAlignmentChangedEvent) + */ + @Override + public void onAlignmentChanged(OAlignmentChangedEvent event) { + getState().alignment = event.getAlignment(); + rpc.alignmentChanged(event.getAlignment()); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets. + * OButtonClickHandler#clicked(org.eclipse.osbp.vaadin.addons.designer. + * overlay.client.widgets.OButtonClickEvent) + */ + @Override + public void clicked(OButtonClickEvent event) { + if (event.getCustomEventType().equals(OIConstants.EVENT_TYPE__REMOVE_CHILD)) { + rpc.removeChild(); + } else if (event.getCustomEventType().equals(OIConstants.EVENT_TYPE__ADD_CHILD)) { + rpc.addChild(); + } else if (event.getCustomEventType().equals(OIConstants.EVENT_TYPE__SWITCH_EDITABLE)) { + rpc.switchEditable(); + } else if (event.getCustomEventType().equals(OIConstants.EVENT_TYPE__OPEN_PROPERTIES)) { + rpc.openProperties(); + } else if (event.getCustomEventType().equals(OIConstants.EVENT_TYPE__SWITCH_MARGIN)) { + rpc.switchMargin(); + } else if (event.getCustomEventType().equals(OIConstants.EVENT_TYPE__SWITCH_SPACING)) { + rpc.switchSpacing(); + } + } +}
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/DesignerExtensionServerRpc.java b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/DesignerExtensionServerRpc.java new file mode 100644 index 0000000..299d917 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/DesignerExtensionServerRpc.java
@@ -0,0 +1,62 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.designer.overlay.client; + +import org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets.AlignmentInfo; + +import com.vaadin.shared.communication.ServerRpc; + +// TODO: Auto-generated Javadoc +/** + * The Interface DesignerExtensionServerRpc. + */ +public interface DesignerExtensionServerRpc extends ServerRpc { + + /** + * Is called to change the alignment of the child. + * + * @param alignment the alignment + */ + void alignmentChanged(AlignmentInfo alignment); + + /** + * Is called to remove the child from its layout. + */ + void removeChild(); + + /** + * Is called to add a child to its layout. + */ + void addChild(); + + /** + * Is called to open the properties dialog. + */ + void openProperties(); + + /** + * Switches the editable state. + */ + void switchEditable(); + + /** + * Switches the margin state. + */ + void switchMargin(); + + /** + * Switchs the spacing state. + */ + void switchSpacing(); + +}
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/DesignerExtensionState.java b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/DesignerExtensionState.java new file mode 100644 index 0000000..3510c3f --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/DesignerExtensionState.java
@@ -0,0 +1,58 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.designer.overlay.client; + +import org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets.AlignmentInfo; +import com.vaadin.shared.communication.SharedState; + +// TODO: Auto-generated Javadoc +/** + * The Class DesignerExtensionState. + */ +public class DesignerExtensionState extends SharedState { + + /** The Constant serialVersionUID. */ + private static final long serialVersionUID = -138381612142479069L; + + /** The alignment. */ + public AlignmentInfo alignment; + + /** The supports remove. */ + public boolean supportsRemove = false; + + /** The supports editable. */ + public boolean supportsEditable = true; + + /** The supports properties dialog. */ + public boolean supportsPropertiesDialog = true; + + /** The supports margins. */ + public boolean supportsMargins = false; + + /** The supports spacing. */ + public boolean supportsSpacing = false; + + /** The supports alignments. */ + public boolean supportsAlignments = true; + + /** The supports add. */ + public boolean supportsAdd = false; + + public String descriptionRemove = "remove"; + public String descriptionEditable = "editable"; + public String descriptionPropertiesDialog = "properties"; + public String descriptionMargins = "margins"; + public String descriptionSpacing = "spacing"; + public String descriptionAlignments = "alignments"; + public String descriptionAdd = "add"; +}
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/OAbstractOverlay.java b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/OAbstractOverlay.java new file mode 100644 index 0000000..89133a4 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/OAbstractOverlay.java
@@ -0,0 +1,79 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.designer.overlay.client; + +import java.util.logging.Logger; + +import com.google.gwt.dom.client.Element; +import com.google.gwt.user.client.DOM; +import com.vaadin.client.ui.VOverlay; + +/** + * The Class OAbstractOverlay. + */ +@SuppressWarnings("deprecation") +public class OAbstractOverlay extends VOverlay { + + /** The Constant CSS_DESIGNER_OVERLAYED. */ + private static final String CSS_DESIGNER_OVERLAYED = "o-designer-overlayed"; + + private final Logger logger = Logger.getLogger("DesignerOverlay"); + + /** + * Instantiates a new o abstract overlay. + */ + public OAbstractOverlay() { + super(true, false); + } + + /* + * (non-Javadoc) + * + * @see com.vaadin.client.ui.VOverlay#show() + */ + @Override + public void show() { + super.show(); + + getOwner().addStyleName(CSS_DESIGNER_OVERLAYED); + + logger.info("Showing overlay for " + getOwner().getElement().getId()); + logger.info("Added marker css style for " + getOwner().getElement().getId()); + } + + public void hide(final boolean autoClosed, final boolean animateIn, final boolean animateOut) { + super.hide(autoClosed, animateIn, animateOut); + + logger.info("Hiding overlay for " + getOwner().getElement().getId()); + + getOwner().removeStyleName(CSS_DESIGNER_OVERLAYED); + logger.info("Removed marker css style for " + getOwner().getElement().getId()); + } + + /** + * Checks if is mouse on target. + * + * @param target + * the target + * @return true, if is mouse on target + */ + protected boolean isMouseOnTarget(Element target) { + // is owner the target? + boolean eventTargetsThis = DOM.isOrHasChild(getOwner().getElement(), target); + if (!eventTargetsThis) { + eventTargetsThis = DOM.isOrHasChild(getElement(), target); + } + return eventTargetsThis; + } + +} \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/ODesignerOverlay.java b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/ODesignerOverlay.java new file mode 100644 index 0000000..d404d6b --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/ODesignerOverlay.java
@@ -0,0 +1,186 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.designer.overlay.client; + +import org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets.AlignmentInfo; +import org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets.OAlignmentWidget; +import org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets.OButtonWidget; + +import com.google.gwt.user.client.ui.FlowPanel; +import com.vaadin.client.ui.VImage; +import com.vaadin.shared.ComponentConstants; + +/** + * Overlay for designer stuff. + */ +public class ODesignerOverlay extends OAbstractOverlay { + + /** The Constant CLASSNAME. */ + private static final String CLASSNAME = "o-designer-overlay"; + + /** The alignment widget. */ + private OAlignmentWidget alignmentWidget; + + /** The remove button. */ + private OButtonWidget removeButton; + + /** The root. */ + private FlowPanel root; + + /** The editable button. */ + private OButtonWidget editableButton; + + /** The open properties button. */ + private OButtonWidget openPropertiesButton; + + /** The margin button. */ + private OButtonWidget marginButton; + + /** The spacing button. */ + private OButtonWidget spacingButton; + + /** The add button. */ + private OButtonWidget addButton; + + /** + * Shows alignment lines for drag and resize operations. + */ + public ODesignerOverlay() { + + getElement().setClassName(CLASSNAME); + } + + /** + * Initialize. + * + * @param connector the connector + */ + private void initialize(DesignerExtensionConnector connector) { + root = new FlowPanel(); + add(root); + + if (connector.getResourceUrl(ComponentConstants.ICON_RESOURCE) != null) { + VImage image = new VImage(); + root.add(image); + String iconUrl = connector.getResourceUrl(ComponentConstants.ICON_RESOURCE); + image.setUrl(iconUrl); + } + + if (connector.getState().supportsAlignments) { + alignmentWidget = new OAlignmentWidget(); + alignmentWidget.setTitle(connector.getState().descriptionAlignments); + root.add(alignmentWidget); + alignmentWidget.setAlignmentChangedHandler(connector); + } + + if (connector.getState().supportsMargins) { + marginButton = new OButtonWidget(); + marginButton.addStyleName(OIConstants.EVENT_TYPE__SWITCH_MARGIN); + marginButton.setCustomEventType(OIConstants.EVENT_TYPE__SWITCH_MARGIN); + marginButton.setTitle(connector.getState().descriptionMargins); + root.add(marginButton); + marginButton.setClickHandler(connector); + } + if (connector.getState().supportsSpacing) { + spacingButton = new OButtonWidget(); + spacingButton.addStyleName(OIConstants.EVENT_TYPE__SWITCH_SPACING); + spacingButton.setCustomEventType(OIConstants.EVENT_TYPE__SWITCH_SPACING); + spacingButton.setTitle(connector.getState().descriptionSpacing); + root.add(spacingButton); + spacingButton.setClickHandler(connector); + } + + if (connector.getState().supportsEditable) { + editableButton = new OButtonWidget(); + editableButton.addStyleName(OIConstants.EVENT_TYPE__SWITCH_EDITABLE); + editableButton.setCustomEventType(OIConstants.EVENT_TYPE__SWITCH_EDITABLE); + editableButton.setTitle(connector.getState().descriptionEditable); + root.add(editableButton); + editableButton.setClickHandler(connector); + } + + if (connector.getState().supportsRemove) { + removeButton = new OButtonWidget(); + removeButton.addStyleName(OIConstants.EVENT_TYPE__REMOVE_CHILD); + removeButton.setCustomEventType(OIConstants.EVENT_TYPE__REMOVE_CHILD); + removeButton.setTitle(connector.getState().descriptionRemove); + root.add(removeButton); + removeButton.setClickHandler(connector); + } + + if (connector.getState().supportsAdd) { + addButton = new OButtonWidget(); + addButton.addStyleName(OIConstants.EVENT_TYPE__ADD_CHILD); + addButton.setCustomEventType(OIConstants.EVENT_TYPE__ADD_CHILD); + addButton.setTitle(connector.getState().descriptionAdd); + root.add(addButton); + addButton.setClickHandler(connector); + } + + if (connector.getState().supportsPropertiesDialog) { + openPropertiesButton = new OButtonWidget(); + openPropertiesButton.addStyleName(OIConstants.EVENT_TYPE__OPEN_PROPERTIES); + openPropertiesButton.setCustomEventType(OIConstants.EVENT_TYPE__OPEN_PROPERTIES); + openPropertiesButton.setTitle(connector.getState().descriptionPropertiesDialog); + root.add(openPropertiesButton); + openPropertiesButton.setClickHandler(connector); + } + } + + /** + * Sets the connector. + * + * @param connector the new connector + */ + public void setConnector(DesignerExtensionConnector connector) { + initialize(connector); + } + + /** + * Sets the alignment info. + * + * @param alignment the new alignment info + */ + public void setAlignmentInfo(AlignmentInfo alignment) { + if(alignmentWidget != null) { + alignmentWidget.setAlignmentInfo(alignment); + } + } + + /** + * Destroy. + */ + public void destroy() { + if (alignmentWidget != null) { + alignmentWidget.destroy(); + } + if (editableButton != null) { + editableButton.destroy(); + } + if (removeButton != null) { + removeButton.destroy(); + } + if (addButton != null) { + addButton.destroy(); + } + if (openPropertiesButton != null) { + openPropertiesButton.destroy(); + } + if (spacingButton != null) { + spacingButton.destroy(); + } + if (marginButton != null) { + marginButton.destroy(); + } + } +}
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/OIConstants.java b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/OIConstants.java new file mode 100644 index 0000000..be52a95 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/OIConstants.java
@@ -0,0 +1,41 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.designer.overlay.client; + +// TODO: Auto-generated Javadoc +/** + * The Interface OIConstants. + */ +public interface OIConstants { + + /** The Constant EVENT_TYPE__REMOVE_CHILD. */ + // layout child properties + public static final String EVENT_TYPE__REMOVE_CHILD = "removeChild"; + + /** The Constant EVENT_TYPE__ADD_CHILD. */ + public static final String EVENT_TYPE__ADD_CHILD = "addChild"; + + /** The Constant EVENT_TYPE__SWITCH_EDITABLE. */ + public static final String EVENT_TYPE__SWITCH_EDITABLE = "switchEditable"; + + /** The Constant EVENT_TYPE__OPEN_PROPERTIES. */ + public static final String EVENT_TYPE__OPEN_PROPERTIES = "openProperties"; + + /** The Constant EVENT_TYPE__SWITCH_MARGIN. */ + // layout properties + public static final String EVENT_TYPE__SWITCH_MARGIN = "switchMargin"; + + /** The Constant EVENT_TYPE__SWITCH_SPACING. */ + public static final String EVENT_TYPE__SWITCH_SPACING = "switchSpacing"; + +}
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/AlignmentInfo.java b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/AlignmentInfo.java new file mode 100644 index 0000000..f0ea1da --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/AlignmentInfo.java
@@ -0,0 +1,125 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets; + +// TODO: Auto-generated Javadoc +/** + * Alignment enum with FILL literals. + */ +public enum AlignmentInfo { + + /** The bottom left. */ + BOTTOM_LEFT, + /** The bottom center. */ + BOTTOM_CENTER, + /** The bottom right. */ + BOTTOM_RIGHT, + /** The bottom fill. */ + BOTTOM_FILL, + /** The middle left. */ + MIDDLE_LEFT, + /** The middle center. */ + MIDDLE_CENTER, + /** The middle right. */ + MIDDLE_RIGHT, + /** The middle fill. */ + MIDDLE_FILL, + /** The top left. */ + TOP_LEFT, + /** The top center. */ + TOP_CENTER, + /** The top right. */ + TOP_RIGHT, + /** The top fill. */ + TOP_FILL, + /** The fill fill. */ + FILL_FILL, + /** The fill left. */ + FILL_LEFT, + /** The fill center. */ + FILL_CENTER, + /** The fill right. */ + FILL_RIGHT; + + /** + * Checks if is top. + * + * @return true, if is top + */ + public boolean isTop() { + return this == TOP_LEFT || this == TOP_CENTER || this == TOP_RIGHT || this == TOP_FILL; + } + + /** + * Checks if is middle. + * + * @return true, if is middle + */ + public boolean isMiddle() { + return this == MIDDLE_LEFT || this == MIDDLE_CENTER || this == MIDDLE_RIGHT || this == MIDDLE_FILL; + } + + /** + * Checks if is bottom. + * + * @return true, if is bottom + */ + public boolean isBottom() { + return this == BOTTOM_LEFT || this == BOTTOM_CENTER || this == BOTTOM_RIGHT || this == BOTTOM_FILL; + } + + /** + * Checks if is left. + * + * @return true, if is left + */ + public boolean isLeft() { + return this == TOP_LEFT || this == MIDDLE_LEFT || this == BOTTOM_LEFT || this == FILL_LEFT; + } + + /** + * Checks if is center. + * + * @return true, if is center + */ + public boolean isCenter() { + return this == TOP_CENTER || this == MIDDLE_CENTER || this == BOTTOM_CENTER || this == FILL_CENTER; + } + + /** + * Checks if is right. + * + * @return true, if is right + */ + public boolean isRight() { + return this == TOP_RIGHT || this == MIDDLE_RIGHT || this == BOTTOM_RIGHT || this == FILL_RIGHT; + } + + /** + * Checks if is horizontal fill. + * + * @return true, if is horizontal fill + */ + public boolean isHorizontalFill() { + return this == TOP_FILL || this == MIDDLE_FILL || this == BOTTOM_FILL || this == FILL_FILL; + } + + /** + * Checks if is vertical fill. + * + * @return true, if is vertical fill + */ + public boolean isVerticalFill() { + return this == FILL_LEFT || this == FILL_CENTER || this == FILL_RIGHT || this == FILL_FILL; + } +}
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/OAlignmentChangedEvent.java b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/OAlignmentChangedEvent.java new file mode 100644 index 0000000..607aab7 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/OAlignmentChangedEvent.java
@@ -0,0 +1,73 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets; + +import com.google.gwt.event.shared.GwtEvent; + +// TODO: Auto-generated Javadoc +/** + * The Class OAlignmentChangedEvent. + */ +public class OAlignmentChangedEvent extends GwtEvent<OAlignmentChangedHandler> { + + /** + * Event type for alignment change events. + */ + private static final Type<OAlignmentChangedHandler> TYPE = new Type<OAlignmentChangedHandler>(); + + /** The alignment. */ + private final AlignmentInfo alignment; + + /** + * Instantiates a new o alignment changed event. + * + * @param alignment the alignment + */ + public OAlignmentChangedEvent(AlignmentInfo alignment) { + this.alignment = alignment; + } + + /** + * Gets the alignment. + * + * @return the alignment + */ + public AlignmentInfo getAlignment() { + return alignment; + } + + /** + * Gets the type. + * + * @return the type + */ + public static Type<OAlignmentChangedHandler> getType() { + return TYPE; + } + + /* (non-Javadoc) + * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType() + */ + @Override + public final Type<OAlignmentChangedHandler> getAssociatedType() { + return TYPE; + } + + /* (non-Javadoc) + * @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler) + */ + @Override + protected void dispatch(OAlignmentChangedHandler handler) { + handler.onAlignmentChanged(this); + } +} \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/OAlignmentChangedHandler.java b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/OAlignmentChangedHandler.java new file mode 100644 index 0000000..2415fb7 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/OAlignmentChangedHandler.java
@@ -0,0 +1,30 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets; + +import com.google.gwt.event.shared.EventHandler; + +// TODO: Auto-generated Javadoc +/** + * Gets informed about the event. + */ +public interface OAlignmentChangedHandler extends EventHandler { + + /** + * Is called if the alignment changes. + * + * @param event the event + */ + void onAlignmentChanged(OAlignmentChangedEvent event); + +} \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/OAlignmentWidget.java b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/OAlignmentWidget.java new file mode 100644 index 0000000..1cf651f --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/OAlignmentWidget.java
@@ -0,0 +1,433 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets; + +import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.EventTarget; +import com.google.gwt.user.client.DOM; +import com.google.gwt.user.client.Event; +import com.google.gwt.user.client.EventListener; +import com.google.gwt.user.client.ui.SimplePanel; + +// TODO: Auto-generated Javadoc +/** + * A widget which shows alignment of components. + */ +public class OAlignmentWidget extends SimplePanel { + + /** The Constant O_SELECTED. */ + private static final String O_SELECTED = "o-selected"; + + /** The Constant CLASSNAME. */ + private static final String CLASSNAME = "o-alignment-widget"; + + /** The alignment div. */ + // contains the single alignment buttons and also the fill buttons + private Element alignmentDiv = DOM.createDiv(); + + /** The alignment single div. */ + // contains the single alignment button without fill buttons + private Element alignmentSingleDiv = DOM.createDiv(); + + /** The al_top_left_ div. */ + private Element al_top_left_Div = DOM.createDiv(); + + /** The al_top_center_ div. */ + private Element al_top_center_Div = DOM.createDiv(); + + /** The al_top_right_ div. */ + private Element al_top_right_Div = DOM.createDiv(); + + /** The al_middle_left_ div. */ + private Element al_middle_left_Div = DOM.createDiv(); + + /** The al_middle_center_ div. */ + private Element al_middle_center_Div = DOM.createDiv(); + + /** The al_middle_right_ div. */ + private Element al_middle_right_Div = DOM.createDiv(); + + /** The al_bottom_left_ div. */ + private Element al_bottom_left_Div = DOM.createDiv(); + + /** The al_bottom_center_ div. */ + private Element al_bottom_center_Div = DOM.createDiv(); + + /** The al_bottom_right_ div. */ + private Element al_bottom_right_Div = DOM.createDiv(); + + /** The selected single div. */ + private Element selectedSingleDiv; + + /** The handler. */ + private OAlignmentChangedHandler handler; + + /** The al_v_fill_ div. */ + // fill divs + private Element al_v_fill_Div = DOM.createDiv(); + + /** The al_h_fill_ div. */ + private Element al_h_fill_Div = DOM.createDiv(); + + /** + * Instantiates a new o alignment widget. + */ + public OAlignmentWidget() { + getElement().setClassName(CLASSNAME); + initDOM(); + } + + /** + * Inits the dom. + */ + private void initDOM() { + initializeAlignmentDivs(); + } + + /** + * Initialize alignment divs. + */ + private void initializeAlignmentDivs() { + + getElement().appendChild(alignmentDiv); + + alignmentDiv.appendChild(alignmentSingleDiv); + alignmentSingleDiv.appendChild(al_top_left_Div); + alignmentSingleDiv.appendChild(al_top_center_Div); + alignmentSingleDiv.appendChild(al_top_right_Div); + alignmentSingleDiv.appendChild(al_middle_left_Div); + alignmentSingleDiv.appendChild(al_middle_center_Div); + alignmentSingleDiv.appendChild(al_middle_right_Div); + alignmentSingleDiv.appendChild(al_bottom_left_Div); + alignmentSingleDiv.appendChild(al_bottom_center_Div); + alignmentSingleDiv.appendChild(al_bottom_right_Div); + + alignmentDiv.appendChild(al_h_fill_Div); + alignmentDiv.appendChild(al_v_fill_Div); + + alignmentDiv.setClassName("alignment"); + alignmentSingleDiv.setClassName("singles"); + + al_top_left_Div.setClassName("topleft"); + al_top_center_Div.setClassName("topcenter"); + al_top_right_Div.setClassName("topright"); + al_middle_left_Div.setClassName("middleleft"); + al_middle_center_Div.setClassName("middlecenter"); + al_middle_right_Div.setClassName("middleright"); + al_bottom_left_Div.setClassName("bottomleft"); + al_bottom_center_Div.setClassName("bottomcenter"); + al_bottom_right_Div.setClassName("bottomright"); + + al_h_fill_Div.setClassName("hfill"); + al_v_fill_Div.setClassName("vfill"); + + Event.sinkEvents(al_top_left_Div, Event.ONCLICK); + Event.sinkEvents(al_top_center_Div, Event.ONCLICK); + Event.sinkEvents(al_top_right_Div, Event.ONCLICK); + Event.sinkEvents(al_middle_left_Div, Event.ONCLICK); + Event.sinkEvents(al_middle_center_Div, Event.ONCLICK); + Event.sinkEvents(al_middle_right_Div, Event.ONCLICK); + Event.sinkEvents(al_bottom_left_Div, Event.ONCLICK); + Event.sinkEvents(al_bottom_center_Div, Event.ONCLICK); + Event.sinkEvents(al_bottom_right_Div, Event.ONCLICK); + + Event.sinkEvents(al_h_fill_Div, Event.ONCLICK); + Event.sinkEvents(al_v_fill_Div, Event.ONCLICK); + + /* + * Listener to get information about clicked divs. + */ + EventListener alignmentEvents = new EventListener() { + @Override + public void onBrowserEvent(Event event) { + EventTarget target = event.getCurrentEventTarget(); + Element element = Element.as(target); + + if (element == al_h_fill_Div || element == al_v_fill_Div) { + if (element.hasClassName(O_SELECTED)) { + element.removeClassName(O_SELECTED); + } else { + element.addClassName(O_SELECTED); + } + } else { + selectedSingleDiv = element; + } + + AlignmentInfo newAlignment = calcAlignmentInfoFromSelection(); + setAlignmentInfo(newAlignment); + + if (handler != null) { + handler.onAlignmentChanged(new OAlignmentChangedEvent(newAlignment)); + } + } + }; + + Event.setEventListener(al_top_left_Div, alignmentEvents); + Event.setEventListener(al_top_center_Div, alignmentEvents); + Event.setEventListener(al_top_right_Div, alignmentEvents); + Event.setEventListener(al_middle_left_Div, alignmentEvents); + Event.setEventListener(al_middle_center_Div, alignmentEvents); + Event.setEventListener(al_middle_right_Div, alignmentEvents); + Event.setEventListener(al_bottom_left_Div, alignmentEvents); + Event.setEventListener(al_bottom_center_Div, alignmentEvents); + Event.setEventListener(al_bottom_right_Div, alignmentEvents); + + Event.setEventListener(al_h_fill_Div, alignmentEvents); + Event.setEventListener(al_v_fill_Div, alignmentEvents); + + setAlignmentInfo(AlignmentInfo.TOP_LEFT); + } + + /** + * Calculates the {@link AlignmentInfo} for ui selections. + * + * @return the alignment info + */ + protected AlignmentInfo calcAlignmentInfoFromSelection() { + boolean isFillHorizontal = isFillHorizontalSelected(); + boolean isFillVertical = isFillVerticalSelected(); + + if (isFillHorizontal && isFillVertical) { + return AlignmentInfo.FILL_FILL; + } + + AlignmentInfo singleInfo = getSingleDivAlignment(); + if (singleInfo == null) { + singleInfo = AlignmentInfo.TOP_LEFT; + } + if (!isFillHorizontal && !isFillVertical) { + return singleInfo; + } + + if (isFillHorizontal) { + if (singleInfo.isTop()) { + return AlignmentInfo.TOP_FILL; + } else if (singleInfo.isMiddle()) { + return AlignmentInfo.MIDDLE_FILL; + } else if (singleInfo.isBottom()) { + return AlignmentInfo.BOTTOM_FILL; + } + } else if (isFillVertical) { + if (singleInfo.isLeft()) { + return AlignmentInfo.FILL_LEFT; + } else if (singleInfo.isCenter()) { + return AlignmentInfo.FILL_CENTER; + } else if (singleInfo.isRight()) { + return AlignmentInfo.FILL_RIGHT; + } + } + + return AlignmentInfo.TOP_FILL; + } + + /** + * Resets all alignment infos. + */ + private void clearAll() { + clearSingleElements(); + al_h_fill_Div.removeClassName(O_SELECTED); + al_v_fill_Div.removeClassName(O_SELECTED); + } + + /** + * Resets all alignment infos except h_fill and v_fill. + */ + private void clearSingleElements() { + al_top_left_Div.removeClassName(O_SELECTED); + al_top_center_Div.removeClassName(O_SELECTED); + al_top_right_Div.removeClassName(O_SELECTED); + al_middle_left_Div.removeClassName(O_SELECTED); + al_middle_center_Div.removeClassName(O_SELECTED); + al_middle_right_Div.removeClassName(O_SELECTED); + al_bottom_left_Div.removeClassName(O_SELECTED); + al_bottom_center_Div.removeClassName(O_SELECTED); + al_bottom_right_Div.removeClassName(O_SELECTED); + } + + /** + * Sets the alignment info. + * + * @param alignmentInfo the new alignment info + */ + public void setAlignmentInfo(AlignmentInfo alignmentInfo) { + + if (alignmentInfo == null) { + alignmentInfo = AlignmentInfo.TOP_LEFT; + } + + clearAll(); + + switch (alignmentInfo) { + case BOTTOM_CENTER: + al_bottom_center_Div.addClassName(O_SELECTED); + break; + case BOTTOM_FILL: + al_h_fill_Div.addClassName(O_SELECTED); + al_bottom_left_Div.addClassName(O_SELECTED); + al_bottom_center_Div.addClassName(O_SELECTED); + al_bottom_right_Div.addClassName(O_SELECTED); + break; + case BOTTOM_LEFT: + al_bottom_left_Div.addClassName(O_SELECTED); + break; + case BOTTOM_RIGHT: + al_bottom_right_Div.addClassName(O_SELECTED); + break; + case FILL_CENTER: + al_v_fill_Div.addClassName(O_SELECTED); + al_top_center_Div.addClassName(O_SELECTED); + al_middle_center_Div.addClassName(O_SELECTED); + al_bottom_center_Div.addClassName(O_SELECTED); + break; + case FILL_FILL: + al_v_fill_Div.addClassName(O_SELECTED); + al_h_fill_Div.addClassName(O_SELECTED); + al_top_left_Div.addClassName(O_SELECTED); + al_top_center_Div.addClassName(O_SELECTED); + al_top_right_Div.addClassName(O_SELECTED); + al_middle_left_Div.addClassName(O_SELECTED); + al_middle_center_Div.addClassName(O_SELECTED); + al_middle_right_Div.addClassName(O_SELECTED); + al_bottom_left_Div.addClassName(O_SELECTED); + al_bottom_center_Div.addClassName(O_SELECTED); + al_bottom_right_Div.addClassName(O_SELECTED); + break; + case FILL_LEFT: + al_v_fill_Div.addClassName(O_SELECTED); + al_top_left_Div.addClassName(O_SELECTED); + al_middle_left_Div.addClassName(O_SELECTED); + al_bottom_left_Div.addClassName(O_SELECTED); + break; + case FILL_RIGHT: + al_v_fill_Div.addClassName(O_SELECTED); + al_top_right_Div.addClassName(O_SELECTED); + al_middle_right_Div.addClassName(O_SELECTED); + al_bottom_right_Div.addClassName(O_SELECTED); + break; + case MIDDLE_CENTER: + al_middle_center_Div.addClassName(O_SELECTED); + break; + case MIDDLE_FILL: + al_h_fill_Div.addClassName(O_SELECTED); + al_middle_left_Div.addClassName(O_SELECTED); + al_middle_center_Div.addClassName(O_SELECTED); + al_middle_right_Div.addClassName(O_SELECTED); + break; + case MIDDLE_LEFT: + al_middle_left_Div.addClassName(O_SELECTED); + break; + case MIDDLE_RIGHT: + al_middle_right_Div.addClassName(O_SELECTED); + break; + case TOP_CENTER: + al_top_center_Div.addClassName(O_SELECTED); + break; + case TOP_FILL: + al_h_fill_Div.addClassName(O_SELECTED); + al_top_left_Div.addClassName(O_SELECTED); + al_top_center_Div.addClassName(O_SELECTED); + al_top_right_Div.addClassName(O_SELECTED); + break; + case TOP_LEFT: + al_top_left_Div.addClassName(O_SELECTED); + break; + case TOP_RIGHT: + al_top_right_Div.addClassName(O_SELECTED); + break; + } + } + + /** + * Gets the single div alignment. + * + * @return the single div alignment + */ + protected AlignmentInfo getSingleDivAlignment() { + if (selectedSingleDiv == null) { + return null; + } + + if (selectedSingleDiv == al_top_left_Div) { + return AlignmentInfo.TOP_LEFT; + } else if (selectedSingleDiv == al_top_center_Div) { + return AlignmentInfo.TOP_CENTER; + } else if (selectedSingleDiv == al_top_right_Div) { + return AlignmentInfo.TOP_RIGHT; + } else if (selectedSingleDiv == al_middle_left_Div) { + return AlignmentInfo.MIDDLE_LEFT; + } else if (selectedSingleDiv == al_middle_center_Div) { + return AlignmentInfo.MIDDLE_CENTER; + } else if (selectedSingleDiv == al_middle_right_Div) { + return AlignmentInfo.MIDDLE_RIGHT; + } else if (selectedSingleDiv == al_bottom_left_Div) { + return AlignmentInfo.BOTTOM_LEFT; + } else if (selectedSingleDiv == al_bottom_center_Div) { + return AlignmentInfo.BOTTOM_CENTER; + } else if (selectedSingleDiv == al_bottom_right_Div) { + return AlignmentInfo.BOTTOM_RIGHT; + } + return null; + } + + /** + * Checks if is fill horizontal selected. + * + * @return true, if is fill horizontal selected + */ + protected boolean isFillHorizontalSelected() { + return al_h_fill_Div.hasClassName(O_SELECTED); + } + + /** + * Checks if is fill vertical selected. + * + * @return true, if is fill vertical selected + */ + protected boolean isFillVerticalSelected() { + return al_v_fill_Div.hasClassName(O_SELECTED); + } + + /** + * Gets the alignment changed handler. + * + * @return the alignment changed handler + */ + public OAlignmentChangedHandler getAlignmentChangedHandler() { + return handler; + } + + /** + * Sets the alignment changed handler. + * + * @param handler the new alignment changed handler + */ + public void setAlignmentChangedHandler(OAlignmentChangedHandler handler) { + this.handler = handler; + } + + /** + * Destroy. + */ + public void destroy() { + Event.setEventListener(al_top_left_Div, null); + Event.setEventListener(al_top_center_Div, null); + Event.setEventListener(al_top_right_Div, null); + Event.setEventListener(al_middle_left_Div, null); + Event.setEventListener(al_middle_center_Div, null); + Event.setEventListener(al_middle_right_Div, null); + Event.setEventListener(al_bottom_left_Div, null); + Event.setEventListener(al_bottom_center_Div, null); + Event.setEventListener(al_bottom_right_Div, null); + } + +}
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/OButtonClickEvent.java b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/OButtonClickEvent.java new file mode 100644 index 0000000..2bc06a0 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/OButtonClickEvent.java
@@ -0,0 +1,87 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets; + +import com.google.gwt.event.shared.GwtEvent; + +// TODO: Auto-generated Javadoc +/** + * The Class OButtonClickEvent. + */ +public class OButtonClickEvent extends GwtEvent<OButtonClickHandler> { + + /** + * Event type for resize end events. + */ + private static final Type<OButtonClickHandler> TYPE = new Type<OButtonClickHandler>(); + + /** The widget. */ + private final OButtonWidget widget; + + /** The custom event type. */ + private final String customEventType; + + /** + * Instantiates a new o button click event. + * + * @param widget the widget + * @param customEventType the custom event type + */ + public OButtonClickEvent(OButtonWidget widget, String customEventType) { + this.widget = widget; + this.customEventType = customEventType; + } + + /** + * Gets the widget. + * + * @return the widget + */ + public OButtonWidget getWidget() { + return widget; + } + + /** + * Gets the custom event type. + * + * @return the custom event type + */ + public String getCustomEventType() { + return customEventType; + } + + /** + * Gets the event type associated with resize end events. + * + * @return the handler type + */ + public static Type<OButtonClickHandler> getType() { + return TYPE; + } + + /* (non-Javadoc) + * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType() + */ + @Override + public final Type<OButtonClickHandler> getAssociatedType() { + return TYPE; + } + + /* (non-Javadoc) + * @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler) + */ + @Override + protected void dispatch(OButtonClickHandler handler) { + handler.clicked(this); + } +} \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/OButtonClickHandler.java b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/OButtonClickHandler.java new file mode 100644 index 0000000..2ed584e --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/OButtonClickHandler.java
@@ -0,0 +1,30 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets; + +import com.google.gwt.event.shared.EventHandler; + +// TODO: Auto-generated Javadoc +/** + * The Interface OButtonClickHandler. + */ +public interface OButtonClickHandler extends EventHandler { + + /** + * Clicked. + * + * @param event the event + */ + void clicked(OButtonClickEvent event); + +} \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/OButtonWidget.java b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/OButtonWidget.java new file mode 100644 index 0000000..c5f5e84 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/OButtonWidget.java
@@ -0,0 +1,125 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets; + +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.user.client.DOM; +import com.google.gwt.user.client.Event; +import com.google.gwt.user.client.ui.Button; + +// TODO: Auto-generated Javadoc +/** + * The Class OButtonWidget. + */ +public class OButtonWidget extends Button implements ClickHandler { + + /** The Constant CLASSNAME. */ + private static final String CLASSNAME = "o-button-widget"; + + /** The handler. */ + private OButtonClickHandler handler; + + /** The click pending. */ + private boolean clickPending; + + /** The custom event type. */ + private String customEventType; + + /** + * Instantiates a new o button widget. + */ + public OButtonWidget() { + getElement().setClassName(CLASSNAME); + initDOM(); + } + + /** + * Inits the dom. + */ + private void initDOM() { + addClickHandler(this); + sinkEvents(Event.ONMOUSEDOWN | Event.ONLOAD | Event.ONMOUSEMOVE); + } + + /** + * Gets the click handler. + * + * @return the click handler + */ + public OButtonClickHandler getClickHandler() { + return handler; + } + + /** + * Sets the click handler. + * + * @param handler the new click handler + */ + public void setClickHandler(OButtonClickHandler handler) { + this.handler = handler; + } + + /** + * Gets the custom event type. + * + * @return the custom event type + */ + public String getCustomEventType() { + return customEventType; + } + + /** + * Sets the custom event type. + * + * @param customEventType the new custom event type + */ + public void setCustomEventType(String customEventType) { + this.customEventType = customEventType; + } + + /** + * Destroy. + */ + public void destroy() { + } + + /* (non-Javadoc) + * @see com.google.gwt.event.dom.client.ClickHandler#onClick(com.google.gwt.event.dom.client.ClickEvent) + */ + @Override + public void onClick(ClickEvent event) { + if (clickPending) { + handler.clicked(new OButtonClickEvent(this, customEventType)); + } + } + + /* (non-Javadoc) + * @see com.google.gwt.user.client.ui.Widget#onBrowserEvent(com.google.gwt.user.client.Event) + */ + @Override + public void onBrowserEvent(Event event) { + super.onBrowserEvent(event); + + if (DOM.eventGetType(event) == Event.ONMOUSEDOWN && event.getButton() == Event.BUTTON_LEFT) { + clickPending = true; + } else if (DOM.eventGetType(event) == Event.ONMOUSEMOVE) { + clickPending = false; + } else if (DOM.eventGetType(event) == Event.ONMOUSEOUT) { + if (clickPending) { + click(); + } + clickPending = false; + } + } +}
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/OOverlayController.java b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/OOverlayController.java new file mode 100644 index 0000000..a5a25d1 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/client/widgets/OOverlayController.java
@@ -0,0 +1,174 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.designer.overlay.client.widgets; + +import java.util.HashMap; +import java.util.Map; +import java.util.Stack; + +import org.eclipse.osbp.vaadin.addons.designer.overlay.client.OAbstractOverlay; + +import com.google.gwt.dom.client.Element; +import com.google.gwt.user.client.ui.Widget; + +/** + * Controls, that only one overlay is opened at a time. The delay for closing + * the overlay is too long to avoid multiple overlays. + */ +public class OOverlayController { + + /** The Constant instance. */ + private static final OOverlayController instance = new OOverlayController(); + + /** + * Gets the single instance of OOverlayController. + * + * @return single instance of OOverlayController + */ + public static OOverlayController getInstance() { + return instance; + } + + /** The show timer. */ + // private Timer showTimer; + + /** The current opened. */ + private OAbstractOverlay currentOpened; + + private Map<Element, OAbstractOverlay> map = new HashMap<>(); + private Stack<Element> navigationStack = new Stack<>(); + + /** + * Instantiates a new o overlay controller. + */ + private OOverlayController() { + + } + + /** + * Registers the element with the overlay. This is required to use arrow UP + * to navigate to the next higher overlay in the element hierarchy. + * + * @param element + * @param overlay + */ + public void register(Element element, OAbstractOverlay overlay) { + map.put(element, overlay); + } + + /** + * Unregisters the element with its overlay. + * + * @param element + */ + public void unregister(Element element) { + map.remove(element); + } + + /** + * Uses the current opened overlay and navigates up the element hierarchy + * until an element associated with an overlay could be found. This overlay + * will be shown. + */ + public void navigateUp() { + if (currentOpened == null) { + navigationStack.clear(); + return; + } + + Element element = currentOpened.getOwner().getElement(); + OAbstractOverlay nextHigher = findOverlayInParent(element); + if (nextHigher != null) { + navigationStack.push(element); + Widget widget = nextHigher.getOwner(); + show(nextHigher, widget.getElement().getAbsoluteLeft(), widget.getElement().getAbsoluteTop(), false); + } + } + + /** + * Uses the current opened overlay and navigates down the last opened + * overlays. + */ + public void navigateDown() { + if (currentOpened == null || navigationStack.isEmpty()) { + navigationStack.clear(); + return; + } + + Element lastElement = navigationStack.pop(); + if (lastElement != null) { + show(map.get(lastElement), lastElement.getAbsoluteLeft(), lastElement.getAbsoluteTop(), false); + } + } + + private OAbstractOverlay findOverlayInParent(Element element) { + Element parent = element.getParentElement(); + if (parent == null) { + return null; + } + if (map.containsKey(parent)) { + return map.get(parent); + } + + return findOverlayInParent(parent); + } + + /** + * Notifies the controller, that a new overlay is about to show. The + * controller will ensure, that a currently opened overlay will be closed + * Immediately. + * + * @param overlay + * the overlay + * @param left + * the left + * @param top + * the top + */ + public void show(OAbstractOverlay overlay, int left, int top) { + show(overlay, left, top, true); + } + + private void show(OAbstractOverlay overlay, int left, int top, boolean clearStack) { + if (clearStack) { + navigationStack.clear(); + } + + if (currentOpened == overlay && currentOpened.isShowing()) { + return; + } + + if (currentOpened != null) { + currentOpened.hide(); + } + + overlay.setPopupPosition(left, top); + currentOpened = overlay; + + if (currentOpened != null) { + currentOpened.show(); + } + } + + /** + * Closes the currently opened overlay. + */ + public void close() { + navigationStack.clear(); + if (currentOpened != null) { + currentOpened.hide(); + currentOpened = null; + } + } + +}
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/public/designer_overlay/add.png b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/public/designer_overlay/add.png new file mode 100644 index 0000000..64c8a86 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/public/designer_overlay/add.png Binary files differ
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/public/designer_overlay/delete.gif b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/public/designer_overlay/delete.gif new file mode 100644 index 0000000..2ff6678 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/public/designer_overlay/delete.gif Binary files differ
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/public/designer_overlay/edit_properties.gif b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/public/designer_overlay/edit_properties.gif new file mode 100644 index 0000000..94eedf6 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/public/designer_overlay/edit_properties.gif Binary files differ
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/public/designer_overlay/margin.gif b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/public/designer_overlay/margin.gif new file mode 100644 index 0000000..9be7aa5 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/public/designer_overlay/margin.gif Binary files differ
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/public/designer_overlay/openProperties.gif b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/public/designer_overlay/openProperties.gif new file mode 100644 index 0000000..1dc19a3 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/public/designer_overlay/openProperties.gif Binary files differ
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/public/designer_overlay/spacing.gif b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/public/designer_overlay/spacing.gif new file mode 100644 index 0000000..8eb28e6 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/public/designer_overlay/spacing.gif Binary files differ
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/public/designer_overlay/styles.css b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/public/designer_overlay/styles.css new file mode 100644 index 0000000..3c34f1c --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/src/org/eclipse/osbp/vaadin/addons/designer/overlay/public/designer_overlay/styles.css
@@ -0,0 +1,193 @@ +.o-designer-overlay .popupContent { + height: 32px; + width: 100%; + display: block; + background-color: black; + /* border-radius: 3px; */ + /* border: 2px solid black; */ + padding: 3px; +} + +.o-designer-overlayed { + border-radius: 3px !important; + border: 2px solid blue !important; +} + +.o-designer-overlay .o-alignment-widget { + position: relative; + width: 32px; + height: 32px; + background-color: #efeef1; + float: left; + margin-left: 3px; +} + +.o-alignment-widget .alignment { + top: 0px; + left: 0px; + display: block; + border: 1px solid white; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + height: 32px; + width: 32px; + position: absolute; + z-index: 10; +} + +.o-alignment-widget .alignment .singles { + position: absolute; + top: 0px; + left: 0px; + bottom: 0px; + height: 22px; + width: 22px; + overflow: hidden; +} + +.o-alignment-widget .singles .topleft, .o-alignment-widget .singles .topcenter, + .o-alignment-widget .singles .topright, .o-alignment-widget .singles .middleleft, + .o-alignment-widget .singles .middlecenter, .o-alignment-widget .singles .middleright, + .o-alignment-widget .singles .bottomleft, .o-alignment-widget .singles .bottomcenter, + .o-alignment-widget .singles .bottomright { + background-color: #a2a3a5; + height: 6px; + width: 6px; + display: block; + overflow: visible; + position: absolute; + z-index: 30; +} + +.o-alignment-widget .singles .o-selected { + background-color: black; +} + +.o-alignment-widget .singles .topleft { + top: 0px; + left: 0px; +} + +.o-alignment-widget .singles .topcenter { + top: 0px; + left: 0px; + margin-left: 8px; +} + +.o-alignment-widget .singles .topright { + top: 0px; + right: 0px; +} + +.o-alignment-widget .singles .middleleft { + top: 0px; + left: 0px; + margin-top: 8px; +} + +.o-alignment-widget .singles .middlecenter { + top: 0px; + margin-top: 8px; + left: 0px; + margin-left: 8px; +} + +.o-alignment-widget .singles .middleright { + top: 0px; + margin-top: 8px; + right: 0px; +} + +.o-alignment-widget .singles .bottomleft { + bottom: 0px; + left: 0px; +} + +.o-alignment-widget .singles .bottomcenter { + bottom: 0px; + margin-left: 8px; + left: 0px; +} + +.o-alignment-widget .singles .bottomright { + bottom: 0px; + right: 0px; +} + +.o-alignment-widget .alignment .hfill { + position: absolute; + bottom: 0px; + left: 0px; + width: 22px; + height: 6px; + background-color: #a2a3a5; +} + +.o-alignment-widget .alignment .vfill { + position: absolute; + top: 0px; + left: 24px; + width: 6px; + height: 22px; + background-color: #a2a3a5; +} + +.o-alignment-widget .alignment .vfill .o-selected, .o-alignment-widget .alignment .hfill .o-selected + { + background-color: white !important; +} + +.o-designer-overlay .o-button-widget { + position: relative; + overflow: hidden; + background-color: #efeef1; + background-repeat: no-repeat; + background-position: center; + border-radius: 2px; + border: 0px; + width: 20px; + height: 20px; + float: left; + margin-left: 3px; + margin-top: 6px; +} + +.o-designer-overlay .v-image { + position: relative; + overflow: hidden; + background-color: #efeef1; + + border-style: solid; + border-color: silver; + border-width: 4px; + width: 30px; + height: 30px; + float: left; + margin-left: -3px; + margin-top: -3px; + margin-right: 8px; +} + +.o-designer-overlay .switchEditable { + background-image: url("edit_properties.gif"); +} + +.o-designer-overlay .removeChild { + background-image: url("delete.gif"); +} + +.o-designer-overlay .addChild { + background-image: url("add.png"); +} + +.o-designer-overlay .openProperties { + background-image: url("openProperties.gif"); +} + +.o-designer-overlay .switchMargin { + background-image: url("margin.gif"); +} + +.o-designer-overlay .switchSpacing { + background-image: url("spacing.gif"); +} \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.designer.overlay/test/org/eclipse/osbp/vaadin/addons/designer/overlay/OverlayApplicationTest.java b/org.eclipse.osbp.vaadin.addons.designer.overlay/test/org/eclipse/osbp/vaadin/addons/designer/overlay/OverlayApplicationTest.java new file mode 100644 index 0000000..6151586 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.designer.overlay/test/org/eclipse/osbp/vaadin/addons/designer/overlay/OverlayApplicationTest.java
@@ -0,0 +1,96 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.designer.overlay; + +import com.vaadin.testbench.ScreenshotOnFailureRule; +import com.vaadin.testbench.TestBenchTestCase; +import com.vaadin.testbench.elements.ButtonElement; +import com.vaadin.testbench.elements.LabelElement; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.openqa.selenium.firefox.FirefoxDriver; +import java.util.List; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; + +/** + * This class contains JUnit tests, which are run using Vaadin TestBench 4. + * + * To run this, first get an evaluation license from + * https://vaadin.com/addon/vaadin-testbench and follow the instructions at + * https://vaadin.com/directory/help/installing-cval-license to install it. + * + * Once the license is installed, you can run this class as a JUnit test. + */ +public class OverlayApplicationTest extends TestBenchTestCase { + @Rule + public ScreenshotOnFailureRule screenshotOnFailureRule = + new ScreenshotOnFailureRule(this, true); + + @Before + public void setUp() throws Exception { + setDriver(new FirefoxDriver()); // Firefox + + // To use Chrome, first install chromedriver.exe from + // http://chromedriver.storage.googleapis.com/index.html + // on your system path (e.g. C:\Windows\System32\) + // setDriver(new ChromeDriver()); // Chrome + + // To use Internet Explorer, first install iedriverserver.exe from + // http://selenium-release.storage.googleapis.com/index.html?path=2.43/ + // on your system path (e.g. C:\Windows\System32\) + // setDriver(new InternetExplorerDriver()); // IE + + // To test headlessly (without a browser), first install phantomjs.exe + // from http://phantomjs.org/download.html on your system path + // (e.g. C:\Windows\System32\) + // setDriver(new PhantomJSDriver()); // PhantomJS headless browser + } + + /** + * Opens the URL where the application is deployed. + */ + private void openTestUrl() { + getDriver().get("http://localhost:8080/org.eclipse.osbp.vaadin.addons.designer.overlay"); + } + + @Test + public void testClickButton() throws Exception { + openTestUrl(); + + // At first there should be no labels + assertFalse($(LabelElement.class).exists()); + + // Click the button + ButtonElement clickMeButton = $(ButtonElement.class). + caption("Click Me").first(); + clickMeButton.click(); + + // There should now be one label + assertEquals(1, $(LabelElement.class).all().size()); + // ... with the specified text + assertEquals("Thank you for clicking", + $(LabelElement.class).first().getText()); + + // Click the button again + clickMeButton.click(); + + // There should now be two labels + List<LabelElement> allLabels = $(LabelElement.class).all(); + assertEquals(2, allLabels.size()); + // ... and the last label should have the correct text + LabelElement lastLabel = allLabels.get(1); + assertEquals("Thank you for clicking", lastLabel.getText()); + } +} \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.feature/.project b/org.eclipse.osbp.vaadin.addons.feature/.project new file mode 100644 index 0000000..22b88ac --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.feature/.project
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.osbp.vaadin.addons.feature</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.m2e.core.maven2Builder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.m2e.core.maven2Nature</nature> + </natures> +</projectDescription>
diff --git a/org.eclipse.osbp.vaadin.addons.feature/LICENSE.txt b/org.eclipse.osbp.vaadin.addons.feature/LICENSE.txt new file mode 100644 index 0000000..ff42ad4 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.feature/LICENSE.txt
@@ -0,0 +1,161 @@ +Eclipse Public License -v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION +OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and + +b) in the case of each subsequent Contributor: + +i) changes to the Program, and + +ii) additions to the Program; + +where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. +A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone +acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate +modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not +derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of +its Contribution alone or when combined with the Program. + +"Program" means the Contributions distributed in accordance with this Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. + +2. GRANT OF RIGHTS + +a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, +royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute +and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code +form. + +b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, +royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the +Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the +combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such +addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not +apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. + +c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no +assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property +rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity +based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and +licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property +rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the +Program, it is Recipient's responsibility to acquire that license before distributing the Program. + +d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to +grant the copyright license set forth in this Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and + +b) its license agreement: + +i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including +warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and +fitness for a particular purpose; + +ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, +incidental and consequential damages, such as lost profits; + +iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any +other party; and + +iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it +in a reasonable manner on or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and + +b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained within the Program. + +Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows +subsequent Recipients to identify the originator of the Contribution. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and +the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes +the Program in a commercial product offering should do so in a manner which does not create potential liability for +other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor +("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") +against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions +brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The +obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual +property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial +Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the +Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may + participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is +then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties +related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. +Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to +those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, +the Commercial Contributor must pay those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, +NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for +determining the appropriateness of using and distributing the Program and assumes all risks associated with its +exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance +with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or +enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such +provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) +alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such +Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or +conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such +noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution +of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses + granted by Recipient relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement +is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish +new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the +right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may +assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the +Agreement will be given a distinguishing version number. The Program (including Contributions) may always be +distributed subject to the version of the Agreement under which it was received. In addition, after a new version of +the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the +new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to +the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or +otherwise. All rights in the Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States +of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause +of action arose. Each party waives its rights to a jury trial in any resulting litigation. \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.feature/build.properties b/org.eclipse.osbp.vaadin.addons.feature/build.properties new file mode 100644 index 0000000..2c61631 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.feature/build.properties
@@ -0,0 +1,3 @@ +bin.includes = LICENSE.txt, \ + feature.xml,\ + feature.properties
diff --git a/org.eclipse.osbp.vaadin.addons.feature/feature.properties b/org.eclipse.osbp.vaadin.addons.feature/feature.properties new file mode 100644 index 0000000..40efed4 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.feature/feature.properties
@@ -0,0 +1,168 @@ +############################################################################## +# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation +############################################################################## +# feature.properties +# contains externalized strings for feature.xml +# "%foo" in feature.xml corresponds to the key "foo" in this file +# java.io.Properties file (ISO 8859-1 with "\" escapes) +# This file should be translated. + +# "featureName" property - name of the feature +featureName =OSBP Addons for Vaadin + +# "providerName" property - name of the company that provides the feature +providerName=Eclipse OSBP + +# "description" property - description of the feature +description=This feature provides the Vaadin addon bundles used by OSBP. + +# "updateSiteName" property - label for the update site +updateSiteName= + +# "copyright" property - text of the "Feature Update Copyright" +copyright=\ +Copyright (c) 2011-2016 Loetz GmbH&Co.KG \n\ +All rights reserved. This program and the accompanying materials\n\ +are made available under the terms of the Eclipse Public License v1.0\n\ +which accompanies this distribution, and is available at\n\ +http://www.eclipse.org/legal/epl-v10.html\n\ +\n\ +################ end of copyright property #################################### + + + +# "license" property - text of the "Feature Update License" +# should be plain text version of license agreement pointed to be "licenseURL" +license=\ +Eclipse Foundation Software User Agreement\n\ +February 1, 2011\n\ +\n\ +Usage Of Content\n\ +\n\ +THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\ +OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\ +USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\ +AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\ +NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\ +AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\ +AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\ +OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\ +TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\ +OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\ +BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\ +\n\ +Applicable Licenses\n\ +\n\ +Unless otherwise indicated, all Content made available by the\n\ +Eclipse Foundation is provided to you under the terms and conditions of\n\ +the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\ +provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\ +For purposes of the EPL, "Program" will mean the Content.\n\ +\n\ +Content includes, but is not limited to, source code, object code,\n\ +documentation and other files maintained in the Eclipse Foundation source code\n\ +repository ("Repository") in software modules ("Modules") and made available\n\ +as downloadable archives ("Downloads").\n\ +\n\ + - Content may be structured and packaged into modules to facilitate delivering,\n\ + extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\ + plug-in fragments ("Fragments"), and features ("Features").\n\ + - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\ + in a directory named "plugins".\n\ + - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\ + Each Feature may be packaged as a sub-directory in a directory named "features".\n\ + Within a Feature, files named "feature.xml" may contain a list of the names and version\n\ + numbers of the Plug-ins and/or Fragments associated with that Feature.\n\ + - Features may also include other Features ("Included Features"). Within a Feature, files\n\ + named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\ +\n\ +The terms and conditions governing Plug-ins and Fragments should be\n\ +contained in files named "about.html" ("Abouts"). The terms and\n\ +conditions governing Features and Included Features should be contained\n\ +in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\ +Licenses may be located in any directory of a Download or Module\n\ +including, but not limited to the following locations:\n\ +\n\ + - The top-level (root) directory\n\ + - Plug-in and Fragment directories\n\ + - Inside Plug-ins and Fragments packaged as JARs\n\ + - Sub-directories of the directory named "src" of certain Plug-ins\n\ + - Feature directories\n\ +\n\ +Note: if a Feature made available by the Eclipse Foundation is installed using the\n\ +Provisioning Technology (as defined below), you must agree to a license ("Feature \n\ +Update License") during the installation process. If the Feature contains\n\ +Included Features, the Feature Update License should either provide you\n\ +with the terms and conditions governing the Included Features or inform\n\ +you where you can locate them. Feature Update Licenses may be found in\n\ +the "license" property of files named "feature.properties" found within a Feature.\n\ +Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\ +terms and conditions (or references to such terms and conditions) that\n\ +govern your use of the associated Content in that directory.\n\ +\n\ +THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\ +TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\ +SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\ +\n\ + - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\ + - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\ + - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\ + - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\ + - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\ + - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\ +\n\ +IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\ +TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\ +is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\ +govern that particular Content.\n\ +\n\ +\n\Use of Provisioning Technology\n\ +\n\ +The Eclipse Foundation makes available provisioning software, examples of which include,\n\ +but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\ +the purpose of allowing users to install software, documentation, information and/or\n\ +other materials (collectively "Installable Software"). This capability is provided with\n\ +the intent of allowing such users to install, extend and update Eclipse-based products.\n\ +Information about packaging Installable Software is available at\n\ +http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\ +\n\ +You may use Provisioning Technology to allow other parties to install Installable Software.\n\ +You shall be responsible for enabling the applicable license agreements relating to the\n\ +Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\ +in accordance with the Specification. By using Provisioning Technology in such a manner and\n\ +making it available in accordance with the Specification, you further acknowledge your\n\ +agreement to, and the acquisition of all necessary rights to permit the following:\n\ +\n\ + 1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\ + the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\ + extending or updating the functionality of an Eclipse-based product.\n\ + 2. During the Provisioning Process, the Provisioning Technology may cause third party\n\ + Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\ + 3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\ + govern the use of the Installable Software ("Installable Software Agreement") and such\n\ + Installable Software Agreement shall be accessed from the Target Machine in accordance\n\ + with the Specification. Such Installable Software Agreement must inform the user of the\n\ + terms and conditions that govern the Installable Software and must solicit acceptance by\n\ + the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\ + indication of agreement by the user, the provisioning Technology will complete installation\n\ + of the Installable Software.\n\ +\n\ +Cryptography\n\ +\n\ +Content may contain encryption software. The country in which you are\n\ +currently may have restrictions on the import, possession, and use,\n\ +and/or re-export to another country, of encryption software. BEFORE\n\ +using any encryption software, please check the country's laws,\n\ +regulations and policies concerning the import, possession, or use, and\n\ +re-export of encryption software, to see if this is permitted.\n\ +\n\ +Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n +########### end of license property ##########################################
diff --git a/org.eclipse.osbp.vaadin.addons.feature/feature.xml b/org.eclipse.osbp.vaadin.addons.feature/feature.xml new file mode 100644 index 0000000..853d580 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.feature/feature.xml
@@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation +--> +<feature + id="org.eclipse.osbp.vaadin.addons.feature" + label="%featureName" + version="0.9.0.qualifier" + provider-name="%providerName"> + + <description> + %description + </description> + + <copyright> + %copyright + </copyright> + + <license url="%licenseURL"> + %license + </license> + + <plugin + id="org.eclipse.osbp.vaadin.addons.absolutelayout" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.osbp.vaadin.addons.designer.overlay" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.osbp.vaadin.addons.suggesttext" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + +</feature>
diff --git a/org.eclipse.osbp.vaadin.addons.feature/pom.xml b/org.eclipse.osbp.vaadin.addons.feature/pom.xml new file mode 100644 index 0000000..b4005dd --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.feature/pom.xml
@@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.eclipse.osbp.vaadin.addons</groupId> + <artifactId>org.eclipse.osbp.vaadin.addons.aggregator</artifactId> + <version>0.9.0-SNAPSHOT</version> + <relativePath>..</relativePath> + </parent> + + <artifactId>org.eclipse.osbp.vaadin.addons.feature</artifactId> + <packaging>eclipse-feature</packaging> + + <dependencies> + <dependency> + <groupId>org.eclipse.osbp.vaadin.addons</groupId> + <artifactId>org.eclipse.osbp.vaadin.addons.absolutelayout</artifactId> + <version>${project.version}</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.eclipse.osbp.vaadin.addons</groupId> + <artifactId>org.eclipse.osbp.vaadin.addons.designer.overlay</artifactId> + <version>${project.version}</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.eclipse.osbp.vaadin.addons</groupId> + <artifactId>org.eclipse.osbp.vaadin.addons.suggesttext</artifactId> + <version>${project.version}</version> + <scope>compile</scope> + </dependency> + + </dependencies> + + <build> + <plugins> + <plugin> + <!-- workaround while bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=398250 + is not fixed --> + <groupId>org.eclipse.tycho</groupId> + <artifactId>tycho-p2-plugin</artifactId> + <version>${tycho-version}</version> + <executions> + <execution> + <id>attached-p2-metadata</id> + <phase>package</phase> + <goals> + <goal>p2-metadata</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> +<!-- <executions> --> +<!-- <execution> --> +<!-- <id>javadoc-jar</id> --> +<!-- <phase>package</phase> --> +<!-- <goals> --> +<!-- <goal>jar</goal> --> +<!-- </goals> --> +<!-- </execution> --> +<!-- </executions> --> + </plugin> + </plugins> + </build> + +</project>
diff --git a/org.eclipse.osbp.vaadin.addons.feature/src/main/javadoc/README.txt b/org.eclipse.osbp.vaadin.addons.feature/src/main/javadoc/README.txt new file mode 100644 index 0000000..831da7e --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.feature/src/main/javadoc/README.txt
@@ -0,0 +1 @@ +Resource folder for javadoc resources. \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.feature/src/overview.html b/org.eclipse.osbp.vaadin.addons.feature/src/overview.html new file mode 100644 index 0000000..f4a68d1 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.feature/src/overview.html
@@ -0,0 +1,9 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<html> +<head> + <title>OSBP Technologystack Target Platform Feature Overview</title> +</head> +<body> +<p>The <b>OSBP Vaadin Addons </b>collects all Vaadin Addons provided by OSBP.</p> +</body> +</html>
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/.project b/org.eclipse.osbp.vaadin.addons.suggesttext/.project new file mode 100644 index 0000000..0b595d2 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/.project
@@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.osbp.vaadin.addons.suggesttext</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.wst.jsdt.core.javascriptValidator</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.wst.common.project.facet.core.builder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.wst.validation.validationbuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>com.vaadin.integration.eclipse.widgetsetBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.babel.editor.rbeBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.sonarlint.eclipse.core.sonarlintBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.m2e.core.maven2Builder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.m2e.core.maven2Nature</nature> + <nature>org.eclipse.jem.workbench.JavaEMFNature</nature> + <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> + <nature>org.eclipse.wst.common.project.facet.core.nature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.wst.jsdt.core.jsNature</nature> + <nature>com.vaadin.integration.eclipse.widgetsetNature</nature> + <nature>org.apache.ivyde.eclipse.ivynature</nature> + <nature>org.eclipse.babel.editor.rbeNature</nature> + </natures> +</projectDescription>
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/LICENSE.txt b/org.eclipse.osbp.vaadin.addons.suggesttext/LICENSE.txt new file mode 100644 index 0000000..ff42ad4 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/LICENSE.txt
@@ -0,0 +1,161 @@ +Eclipse Public License -v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION +OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and + +b) in the case of each subsequent Contributor: + +i) changes to the Program, and + +ii) additions to the Program; + +where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. +A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone +acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate +modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not +derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of +its Contribution alone or when combined with the Program. + +"Program" means the Contributions distributed in accordance with this Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. + +2. GRANT OF RIGHTS + +a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, +royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute +and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code +form. + +b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, +royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the +Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the +combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such +addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not +apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. + +c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no +assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property +rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity +based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and +licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property +rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the +Program, it is Recipient's responsibility to acquire that license before distributing the Program. + +d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to +grant the copyright license set forth in this Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and + +b) its license agreement: + +i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including +warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and +fitness for a particular purpose; + +ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, +incidental and consequential damages, such as lost profits; + +iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any +other party; and + +iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it +in a reasonable manner on or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and + +b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained within the Program. + +Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows +subsequent Recipients to identify the originator of the Contribution. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and +the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes +the Program in a commercial product offering should do so in a manner which does not create potential liability for +other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor +("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") +against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions +brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The +obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual +property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial +Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the +Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may + participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is +then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties +related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. +Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to +those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, +the Commercial Contributor must pay those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, +NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for +determining the appropriateness of using and distributing the Program and assumes all risks associated with its +exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance +with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or +enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such +provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) +alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such +Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or +conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such +noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution +of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses + granted by Recipient relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement +is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish +new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the +right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may +assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the +Agreement will be given a distinguishing version number. The Program (including Contributions) may always be +distributed subject to the version of the Agreement under which it was received. In addition, after a new version of +the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the +new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to +the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or +otherwise. All rights in the Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States +of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause +of action arose. Each party waives its rights to a jury trial in any resulting litigation. \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaadin.addons.suggesttext/META-INF/MANIFEST.MF new file mode 100644 index 0000000..ff4015e --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/META-INF/MANIFEST.MF
@@ -0,0 +1,32 @@ +Manifest-Version: 1.0 +Bnd-LastModified: 1491902111724 +Build-Jdk: 1.8.0_91 +Built-By: mollik +Bundle-ActivationPolicy: lazy +Bundle-Description: A parent POM aimed to set up the build of general Ma + ven based projects. +Bundle-DocURL: http://www.eclipse.org/osbp +Bundle-ManifestVersion: 2 +Bundle-Name: org.eclipse.osbp.vaadin.addons.suggesttext +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Bundle-SymbolicName: org.eclipse.osbp.vaadin.addons.suggesttext +Bundle-Vendor: Eclipse OSBP +Bundle-Version: 0.9.0.qualifier +Created-By: Apache Maven Bundle Plugin +Export-Package: org.eclipse.osbp.vaadin.addons.customcombo;version="0.9. + 0",org.eclipse.osbp.vaadin.addons.suggesttext;version="0.9.0",org.eclip + se.osbp.vaadin.addons.suggesttext.client;version="0.9.0",org.eclipse.os + bp.vaadin.addons.suggesttext.public.suggesttext;version="0.9.0",org.ecl + ipse.osbp.vaadin.addons.suggesttext.sample;version="0.9.0" +Import-Package: com.vaadin.annotations;version="[7.7,8)",com.vaadin.clie + nt;version="[7.7,8)",com.vaadin.client.communication;version="[7.7,8)", + com.vaadin.data;version="[7.7,8)",com.vaadin.external.org.slf4j;version + ="[1.6,2)",com.vaadin.server;version="[7.7,8)",com.vaadin.ui;version="[ + 7.7,8)",javax.servlet.annotation;resolution:=optional;version="[3.0,4)" + ,org.eclipse.osbp.vaadin.addons.suggesttext.client;version="[0.9,1)",or + g.junit +Require-Bundle: com.vaadin.server;bundle-version="[7.5.7,7.7.0)",com.vaa + din.client;bundle-version="[7.5.7,7.7.0)",com.vaadin.shared;bundle-vers + ion="[7.5.7,7.7.0)",org.jsoup;bundle-version="[1.8.3,1.8.4)" +Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))" +Tool: Bnd-3.2.0.201605172007
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/META-INF/git.properties b/org.eclipse.osbp.vaadin.addons.suggesttext/META-INF/git.properties new file mode 100644 index 0000000..c99b885 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/META-INF/git.properties
@@ -0,0 +1,14 @@ +#Generated by Git-Commit-Id-Plugin +#Tue Apr 11 11:17:34 CEST 2017 +git.remote.origin.url=ssh\://compex@10.1.13.14/osbpgit/org.eclipse.osbp.vaadin.addons.git +git.closest.tag.name=OSBP-initial-commit-2-Eclipse-4-luna-2017-03-31-17-10-39 +git.commit.id.describe-short=OSBP-initial-commit-2-Eclipse-4-luna-2017-03-31-17-10-39-dirty +git.commit.time=02.02.2017 @ 18\:04\:55 MEZ +git.commit.message.full=remove the feature from build +git.commit.message.short=remove the feature from build +git.commit.id.abbrev=90dd482 +git.branch=OSBP-initial-commit-2-Eclipse-4-luna +git.closest.tag.commit.count=0 +git.commit.id.describe=OSBP-initial-commit-2-Eclipse-4-luna-2017-03-31-17-10-39-dirty +git.commit.id=90dd482e5bc78cd1a404d12445cebc868ee417b0 +git.tags=OSBP-initial-commit-2-Eclipse-4-luna-2017-03-31-17-10-39
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/Sample/org/eclipse/osbp/vaadin/addons/suggesttext/sample/Person.java b/org.eclipse.osbp.vaadin.addons.suggesttext/Sample/org/eclipse/osbp/vaadin/addons/suggesttext/sample/Person.java new file mode 100644 index 0000000..010f373 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/Sample/org/eclipse/osbp/vaadin/addons/suggesttext/sample/Person.java
@@ -0,0 +1,55 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.suggesttext.sample; + +import java.util.UUID; + +public class Person { + + private String uuid = UUID.randomUUID().toString(); + + private String firstname; + + private String lastname; + + public Person(String firstname, String lastname) { + super(); + this.firstname = firstname; + this.lastname = lastname; + } + + public String getUuid() { + return uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } + + public String getFirstname() { + return firstname; + } + + public void setFirstname(String firstname) { + this.firstname = firstname; + } + + public String getLastname() { + return lastname; + } + + public void setLastname(String lastname) { + this.lastname = lastname; + } + +}
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/Sample/org/eclipse/osbp/vaadin/addons/suggesttext/sample/PersonForUUIDMapping.java b/org.eclipse.osbp.vaadin.addons.suggesttext/Sample/org/eclipse/osbp/vaadin/addons/suggesttext/sample/PersonForUUIDMapping.java new file mode 100644 index 0000000..3bfe66c --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/Sample/org/eclipse/osbp/vaadin/addons/suggesttext/sample/PersonForUUIDMapping.java
@@ -0,0 +1,55 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.suggesttext.sample; + +import java.util.Date; + +public class PersonForUUIDMapping { + + private long uuid = new Date().getTime(); + + private String firstname; + + private String lastname; + + public PersonForUUIDMapping(String firstname, String lastname) { + super(); + this.firstname = firstname; + this.lastname = lastname; + } + + public long getUuid() { + return uuid; + } + + public void setUuid(long uuid) { + this.uuid = uuid; + } + + public String getFirstname() { + return firstname; + } + + public void setFirstname(String firstname) { + this.firstname = firstname; + } + + public String getLastname() { + return lastname; + } + + public void setLastname(String lastname) { + this.lastname = lastname; + } + +}
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/Sample/org/eclipse/osbp/vaadin/addons/suggesttext/sample/SuggestTextUI.java b/org.eclipse.osbp.vaadin.addons.suggesttext/Sample/org/eclipse/osbp/vaadin/addons/suggesttext/sample/SuggestTextUI.java new file mode 100644 index 0000000..bcdc820 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/Sample/org/eclipse/osbp/vaadin/addons/suggesttext/sample/SuggestTextUI.java
@@ -0,0 +1,259 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.suggesttext.sample; + +import javax.servlet.annotation.WebServlet; + +import org.eclipse.osbp.vaadin.addons.suggesttext.SuggestTextField; + +import com.vaadin.annotations.Theme; +import com.vaadin.annotations.VaadinServletConfiguration; +import com.vaadin.data.Property; +import com.vaadin.data.Property.ValueChangeEvent; +import com.vaadin.data.util.BeanItemContainer; +import com.vaadin.server.VaadinRequest; +import com.vaadin.server.VaadinServlet; +import com.vaadin.ui.Button; +import com.vaadin.ui.CheckBox; +import com.vaadin.ui.GridLayout; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.Slider; +import com.vaadin.ui.UI; +import com.vaadin.ui.VerticalLayout; + +@SuppressWarnings("serial") +@Theme("valo") +public class SuggestTextUI extends UI { + + @WebServlet(value = "/*", asyncSupported = true) + @VaadinServletConfiguration(productionMode = false, ui = SuggestTextUI.class, widgetset = "org.eclipse.osbp.vaadin.addons.suggesttext.SuggestTextWidgetset") + public static class Servlet extends VaadinServlet { + } + + private GridLayout touchLayout; + + @Override + protected void init(VaadinRequest request) { + + final HorizontalLayout mainLayout = new HorizontalLayout(); + setContent(mainLayout); + + addForPerson(mainLayout); + addForPersonForUUIDMapping(mainLayout); + } + + private void addForPerson(final HorizontalLayout mainLayout) { + final VerticalLayout layout = new VerticalLayout(); + layout.setMargin(true); + mainLayout.addComponent(layout); + + // create SuggestTextField + final SuggestTextField suggestionBox = new SuggestTextField(); + suggestionBox.setId("suggestField1"); + suggestionBox.getTextField().setId("suggestField1_textField"); + + // setup text field + final Slider popupdelay = new Slider("Popup delay"); + popupdelay.setId("delay1"); + popupdelay.setMin(10); + popupdelay.setMax(1000); + popupdelay.setValue(500d); + popupdelay.setResolution(0); + layout.addComponent(popupdelay); + + popupdelay.addValueChangeListener(new Property.ValueChangeListener() { + @Override + public void valueChange(Property.ValueChangeEvent event) { + suggestionBox.setPopupDelay(popupdelay.getValue().intValue()); + } + }); + + // setup text field + final Slider limit = new Slider("Suggestion Limit"); + limit.setId("limit1"); + limit.setMin(2); + limit.setMax(30); + limit.setValue(10d); + limit.setResolution(0); + layout.addComponent(limit); + + limit.addValueChangeListener(new Property.ValueChangeListener() { + @Override + public void valueChange(Property.ValueChangeEvent event) { + suggestionBox.setLimit(limit.getValue().intValue()); + } + }); + + final CheckBox suggestionEnabled = new CheckBox("suggestion enabled"); + suggestionEnabled.setId("suggestionEnabled1"); + suggestionEnabled.setValue(true); + layout.addComponent(suggestionEnabled); + suggestionEnabled.addValueChangeListener(new Property.ValueChangeListener() { + @Override + public void valueChange(Property.ValueChangeEvent event) { + suggestionBox.setSuggestionEnabled(suggestionEnabled.getValue()); + } + }); + + final CheckBox autoHide = new CheckBox("auto hide popup"); + autoHide.setId("autoHide1"); + autoHide.setValue(true); + layout.addComponent(autoHide); + autoHide.addValueChangeListener(new Property.ValueChangeListener() { + @Override + public void valueChange(Property.ValueChangeEvent event) { + suggestionBox.setAutoHide(autoHide.getValue()); + + touchLayout.setEnabled(!autoHide.getValue()); + } + }); + + touchLayout = new GridLayout(2, 2); + touchLayout.setEnabled(false); + touchLayout.setDescription("Set auto hide popup to false"); + layout.addComponent(touchLayout); + + Button openSuggestList = new Button("open list", e -> { + suggestionBox.openPopup(); + }); + openSuggestList.setWidth("100%"); + touchLayout.addComponent(openSuggestList); + + Button closeSuggestList = new Button("close list", e -> { + suggestionBox.closePopup(); + }); + closeSuggestList.setWidth("100%"); + touchLayout.addComponent(closeSuggestList); + + Button navUpSuggestList = new Button("nav up", e -> { + suggestionBox.navigateToPrevious(); + }); + navUpSuggestList.setWidth("100%"); + touchLayout.addComponent(navUpSuggestList); + + Button navDownSuggestList = new Button("nav down", e -> { + suggestionBox.navigateToNext(); + }); + navDownSuggestList.setWidth("100%"); + touchLayout.addComponent(navDownSuggestList); + + Button selectCurrent = new Button("select", e -> { + suggestionBox.selectCurrent(); + }); + selectCurrent.setWidth("100%"); + touchLayout.addComponent(selectCurrent); + + // configure and add suggestion box + suggestionBox.setCaption("Select"); + suggestionBox.getTextField().addValueChangeListener(new Property.ValueChangeListener() { + @Override + public void valueChange(ValueChangeEvent event) { + System.out.println("Foo"); + } + }); + suggestionBox.setSuggestionEnabled(true); + suggestionBox.setLimit(10); + suggestionBox.setPopupDelay(500); + suggestionBox.addStyleName("os-cash"); + layout.addComponent(suggestionBox); + BeanItemContainer<Person> container = new BeanItemContainer<>(Person.class); + + for (int i = 0; i < 100; i++) { + container.addBean(new Person("Florian" + i, "Pirchner" + i)); + container.addBean(new Person("Klemens" + i, "Edler" + i)); + container.addBean(new Person("Berni" + i, "Edler" + i)); + } + container.addBean(new Person("Sabrina", "Hopf")); + + suggestionBox.setContainerDataSource(container); + suggestionBox.setCaptionPropertyId("lastname"); + suggestionBox.setFilterPropertyId("lastname"); + suggestionBox.setUniqueIdPropertyId("uuid"); + + } + + private void addForPersonForUUIDMapping(final HorizontalLayout mainLayout) { + final VerticalLayout layout = new VerticalLayout(); + layout.setMargin(true); + mainLayout.addComponent(layout); + + // create SuggestTextField + final SuggestTextField suggestionBox = new SuggestTextField(); + + // setup text field + final Slider popupdelay = new Slider("Popup delay"); + popupdelay.setMin(10); + popupdelay.setMax(1000); + popupdelay.setValue(500d); + popupdelay.setResolution(0); + layout.addComponent(popupdelay); + + popupdelay.addValueChangeListener(new Property.ValueChangeListener() { + @Override + public void valueChange(Property.ValueChangeEvent event) { + suggestionBox.setPopupDelay(popupdelay.getValue().intValue()); + } + }); + + // setup text field + final Slider limit = new Slider("Suggestion Limit"); + limit.setMin(2); + limit.setMax(30); + limit.setValue(10d); + limit.setResolution(0); + layout.addComponent(limit); + + limit.addValueChangeListener(new Property.ValueChangeListener() { + @Override + public void valueChange(Property.ValueChangeEvent event) { + suggestionBox.setLimit(limit.getValue().intValue()); + } + }); + + final CheckBox suggestionEnabled = new CheckBox("suggestion enabled"); + suggestionEnabled.setValue(true); + layout.addComponent(suggestionEnabled); + suggestionEnabled.addValueChangeListener(new Property.ValueChangeListener() { + @Override + public void valueChange(Property.ValueChangeEvent event) { + suggestionBox.setSuggestionEnabled(suggestionEnabled.getValue()); + } + }); + + // configure and add SuggestTextField + suggestionBox.setCaption("Select with uuid mapping"); + suggestionBox.getTextField().addValueChangeListener(new Property.ValueChangeListener() { + @Override + public void valueChange(ValueChangeEvent event) { + System.out.println("Foo"); + } + }); + suggestionBox.setSuggestionEnabled(true); + suggestionBox.setLimit(10); + suggestionBox.setPopupDelay(500); + layout.addComponent(suggestionBox); + BeanItemContainer<PersonForUUIDMapping> container = new BeanItemContainer<>(PersonForUUIDMapping.class); + + for (int i = 0; i < 100; i++) { + container.addBean(new PersonForUUIDMapping("Florian" + i, "Pirchner" + i)); + container.addBean(new PersonForUUIDMapping("Klemens" + i, "Edler" + i)); + container.addBean(new PersonForUUIDMapping("Berni" + i, "Edler" + i)); + } + container.addBean(new PersonForUUIDMapping("Sabrina", "Hopf")); + + suggestionBox.setContainerDataSource(container); + suggestionBox.setCaptionPropertyId("lastname"); + suggestionBox.setFilterPropertyId("lastname"); + suggestionBox.setUniqueIdPropertyId("uuid"); + } +} \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/SuperDevMode code server for org.eclipse.osbp.vaadin.addons.suggesttext.launch b/org.eclipse.osbp.vaadin.addons.suggesttext/SuperDevMode code server for org.eclipse.osbp.vaadin.addons.suggesttext.launch new file mode 100644 index 0000000..802e6c0 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/SuperDevMode code server for org.eclipse.osbp.vaadin.addons.suggesttext.launch
@@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication"> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> +<listEntry value="/org.eclipse.osbp.vaadin.addons.suggesttext"/> +</listAttribute> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> +<listEntry value="4"/> +</listAttribute> +<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/> +<listAttribute key="org.eclipse.jdt.launching.CLASSPATH"> +<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry id="org.eclipse.jdt.launching.classpathentry.defaultClasspath"> <memento exportedEntriesOnly="false" project="org.eclipse.osbp.vaadin.addons.suggesttext"/> </runtimeClasspathEntry> "/> +<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaadin.addons.suggesttext/src" path="3" type="2"/> "/> +<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaadin.addons.suggesttext/Sample" path="3" type="2"/> "/> +<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/org.eclipse.osbp.vaadin.addons.suggesttext/test" path="3" type="2"/> "/> +</listAttribute> +<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/> +<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/> +<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.codeserver.CodeServer"/> +<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="org.eclipse.osbp.vaadin.addons.suggesttext.SuggestTextWidgetset"/> +<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.osbp.vaadin.addons.suggesttext"/> +<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/> +<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xss8M -Xmx512M -XX:MaxPermSize=512M"/> +<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="/Users/florianpirchner/git/org.osbee.vaadin.addons/org.eclipse.osbp.vaadin.addons.suggestbox"/> +</launchConfiguration>
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/build.properties b/org.eclipse.osbp.vaadin.addons.suggesttext/build.properties new file mode 100644 index 0000000..a172fdb --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/build.properties
@@ -0,0 +1,5 @@ +output.. = target/classes/ +bin.includes = META-INF/,\ + .,\ + build.properties +source.. = src/
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/epl-v10.html b/org.eclipse.osbp.vaadin.addons.suggesttext/epl-v10.html new file mode 100644 index 0000000..b398acc --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/epl-v10.html
@@ -0,0 +1,259 @@ +<!--?xml version="1.0" encoding="ISO-8859-1" ?--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>Eclipse Public License - Version 1.0</title> +<style type="text/css"> + body { + size: 8.5in 11.0in; + margin: 0.25in 0.5in 0.25in 0.5in; + tab-interval: 0.5in; + } + p { + margin-left: auto; + margin-top: 0.5em; + margin-bottom: 0.5em; + } + p.list { + margin-left: 0.5in; + margin-top: 0.05em; + margin-bottom: 0.05em; + } + </style> + +</head> + +<body lang="EN-US"> + +<h2>Eclipse Public License - v 1.0</h2> + +<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE +PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR +DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS +AGREEMENT.</p> + +<p><b>1. DEFINITIONS</b></p> + +<p>"Contribution" means:</p> + +<p class="list">a) in the case of the initial Contributor, the initial +code and documentation distributed under this Agreement, and</p> +<p class="list">b) in the case of each subsequent Contributor:</p> +<p class="list">i) changes to the Program, and</p> +<p class="list">ii) additions to the Program;</p> +<p class="list">where such changes and/or additions to the Program +originate from and are distributed by that particular Contributor. A +Contribution 'originates' from a Contributor if it was added to the +Program by such Contributor itself or anyone acting on such +Contributor's behalf. Contributions do not include additions to the +Program which: (i) are separate modules of software distributed in +conjunction with the Program under their own license agreement, and (ii) +are not derivative works of the Program.</p> + +<p>"Contributor" means any person or entity that distributes +the Program.</p> + +<p>"Licensed Patents" mean patent claims licensable by a +Contributor which are necessarily infringed by the use or sale of its +Contribution alone or when combined with the Program.</p> + +<p>"Program" means the Contributions distributed in accordance +with this Agreement.</p> + +<p>"Recipient" means anyone who receives the Program under +this Agreement, including all Contributors.</p> + +<p><b>2. GRANT OF RIGHTS</b></p> + +<p class="list">a) Subject to the terms of this Agreement, each +Contributor hereby grants Recipient a non-exclusive, worldwide, +royalty-free copyright license to reproduce, prepare derivative works +of, publicly display, publicly perform, distribute and sublicense the +Contribution of such Contributor, if any, and such derivative works, in +source code and object code form.</p> + +<p class="list">b) Subject to the terms of this Agreement, each +Contributor hereby grants Recipient a non-exclusive, worldwide, +royalty-free patent license under Licensed Patents to make, use, sell, +offer to sell, import and otherwise transfer the Contribution of such +Contributor, if any, in source code and object code form. This patent +license shall apply to the combination of the Contribution and the +Program if, at the time the Contribution is added by the Contributor, +such addition of the Contribution causes such combination to be covered +by the Licensed Patents. The patent license shall not apply to any other +combinations which include the Contribution. No hardware per se is +licensed hereunder.</p> + +<p class="list">c) Recipient understands that although each Contributor +grants the licenses to its Contributions set forth herein, no assurances +are provided by any Contributor that the Program does not infringe the +patent or other intellectual property rights of any other entity. Each +Contributor disclaims any liability to Recipient for claims brought by +any other entity based on infringement of intellectual property rights +or otherwise. As a condition to exercising the rights and licenses +granted hereunder, each Recipient hereby assumes sole responsibility to +secure any other intellectual property rights needed, if any. For +example, if a third party patent license is required to allow Recipient +to distribute the Program, it is Recipient's responsibility to acquire +that license before distributing the Program.</p> + +<p class="list">d) Each Contributor represents that to its knowledge it +has sufficient copyright rights in its Contribution, if any, to grant +the copyright license set forth in this Agreement.</p> + +<p><b>3. REQUIREMENTS</b></p> + +<p>A Contributor may choose to distribute the Program in object code +form under its own license agreement, provided that:</p> + +<p class="list">a) it complies with the terms and conditions of this +Agreement; and</p> + +<p class="list">b) its license agreement:</p> + +<p class="list">i) effectively disclaims on behalf of all Contributors +all warranties and conditions, express and implied, including warranties +or conditions of title and non-infringement, and implied warranties or +conditions of merchantability and fitness for a particular purpose;</p> + +<p class="list">ii) effectively excludes on behalf of all Contributors +all liability for damages, including direct, indirect, special, +incidental and consequential damages, such as lost profits;</p> + +<p class="list">iii) states that any provisions which differ from this +Agreement are offered by that Contributor alone and not by any other +party; and</p> + +<p class="list">iv) states that source code for the Program is available +from such Contributor, and informs licensees how to obtain it in a +reasonable manner on or through a medium customarily used for software +exchange.</p> + +<p>When the Program is made available in source code form:</p> + +<p class="list">a) it must be made available under this Agreement; and</p> + +<p class="list">b) a copy of this Agreement must be included with each +copy of the Program.</p> + +<p>Contributors may not remove or alter any copyright notices contained +within the Program.</p> + +<p>Each Contributor must identify itself as the originator of its +Contribution, if any, in a manner that reasonably allows subsequent +Recipients to identify the originator of the Contribution.</p> + +<p><b>4. COMMERCIAL DISTRIBUTION</b></p> + +<p>Commercial distributors of software may accept certain +responsibilities with respect to end users, business partners and the +like. While this license is intended to facilitate the commercial use of +the Program, the Contributor who includes the Program in a commercial +product offering should do so in a manner which does not create +potential liability for other Contributors. Therefore, if a Contributor +includes the Program in a commercial product offering, such Contributor +("Commercial Contributor") hereby agrees to defend and +indemnify every other Contributor ("Indemnified Contributor") +against any losses, damages and costs (collectively "Losses") +arising from claims, lawsuits and other legal actions brought by a third +party against the Indemnified Contributor to the extent caused by the +acts or omissions of such Commercial Contributor in connection with its +distribution of the Program in a commercial product offering. The +obligations in this section do not apply to any claims or Losses +relating to any actual or alleged intellectual property infringement. In +order to qualify, an Indemnified Contributor must: a) promptly notify +the Commercial Contributor in writing of such claim, and b) allow the +Commercial Contributor to control, and cooperate with the Commercial +Contributor in, the defense and any related settlement negotiations. The +Indemnified Contributor may participate in any such claim at its own +expense.</p> + +<p>For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those +performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor +must pay those damages.</p> + +<p><b>5. NO WARRANTY</b></p> + +<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS +PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS +OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, +ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY +OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely +responsible for determining the appropriateness of using and +distributing the Program and assumes all risks associated with its +exercise of rights under this Agreement , including but not limited to +the risks and costs of program errors, compliance with applicable laws, +damage to or loss of data, programs or equipment, and unavailability or +interruption of operations.</p> + +<p><b>6. DISCLAIMER OF LIABILITY</b></p> + +<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT +NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING +WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR +DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p> + +<p><b>7. GENERAL</b></p> + +<p>If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further action +by the parties hereto, such provision shall be reformed to the minimum +extent necessary to make such provision valid and enforceable.</p> + +<p>If Recipient institutes patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that the +Program itself (excluding combinations of the Program with other +software or hardware) infringes such Recipient's patent(s), then such +Recipient's rights granted under Section 2(b) shall terminate as of the +date such litigation is filed.</p> + +<p>All Recipient's rights under this Agreement shall terminate if it +fails to comply with any of the material terms or conditions of this +Agreement and does not cure such failure in a reasonable period of time +after becoming aware of such noncompliance. If all Recipient's rights +under this Agreement terminate, Recipient agrees to cease use and +distribution of the Program as soon as reasonably practicable. However, +Recipient's obligations under this Agreement and any licenses granted by +Recipient relating to the Program shall continue and survive.</p> + +<p>Everyone is permitted to copy and distribute copies of this +Agreement, but in order to avoid inconsistency the Agreement is +copyrighted and may only be modified in the following manner. The +Agreement Steward reserves the right to publish new versions (including +revisions) of this Agreement from time to time. No one other than the +Agreement Steward has the right to modify this Agreement. The Eclipse +Foundation is the initial Agreement Steward. The Eclipse Foundation may +assign the responsibility to serve as the Agreement Steward to a +suitable separate entity. Each new version of the Agreement will be +given a distinguishing version number. The Program (including +Contributions) may always be distributed subject to the version of the +Agreement under which it was received. In addition, after a new version +of the Agreement is published, Contributor may elect to distribute the +Program (including its Contributions) under the new version. Except as +expressly stated in Sections 2(a) and 2(b) above, Recipient receives no +rights or licenses to the intellectual property of any Contributor under +this Agreement, whether expressly, by implication, estoppel or +otherwise. All rights in the Program not expressly granted under this +Agreement are reserved.</p> + +<p>This Agreement is governed by the laws of the State of New York and +the intellectual property laws of the United States of America. No party +to this Agreement will bring a legal action under this Agreement more +than one year after the cause of action arose. Each party waives its +rights to a jury trial in any resulting litigation.</p> + + + +</body></html> \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/ivy.xml b/org.eclipse.osbp.vaadin.addons.suggesttext/ivy.xml new file mode 100644 index 0000000..070ca06 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/ivy.xml
@@ -0,0 +1,47 @@ +<?xml version="1.0"?> +<!DOCTYPE ivy-module [ + <!ENTITY vaadin.version "7.6.5"> +]> +<ivy-module version="2.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"> + <info organisation="com.example" module="v7proj" /> + <configurations> + <!-- The default configuration, which should be deployed to the server --> + <conf name="default" /> + <!-- A configuration only needed when compiling the widget set. Should + not be deployed to the server --> + <conf name="widgetset-compile" /> + <!-- A configuration used in compilation of server side classes only. + Should be deployed to the server --> + <conf name="nodeploy" /> + </configurations> + <dependencies defaultconf="default" defaultconfmapping="default->default"> + <!-- The core server part of Vaadin --> + <dependency org="com.vaadin" name="vaadin-server" rev="&vaadin.version;" /> + + <!-- Vaadin themes --> + <dependency org="com.vaadin" name="vaadin-themes" rev="&vaadin.version;" /> + + <!-- Push support --> + <dependency org="com.vaadin" name="vaadin-push" rev="&vaadin.version;" /> + + <!-- Servlet 3.0 API --> + <dependency org="javax.servlet" name="javax.servlet-api" rev="3.0.1" conf="nodeploy->default" /> + + <!-- TestBench 4 --> + <dependency org="com.vaadin" name="vaadin-testbench-api" rev="latest.release" conf="nodeploy -> default" /> + + <!-- Precompiled DefaultWidgetSet --> + <dependency org="com.vaadin" name="vaadin-client-compiled" + rev="&vaadin.version;" /> + + <!-- Vaadin client side, needed for widget set compilation --> + <dependency org="com.vaadin" name="vaadin-client" rev="&vaadin.version;" + conf="widgetset-compile->default" /> + + <!-- Compiler for custom widget sets. Should not be deployed --> + <dependency org="com.vaadin" name="vaadin-client-compiler" + rev="&vaadin.version;" conf="widgetset-compile->default" /> + </dependencies> +</ivy-module>
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/ivysettings.xml b/org.eclipse.osbp.vaadin.addons.suggesttext/ivysettings.xml new file mode 100644 index 0000000..9c0f653 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/ivysettings.xml
@@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ivysettings> + <settings defaultResolver="default" /> + <resolvers> + <chain name="default"> + <!-- Public Maven repository --> + <ibiblio name="public" m2compatible="true" /> + + <!-- Vaadin Add-on repository --> + <ibiblio name="vaadin-addons" usepoms="true" m2compatible="true" + root="http://maven.vaadin.com/vaadin-addons" /> + + <!-- Vaadin snapshots repository --> + <ibiblio name="vaadin-snapshots" usepoms="true" m2compatible="true" + root="https://oss.sonatype.org/content/repositories/vaadin-snapshots" /> + <!-- Repository used for Vaadin modified smartsprites library --> + <dual name="custom-smartsprites"> + <filesystem name="smartsprites-ivy"> + <ivy pattern="${basedir}/ivymodule/[module]-ivy-[revision].xml" /> + </filesystem> + <url name="smartsprites-artifact"> + <artifact + pattern="http://dev.vaadin.com/svn/versions/6.8/build/smartsprites/lib/[artifact](-[revision]).[ext]" /> + </url> + </dual> + </chain> + </resolvers> + <modules> + <!-- Vaadin patched SmartSprites --> + <module organisation="com.carrotsearch" name="smartsprites" + revision="0.2.3-itmill" resolver="custom-smartsprites" /> + </modules> + + +</ivysettings> \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/license.html b/org.eclipse.osbp.vaadin.addons.suggesttext/license.html new file mode 100644 index 0000000..6e579a5 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/license.html
@@ -0,0 +1,164 @@ +<!--?xml version="1.0" encoding="ISO-8859-1" ?--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>Eclipse Foundation Software User Agreement</title> +</head> + +<body lang="EN-US"> +<h2>Eclipse Foundation Software User Agreement</h2> +<p>February 1, 2011</p> + +<h3>Usage Of Content</h3> + +<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS + (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND + CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE + OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR + NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND + CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p> + +<h3>Applicable Licenses</h3> + +<p>Unless otherwise indicated, all Content made available by the Eclipse + Foundation is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 + ("EPL"). A copy of the EPL is provided with this Content and is also + available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. + For purposes of the EPL, "Program" will mean the Content.</p> + +<p>Content includes, but is not limited to, source code, object code, +documentation and other files maintained in the Eclipse Foundation +source code + repository ("Repository") in software modules ("Modules") and made +available as downloadable archives ("Downloads").</p> + +<ul> + <li>Content may be structured and packaged into modules to +facilitate delivering, extending, and upgrading the Content. Typical +modules may include plug-ins ("Plug-ins"), plug-in fragments +("Fragments"), and features ("Features").</li> + <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</li> + <li>A Feature is a bundle of one or more Plug-ins and/or +Fragments and associated material. Each Feature may be packaged as a +sub-directory in a directory named "features". Within a Feature, files +named "feature.xml" may contain a list of the names and version numbers +of the Plug-ins + and/or Fragments associated with that Feature.</li> + <li>Features may also include other Features ("Included +Features"). Within a Feature, files named "feature.xml" may contain a +list of the names and version numbers of Included Features.</li> +</ul> + +<p>The terms and conditions governing Plug-ins and Fragments should be +contained in files named "about.html" ("Abouts"). The terms and +conditions governing Features and +Included Features should be contained in files named "license.html" +("Feature Licenses"). Abouts and Feature Licenses may be located in any + directory of a Download or Module +including, but not limited to the following locations:</p> + +<ul> + <li>The top-level (root) directory</li> + <li>Plug-in and Fragment directories</li> + <li>Inside Plug-ins and Fragments packaged as JARs</li> + <li>Sub-directories of the directory named "src" of certain Plug-ins</li> + <li>Feature directories</li> +</ul> + +<p>Note: if a Feature made available by the Eclipse Foundation is +installed using the Provisioning Technology (as defined below), you must + agree to a license ("Feature Update License") during the +installation process. If the Feature contains Included Features, the +Feature Update License should either provide you with the terms and +conditions governing the Included Features or +inform you where you can locate them. Feature Update Licenses may be +found in the "license" property of files named "feature.properties" +found within a Feature. +Such Abouts, Feature Licenses, and Feature Update Licenses contain the +terms and conditions (or references to such terms and conditions) that +govern your use of the associated Content in +that directory.</p> + +<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER +TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. + SOME OF THESE +OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p> + +<ul> + <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li> + <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li> + <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li> + <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li> + <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li> + <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li> +</ul> + +<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND +CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, +or Feature Update License is provided, please +contact the Eclipse Foundation to determine what terms and conditions +govern that particular Content.</p> + + +<h3>Use of Provisioning Technology</h3> + +<p>The Eclipse Foundation makes available provisioning software, +examples of which include, but are not limited to, p2 and the Eclipse + Update Manager ("Provisioning Technology") for the purpose of +allowing users to install software, documentation, information and/or + other materials (collectively "Installable Software"). This +capability is provided with the intent of allowing such users to + install, extend and update Eclipse-based products. Information about +packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a> + ("Specification").</p> + +<p>You may use Provisioning Technology to allow other parties to install + Installable Software. You shall be responsible for enabling the + applicable license agreements relating to the Installable Software to + be presented to, and accepted by, the users of the Provisioning +Technology + in accordance with the Specification. By using Provisioning +Technology in such a manner and making it available in accordance with +the + Specification, you further acknowledge your agreement to, and the +acquisition of all necessary rights to permit the following:</p> + +<ol> + <li>A series of actions may occur ("Provisioning Process") in +which a user may execute the Provisioning Technology + on a machine ("Target Machine") with the intent of installing, +extending or updating the functionality of an Eclipse-based + product.</li> + <li>During the Provisioning Process, the Provisioning Technology +may cause third party Installable Software or a portion thereof to be + accessed and copied to the Target Machine.</li> + <li>Pursuant to the Specification, you will provide to the user +the terms and conditions that govern the use of the Installable + Software ("Installable Software Agreement") and such Installable +Software Agreement shall be accessed from the Target + Machine in accordance with the Specification. Such Installable +Software Agreement must inform the user of the terms and conditions that + govern + the Installable Software and must solicit acceptance by the end +user in the manner prescribed in such Installable Software Agreement. +Upon such + indication of agreement by the user, the provisioning Technology +will complete installation of the Installable Software.</li> +</ol> + +<h3>Cryptography</h3> + +<p>Content may contain encryption software. The country in which you are + currently may have restrictions on the import, possession, and use, +and/or re-export to + another country, of encryption software. BEFORE using any encryption +software, please check the country's laws, regulations and policies +concerning the import, + possession, or use, and re-export of encryption software, to see if +this is permitted.</p> + +<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p> + + +</body></html> \ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/pom.xml b/org.eclipse.osbp.vaadin.addons.suggesttext/pom.xml new file mode 100644 index 0000000..c0aa482 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/pom.xml
@@ -0,0 +1,183 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.eclipse.osbp.releng.maven</groupId> + <artifactId>org.eclipse.osbp.releng.maven.parent.mbp</artifactId> + <version>0.9.0-SNAPSHOT</version> + <relativePath /> + </parent> + + <groupId>org.eclipse.osbp.vaadin.addons</groupId> + <artifactId>org.eclipse.osbp.vaadin.addons.suggesttext</artifactId> + <packaging>bundle</packaging> + + <dependencies> + <dependency> + <groupId>com.vaadin</groupId> + <artifactId>vaadin-server</artifactId> + <version>${vaadin.version}</version> + </dependency> + <dependency> + <groupId>com.vaadin</groupId> + <artifactId>vaadin-client</artifactId> + <version>${vaadin.version}</version> + </dependency> + <dependency> + <groupId>com.vaadin.external.slf4j</groupId> + <artifactId>vaadin-slf4j-jdk14</artifactId> + <version>1.6.1</version> + </dependency> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>javax.servlet-api</artifactId> + <version>3.0.1</version> + </dependency> + </dependencies> + + <build> + <sourceDirectory>${basedir}/src</sourceDirectory> + + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-resources-plugin</artifactId> + <configuration> + <encoding>UTF-8</encoding> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.0</version> + <configuration> + <encoding>UTF-8</encoding> + <source>1.8</source> + <target>1.8</target> + </configuration> + </plugin> + + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Bundle-Name>OS.bee Addon for Vaadin: Suggesttext</Bundle-Name> + <Bundle-SymbolicName>org.eclipse.osbp.vaadin.addons.suggesttext</Bundle-SymbolicName> + <Bundle-Version>0.9.0.{osgi-version-qualifier}</Bundle-Version> + <Require-Bundle>com.vaadin.server;bundle-version="[7.5.7,7.7.0)", + com.vaadin.client;bundle-version="[7.5.7,7.7.0)", + com.vaadin.shared;bundle-version="[7.5.7,7.7.0)", + org.jsoup;bundle-version="[1.8.3,1.8.4)" + </Require-Bundle> + <Import-Package> + com.vaadin.*, + !fi.jasoft.*, + javax.servlet.annotation;resolution:=optional, + * + </Import-Package> + <Export-Package> + !LICENSE,!LICENSE.txt,!THIRD-PARTY.txt,!NOTICE,!README.txt,!VERSION.txt,!build.properties, + !VAADIN.*, + org.eclipse.osbp.vaadin.addons.*;version="0.9.0" + </Export-Package> + <Include-Resource>{maven-resources},LICENSE.txt,epl-v10.html</Include-Resource> + <_nouses>true</_nouses> + </instructions> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <version>2.2.1</version> + <executions> + <execution> + <id>attach-sources</id> + <goals> + <goal>jar</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + <pluginManagement> + <plugins> + + <!--This plugin's configuration is used to store Eclipse m2e settings + only. It has no influence on the Maven build itself. --> + <plugin> + <groupId>org.eclipse.m2e</groupId> + <artifactId>lifecycle-mapping</artifactId> + <version>1.0.0</version> + <configuration> + <lifecycleMappingMetadata> + <pluginExecutions> + <pluginExecution> + <pluginExecutionFilter> + <groupId> + org.apache.maven.plugins + </groupId> + <artifactId> + maven-dependency-plugin + </artifactId> + <versionRange> + [2.0.0,) + </versionRange> + <goals> + <goal> + copy-dependencies + </goal> + </goals> + </pluginExecutionFilter> + <action> + <ignore></ignore> + </action> + </pluginExecution> + <pluginExecution> + <pluginExecutionFilter> + <groupId>com.vaadin</groupId> + <artifactId> + vaadin-maven-plugin + </artifactId> + <versionRange> + [7.0-SNAPSHOT,) + </versionRange> + <goals> + <goal>compile</goal> + </goals> + </pluginExecutionFilter> + <action> + <ignore></ignore> + </action> + </pluginExecution> + </pluginExecutions> + </lifecycleMappingMetadata> + </configuration> + </plugin> + </plugins> + </pluginManagement> + <!-- This is needed for the sources required by the client-side compiler + to be included in the produced JARs --> + <resources> + <resource> + <directory>src</directory> + </resource> + </resources> + + </build> + +</project>
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/SuggestTextField.java b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/SuggestTextField.java new file mode 100644 index 0000000..b46c4be --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/SuggestTextField.java
@@ -0,0 +1,640 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.suggesttext; + +import java.io.Serializable; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.osbp.vaadin.addons.suggesttext.client.OQueryDelegate.SuggestionResult; +import org.eclipse.osbp.vaadin.addons.suggesttext.client.SuggestTextFieldClientRpc; +import org.eclipse.osbp.vaadin.addons.suggesttext.client.SuggestTextFieldServerRpc; +import org.eclipse.osbp.vaadin.addons.suggesttext.client.SuggestTextFieldState; + +import com.vaadin.data.Container; +import com.vaadin.data.Container.Filterable; +import com.vaadin.data.Item; +import com.vaadin.data.util.filter.Compare; +import com.vaadin.data.util.filter.SimpleStringFilter; +import com.vaadin.event.ShortcutAction; +import com.vaadin.external.org.slf4j.Logger; +import com.vaadin.external.org.slf4j.LoggerFactory; +import com.vaadin.ui.AbstractSingleComponentContainer; +import com.vaadin.ui.Component; +import com.vaadin.ui.TextField; +import com.vaadin.util.ReflectTools; + +/** + * A field, which behaves like a textfield and offers suggestion functionality. + * <p> + * To get access to the underlying textfield, use {@link #getTextField()}. All + * functions available of {@link TextField} are also supported by this field. + * <p> + * To configure the suggestion functions, use the methods + * {@link #setSuggestionEnabled(boolean)}, {@link #setLimit(int)} and + * {@link #setPopupDelay(int)}. + * <p> + * To provide this field with queryable items, set a container using + * {@link #setContainerDataSource(Container) }(Filterable). It will use the + * given {@link #getFilterPropertyId() filterPropertyId} to query the container + * for suggestions.<br> + * The {@link #getCaptionPropertyId() captionPropertyId} is used to show results + * in the UI.<br> + * The {@link #getUniqueIdPropertyId()} is used to map the selected item + * clientside to the proper item in the container. + * <p> + * This field fires {@link SelectionChangedEvent} if a suggestion was selected + * at the clientside. + * <p> + * Additionally this field offers the functionality, that a suggestion is + * selected automatically, if only 1 record was returned by the query. + * <p> + * By default the popup can be opened pressing "ALT+KEY_DOWN". This can be + * adjusted by setters below. + */ +@SuppressWarnings("serial") +public class SuggestTextField extends AbstractSingleComponentContainer { + + /** The Constant LOGGER. */ + private static final Logger LOGGER = LoggerFactory.getLogger(SuggestTextField.class); + + /** The lock. */ + private Object lock = new Object(); + + /** The caption property id. */ + private Object captionPropertyId; + + /** The unique id property id. */ + private Object uniqueIdPropertyId; + + /** The filter property id. */ + private Object filterPropertyId; + + /** The rpc. */ + private SuggestTextFieldServerRpc rpc = new SuggestTextFieldServerRpc() { + @Override + public void requestSuggestions(final String handleId, final String filter, final int limit) { + if (needsUUIDMapping) { + uuidmapping.clear(); + } + query(handleId, filter, limit); + } + + @Override + public void selectionChanged(String id) { + Object itemId = getItemById(id); + if (itemId != null) { + fireSelectionChanged(itemId); + } + } + }; + + /** The container. */ + private Container container; + + /** The text field. */ + private TextField textField; + + /** The needs uuid mapping. */ + private boolean needsUUIDMapping; + + /** The uuidmapping. */ + private Map<String, Object> uuidmapping = new HashMap<>(); + + /** + * Instantiates a new suggest text field. + */ + public SuggestTextField() { + registerRpc(rpc); + + textField = new TextField(); + textField.setSizeFull(); + setContent(textField); + } + + /* + * (non-Javadoc) + * + * @see com.vaadin.ui.AbstractComponent#getState() + */ + @Override + protected SuggestTextFieldState getState() { + return (SuggestTextFieldState) super.getState(); + } + + /* + * (non-Javadoc) + * + * @see com.vaadin.ui.AbstractComponent#getState(boolean) + */ + @Override + protected SuggestTextFieldState getState(boolean markAsDirty) { + return (SuggestTextFieldState) super.getState(markAsDirty); + } + + /** + * Gets the text field. + * + * @return the text field + */ + public TextField getTextField() { + return textField; + } + + /** + * Sets the value into the text field. + * + * @param value + */ + public void setValue(String value) { + textField.setValue(value); + } + + /** + * Returns the value from the text field. + * + * @return + */ + public String getValue() { + return textField.getValue(); + } + + /** + * Opens the popup if not already opened and shows the suggested values. + */ + public void openPopup() { + getRpcProxy(SuggestTextFieldClientRpc.class).openPopup(); + } + + /** + * Closes the popup if open. Else it has no effect. + */ + public void closePopup() { + getRpcProxy(SuggestTextFieldClientRpc.class).closePopup(); + } + + /** + * Navigates the selected suggestion to the next one available. + */ + public void navigateToNext() { + getRpcProxy(SuggestTextFieldClientRpc.class).navigateToNext(); + } + + /** + * Navigates the selected suggestion to the previous one available. + */ + public void navigateToPrevious() { + getRpcProxy(SuggestTextFieldClientRpc.class).navigateToPrevious(); + } + + /** + * Selects the current selected suggestion and accepts it. + */ + public void selectCurrent() { + getRpcProxy(SuggestTextFieldClientRpc.class).selectCurrent(); + } + + /** + * Returns the delay in ms.<br> + * The delay defines how many ms no keypress is done, before showing the + * popup. + * + * @return the popup delay + */ + public int getPopupDelay() { + return getState(false).popupDelay; + } + + /** + * Sets the delay in ms. <br> + * The delay defines how many ms no keypress is done, before showing the + * popup. + * + * @param delay + * the new popup delay + */ + public void setPopupDelay(int delay) { + if (getState(false).popupDelay != delay) { + getState(true).popupDelay = delay; + } + } + + /** + * True, if suggestions should be enabled. False otherwise. + * + * @param suggestionEnabled + * the new suggestion enabled + */ + public void setSuggestionEnabled(boolean suggestionEnabled) { + if (getState(false).suggestionEnabled != suggestionEnabled) { + getState(true).suggestionEnabled = suggestionEnabled; + } + + if (!suggestionEnabled && needsUUIDMapping) { + uuidmapping.clear(); + } + } + + /** + * Sets the number of items to be shown at clientside suggestions. + * + * @param limit + * the new limit + */ + public void setLimit(int limit) { + if (getState(false).limit != limit) { + getState(true).limit = limit; + } + } + + /** + * See {@link #setSuggestionEnabled(boolean)}. + * + * @return true, if is suggestion enabled + */ + public boolean isSuggestionEnabled() { + return getState(false).suggestionEnabled; + } + + /** + * See {@link #setLimit(int)}. + * + * @return the limit + */ + public int getLimit() { + return getState(false).limit; + } + + /** + * See {@link #setAutoHide(boolean)}. + * + * @return the limit + */ + public boolean isAutoHide() { + return getState(false).autoHide; + } + + /** + * If true, then the popup hides if the user clicks outside the popup. + * + * @param limit + * the new limit + */ + public void setAutoHide(boolean autoHide) { + if (getState(false).autoHide != autoHide) { + getState(true).autoHide = autoHide; + } + } + + /** + * Sets the key which need to be pressed to open the popup.<br> + * See {@link ShortcutAction.KeyCode} + * + * @param key + * the new key + */ + public void setOpenPopupKey(int key) { + if (getState(false).openPopup_key != key) { + getState(true).openPopup_key = key; + } + } + + /** + * Sets the key modifier which need to be pressed to open the popup.<br> + * See {@link ShortcutAction.ModifierKey} + * + * @param modifier + * the new modifier + */ + public void setOpenPopupKeyModifier(int modifier) { + if (modifier != ShortcutAction.ModifierKey.ALT && modifier != ShortcutAction.ModifierKey.CTRL) { + throw new IllegalArgumentException("Only ALT and CTRL are allowed as modifiers."); + } + + if (getState(false).openPopup_modifier != modifier) { + getState(true).openPopup_modifier = modifier; + } + } + + /** + * Returns the key which need to be pressed to open the popup.<br> + * See {@link ShortcutAction.KeyCode} + * + * @param key + * the new key + */ + public int getOpenPopupKey() { + return getState(false).openPopup_key; + } + + /** + * Returns the key modifier which need to be pressed to open the popup.<br> + * See {@link ShortcutAction.ModifierKey} + * + * @param modifier + * the new modifier + */ + public int getOpenPopupKeyModifier(int modifier) { + return getState(false).openPopup_modifier; + } + + /** + * Respond. + * + * @param handle + * the handle + * @param result + * the result + */ + protected void respond(String handle, List<SuggestionResult> result) { + getRpcProxy(SuggestTextFieldClientRpc.class).respond(handle, result); + } + + /** + * See {@link #setFilterPropertyId(Object)}. + * + * @return the filter property id + */ + public Object getFilterPropertyId() { + return filterPropertyId; + } + + /** + * Sets the filterPropertyId. This id is used to query the container for + * matching results. + * + * @param filterPropertyId + * the new filter property id + */ + public void setFilterPropertyId(Object filterPropertyId) { + this.filterPropertyId = filterPropertyId; + + if (!container.getContainerPropertyIds().contains(filterPropertyId)) { + throw new IllegalArgumentException(filterPropertyId + " is not a valid container property."); + } + } + + /** + * See {@link #setCaptionPropertyId(Object)}. + * + * @return the caption property id + */ + public Object getCaptionPropertyId() { + return captionPropertyId; + } + + /** + * This propertyId is used, to show results in the user interface. + * + * @param captionPropertyId + * the new caption property id + */ + public void setCaptionPropertyId(Object captionPropertyId) { + this.captionPropertyId = captionPropertyId; + + if (!container.getContainerPropertyIds().contains(captionPropertyId)) { + throw new IllegalArgumentException(captionPropertyId + " is not a valid container property."); + } + } + + /** + * See {@link #setUniqueIdPropertyId(Object)}. + * + * @return the unique id property id + */ + public Object getUniqueIdPropertyId() { + return uniqueIdPropertyId; + } + + /** + * This property is used to map the selected record at clientside to the + * matching item from the container. Each record in the container needs to + * have a unique id. + * + * @param uniqueIdPropertyId + * the new unique id property id + */ + public void setUniqueIdPropertyId(Object uniqueIdPropertyId) { + this.uniqueIdPropertyId = uniqueIdPropertyId; + + if (!container.getContainerPropertyIds().contains(uniqueIdPropertyId)) { + throw new IllegalArgumentException(uniqueIdPropertyId + " is not a valid container property."); + } + + Class<?> type = container.getType(uniqueIdPropertyId); + needsUUIDMapping = type == String.class ? false : true; + } + + /** + * Sets the container datasource used to query suggestions.<br> + * <b>Attention:</b> The container must implement + * {@link Container.Filterable} and {@link Container.Indexed}. + * + * @param container + * the new container data source + */ + public void setContainerDataSource(Container container) { + if (!(container instanceof Container.Filterable) || !(container instanceof Container.Indexed)) { + throw new IllegalArgumentException( + "The container must implement Container.Filterable and Container.Indexed"); + } + this.container = container; + } + + /** + * Returns the container datasource. + * + * @return the container data source + */ + public Container getContainerDataSource() { + return container; + } + + /** + * Query. + * + * @param handleId + * the handle id + * @param filter + * the filter + * @param limit + * the limit + */ + protected void query(String handleId, String filter, int limit) { + + if (filterPropertyId == null) { + throw new IllegalArgumentException("filterPropertyId must be set for query."); + } + + if (captionPropertyId == null) { + throw new IllegalArgumentException("captionPropertyId must be set for query."); + } + + if (uniqueIdPropertyId == null) { + throw new IllegalArgumentException("uniqueIdPropertyId must be set for query."); + } + + LOGGER.debug("Query - filter:" + filter + " limit:" + limit + " handleId:" + handleId); + + List<SuggestionResult> result = new ArrayList<>(); + synchronized (lock) { + Container.Filterable filterable = (Filterable) container; + filterable.removeAllContainerFilters(); + filterable.addContainerFilter(new SimpleStringFilter(filterPropertyId, filter, true, false)); + + int count = 0; + for (Object itemId : ((Container.Indexed) container).getItemIds(0, Math.max(limit, 3))) { + Item item = container.getItem(itemId); + String caption = (String) item.getItemProperty(captionPropertyId).getValue(); + Object id = item.getItemProperty(uniqueIdPropertyId).getValue(); + + if (needsUUIDMapping) { + uuidmapping.put(id.toString(), id); + } + result.add(new SuggestionResult(id.toString(), caption)); + + count++; + if (count >= limit) { + break; + } + } + } + + respond(handleId, result); + } + + /** + * Gets the item by id. + * + * @param id + * the id + * @return the item by id + */ + protected Object getItemById(String id) { + if (uniqueIdPropertyId == null) { + throw new IllegalArgumentException("uniqueIdPropertyId must be set for query."); + } + + Object uuid = id; + if (needsUUIDMapping) { + uuid = uuidmapping.get(id); + uuidmapping.clear(); + } + + if (uuid == null) { + LOGGER.error("Can not access uuid==null. Given id was " + id); + return null; + } + + synchronized (lock) { + Container.Filterable filterable = (Container.Filterable) container; + filterable.removeAllContainerFilters(); + filterable.addContainerFilter(new Compare.Equal(uniqueIdPropertyId, uuid)); + + Container.Indexed indexed = (Container.Indexed) container; + return indexed.firstItemId(); + } + } + + /** + * Fire selection changed. + * + * @param itemId + * the item id + */ + protected void fireSelectionChanged(Object itemId) { + LOGGER.debug("Selection changed event fired: " + itemId); + fireEvent(new SelectionChangedEvent(this, itemId)); + } + + /** + * Add listener which is being notified if the selection changes. + * + * @param listener + * the listener + */ + public void addSelectionChangedListener(SelectionChangedListener listener) { + addListener(SelectionChangedEvent.class, listener, SelectionChangedListener.SELECTION_CHANGED_METHOD); + } + + /** + * Removes listener which is being notified if the selection changes. + * + * @param listener + * the listener + */ + public void removeSelectionChangedListener(SelectionChangedListener listener) { + removeListener(SelectionChangedEvent.class, listener); + } + + /** + * Is fired, if the selection of a suggestion clientside finished. + */ + public static class SelectionChangedEvent extends Event { + + /** The item id. */ + private final Object itemId; + + /** + * Instantiates a new selection changed event. + * + * @param source + * the source + * @param itemId + * the item id + */ + public SelectionChangedEvent(Component source, Object itemId) { + super(source); + this.itemId = itemId; + } + + /** + * Gets the item id. + * + * @return the item id + */ + public Object getItemId() { + return itemId; + } + + } + + /** + * The listener interface for receiving selectionChanged events. The class + * that is interested in processing a selectionChanged event implements this + * interface, and the object created with that class is registered with a + * component using the component's <code>addSelectionChangedListener</code> + * method. When the selectionChanged event occurs, that object's appropriate + * method is invoked. + * + * @see SelectionChangedEvent + */ + public interface SelectionChangedListener extends Serializable { + + /** The Constant SELECTION_CHANGED_METHOD. */ + public static final Method SELECTION_CHANGED_METHOD = ReflectTools.findMethod(SelectionChangedListener.class, + "selectionChanged", SelectionChangedEvent.class); + + /** + * Selection changed. + * + * @param event + * the event + */ + void selectionChanged(SelectionChangedEvent event); + + } +}
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/SuggestTextWidgetset.gwt.xml b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/SuggestTextWidgetset.gwt.xml new file mode 100644 index 0000000..d58fd0d --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/SuggestTextWidgetset.gwt.xml
@@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.5.1//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.5.1/distro-source/core/src/gwt-module.dtd"> +<module> + <inherits name="com.vaadin.DefaultWidgetSet" /> + + <!-- Uncomment the following to compile the widgetset for one browser only. + Multiple browsers can be specified as a comma separated list. The supported + user agents at the moment of writing were: ie8,ie9,gecko1_8,safari,opera + The value gecko1_8 is used for Firefox and safari is used for webkit based + browsers including Google Chrome. --> + + <!-- To enable SuperDevMode, uncomment this line. See https://vaadin.com/wiki/-/wiki/Main/Using%20SuperDevMode + for more information and instructions. --> + <!-- <set-configuration-property name="devModeRedirectEnabled" value="true" /> --> + +<!-- <add-linker name="xsiframe" /> --> +<!-- <set-configuration-property name="devModeRedirectEnabled" value="true" /> --> +<!-- <set-property name="user.agent" value="safari" /> --> + + <stylesheet src="suggesttext/styles.css" /> + +</module>
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/ODelegatingOracle.java b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/ODelegatingOracle.java new file mode 100644 index 0000000..0ad5543 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/ODelegatingOracle.java
@@ -0,0 +1,169 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.suggesttext.client; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.osbp.vaadin.addons.suggesttext.client.OQueryDelegate.FutureCallback; +import org.eclipse.osbp.vaadin.addons.suggesttext.client.OQueryDelegate.SuggestionResult; + +import com.google.gwt.user.client.Timer; +import com.google.gwt.user.client.ui.SuggestOracle; + +// TODO: Auto-generated Javadoc +/** + * An oracle that delegates to a serverside RPC. + */ +public class ODelegatingOracle extends SuggestOracle { + + /** The delegate. */ + private final OQueryDelegate delegate; + + /** The delay timer. */ + private CustomTimer delayTimer; + + /** The popup delay. */ + private int popupDelay; + + /** The o suggest box. */ + private OSuggestBox oSuggestBox; + + /** The suggestion enabled. */ + private boolean suggestionEnabled; + + /** + * Instantiates a new o delegating oracle. + * + * @param delegate the delegate + */ + public ODelegatingOracle(OQueryDelegate delegate) { + this.delegate = delegate; + } + + /* (non-Javadoc) + * @see com.google.gwt.user.client.ui.SuggestOracle#requestSuggestions(com.google.gwt.user.client.ui.SuggestOracle.Request, com.google.gwt.user.client.ui.SuggestOracle.Callback) + */ + @Override + public void requestSuggestions(final Request request, final Callback callback) { + if (request.getQuery() == null || request.equals("") || !suggestionEnabled) { + return; + } + + if (delayTimer == null) { + delayTimer = new CustomTimer(); + } else { + delayTimer.cancel(); + } + delayTimer.setRequest(request); + delayTimer.setCallback(callback); + delayTimer.schedule(popupDelay); + } + + /* (non-Javadoc) + * @see com.google.gwt.user.client.ui.SuggestOracle#requestDefaultSuggestions(com.google.gwt.user.client.ui.SuggestOracle.Request, com.google.gwt.user.client.ui.SuggestOracle.Callback) + */ + public void requestDefaultSuggestions(Request request, Callback callback) { + if (delayTimer != null) { + delayTimer.cancel(); + delayTimer = null; + } + + super.requestDefaultSuggestions(request, callback); + } + + /** + * Sets the delay until the popup occurs. + * + * @param popupDelay the new popup delay + */ + public void setPopupDelay(int popupDelay) { + this.popupDelay = popupDelay; + } + + /** + * Timer to implement the popupDelay. + */ + private class CustomTimer extends Timer { + + /** The request. */ + private Request request; + + /** The callback. */ + private Callback callback; + + /** + * Sets the request. + * + * @param request the new request + */ + public void setRequest(Request request) { + this.request = request; + } + + /** + * Sets the callback. + * + * @param callback the new callback + */ + public void setCallback(Callback callback) { + this.callback = callback; + } + + /* (non-Javadoc) + * @see com.google.gwt.user.client.Timer#run() + */ + @Override + public void run() { + // make an rpc call + delegate.requestSuggestions(request, new FutureCallback() { + @Override + public void respondSuggestions(List<SuggestionResult> suggestions) { + + if (suggestions.size() == 1) { + oSuggestBox.setSingleSuggestionAndClosePopup(new OSuggestion(suggestions.get(0))); + } else { + List<OSuggestion> temp = new ArrayList<>(); + for (SuggestionResult r : suggestions) { + temp.add(new OSuggestion(r)); + } + + Response response = new Response(); + response.setMoreSuggestions(false); + response.setSuggestions(temp); + + callback.onSuggestionsReady(request, response); + } + } + }); + } + } + + /** + * Sets the suggest box. + * + * @param oSuggestBox the new suggest box + */ + protected void setSuggestBox(OSuggestBox oSuggestBox) { + this.oSuggestBox = oSuggestBox; + } + + /** + * True, if the suggestion box should be used. + * + * @param suggestionEnabled the new suggestion enabled + */ + public void setSuggestionEnabled(boolean suggestionEnabled) { + this.suggestionEnabled = suggestionEnabled; + } +}
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/OQueryDelegate.java b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/OQueryDelegate.java new file mode 100644 index 0000000..50c9a0f --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/OQueryDelegate.java
@@ -0,0 +1,115 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.suggesttext.client; + +import java.util.Date; +import java.util.List; + +import com.google.gwt.user.client.ui.SuggestOracle.Request; + +// TODO: Auto-generated Javadoc +/** + * This class is responsible to delegate the query for suggestions to the serverside rpc. + */ +public class OQueryDelegate { + + /** The server rpc. */ + // instance + private final SuggestTextFieldServerRpc serverRpc; + + /** The current handle. */ + private String currentHandle; + + /** The current callback. */ + private FutureCallback currentCallback; + + /** + * Instantiates a new o query delegate. + * + * @param serverRpc the server rpc + */ + public OQueryDelegate(SuggestTextFieldServerRpc serverRpc) { + this.serverRpc = serverRpc; + } + + /** + * Request suggestions. + * + * @param request the request + * @param callback the callback + */ + protected void requestSuggestions(Request request, FutureCallback callback) { + // dismiss older callbacks + currentHandle = Long.toHexString(new Date().getTime()); + currentCallback = callback; + + serverRpc.requestSuggestions(currentHandle, request.getQuery(), request.getLimit()); + } + + /** + * Respond. + * + * @param handle the handle + * @param response the response + */ + public void respond(String handle, List<SuggestionResult> response) { + if (currentHandle.equals(handle)) { + currentCallback.respondSuggestions(response); + } + } + + /** + * A future to wait for responds from serverside. + */ + public interface FutureCallback { + + /** + * Respond suggestions. + * + * @param suggestions the suggestions + */ + void respondSuggestions(List<SuggestionResult> suggestions); + } + + /** + * The Class SuggestionResult. + */ + public static class SuggestionResult { + + /** The uuid. */ + public String uuid; + + /** The display text. */ + public String displayText; + + /** + * Instantiates a new suggestion result. + */ + public SuggestionResult() { + + } + + /** + * Instantiates a new suggestion result. + * + * @param uuid the uuid + * @param displayText the display text + */ + public SuggestionResult(String uuid, String displayText) { + super(); + this.uuid = uuid; + this.displayText = displayText; + } + + } +}
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/OSuggestBox.java b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/OSuggestBox.java new file mode 100644 index 0000000..50dc26d --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/OSuggestBox.java
@@ -0,0 +1,1365 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.suggesttext.client; + +import java.util.Collection; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; + +import com.google.gwt.core.client.Scheduler.ScheduledCommand; +import com.google.gwt.dom.client.Element; +import com.google.gwt.editor.client.IsEditor; +import com.google.gwt.editor.client.LeafValueEditor; +import com.google.gwt.editor.client.adapters.TakesValueEditor; +import com.google.gwt.event.dom.client.HasAllKeyHandlers; +import com.google.gwt.event.dom.client.KeyCodes; +import com.google.gwt.event.dom.client.KeyDownEvent; +import com.google.gwt.event.dom.client.KeyDownHandler; +import com.google.gwt.event.dom.client.KeyPressEvent; +import com.google.gwt.event.dom.client.KeyPressHandler; +import com.google.gwt.event.dom.client.KeyUpEvent; +import com.google.gwt.event.dom.client.KeyUpHandler; +import com.google.gwt.event.logical.shared.HasSelectionHandlers; +import com.google.gwt.event.logical.shared.SelectionEvent; +import com.google.gwt.event.logical.shared.SelectionHandler; +import com.google.gwt.event.logical.shared.ValueChangeEvent; +import com.google.gwt.event.logical.shared.ValueChangeHandler; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.user.client.DOM; +import com.google.gwt.user.client.ui.DecoratedPopupPanel; +import com.google.gwt.user.client.ui.Focusable; +import com.google.gwt.user.client.ui.HasAnimation; +import com.google.gwt.user.client.ui.HasEnabled; +import com.google.gwt.user.client.ui.HasText; +import com.google.gwt.user.client.ui.HasValue; +import com.google.gwt.user.client.ui.MenuBar; +import com.google.gwt.user.client.ui.MenuItem; +import com.google.gwt.user.client.ui.PopupPanel; +import com.google.gwt.user.client.ui.PopupPanel.AnimationType; +import com.google.gwt.user.client.ui.RootPanel; +import com.google.gwt.user.client.ui.SimplePanel; +import com.google.gwt.user.client.ui.SuggestBox; +import com.google.gwt.user.client.ui.SuggestOracle; +import com.google.gwt.user.client.ui.SuggestOracle.Callback; +import com.google.gwt.user.client.ui.SuggestOracle.Request; +import com.google.gwt.user.client.ui.SuggestOracle.Response; +import com.google.gwt.user.client.ui.SuggestOracle.Suggestion; +import com.google.gwt.user.client.ui.UIObject; +import com.google.gwt.user.client.ui.ValueBoxBase; +import com.google.gwt.user.client.ui.Widget; +import com.vaadin.client.ApplicationConnection; +import com.vaadin.client.ComponentConnector; +import com.vaadin.client.Util; +import com.vaadin.client.ui.VOverlay; +import com.vaadin.event.ShortcutAction; + +// TODO: Auto-generated Javadoc +/** + * Copy from {@link SuggestBox} but {@link #box} can be initialized after new + * instance was created. Copy was needed since {@link #box} is final in + * {@link com.google.gwt.user.client.ui.SuggestBox}. + */ +public class OSuggestBox extends SimplePanel implements HasText, Focusable, HasEnabled, HasAllKeyHandlers, + HasValue<String>, HasSelectionHandlers<Suggestion>, IsEditor<LeafValueEditor<String>> { + + /** + * The callback used when a user selects a {@link Suggestion}. + */ + public static interface SuggestionCallback { + + /** + * On suggestion selected. + * + * @param suggestion + * the suggestion + */ + void onSuggestionSelected(Suggestion suggestion); + } + + /** + * Used to display suggestions to the user. + */ + public abstract static class SuggestionDisplay { + + /** + * Get the currently selected {@link Suggestion} in the display. + * + * @return the current suggestion, or null if none selected + */ + protected abstract Suggestion getCurrentSelection(); + + /** + * Hide the list of suggestions from view. + */ + protected abstract void hideSuggestions(); + + /** + * Returns true, if the popup is showing. + * + * @return + */ + protected abstract boolean isShowing(); + + /** + * Highlight the suggestion directly below the current selection in the + * list. + */ + protected abstract void moveSelectionDown(); + + /** + * Highlight the suggestion directly above the current selection in the + * list. + */ + protected abstract void moveSelectionUp(); + + /** + * Set the debug id of widgets used in the SuggestionDisplay. + * + * @param suggestBoxBaseID + * the baseID of the {@link OSuggestBox} + * @see UIObject#onEnsureDebugId(String) + */ + protected void onEnsureDebugId(String suggestBoxBaseID) { + } + + /** + * Accepts information about whether there were more suggestions + * matching than were provided to {@link #showSuggestions}. + * + * @param hasMoreSuggestions + * true if more matches were available + * @param numMoreSuggestions + * number of more matches available. If the specific number + * is unknown, 0 will be passed. + */ + protected void setMoreSuggestions(boolean hasMoreSuggestions, int numMoreSuggestions) { + // Subclasses may optionally implement. + } + + /** + * Update the list of visible suggestions. + * + * Use care when using isDisplayStringHtml; it is an easy way to expose + * script-based security problems. + * + * @param suggestBox + * the suggest box where the suggestions originated + * @param suggestions + * the suggestions to show + * @param isDisplayStringHTML + * should the suggestions be displayed as HTML + * @param isAutoSelectEnabled + * if true, the first item should be selected automatically + * @param callback + * the callback used when the user makes a suggestion + */ + protected abstract void showSuggestions(OSuggestBox suggestBox, Collection<? extends Suggestion> suggestions, + boolean isDisplayStringHTML, boolean isAutoSelectEnabled, SuggestionCallback callback); + + /** + * If true, then the popup will hide when the user clicks outside the + * popup. + * + * @param autoHide + */ + protected abstract void setAutoHide(boolean autoHide); + + /** + * The owner of the popup. + * + * @param oSuggestBox + */ + protected abstract void setOwner(OSuggestBox oSuggestBox); + + } + + /** + * <p> + * The default implementation of {@link SuggestionDisplay} displays + * suggestions in a {@link PopupPanel} beneath the {@link OSuggestBox}. + * + * + * <h3>CSS Style Rules</h3> + * <dl> + * <dt>.o-SuggestBoxPopup</dt> + * <dd>the suggestion popup</dd> + * <dt>.o-SuggestBoxPopup .item</dt> + * <dd>an unselected suggestion</dd> + * <dt>.o-SuggestBoxPopup .item-selected</dt> + * <dd>a selected suggestion</dd> + * <dt>.o-SuggestBoxPopup .suggestPopupTopLeft</dt> + * <dd>the top left cell</dd> + * <dt>.o-SuggestBoxPopup .suggestPopupTopLeftInner</dt> + * <dd>the inner element of the cell</dd> + * <dt>.o-SuggestBoxPopup .suggestPopupTopCenter</dt> + * <dd>the top center cell</dd> + * <dt>.o-SuggestBoxPopup .suggestPopupTopCenterInner</dt> + * <dd>the inner element of the cell</dd> + * <dt>.o-SuggestBoxPopup .suggestPopupTopRight</dt> + * <dd>the top right cell</dd> + * <dt>.o-SuggestBoxPopup .suggestPopupTopRightInner</dt> + * <dd>the inner element of the cell</dd> + * <dt>.o-SuggestBoxPopup .suggestPopupMiddleLeft</dt> + * <dd>the middle left cell</dd> + * <dt>.o-SuggestBoxPopup .suggestPopupMiddleLeftInner</dt> + * <dd>the inner element of the cell</dd> + * <dt>.o-SuggestBoxPopup .suggestPopupMiddleCenter</dt> + * <dd>the middle center cell</dd> + * <dt>.o-SuggestBoxPopup .suggestPopupMiddleCenterInner</dt> + * <dd>the inner element of the cell</dd> + * <dt>.o-SuggestBoxPopup .suggestPopupMiddleRight</dt> + * <dd>the middle right cell</dd> + * <dt>.o-SuggestBoxPopup .suggestPopupMiddleRightInner</dt> + * <dd>the inner element of the cell</dd> + * <dt>.o-SuggestBoxPopup .suggestPopupBottomLeft</dt> + * <dd>the bottom left cell</dd> + * <dt>.o-SuggestBoxPopup .suggestPopupBottomLeftInner</dt> + * <dd>the inner element of the cell</dd> + * <dt>.o-SuggestBoxPopup .suggestPopupBottomCenter</dt> + * <dd>the bottom center cell</dd> + * <dt>.o-SuggestBoxPopup .suggestPopupBottomCenterInner</dt> + * <dd>the inner element of the cell</dd> + * <dt>.o-SuggestBoxPopup .suggestPopupBottomRight</dt> + * <dd>the bottom right cell</dd> + * <dt>.o-SuggestBoxPopup .suggestPopupBottomRightInner</dt> + * <dd>the inner element of the cell</dd> + * </dl> + */ + public static class DefaultSuggestionDisplay extends SuggestionDisplay implements HasAnimation { + + /** The suggestion menu. */ + private final SuggestionMenu suggestionMenu; + + /** The suggestion popup. */ + private final PopupPanel suggestionPopup; + + /** + * The suggest box this display was prepared for. Is used to determine + * the {@link ApplicationConnection} and the v-overlay-container. + */ + private OSuggestBox oSuggestBox; + + /** + * We need to keep track of the last {@link OSuggestBox} because it acts + * as an autoHide partner for the {@link PopupPanel}. If we use the same + * display for multiple {@link OSuggestBox}, we need to switch the + * autoHide partner. + */ + private OSuggestBox lastSuggestBox = null; + + /** + * Sub-classes making use of {@link decorateSuggestionList} to add + * elements to the suggestion popup _may_ want those elements to show + * even when there are 0 suggestions. An example would be showing a "No + * matches" message. + */ + private boolean hideWhenEmpty = true; + + /** + * Object to position the suggestion display next to, instead of the + * associated suggest box. + */ + private UIObject positionRelativeTo; + + /** + * Construct a new {@link DefaultSuggestionDisplay}. + */ + public DefaultSuggestionDisplay() { + suggestionMenu = new SuggestionMenu(true); + suggestionPopup = createPopup(); + suggestionPopup.setWidget(decorateSuggestionList(suggestionMenu)); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.osbp.vaadin.addons.suggesttext.client.OSuggestBox. + * SuggestionDisplay#hideSuggestions() + */ + @Override + public void hideSuggestions() { + suggestionPopup.hide(); + } + + /* + * (non-Javadoc) + * + * @see com.google.gwt.user.client.ui.HasAnimation#isAnimationEnabled() + */ + public boolean isAnimationEnabled() { + return suggestionPopup.isAnimationEnabled(); + } + + /** + * Check whether or not the suggestion list is hidden when there are no + * suggestions to display. + * + * @return true if hidden when empty, false if not + */ + public boolean isSuggestionListHiddenWhenEmpty() { + return hideWhenEmpty; + } + + /** + * Check whether or not the list of suggestions is being shown. + * + * @return true if the suggestions are visible, false if not + */ + public boolean isSuggestionListShowing() { + return suggestionPopup.isShowing(); + } + + /* + * (non-Javadoc) + * + * @see com.google.gwt.user.client.ui.HasAnimation#setAnimationEnabled( + * boolean) + */ + public void setAnimationEnabled(boolean enable) { + suggestionPopup.setAnimationEnabled(enable); + } + + /** + * Sets the style name of the suggestion popup. + * + * @param style + * the new primary style name + * @see UIObject#setStyleName(String) + */ + public void setPopupStyleName(String style) { + suggestionPopup.setStyleName(style); + } + + /** + * Sets the UI object where the suggestion display should appear next + * to. + * + * @param uiObject + * the uiObject used for positioning, or null to position + * relative to the suggest box + */ + public void setPositionRelativeTo(UIObject uiObject) { + positionRelativeTo = uiObject; + } + + /** + * Set whether or not the suggestion list should be hidden when there + * are no suggestions to display. Defaults to true. + * + * @param hideWhenEmpty + * true to hide when empty, false not to + */ + public void setSuggestionListHiddenWhenEmpty(boolean hideWhenEmpty) { + this.hideWhenEmpty = hideWhenEmpty; + } + + /** + * Create the PopupPanel that will hold the list of suggestions. + * + * @return the popup panel + */ + protected PopupPanel createPopup() { + PopupPanel p = new DecoratedPopupPanel(true, false) { + @Override + protected void onAttach() { + // Move the overlay to the appropriate overlay container + getOverlayContainer().appendChild(getElement()); + + addStyleName(oSuggestBox.getStyleName()); + + super.onAttach(); + } + }; + p.setStyleName("o-SuggestBoxPopup"); + p.setPreviewingAllNativeEvents(true); + p.setAnimationType(AnimationType.ROLL_DOWN); + p.setAutoHideEnabled(true); + return p; + } + + /** + * Wrap the list of suggestions before adding it to the popup. You can + * override this method if you want to wrap the suggestion list in a + * decorator. + * + * @param suggestionList + * the widget that contains the list of suggestions + * @return the suggestList, optionally inside of a wrapper + */ + protected Widget decorateSuggestionList(Widget suggestionList) { + return suggestionList; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.osbp.vaadin.addons.suggesttext.client.OSuggestBox. + * SuggestionDisplay#getCurrentSelection() + */ + @Override + protected Suggestion getCurrentSelection() { + if (!isSuggestionListShowing()) { + return null; + } + MenuItem item = suggestionMenu.getSelectedItem(); + return item == null ? null : ((SuggestionMenuItem) item).getSuggestion(); + } + + /** + * Get the {@link PopupPanel} used to display suggestions. + * + * @return the popup panel + */ + protected PopupPanel getPopupPanel() { + return suggestionPopup; + } + + /** + * Get the {@link MenuBar} used to display suggestions. + * + * @return the suggestions menu + */ + protected MenuBar getSuggestionMenu() { + return suggestionMenu; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.osbp.vaadin.addons.suggesttext.client.OSuggestBox. + * SuggestionDisplay#moveSelectionDown() + */ + @Override + protected void moveSelectionDown() { + // Make sure that the menu is actually showing. These keystrokes + // are only relevant when choosing a suggestion. + if (isSuggestionListShowing()) { + // If nothing is selected, getSelectedItemIndex will return -1 + // and we + // will select index 0 (the first item) by default. + suggestionMenu.selectItem(suggestionMenu.getSelectedItemIndex() + 1); + } + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.osbp.vaadin.addons.suggesttext.client.OSuggestBox. + * SuggestionDisplay#moveSelectionUp() + */ + @Override + protected void moveSelectionUp() { + // Make sure that the menu is actually showing. These keystrokes + // are only relevant when choosing a suggestion. + if (isSuggestionListShowing()) { + // if nothing is selected, then we should select the last + // suggestion by + // default. This is because, in some cases, the suggestions menu + // will + // appear above the text box rather than below it (for example, + // if the + // text box is at the bottom of the window and the suggestions + // will not + // fit below the text box). In this case, users would expect to + // be able + // to use the up arrow to navigate to the suggestions. + if (suggestionMenu.getSelectedItemIndex() == -1) { + suggestionMenu.selectItem(suggestionMenu.getNumItems() - 1); + } else { + suggestionMenu.selectItem(suggestionMenu.getSelectedItemIndex() - 1); + } + } + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.osbp.vaadin.addons.suggesttext.client.OSuggestBox. + * SuggestionDisplay#showSuggestions(org.eclipse.osbp.vaadin.addons. + * suggesttext.client.OSuggestBox, java.util.Collection, boolean, + * boolean, + * org.eclipse.osbp.vaadin.addons.suggesttext.client.OSuggestBox. + * SuggestionCallback) + */ + @Override + protected void showSuggestions(final OSuggestBox suggestBox, Collection<? extends Suggestion> suggestions, + boolean isDisplayStringHTML, boolean isAutoSelectEnabled, final SuggestionCallback callback) { + // Hide the popup if there are no suggestions to display. + boolean anySuggestions = (suggestions != null && suggestions.size() > 0); + if (!anySuggestions && hideWhenEmpty) { + hideSuggestions(); + return; + } + + // Hide the popup before we manipulate the menu within it. If we do + // not + // do this, some browsers will redraw the popup as items are removed + // and added to the menu. + if (suggestionPopup.isAttached()) { + suggestionPopup.hide(); + } + + suggestionMenu.clearItems(); + + for (final Suggestion curSuggestion : suggestions) { + final SuggestionMenuItem menuItem = new SuggestionMenuItem(curSuggestion); + menuItem.setScheduledCommand(new ScheduledCommand() { + public void execute() { + callback.onSuggestionSelected(curSuggestion); + } + }); + + suggestionMenu.addItem(menuItem); + } + + if (isAutoSelectEnabled && anySuggestions) { + // Select the first item in the suggestion menu. + suggestionMenu.selectItem(0); + } + + // Link the popup autoHide to the TextBox. + if (lastSuggestBox != suggestBox) { + // If the suggest box has changed, free the old one first. + if (lastSuggestBox != null) { + suggestionPopup.removeAutoHidePartner(lastSuggestBox.getElement()); + } + lastSuggestBox = suggestBox; + suggestionPopup.addAutoHidePartner(suggestBox.getElement()); + } + + // Show the popup under the TextBox. + suggestionPopup.showRelativeTo(positionRelativeTo != null ? positionRelativeTo : suggestBox); + } + + @Override + protected void setAutoHide(boolean autoHide) { + suggestionPopup.setAutoHideEnabled(autoHide); + } + + @Override + protected void setOwner(OSuggestBox oSuggestBox) { + this.oSuggestBox = oSuggestBox; + } + + /** + * Gets the 'overlay container' element. Tries to find the current + * {@link ApplicationConnection} using + * {@link #getApplicationConnection()}. + * + * @return the overlay container element for the current + * {@link ApplicationConnection} or another element if the + * current {@link ApplicationConnection} cannot be determined. + */ + public Element getOverlayContainer() { + ApplicationConnection ac = getApplicationConnection(); + if (ac == null) { + // could not figure out which one we belong to, styling will + // probably fail + Logger.getLogger(getClass().getSimpleName()).log(Level.WARNING, + "Could not determine ApplicationConnection for Overlay. Overlay will be attached directly to the root panel"); + return RootPanel.get().getElement(); + } else { + return getOverlayContainer(ac); + } + } + + /** + * Get the {@link ApplicationConnection} that this overlay belongs to. + * + * @return + */ + protected ApplicationConnection getApplicationConnection() { + ComponentConnector c = Util.findConnectorFor(oSuggestBox); + if (c != null) { + return c.getConnection(); + } + return null; + } + + /** + * Gets the 'overlay container' element pertaining to the given + * {@link ApplicationConnection}. Each overlay should be created in a + * overlay container element, so that the correct theme and styles can + * be applied. + * + * @param ac + * A reference to {@link ApplicationConnection} + * @return The overlay container + */ + @SuppressWarnings("deprecation") + public Element getOverlayContainer(ApplicationConnection ac) { + String id = ac.getConfiguration().getRootPanelId(); + id = id += "-overlays"; + Element container = DOM.getElementById(id); + if (container == null) { + container = DOM.createDiv(); + container.setId(id); + String styles = ac.getUIConnector().getWidget().getParent().getStyleName(); + if (styles != null && !styles.equals("")) { + container.addClassName(styles); + } + container.addClassName(VOverlay.CLASSNAME_CONTAINER); + RootPanel.get().getElement().appendChild(container); + } + return DOM.asOld(container); + } + + @Override + protected boolean isShowing() { + return suggestionPopup.isShowing(); + } + } + + /** + * The SuggestionMenu class is used for the display and selection of + * suggestions in the XSuggestBox widget. SuggestionMenu differs from + * MenuBar in that it always has a vertical orientation, and it has no + * submenus. It also allows for programmatic selection of items in the menu, + * and programmatically performing the action associated with the selected + * item. In the MenuBar class, items cannot be selected programatically - + * they can only be selected when the user places the mouse over a particlar + * item. Additional methods in SuggestionMenu provide information about the + * number of items in the menu, and the index of the currently selected + * item. + */ + private static class SuggestionMenu extends MenuBar { + + /** + * Instantiates a new suggestion menu. + * + * @param vertical + * the vertical + */ + public SuggestionMenu(boolean vertical) { + super(vertical); + // Make sure that CSS styles specified for the default Menu classes + // do not affect this menu + setStyleName(""); + setFocusOnHoverEnabled(false); + } + + /** + * Gets the num items. + * + * @return the num items + */ + public int getNumItems() { + return getItems().size(); + } + + /** + * Returns the index of the menu item that is currently selected. + * + * @return returns the selected item + */ + public int getSelectedItemIndex() { + // The index of the currently selected item can only be + // obtained if the menu is showing. + MenuItem selectedItem = getSelectedItem(); + if (selectedItem != null) { + return getItems().indexOf(selectedItem); + } + return -1; + } + + /** + * Selects the item at the specified index in the menu. Selecting the + * item does not perform the item's associated action; it only changes + * the style of the item and updates the value of + * SuggestionMenu.selectedItem. + * + * @param index + * index + */ + public void selectItem(int index) { + List<MenuItem> items = getItems(); + if (index > -1 && index < items.size()) { + selectItem(items.get(index)); + } + } + + /* + * (non-Javadoc) + * + * @see com.google.gwt.user.client.ui.MenuBar#getSelectedItem() + */ + @Override + protected MenuItem getSelectedItem() { + return super.getSelectedItem(); + } + } + + /** + * Class for menu items in a SuggestionMenu. A SuggestionMenuItem differs + * from a MenuItem in that each item is backed by a Suggestion object. The + * text of each menu item is derived from the display string of a Suggestion + * object, and each item stores a reference to its Suggestion object. + */ + private static class SuggestionMenuItem extends MenuItem { + + /** The Constant STYLENAME_DEFAULT. */ + private static final String STYLENAME_DEFAULT = "item"; + + /** The suggestion. */ + private Suggestion suggestion; + + /** + * Instantiates a new suggestion menu item. + * + * @param suggestion + * the suggestion + */ + public SuggestionMenuItem(Suggestion suggestion) { + super(suggestion.getDisplayString(), (SuggestionMenu) null); + // Each suggestion should be placed in a single row in the + // suggestion + // menu. If the window is resized and the suggestion cannot fit on a + // single row, it should be clipped (instead of wrapping around and + // taking up a second row). + getElement().getStyle().setProperty("whiteSpace", "nowrap"); + setStyleName(STYLENAME_DEFAULT); + setSuggestion(suggestion); + } + + /** + * Gets the suggestion. + * + * @return the suggestion + */ + public Suggestion getSuggestion() { + return suggestion; + } + + /** + * Sets the suggestion. + * + * @param suggestion + * the new suggestion + */ + public void setSuggestion(Suggestion suggestion) { + this.suggestion = suggestion; + } + } + + /** The Constant STYLENAME_DEFAULT. */ + private static final String STYLENAME_DEFAULT = "o-XSuggestBox"; + + /** The limit. */ + private int limit = 20; + + /** The selects first item. */ + private boolean selectsFirstItem = true; + + /** The oracle. */ + private SuggestOracle oracle; + + /** The current text. */ + private String currentText; + + /** The editor. */ + private LeafValueEditor<String> editor; + + /** The display. */ + private final SuggestionDisplay display; + + /** The box. */ + private ValueBoxBase<String> box; + + /** The callback. */ + private final Callback callback = new Callback() { + public void onSuggestionsReady(Request request, Response response) { + // If disabled while request was in-flight, drop it + if (!isEnabled()) { + return; + } + display.setMoreSuggestions(response.hasMoreSuggestions(), response.getMoreSuggestionsCount()); + display.showSuggestions(OSuggestBox.this, response.getSuggestions(), oracle.isDisplayStringHTML(), + isAutoSelectEnabled(), suggestionCallback); + } + }; + + /** The suggestion callback. */ + private final SuggestionCallback suggestionCallback = new SuggestionCallback() { + public void onSuggestionSelected(Suggestion suggestion) { + box.setFocus(true); + setNewSelection(suggestion); + } + }; + + private int openPopupKey; + + private int openPopupModifier; + + /** + * Constructor for {@link OSuggestBox}. The text box will be removed from + * it's current location and wrapped by the {@link OSuggestBox}. + * + * @param oracle + * supplies suggestions based upon the current contents of the + * text widget + */ + public OSuggestBox(SuggestOracle oracle) { + this(oracle, new DefaultSuggestionDisplay()); + } + + /** + * Constructor for {@link OSuggestBox}. The text box will be removed from + * it's current location and wrapped by the {@link OSuggestBox}. + * + * @param oracle + * supplies suggestions based upon the current contents of the + * text widget + * @param suggestDisplay + * the class used to display suggestions + */ + public OSuggestBox(SuggestOracle oracle, SuggestionDisplay suggestDisplay) { + this.display = suggestDisplay; + this.display.setOwner(this); + + setOracle(oracle); + + ((ODelegatingOracle) getSuggestOracle()).setSuggestBox(this); + } + + /** + * Sets the popup delay. + * + * @param popupDelay + * the new popup delay + */ + public void setPopupDelay(int popupDelay) { + ((ODelegatingOracle) getSuggestOracle()).setPopupDelay(popupDelay); + } + + /** + * Sets the single suggestion and close popup. + * + * @param selectedSuggestion + * the new single suggestion and close popup + */ + public void setSingleSuggestionAndClosePopup(Suggestion selectedSuggestion) { + assert selectedSuggestion != null : "suggestion cannot be null"; + String currentText = selectedSuggestion.getReplacementString(); + setText(currentText); + ((DefaultSuggestionDisplay) getSuggestionDisplay()).hideSuggestions(); + SelectionEvent.fire(this, selectedSuggestion); + } + + /** + * Initialize. + * + * @param box + * the box + */ + public void initialize(ValueBoxBase<String> box) { + assert this.box == null : "box must not be set twice"; + this.box = box; + + setWidget(box); + addEventsToTextBox(); + + setStyleName(STYLENAME_DEFAULT); + } + + /* + * (non-Javadoc) + * + * @see + * com.google.gwt.event.dom.client.HasKeyDownHandlers#addKeyDownHandler(com. + * google.gwt.event.dom.client.KeyDownHandler) + */ + public HandlerRegistration addKeyDownHandler(KeyDownHandler handler) { + return addDomHandler(handler, KeyDownEvent.getType()); + } + + /* + * (non-Javadoc) + * + * @see + * com.google.gwt.event.dom.client.HasKeyPressHandlers#addKeyPressHandler( + * com.google.gwt.event.dom.client.KeyPressHandler) + */ + public HandlerRegistration addKeyPressHandler(KeyPressHandler handler) { + return addDomHandler(handler, KeyPressEvent.getType()); + } + + /* + * (non-Javadoc) + * + * @see + * com.google.gwt.event.dom.client.HasKeyUpHandlers#addKeyUpHandler(com. + * google.gwt.event.dom.client.KeyUpHandler) + */ + public HandlerRegistration addKeyUpHandler(KeyUpHandler handler) { + return addDomHandler(handler, KeyUpEvent.getType()); + } + + /* + * (non-Javadoc) + * + * @see com.google.gwt.event.logical.shared.HasSelectionHandlers# + * addSelectionHandler(com.google.gwt.event.logical.shared.SelectionHandler) + */ + public HandlerRegistration addSelectionHandler(SelectionHandler<Suggestion> handler) { + return addHandler(handler, SelectionEvent.getType()); + } + + /* + * (non-Javadoc) + * + * @see com.google.gwt.event.logical.shared.HasValueChangeHandlers# + * addValueChangeHandler(com.google.gwt.event.logical.shared. + * ValueChangeHandler) + */ + public HandlerRegistration addValueChangeHandler(ValueChangeHandler<String> handler) { + return addHandler(handler, ValueChangeEvent.getType()); + } + + /** + * Returns a {@link TakesValueEditor} backed by the XSuggestBox. + * + * @return the leaf value editor + */ + public LeafValueEditor<String> asEditor() { + if (editor == null) { + editor = TakesValueEditor.of(this); + } + return editor; + } + + /** + * Gets the limit for the number of suggestions that should be displayed for + * this box. It is up to the current {@link SuggestOracle} to enforce this + * limit. + * + * @return the limit for the number of suggestions + */ + public int getLimit() { + return limit; + } + + /** + * Get the {@link SuggestionDisplay} used to display suggestions. + * + * @return the {@link SuggestionDisplay} + */ + public SuggestionDisplay getSuggestionDisplay() { + return display; + } + + /** + * Gets the suggest box's + * {@link com.google.gwt.user.client.ui.SuggestOracle}. + * + * @return the {@link SuggestOracle} + */ + public SuggestOracle getSuggestOracle() { + return oracle; + } + + /* + * (non-Javadoc) + * + * @see com.google.gwt.user.client.ui.Focusable#getTabIndex() + */ + public int getTabIndex() { + return box.getTabIndex(); + } + + /* + * (non-Javadoc) + * + * @see com.google.gwt.user.client.ui.HasText#getText() + */ + public String getText() { + return box.getText(); + } + + /* + * (non-Javadoc) + * + * @see com.google.gwt.user.client.ui.HasValue#getValue() + */ + public String getValue() { + return box.getValue(); + } + + /** + * Get the ValueBoxBase associated with this suggest box. + * + * @return this suggest box's value box + */ + public ValueBoxBase<String> getValueBox() { + return box; + } + + /** + * Returns whether or not the first suggestion will be automatically + * selected. This behavior is on by default. + * + * @return true if the first suggestion will be automatically selected + */ + public boolean isAutoSelectEnabled() { + return selectsFirstItem; + } + + /** + * Gets whether this widget is enabled. + * + * @return <code>true</code> if the widget is enabled + */ + public boolean isEnabled() { + return box.isEnabled(); + } + + /** + * Refreshes the current list of suggestions. + */ + public void refreshSuggestionList() { + if (isAttached()) { + refreshSuggestions(); + } + } + + /* + * (non-Javadoc) + * + * @see com.google.gwt.user.client.ui.Focusable#setAccessKey(char) + */ + public void setAccessKey(char key) { + box.setAccessKey(key); + } + + /** + * Turns on or off the behavior that automatically selects the first + * suggested item. This behavior is on by default. + * + * @param selectsFirstItem + * Whether or not to automatically select the first suggestion + */ + public void setAutoSelectEnabled(boolean selectsFirstItem) { + this.selectsFirstItem = selectsFirstItem; + } + + /** + * Opens the popup and shows the suggestions. + */ + public void openPopup() { + showSuggestionList(); + } + + /** + * Closes the popup. + */ + public void closePopup() { + display.hideSuggestions(); + } + + /** + * Navigates the selected suggestion to the next one available. + */ + public void navigateToNext() { + display.moveSelectionDown(); + } + + /** + * Navigates the selected suggestion to the previous one available. + */ + public void navigateToPrevious() { + display.moveSelectionUp(); + } + + public void selectCurrent() { + acceptSuggestion(); + } + + /** + * If true, then the popup hides if the user clicks outside the popup. + * + * @param autoHide + */ + public void setAutoHide(boolean autoHide) { + display.setAutoHide(autoHide); + } + + /** + * Sets whether this widget is enabled. + * + * @param enabled + * <code>true</code> to enable the widget, <code>false</code> to + * disable it + */ + public void setEnabled(boolean enabled) { + box.setEnabled(enabled); + if (!enabled) { + display.hideSuggestions(); + } + } + + /* + * (non-Javadoc) + * + * @see com.google.gwt.user.client.ui.Focusable#setFocus(boolean) + */ + public void setFocus(boolean focused) { + box.setFocus(focused); + } + + /** + * Sets the limit to the number of suggestions the oracle should provide. It + * is up to the oracle to enforce this limit. + * + * @param limit + * the limit to the number of suggestions provided + */ + public void setLimit(int limit) { + this.limit = limit; + } + + /** + * Sets the key which need to be pressed to open the popup.<br> + * See {@link ShortcutAction.KeyCode} + * + * @param key + * the new key + */ + public void setOpenPopupKey(int key) { + openPopupKey = key; + } + + /** + * Sets the key modifier which need to be pressed to open the popup.<br> + * See {@link ShortcutAction.ModifierKey} + * + * @param modifier + * the new modifier + */ + public void setOpenPopupKeyModifier(int modifier) { + openPopupModifier = modifier; + } + + /* + * (non-Javadoc) + * + * @see com.google.gwt.user.client.ui.Focusable#setTabIndex(int) + */ + public void setTabIndex(int index) { + box.setTabIndex(index); + } + + /* + * (non-Javadoc) + * + * @see com.google.gwt.user.client.ui.HasText#setText(java.lang.String) + */ + public void setText(String text) { + box.setText(text); + } + + /* + * (non-Javadoc) + * + * @see com.google.gwt.user.client.ui.HasValue#setValue(java.lang.Object) + */ + public void setValue(String newValue) { + box.setValue(newValue); + } + + /* + * (non-Javadoc) + * + * @see com.google.gwt.user.client.ui.HasValue#setValue(java.lang.Object, + * boolean) + */ + public void setValue(String value, boolean fireEvents) { + box.setValue(value, fireEvents); + } + + /** + * Show the current list of suggestions. + */ + public void showSuggestionList() { + if (isAttached()) { + currentText = null; + refreshSuggestions(); + } + } + + /* + * (non-Javadoc) + * + * @see + * com.google.gwt.user.client.ui.UIObject#onEnsureDebugId(java.lang.String) + */ + @Override + protected void onEnsureDebugId(String baseID) { + super.onEnsureDebugId(baseID); + display.onEnsureDebugId(baseID); + } + + /** + * Show suggestions. + * + * @param query + * the query + */ + void showSuggestions(String query) { + if (query.length() == 0) { + oracle.requestDefaultSuggestions(new Request(null, limit), callback); + } else { + oracle.requestSuggestions(new Request(query, limit), callback); + } + } + + protected void acceptSuggestion() { + Suggestion suggestion = display.getCurrentSelection(); + if (suggestion == null) { + display.hideSuggestions(); + } else { + setNewSelection(suggestion); + } + } + + /** + * Adds the events to text box. + */ + private void addEventsToTextBox() { + class TextBoxEvents implements KeyDownHandler, KeyUpHandler, ValueChangeHandler<String> { + + public void onKeyDown(KeyDownEvent event) { + if (event.isAnyModifierKeyDown()) { + if (isOpenPopupKey(event) && isOpenPopupModifier(event)) { + if (!display.isShowing()) { + showSuggestionList(); + } + } + } else { + switch (event.getNativeKeyCode()) { + case KeyCodes.KEY_DOWN: + if (display.isShowing()) { + display.moveSelectionDown(); + } + break; + case KeyCodes.KEY_UP: + if (display.isShowing()) { + display.moveSelectionUp(); + } + break; + case KeyCodes.KEY_ESCAPE: + if (display.isShowing()) { + display.hideSuggestions(); + } + break; + case KeyCodes.KEY_ENTER: + case KeyCodes.KEY_TAB: + if (display.isShowing()) { + acceptSuggestion(); + } + break; + } + } + } + + public void onKeyUp(KeyUpEvent event) { + if (!event.isAnyModifierKeyDown()) { + // After every user key input, refresh the popup's + // suggestions. + refreshSuggestions(); + } + } + + public void onValueChange(ValueChangeEvent<String> event) { + delegateEvent(OSuggestBox.this, event); + } + } + + TextBoxEvents events = new TextBoxEvents(); + box.addKeyDownHandler(events); + box.addKeyUpHandler(events); + box.addValueChangeHandler(events); + } + + public boolean isOpenPopupKey(KeyDownEvent event) { + return event.getNativeEvent().getKeyCode() == openPopupKey; + } + + public boolean isOpenPopupModifier(KeyDownEvent event) { + switch (openPopupModifier) { + case KeyCodes.KEY_ALT: + return event.isAltKeyDown(); + case KeyCodes.KEY_CTRL: + return event.isControlKeyDown(); + } + return false; + } + + /** + * Fire suggestion event. + * + * @param selectedSuggestion + * the selected suggestion + */ + private void fireSuggestionEvent(Suggestion selectedSuggestion) { + SelectionEvent.fire(this, selectedSuggestion); + } + + /** + * Refresh suggestions. + */ + private void refreshSuggestions() { + // Get the raw text. + String text = getText(); + if (text.equals(currentText)) { + return; + } else { + currentText = text; + } + showSuggestions(text); + } + + /** + * Set the new suggestion in the text box. + * + * @param curSuggestion + * the new suggestion + */ + private void setNewSelection(Suggestion curSuggestion) { + assert curSuggestion != null : "suggestion cannot be null"; + currentText = curSuggestion.getReplacementString(); + setText(currentText); + display.hideSuggestions(); + fireSuggestionEvent(curSuggestion); + } + + /** + * Sets the suggestion oracle used to create suggestions. + * + * @param oracle + * the oracle + */ + private void setOracle(SuggestOracle oracle) { + this.oracle = oracle; + } + + /** + * Sets the suggestion enabled. + * + * @param suggestionEnabled + * the new suggestion enabled + */ + public void setSuggestionEnabled(boolean suggestionEnabled) { + ((ODelegatingOracle) oracle).setSuggestionEnabled(suggestionEnabled); + } + +}
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/OSuggestion.java b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/OSuggestion.java new file mode 100644 index 0000000..b289dc2 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/OSuggestion.java
@@ -0,0 +1,77 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.suggesttext.client; + +import org.eclipse.osbp.vaadin.addons.suggesttext.client.OQueryDelegate.SuggestionResult; + +import com.google.gwt.user.client.ui.SuggestOracle.Suggestion; + +// TODO: Auto-generated Javadoc +/** + * Suggestion returned from the server. + */ +public class OSuggestion implements Suggestion { + + /** The uuid. */ + private final String uuid; + + /** The display string. */ + private final String displayString; + + /** + * Instantiates a new o suggestion. + * + * @param result the result + */ + public OSuggestion(SuggestionResult result) { + this(result.uuid, result.displayText); + } + + /** + * Instantiates a new o suggestion. + * + * @param uuid the uuid + * @param displayString the display string + */ + public OSuggestion(String uuid, String displayString) { + super(); + this.uuid = uuid; + this.displayString = displayString; + } + + /* (non-Javadoc) + * @see com.google.gwt.user.client.ui.SuggestOracle.Suggestion#getDisplayString() + */ + @Override + public String getDisplayString() { + return displayString; + } + + /* (non-Javadoc) + * @see com.google.gwt.user.client.ui.SuggestOracle.Suggestion#getReplacementString() + */ + @Override + public String getReplacementString() { + return displayString; + } + + /** + * An unique id which identifies the suggestion. + * + * @return the uuid + */ + public String getUuid() { + return uuid; + } + +}
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/SuggestTextFieldClientRpc.java b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/SuggestTextFieldClientRpc.java new file mode 100644 index 0000000..8184a19 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/SuggestTextFieldClientRpc.java
@@ -0,0 +1,63 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.suggesttext.client; + +import java.util.List; + +import org.eclipse.osbp.vaadin.addons.suggesttext.client.OQueryDelegate.SuggestionResult; + +import com.vaadin.shared.communication.ClientRpc; + +// TODO: Auto-generated Javadoc +/** + * The Interface SuggestTextFieldClientRpc. + */ +public interface SuggestTextFieldClientRpc extends ClientRpc { + + /** + * Response from the server with suggestions. Request and response are + * linked by the handleId. + * + * @param handleId + * the handle id + * @param response + * the response + */ + public void respond(String handleId, List<SuggestionResult> response); + + /** + * Opens the popup if not already opened and shows the suggested values. + */ + public void openPopup(); + + /** + * Closes the popup if open. Else it has no effect. + */ + public void closePopup(); + + /** + * Navigates the selected suggestion to the next one available. + */ + public void navigateToNext(); + + /** + * Navigates the selected suggestion to the previous one available. + */ + public void navigateToPrevious(); + + /** + * Selects the current suggestion. + */ + public void selectCurrent(); + +}
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/SuggestTextFieldConnector.java b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/SuggestTextFieldConnector.java new file mode 100644 index 0000000..1116584 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/SuggestTextFieldConnector.java
@@ -0,0 +1,151 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.suggesttext.client; + +import java.util.List; + +import org.eclipse.osbp.vaadin.addons.suggesttext.SuggestTextField; +import org.eclipse.osbp.vaadin.addons.suggesttext.client.OQueryDelegate.SuggestionResult; + +import com.google.gwt.event.logical.shared.SelectionEvent; +import com.google.gwt.event.logical.shared.SelectionHandler; +import com.google.gwt.user.client.ui.SuggestOracle.Suggestion; +import com.google.gwt.user.client.ui.ValueBoxBase; +import com.vaadin.client.ComponentConnector; +import com.vaadin.client.ConnectorHierarchyChangeEvent; +import com.vaadin.client.communication.RpcProxy; +import com.vaadin.client.communication.StateChangeEvent; +import com.vaadin.client.ui.AbstractSingleComponentContainerConnector; +import com.vaadin.shared.ui.Connect; + +// TODO: Auto-generated Javadoc +/** + * The Class SuggestTextFieldConnector. + */ +@SuppressWarnings("serial") +@Connect(SuggestTextField.class) +public class SuggestTextFieldConnector extends AbstractSingleComponentContainerConnector + implements SelectionHandler<Suggestion> { + + /** The rpc. */ + private SuggestTextFieldServerRpc rpc = RpcProxy.create(SuggestTextFieldServerRpc.class, this); + + /** The query delegate. */ + private OQueryDelegate queryDelegate; + + /** + * Instantiates a new suggest text field connector. + */ + public SuggestTextFieldConnector() { + registerRpc(SuggestTextFieldClientRpc.class, new SuggestTextFieldClientRpc() { + @Override + public void respond(String handle, List<SuggestionResult> response) { + queryDelegate.respond(handle, response); + } + + @Override + public void openPopup() { + getWidget().openPopup(); + } + + @Override + public void closePopup() { + getWidget().closePopup(); + } + + @Override + public void navigateToNext() { + getWidget().navigateToNext(); + } + + @Override + public void navigateToPrevious() { + getWidget().navigateToPrevious(); + } + + @Override + public void selectCurrent() { + getWidget().selectCurrent(); + } + }); + } + + /* (non-Javadoc) + * @see com.vaadin.client.ui.AbstractComponentConnector#getWidget() + */ + @Override + public OSuggestBox getWidget() { + return (OSuggestBox) super.getWidget(); + } + + /* (non-Javadoc) + * @see com.vaadin.client.ui.AbstractComponentConnector#createWidget() + */ + public OSuggestBox createWidget() { + queryDelegate = new OQueryDelegate(rpc); + OSuggestBox widget = new OSuggestBox(new ODelegatingOracle(queryDelegate)); + widget.addSelectionHandler(this); + return widget; + } + + /* (non-Javadoc) + * @see com.vaadin.client.ui.AbstractComponentConnector#getState() + */ + @Override + public SuggestTextFieldState getState() { + return (SuggestTextFieldState) super.getState(); + } + + /* (non-Javadoc) + * @see com.vaadin.client.ui.AbstractComponentConnector#onStateChanged(com.vaadin.client.communication.StateChangeEvent) + */ + @Override + public void onStateChanged(StateChangeEvent stateChangeEvent) { + super.onStateChanged(stateChangeEvent); + + getWidget().setLimit(getState().limit); + getWidget().setPopupDelay(getState().popupDelay); + getWidget().setSuggestionEnabled(getState().suggestionEnabled); + getWidget().setAutoHide(getState().autoHide); + getWidget().setOpenPopupKey(getState().openPopup_key); + getWidget().setOpenPopupKeyModifier(getState().openPopup_modifier); + } + + /* (non-Javadoc) + * @see com.google.gwt.event.logical.shared.SelectionHandler#onSelection(com.google.gwt.event.logical.shared.SelectionEvent) + */ + @Override + public void onSelection(SelectionEvent<Suggestion> event) { + OSuggestion suggestion = (OSuggestion) event.getSelectedItem(); + if (suggestion != null) { + rpc.selectionChanged(suggestion.getUuid()); + } + } + + /* (non-Javadoc) + * @see com.vaadin.client.HasComponentsConnector#updateCaption(com.vaadin.client.ComponentConnector) + */ + @Override + public void updateCaption(ComponentConnector connector) { + + } + + /* (non-Javadoc) + * @see com.vaadin.client.ConnectorHierarchyChangeEvent.ConnectorHierarchyChangeHandler#onConnectorHierarchyChange(com.vaadin.client.ConnectorHierarchyChangeEvent) + */ + @SuppressWarnings("unchecked") + @Override + public void onConnectorHierarchyChange(ConnectorHierarchyChangeEvent connectorHierarchyChangeEvent) { + getWidget().initialize((ValueBoxBase<String>) getContent().getWidget()); + } +}
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/SuggestTextFieldServerRpc.java b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/SuggestTextFieldServerRpc.java new file mode 100644 index 0000000..c2ebc8e --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/SuggestTextFieldServerRpc.java
@@ -0,0 +1,40 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.suggesttext.client; + +import com.vaadin.shared.communication.ServerRpc; + +// TODO: Auto-generated Javadoc +/** + * The Interface SuggestTextFieldServerRpc. + */ +public interface SuggestTextFieldServerRpc extends ServerRpc { + + /** + * Requests a response with suggestions from the server. + * + * @param handleId + * a unique id for every request to link request/response. + * @param filter the filter string. + * @param limit the maximum number of suggestions to be contained in the response. + */ + public void requestSuggestions(String handleId, String filter, int limit); + + /** + * The suggestion with the given id was selected. + * + * @param uuid the uuid + */ + public void selectionChanged(String uuid); + +}
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/SuggestTextFieldState.java b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/SuggestTextFieldState.java new file mode 100644 index 0000000..2bc82bc --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/client/SuggestTextFieldState.java
@@ -0,0 +1,55 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.suggesttext.client; + +import com.vaadin.event.ShortcutAction; +import com.vaadin.shared.AbstractComponentState; + +/** + * The Class SuggestTextFieldState. + */ +@SuppressWarnings("serial") +public class SuggestTextFieldState extends AbstractComponentState { + + /** + * The popup delay in milliseconds. + */ + public int popupDelay = 450; + + /** + * How many suggestions should be displayed. + */ + public int limit = 10; + + /** + * True, if suggestions should be enabled. False otherwise. + */ + public boolean suggestionEnabled = true; + + /** + * If true, then the suggestions are hidden, if the user clicks outside the + * popup. + */ + public boolean autoHide = true; + + /** + * Key to open the popup in combination with the {@link #openPopup_modifier} + */ + public int openPopup_key = ShortcutAction.KeyCode.ARROW_DOWN; + + /** + * Key modifier to open the popup in combination with the + * {@link #openPopup_key} + */ + public int openPopup_modifier = ShortcutAction.ModifierKey.ALT; +}
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/public/suggesttext/styles.css b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/public/suggesttext/styles.css new file mode 100644 index 0000000..74d032f --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/src/org/eclipse/osbp/vaadin/addons/suggesttext/public/suggesttext/styles.css
@@ -0,0 +1,18 @@ +.o-SuggestBoxPopup { + background-color: white; + color: darkgray; + + font-style: normal; + font-variant: normal; + font-weight: 300; + font-stretch: normal; + font-size: 16px; + line-height: 1.55; + font-family: 'Open Sans', sans-serif; +} + +.o-SuggestBoxPopup .item-selected { + background-color: darkgray; + color: white; +} +
diff --git a/org.eclipse.osbp.vaadin.addons.suggesttext/test/org/eclipse/osbp/vaadin/addons/customcombo/CustomComboTest.java b/org.eclipse.osbp.vaadin.addons.suggesttext/test/org/eclipse/osbp/vaadin/addons/customcombo/CustomComboTest.java new file mode 100644 index 0000000..e5cae62 --- /dev/null +++ b/org.eclipse.osbp.vaadin.addons.suggesttext/test/org/eclipse/osbp/vaadin/addons/customcombo/CustomComboTest.java
@@ -0,0 +1,99 @@ +/** + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation + */ +package org.eclipse.osbp.vaadin.addons.customcombo; + +import com.vaadin.testbench.ScreenshotOnFailureRule; +import com.vaadin.testbench.TestBenchTestCase; +import com.vaadin.testbench.elements.ButtonElement; +import com.vaadin.testbench.elements.LabelElement; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.openqa.selenium.firefox.FirefoxDriver; + +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; + +/** + * This class contains JUnit tests, which are run using Vaadin TestBench 4. + * + * To run this, first get an evaluation license from + * https://vaadin.com/addon/vaadin-testbench and follow the instructions at + * https://vaadin.com/directory/help/installing-cval-license to install it. + * + * Once the license is installed, you can run this class as a JUnit test. + */ +public class CustomComboTest extends TestBenchTestCase { + @Rule + public ScreenshotOnFailureRule screenshotOnFailureRule = + new ScreenshotOnFailureRule(this, true); + + @Before + public void setUp() throws Exception { + setDriver(new FirefoxDriver()); // Firefox + + // To use Chrome, first install chromedriver.exe from + // http://chromedriver.storage.googleapis.com/index.html + // on your system path (e.g. C:\Windows\System32\) + // setDriver(new ChromeDriver()); // Chrome + + // To use Internet Explorer, first install iedriverserver.exe from + // http://selenium-release.storage.googleapis.com/index.html?path=2.43/ + // on your system path (e.g. C:\Windows\System32\) + // setDriver(new InternetExplorerDriver()); // IE + + // To test headlessly (without a browser), first install phantomjs.exe + // from http://phantomjs.org/download.html on your system path + // (e.g. C:\Windows\System32\) + // setDriver(new PhantomJSDriver()); // PhantomJS headless browser + } + + /** + * Opens the URL where the application is deployed. + */ + private void openTestUrl() { + getDriver().get("http://localhost:8080/org.eclipse.osbp.vaadin.addons.customcombo"); + } + + @Test + public void testClickButton() throws Exception { + openTestUrl(); + + // At first there should be no labels + assertFalse($(LabelElement.class).exists()); + + // Click the button + ButtonElement clickMeButton = $(ButtonElement.class). + caption("Click Me").first(); + clickMeButton.click(); + + // There should now be one label + assertEquals(1, $(LabelElement.class).all().size()); + // ... with the specified text + assertEquals("Thank you for clicking", + $(LabelElement.class).first().getText()); + + // Click the button again + clickMeButton.click(); + + // There should now be two labels + List<LabelElement> allLabels = $(LabelElement.class).all(); + assertEquals(2, allLabels.size()); + // ... and the last label should have the correct text + LabelElement lastLabel = allLabels.get(1); + assertEquals("Thank you for clicking", lastLabel.getText()); + } +} \ No newline at end of file
diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..68fa3ae --- /dev/null +++ b/pom.xml
@@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * + * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.eclipse.osbp.releng.maven</groupId> + <artifactId>org.eclipse.osbp.releng.maven.parent.tycho</artifactId> + <version>0.9.0-SNAPSHOT</version> + <relativePath /> + </parent> + + <groupId>org.eclipse.osbp.vaadin.addons</groupId> + <artifactId>org.eclipse.osbp.vaadin.addons.aggregator</artifactId> + <version>0.9.0-SNAPSHOT</version> + <packaging>pom</packaging> + + <url>${osbp.site.repository.url}</url> + <scm> + <url>${osbp.scm.url}</url> + <connection>${osbp.scm.connection}</connection> + <developerConnection>${osbp.scm.connection.dev}</developerConnection> + <tag>HEAD</tag> + </scm> + + <properties> + <osbp.gitrepo.name>${project.groupId}</osbp.gitrepo.name> + </properties> + + <modules> + <module>org.eclipse.osbp.vaadin.addons.absolutelayout</module> + <module>org.eclipse.osbp.vaadin.addons.designer.overlay</module> + <module>org.eclipse.osbp.vaadin.addons.suggesttext</module> +<!-- <module>org.eclipse.osbp.vaadin.addons.feature</module> --> + </modules> + + <build> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.eclipse.tycho</groupId> + <artifactId>target-platform-configuration</artifactId> + <version>${tycho-version}</version> + <configuration> + <resolver>p2</resolver> + <pomDependencies>consider</pomDependencies> + <environments> + <environment> + <os>win32</os> + <ws>win32</ws> + <arch>x86_64</arch> + </environment> + <environment> + <os>linux</os> + <ws>gtk</ws> + <arch>x86</arch> + </environment> + <environment> + <os>linux</os> + <ws>gtk</ws> + <arch>x86_64</arch> + </environment> + <environment> + <os>macosx</os> + <ws>cocoa</ws> + <arch>x86_64</arch> + </environment> + </environments> + </configuration> + </plugin> + </plugins> + </pluginManagement> + </build> +</project>