1.1 --- a/README Tue Apr 28 14:43:44 2009 -0700
1.2 +++ b/README Wed Apr 29 00:27:46 2009 -0700
1.3 @@ -9,25 +9,35 @@
1.4 http://java.sun.com/javase/downloads/index.jsp
1.5 Set the environment variable ALT_BOOTDIR to the location of this JDK 6.
1.6
1.7 - 2. Download and install the Binary Plugs for the most recent JDK7 from
1.8 + 2. Download and install the JIBX libraries, version 1.1.5 from
1.9 + http://sourceforge.net/project/showfiles.php?group_id=69358&package_id=68290
1.10 + You'll need the following four JAR files:
1.11 + bcel.jar
1.12 + jibx-bind.jar
1.13 + jibx-run.jar
1.14 + xpp3.jar
1.15 + Set the environment variable ALT_JIBX_LIBS_PATH to the location of
1.16 + these JAR files.
1.17 +
1.18 + 3. Download and install the Binary Plugs for the most recent JDK7 from
1.19 http://download.java.net/openjdk/jdk7/
1.20 Set the environment variable ALT_BINARY_PLUGS_PATH to the location of
1.21 these binary plugs.
1.22
1.23 - 3. Either download and install the latest JDK7 from
1.24 + 4. Either download and install the latest JDK7 from
1.25 http://download.java.net/openjdk/jdk7/, or build your own complete
1.26 OpenJDK7 by using the top level Makefile in the OpenJDK Mercurial forest.
1.27 Set the environment variable ALT_JDK_IMPORT_PATH to the location of
1.28 this latest JDK7 or OpenJDK7 build.
1.29
1.30 - 4. Check the sanity of doing a build with the current machine:
1.31 + 5. Check the sanity of doing a build with the current machine:
1.32 cd make && gnumake sanity
1.33 See README-builds.html if you run into problems.
1.34
1.35 - 5. Do a partial build of the jdk:
1.36 + 6. Do a partial build of the jdk:
1.37 cd make && gnumake all
1.38
1.39 - 6. Construct the images:
1.40 + 7. Construct the images:
1.41 cd make && gnumake images
1.42 The resulting JDK image should be found in build/*/j2sdk-image
1.43
2.1 --- a/make/common/Sanity.gmk Tue Apr 28 14:43:44 2009 -0700
2.2 +++ b/make/common/Sanity.gmk Wed Apr 29 00:27:46 2009 -0700
2.3 @@ -92,7 +92,8 @@
2.4 sane-ld_run_path \
2.5 sane-alt_bootdir \
2.6 sane-bootdir \
2.7 - sane-alsa-headers
2.8 + sane-alsa-headers \
2.9 + sane-jibx
2.10
2.11 ifdef OPENJDK
2.12 sanity-all:: sane-freetype
3.1 --- a/make/common/shared/Defs.gmk Tue Apr 28 14:43:44 2009 -0700
3.2 +++ b/make/common/shared/Defs.gmk Wed Apr 29 00:27:46 2009 -0700
3.3 @@ -515,6 +515,15 @@
3.4 # NOTE: ISA_DIR is usually empty, on Solaris it might be /sparcv9 or /amd64
3.5 BINDIR = $(OUTPUTDIR)/bin$(ISA_DIR)
3.6
3.7 +# JIBX_LIBS_PATH: path to JIBX libraries, needed for NimbusLookAndFeel
3.8 +ifdef ALT_JIBX_LIBS_PATH
3.9 + JIBX_LIBS_PATH:=$(call FullPath,$(ALT_JIBX_LIBS_PATH))
3.10 + JIBX_LIBS_PATH:=$(call AltCheckSpaces,JIBX_LIBS_PATH)
3.11 + JIBX_LIBS_PATH:=$(call AltCheckValue,JIBX_LIBS_PATH)
3.12 +else
3.13 + JIBX_LIBS_PATH=$(JDK_DEVTOOLS_DIR)/share/jibx/lib
3.14 +endif
3.15 +
3.16 # MOZILLA_HEADERS_PATH: path to mozilla header files for plugin
3.17 ifdef ALT_MOZILLA_HEADERS_PATH
3.18 MOZILLA_HEADERS_PATH :=$(call FullPath,$(ALT_MOZILLA_HEADERS_PATH))
3.19 @@ -529,7 +538,7 @@
3.20 JDK_CUPS_HEADERS_PATH=$(JDK_DEVTOOLS_DIR)/share/cups/include
3.21 ifdef ALT_CUPS_HEADERS_PATH
3.22 CUPS_HEADERS_PATH:=$(call FullPath,$(ALT_CUPS_HEADERS_PATH))
3.23 - CUP_HEADERS_PATH:=$(call AltCheckValue,CUPS_HEADERS_PATH)
3.24 + CUPS_HEADERS_PATH:=$(call AltCheckValue,CUPS_HEADERS_PATH)
3.25 else
3.26 CUPS_HEADERS_PATH:= \
3.27 $(shell if [ -d "$(JDK_CUPS_HEADERS_PATH)" ]; then \
4.1 --- a/make/common/shared/Sanity-Settings.gmk Tue Apr 28 14:43:44 2009 -0700
4.2 +++ b/make/common/shared/Sanity-Settings.gmk Wed Apr 29 00:27:46 2009 -0700
4.3 @@ -233,6 +233,7 @@
4.4 endif
4.5 endif
4.6 ALL_SETTINGS+=$(call addAltSetting,CACERTS_FILE)
4.7 +ALL_SETTINGS+=$(call addAltSetting,JIBX_LIBS_PATH)
4.8 ifndef OPENJDK
4.9 ALL_SETTINGS+=$(call addAltSetting,MOZILLA_HEADERS_PATH)
4.10 endif
5.1 --- a/make/common/shared/Sanity.gmk Tue Apr 28 14:43:44 2009 -0700
5.2 +++ b/make/common/shared/Sanity.gmk Wed Apr 29 00:27:46 2009 -0700
5.3 @@ -213,6 +213,7 @@
5.4 sane-link \
5.5 sane-cacerts \
5.6 sane-alsa-headers \
5.7 + sane-jibx \
5.8 sane-ant_version \
5.9 sane-zip_version \
5.10 sane-unzip_version \
5.11 @@ -1498,6 +1499,18 @@
5.12
5.13
5.14 ######################################################
5.15 +# JIBX_LIBS_PATH must be valid
5.16 +######################################################
5.17 +sane-jibx:
5.18 + @if [ ! -r $(subst \,/,$(JIBX_LIBS_PATH))/jibx-run.jar ]; then \
5.19 + $(ECHO) "ERROR: You do not have access to valid JIBX library files. \n" \
5.20 + " Please check your access to \n" \
5.21 + " $(subst \,/,$(JIBX_LIBS_PATH))/jibx-run.jar \n" \
5.22 + " and/or check your value of ALT_JDK_DEVTOOLS_DIR, ALT_JIBX_LIBS_PATH \n" \
5.23 + "" >> $(ERROR_FILE) ; \
5.24 + fi
5.25 +
5.26 +######################################################
5.27 # MOZILLA_HEADERS_PATH must be valid
5.28 ######################################################
5.29 sane-mozilla:
6.1 --- a/make/javax/swing/plaf/Makefile Tue Apr 28 14:43:44 2009 -0700
6.2 +++ b/make/javax/swing/plaf/Makefile Wed Apr 29 00:27:46 2009 -0700
6.3 @@ -34,9 +34,14 @@
6.4 #
6.5 include FILES.gmk
6.6 AUTO_FILES_JAVA_DIRS = javax/swing/plaf sun/swing com/sun/java/swing/plaf
6.7 +SUBDIRS = nimbus
6.8 +
6.9 +# Nimbus is handled in its own directory
6.10 +AUTO_JAVA_PRUNE = nimbus
6.11 +
6.12 ifeq ($(PLATFORM), windows)
6.13 # Don't build GTK L&F on Windows
6.14 - AUTO_JAVA_PRUNE = gtk
6.15 + AUTO_JAVA_PRUNE += gtk
6.16 endif
6.17
6.18 MISC_FILES = $(MISC_SWING_FILES)
6.19 @@ -68,8 +73,10 @@
6.20 # Process LOGO_ICONS and Motif Icons first.
6.21 #
6.22 build: $(LOGO_ICONS) $(MISC_SWING_FILES_MOTIF_GIF) $(MISC_SWING_FILES_MOTIF_PNG) other_files
6.23 + $(SUBDIRS-loop)
6.24
6.25 -clean:: classes.clean
6.26 +clean clobber::
6.27 + $(SUBDIRS-loop)
6.28
6.29 #
6.30 # Include
7.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
7.2 +++ b/make/javax/swing/plaf/nimbus/Makefile Wed Apr 29 00:27:46 2009 -0700
7.3 @@ -0,0 +1,60 @@
7.4 +#
7.5 +# Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
7.6 +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
7.7 +#
7.8 +# This code is free software; you can redistribute it and/or modify it
7.9 +# under the terms of the GNU General Public License version 2 only, as
7.10 +# published by the Free Software Foundation. Sun designates this
7.11 +# particular file as subject to the "Classpath" exception as provided
7.12 +# by Sun in the LICENSE file that accompanied this code.
7.13 +#
7.14 +# This code is distributed in the hope that it will be useful, but WITHOUT
7.15 +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
7.16 +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
7.17 +# version 2 for more details (a copy is included in the LICENSE file that
7.18 +# accompanied this code).
7.19 +#
7.20 +# You should have received a copy of the GNU General Public License version
7.21 +# 2 along with this work; if not, write to the Free Software Foundation,
7.22 +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
7.23 +#
7.24 +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
7.25 +# CA 95054 USA or visit www.sun.com if you need additional information or
7.26 +# have any questions.
7.27 +#
7.28 +
7.29 +BUILDDIR = ../../../..
7.30 +PACKAGE = javax.swing.plaf.nimbus
7.31 +PRODUCT = com
7.32 +SWING_SRC = $(SHARE_SRC)/classes/javax/swing
7.33 +include $(BUILDDIR)/common/Defs.gmk
7.34 +
7.35 +#
7.36 +# Files
7.37 +#
7.38 +NIMBUS_PKG = javax/swing/plaf/nimbus
7.39 +NIMBUS_COMPAT_PKG = com/sun/java/swing/plaf/nimbus
7.40 +NIMBUS_GENSRC_DIR = $(GENSRCDIR)/$(NIMBUS_PKG)
7.41 +NIMBUS_SKIN_FILE = $(SHARE_SRC)/classes/$(NIMBUS_PKG)/skin.laf
7.42 +NIMBUS_GENERATOR_JAR = $(BUILDTOOLJARDIR)/nimbus_generator.jar
7.43 +
7.44 +AUTO_FILES_JAVA_DIRS = $(NIMBUS_PKG) $(NIMBUS_COMPAT_PKG)
7.45 +
7.46 +
7.47 +#
7.48 +# Rules
7.49 +#
7.50 +CLASSES_INIT = $(NIMBUS_GENSRC_DIR)
7.51 +
7.52 +include $(BUILDDIR)/common/Classes.gmk
7.53 +
7.54 +$(NIMBUS_GENSRC_DIR): $(NIMBUS_SKIN_FILE) $(NIMBUS_GENERATOR_JAR)
7.55 + @$(ECHO) "Generating Nimbus source files:"
7.56 + $(BOOT_JAVA_CMD) -jar $(NIMBUS_GENERATOR_JAR) \
7.57 + -skinFile $(NIMBUS_SKIN_FILE) \
7.58 + -buildDir $(GENSRCDIR) -srcDir $(GENSRCDIR) \
7.59 + -packagePrefix $(PACKAGE) -lafName Nimbus
7.60 + @$(ECHO) "Finished generating Nimbus source files"
7.61 +
7.62 +clean clobber::
7.63 + $(RM) -r $(NIMBUS_GENSRC_DIR)
8.1 --- a/make/tools/Makefile Tue Apr 28 14:43:44 2009 -0700
8.2 +++ b/make/tools/Makefile Wed Apr 29 00:27:46 2009 -0700
8.3 @@ -51,6 +51,7 @@
8.4 makeclasslist \
8.5 strip_properties \
8.6 spp \
8.7 + swing-nimbus \
8.8 CharsetMapping
8.9
8.10 all build clean clobber::
9.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
9.2 +++ b/make/tools/swing-nimbus/Makefile Wed Apr 29 00:27:46 2009 -0700
9.3 @@ -0,0 +1,91 @@
9.4 +#
9.5 +# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
9.6 +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
9.7 +#
9.8 +# This code is free software; you can redistribute it and/or modify it
9.9 +# under the terms of the GNU General Public License version 2 only, as
9.10 +# published by the Free Software Foundation. Sun designates this
9.11 +# particular file as subject to the "Classpath" exception as provided
9.12 +# by Sun in the LICENSE file that accompanied this code.
9.13 +#
9.14 +# This code is distributed in the hope that it will be useful, but WITHOUT
9.15 +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
9.16 +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
9.17 +# version 2 for more details (a copy is included in the LICENSE file that
9.18 +# accompanied this code).
9.19 +#
9.20 +# You should have received a copy of the GNU General Public License version
9.21 +# 2 along with this work; if not, write to the Free Software Foundation,
9.22 +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
9.23 +#
9.24 +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
9.25 +# CA 95054 USA or visit www.sun.com if you need additional information or
9.26 +# have any questions.
9.27 +#
9.28 +
9.29 +#
9.30 +# Makefile for building the Nimbus generator
9.31 +#
9.32 +
9.33 +BUILDDIR = ../..
9.34 +PACKAGE = org.jdesktop.synthdesigner.generator
9.35 +PRODUCT = tools
9.36 +PROGRAM = nimbus_generator
9.37 +include $(BUILDDIR)/common/Defs.gmk
9.38 +
9.39 +BUILDTOOL_SOURCE_ROOT = classes
9.40 +BUILDTOOL_MAIN = $(PKGDIR)/Generator.java
9.41 +
9.42 +#
9.43 +# Files
9.44 +#
9.45 +
9.46 +MAIN_CLASS_FILE = $(BUILDTOOLCLASSDIR)/$(BUILDTOOL_MAIN:%.java=%.class)
9.47 +SOURCE_FILES = $(shell $(FIND) $(BUILDTOOL_SOURCE_ROOT) -name '*.java' -print)
9.48 +
9.49 +TEMPLATE_FILES = $(SHARE_SRC)/classes/javax/swing/plaf/nimbus/Defaults.template \
9.50 + $(SHARE_SRC)/classes/javax/swing/plaf/nimbus/PainterImpl.template \
9.51 + $(SHARE_SRC)/classes/javax/swing/plaf/nimbus/StateImpl.template
9.52 +TEMPLATE_DEST = $(BUILDTOOLCLASSDIR)/org/jdesktop/synthdesigner/generator/resources
9.53 +
9.54 +JIBX_FILES = $(BUILDTOOL_SOURCE_ROOT)/org/jdesktop/swingx/designer/Designer.jibx.xml \
9.55 + $(BUILDTOOL_SOURCE_ROOT)/org/jdesktop/synthdesigner/synthmodel/SynthModel.jibx.xml
9.56 +JIBX_LIBS_CP = $(JIBX_LIBS_PATH)/bcel.jar$(CLASSPATH_SEPARATOR)$(JIBX_LIBS_PATH)/xpp3.jar$(CLASSPATH_SEPARATOR)$(JIBX_LIBS_PATH)/jibx-bind.jar$(CLASSPATH_SEPARATOR)$(JIBX_LIBS_PATH)/jibx-run.jar
9.57 +JIBX_LIBS_LIST = $(subst $(CLASSPATH_SEPARATOR), ,$(JIBX_LIBS_CP))
9.58 +
9.59 +
9.60 +#
9.61 +# Rules
9.62 +#
9.63 +
9.64 +include $(BUILDDIR)/common/BuildToolJar.gmk
9.65 +
9.66 +$(MAIN_CLASS_FILE): $(SOURCE_FILES) $(JIBX_LIBS_LIST)
9.67 + @$(MKDIR) -p $(BUILDTOOLCLASSDIR)
9.68 + $(BOOT_JAVAC_CMD) -classpath "$(JIBX_LIBS_CP)" \
9.69 + -d $(BUILDTOOLCLASSDIR) -sourcepath $(BUILDTOOL_SOURCE_ROOT) \
9.70 + $(SOURCE_FILES)
9.71 +
9.72 +$(TEMPLATE_DEST): $(TEMPLATE_FILES)
9.73 + $(MKDIR) -p $(TEMPLATE_DEST)
9.74 + $(RM) $(TEMPLATE_DEST)/*.template
9.75 + $(CP) $(TEMPLATE_FILES) $(TEMPLATE_DEST)
9.76 +
9.77 +$(BUILDTOOL_MANIFEST_FILE): $(MAIN_CLASS_FILE)
9.78 + $(ECHO) "Main-Class: $(BUILTTOOL_MAINCLASS)" > $@
9.79 + $(ECHO) "Class-Path: $(JIBX_LIBS_LIST:$(JIBX_LIBS_PATH)/%=%)" >> $@
9.80 + $(CP) $(JIBX_LIBS_LIST) $(BUILDTOOLJARDIR)
9.81 +
9.82 +$(BUILDTOOL_JAR_FILE): $(MAIN_CLASS_FILE) $(TEMPLATE_DEST) \
9.83 + $(JIBX_FILES) $(BUILDTOOL_MANIFEST_FILE)
9.84 + @$(prep-target)
9.85 + $(BOOT_JAVA_CMD) \
9.86 + -classpath "$(JIBX_LIBS_CP)$(CLASSPATH_SEPARATOR)$(BUILDTOOLCLASSDIR)" \
9.87 + org.jibx.binding.Compile $(JIBX_FILES)
9.88 + $(BOOT_JAR_CMD) cfm $@ $(BUILDTOOL_MANIFEST_FILE) \
9.89 + -C $(BUILDTOOLCLASSDIR) org \
9.90 + $(BOOT_JAR_JFLAGS) || $(RM) $@
9.91 + @$(java-vm-cleanup)
9.92 +
9.93 +clean clobber::
9.94 + $(RM) -r $(TEMPLATE_DEST)
10.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
10.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/beans/AbstractBean.java Wed Apr 29 00:27:46 2009 -0700
10.3 @@ -0,0 +1,475 @@
10.4 +/*
10.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
10.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
10.7 + *
10.8 + * This code is free software; you can redistribute it and/or modify it
10.9 + * under the terms of the GNU General Public License version 2 only, as
10.10 + * published by the Free Software Foundation. Sun designates this
10.11 + * particular file as subject to the "Classpath" exception as provided
10.12 + * by Sun in the LICENSE file that accompanied this code.
10.13 + *
10.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
10.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
10.17 + * version 2 for more details (a copy is included in the LICENSE file that
10.18 + * accompanied this code).
10.19 + *
10.20 + * You should have received a copy of the GNU General Public License version
10.21 + * 2 along with this work; if not, write to the Free Software Foundation,
10.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
10.23 + *
10.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
10.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
10.26 + * have any questions.
10.27 + */
10.28 +package org.jdesktop.beans;
10.29 +
10.30 +import java.beans.PropertyChangeEvent;
10.31 +import java.beans.PropertyChangeListener;
10.32 +import java.beans.PropertyChangeSupport;
10.33 +import java.beans.PropertyVetoException;
10.34 +import java.beans.VetoableChangeListener;
10.35 +import java.beans.VetoableChangeSupport;
10.36 +
10.37 +/**
10.38 + * <p>A convenience class from which to extend all non-visual AbstractBeans. It
10.39 + * manages the PropertyChange notification system, making it relatively trivial
10.40 + * to add support for property change events in getters/setters.</p>
10.41 + *
10.42 + * <p>A non-visual java bean is a Java class that conforms to the AbstractBean
10.43 + * patterns to allow visual manipulation of the bean's properties and event
10.44 + * handlers at design-time.</p>
10.45 + *
10.46 + * <p>Here is a simple example bean that contains one property, foo, and the
10.47 + * proper pattern for implementing property change notification:
10.48 + * <pre><code>
10.49 + * public class ABean extends AbstractBean {
10.50 + * private String foo;
10.51 + *
10.52 + * public void setFoo(String newFoo) {
10.53 + * String old = getFoo();
10.54 + * this.foo = newFoo;
10.55 + * firePropertyChange("foo", old, getFoo());
10.56 + * }
10.57 + *
10.58 + * public String getFoo() {
10.59 + * return foo;
10.60 + * }
10.61 + * }
10.62 + * </code></pre></p>
10.63 + *
10.64 + * <p>You will notice that "getFoo()" is used in the setFoo method rather than
10.65 + * accessing "foo" directly for the gets. This is done intentionally so that if
10.66 + * a subclass overrides getFoo() to return, for instance, a constant value the
10.67 + * property change notification system will continue to work properly.</p>
10.68 + *
10.69 + * <p>The firePropertyChange method takes into account the old value and the new
10.70 + * value. Only if the two differ will it fire a property change event. So you can
10.71 + * be assured from the above code fragment that a property change event will only
10.72 + * occur if old is indeed different from getFoo()</p>
10.73 + *
10.74 + * <p><code>AbstractBean</code> also supports {@link VetoablePropertyChange} events.
10.75 + * These events are similar to <code>PropertyChange</code> events, except a special
10.76 + * exception can be used to veto changing the property. For example, perhaps the
10.77 + * property is changing from "fred" to "red", but a listener deems that "red" is
10.78 + * unexceptable. In this case, the listener can fire a veto exception and the property must
10.79 + * remain "fred". For example:
10.80 + * <pre><code>
10.81 + * public class ABean extends AbstractBean {
10.82 + * private String foo;
10.83 + *
10.84 + * public void setFoo(String newFoo) throws PropertyVetoException {
10.85 + * String old = getFoo();
10.86 + * this.foo = newFoo;
10.87 + * fireVetoableChange("foo", old, getFoo());
10.88 + * }
10.89 + *
10.90 + * public String getFoo() {
10.91 + * return foo;
10.92 + * }
10.93 + * }
10.94 + *
10.95 + * public class Tester {
10.96 + * public static void main(String... args) {
10.97 + * try {
10.98 + * ABean a = new ABean();
10.99 + * a.setFoo("fred");
10.100 + * a.addVetoableChangeListener(new VetoableChangeListener() {
10.101 + * public void vetoableChange(PropertyChangeEvent evt) throws PropertyVetoException {
10.102 + * if ("red".equals(evt.getNewValue()) {
10.103 + * throw new PropertyVetoException("Cannot be red!", evt);
10.104 + * }
10.105 + * }
10.106 + * }
10.107 + * a.setFoo("red");
10.108 + * } catch (Exception e) {
10.109 + * e.printStackTrace(); // this will be executed
10.110 + * }
10.111 + * }
10.112 + * }
10.113 + * </code></pre></p>
10.114 + *
10.115 + * @status REVIEWED
10.116 + * @author rbair
10.117 + */
10.118 +public abstract class AbstractBean {
10.119 + /**
10.120 + * Helper class that manages all the property change notification machinery.
10.121 + * PropertyChangeSupport cannot be extended directly because it requires
10.122 + * a bean in the constructor, and the "this" argument is not valid until
10.123 + * after super construction. Hence, delegation instead of extension
10.124 + */
10.125 + private transient PropertyChangeSupport pcs;
10.126 +
10.127 + /**
10.128 + * Helper class that manages all the veto property change notification machinery.
10.129 + */
10.130 + private transient VetoableChangeSupport vcs;
10.131 +
10.132 + /** Creates a new instance of AbstractBean */
10.133 + protected AbstractBean() {
10.134 + pcs = new PropertyChangeSupport(this);
10.135 + vcs = new VetoableChangeSupport(this);
10.136 + }
10.137 +
10.138 + /**
10.139 + * Creates a new instance of AbstractBean, using the supplied PropertyChangeSupport and
10.140 + * VetoableChangeSupport delegates. Neither of these may be null.
10.141 + */
10.142 + protected AbstractBean(PropertyChangeSupport pcs, VetoableChangeSupport vcs) {
10.143 + if (pcs == null) {
10.144 + throw new NullPointerException("PropertyChangeSupport must not be null");
10.145 + }
10.146 + if (vcs == null) {
10.147 + throw new NullPointerException("VetoableChangeSupport must not be null");
10.148 + }
10.149 +
10.150 + this.pcs = pcs;
10.151 + this.vcs = vcs;
10.152 + }
10.153 +
10.154 + /**
10.155 + * Add a PropertyChangeListener to the listener list.
10.156 + * The listener is registered for all properties.
10.157 + * The same listener object may be added more than once, and will be called
10.158 + * as many times as it is added.
10.159 + * If <code>listener</code> is null, no exception is thrown and no action
10.160 + * is taken.
10.161 + *
10.162 + * @param listener The PropertyChangeListener to be added
10.163 + */
10.164 + public final void addPropertyChangeListener(PropertyChangeListener listener) {
10.165 + pcs.addPropertyChangeListener(listener);
10.166 + }
10.167 +
10.168 + /**
10.169 + * Remove a PropertyChangeListener from the listener list.
10.170 + * This removes a PropertyChangeListener that was registered
10.171 + * for all properties.
10.172 + * If <code>listener</code> was added more than once to the same event
10.173 + * source, it will be notified one less time after being removed.
10.174 + * If <code>listener</code> is null, or was never added, no exception is
10.175 + * thrown and no action is taken.
10.176 + *
10.177 + * @param listener The PropertyChangeListener to be removed
10.178 + */
10.179 + public final void removePropertyChangeListener(PropertyChangeListener listener) {
10.180 + pcs.removePropertyChangeListener(listener);
10.181 + }
10.182 +
10.183 + /**
10.184 + * Returns an array of all the listeners that were added to the
10.185 + * PropertyChangeSupport object with addPropertyChangeListener().
10.186 + * <p>
10.187 + * If some listeners have been added with a named property, then
10.188 + * the returned array will be a mixture of PropertyChangeListeners
10.189 + * and <code>PropertyChangeListenerProxy</code>s. If the calling
10.190 + * method is interested in distinguishing the listeners then it must
10.191 + * test each element to see if it's a
10.192 + * <code>PropertyChangeListenerProxy</code>, perform the cast, and examine
10.193 + * the parameter.
10.194 + *
10.195 + * <pre>
10.196 + * PropertyChangeListener[] listeners = bean.getPropertyChangeListeners();
10.197 + * for (int i = 0; i < listeners.length; i++) {
10.198 + * if (listeners[i] instanceof PropertyChangeListenerProxy) {
10.199 + * PropertyChangeListenerProxy proxy =
10.200 + * (PropertyChangeListenerProxy)listeners[i];
10.201 + * if (proxy.getPropertyName().equals("foo")) {
10.202 + * // proxy is a PropertyChangeListener which was associated
10.203 + * // with the property named "foo"
10.204 + * }
10.205 + * }
10.206 + * }
10.207 + *</pre>
10.208 + *
10.209 + * @see java.beans.PropertyChangeListenerProxy
10.210 + * @return all of the <code>PropertyChangeListeners</code> added or an
10.211 + * empty array if no listeners have been added
10.212 + */
10.213 + public final PropertyChangeListener[] getPropertyChangeListeners() {
10.214 + return pcs.getPropertyChangeListeners();
10.215 + }
10.216 +
10.217 + /**
10.218 + * Add a PropertyChangeListener for a specific property. The listener
10.219 + * will be invoked only when a call on firePropertyChange names that
10.220 + * specific property.
10.221 + * The same listener object may be added more than once. For each
10.222 + * property, the listener will be invoked the number of times it was added
10.223 + * for that property.
10.224 + * If <code>propertyName</code> or <code>listener</code> is null, no
10.225 + * exception is thrown and no action is taken.
10.226 + *
10.227 + * @param propertyName The name of the property to listen on.
10.228 + * @param listener The PropertyChangeListener to be added
10.229 + */
10.230 + public final void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
10.231 + pcs.addPropertyChangeListener(propertyName, listener);
10.232 + }
10.233 +
10.234 + /**
10.235 + * Remove a PropertyChangeListener for a specific property.
10.236 + * If <code>listener</code> was added more than once to the same event
10.237 + * source for the specified property, it will be notified one less time
10.238 + * after being removed.
10.239 + * If <code>propertyName</code> is null, no exception is thrown and no
10.240 + * action is taken.
10.241 + * If <code>listener</code> is null, or was never added for the specified
10.242 + * property, no exception is thrown and no action is taken.
10.243 + *
10.244 + * @param propertyName The name of the property that was listened on.
10.245 + * @param listener The PropertyChangeListener to be removed
10.246 + */
10.247 + public final void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) {
10.248 + pcs.removePropertyChangeListener(propertyName, listener);
10.249 + }
10.250 +
10.251 + /**
10.252 + * Returns an array of all the listeners which have been associated
10.253 + * with the named property.
10.254 + *
10.255 + * @param propertyName The name of the property being listened to
10.256 + * @return all of the <code>PropertyChangeListeners</code> associated with
10.257 + * the named property. If no such listeners have been added,
10.258 + * or if <code>propertyName</code> is null, an empty array is
10.259 + * returned.
10.260 + */
10.261 + public final PropertyChangeListener[] getPropertyChangeListeners(String propertyName) {
10.262 + return pcs.getPropertyChangeListeners(propertyName);
10.263 + }
10.264 +
10.265 + /**
10.266 + * Report a bound property update to any registered listeners.
10.267 + * No event is fired if old and new are equal and non-null.
10.268 + *
10.269 + * <p>
10.270 + * This is merely a convenience wrapper around the more general
10.271 + * firePropertyChange method that takes {@code
10.272 + * PropertyChangeEvent} value.
10.273 + *
10.274 + * @param propertyName The programmatic name of the property
10.275 + * that was changed.
10.276 + * @param oldValue The old value of the property.
10.277 + * @param newValue The new value of the property.
10.278 + */
10.279 + protected final void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
10.280 + pcs.firePropertyChange(propertyName, oldValue, newValue);
10.281 + }
10.282 +
10.283 + /**
10.284 + * Fire an existing PropertyChangeEvent to any registered listeners.
10.285 + * No event is fired if the given event's old and new values are
10.286 + * equal and non-null.
10.287 + * @param evt The PropertyChangeEvent object.
10.288 + */
10.289 + protected final void firePropertyChange(PropertyChangeEvent evt) {
10.290 + pcs.firePropertyChange(evt);
10.291 + }
10.292 +
10.293 +
10.294 + /**
10.295 + * Report a bound indexed property update to any registered
10.296 + * listeners.
10.297 + * <p>
10.298 + * No event is fired if old and new values are equal
10.299 + * and non-null.
10.300 + *
10.301 + * <p>
10.302 + * This is merely a convenience wrapper around the more general
10.303 + * firePropertyChange method that takes {@code PropertyChangeEvent} value.
10.304 + *
10.305 + * @param propertyName The programmatic name of the property that
10.306 + * was changed.
10.307 + * @param index index of the property element that was changed.
10.308 + * @param oldValue The old value of the property.
10.309 + * @param newValue The new value of the property.
10.310 + */
10.311 + protected final void fireIndexedPropertyChange(String propertyName,
10.312 + int index, Object oldValue, Object newValue) {
10.313 + pcs.fireIndexedPropertyChange(propertyName, index, oldValue, newValue);
10.314 + }
10.315 +
10.316 + /**
10.317 + * Check if there are any listeners for a specific property, including
10.318 + * those registered on all properties. If <code>propertyName</code>
10.319 + * is null, only check for listeners registered on all properties.
10.320 + *
10.321 + * @param propertyName the property name.
10.322 + * @return true if there are one or more listeners for the given property
10.323 + */
10.324 + protected final boolean hasPropertyChangeListeners(String propertyName) {
10.325 + return pcs.hasListeners(propertyName);
10.326 + }
10.327 +
10.328 + /**
10.329 + * Check if there are any listeners for a specific property, including
10.330 + * those registered on all properties. If <code>propertyName</code>
10.331 + * is null, only check for listeners registered on all properties.
10.332 + *
10.333 + * @param propertyName the property name.
10.334 + * @return true if there are one or more listeners for the given property
10.335 + */
10.336 + protected final boolean hasVetoableChangeListeners(String propertyName) {
10.337 + return vcs.hasListeners(propertyName);
10.338 + }
10.339 +
10.340 + /**
10.341 + * Add a VetoableListener to the listener list.
10.342 + * The listener is registered for all properties.
10.343 + * The same listener object may be added more than once, and will be called
10.344 + * as many times as it is added.
10.345 + * If <code>listener</code> is null, no exception is thrown and no action
10.346 + * is taken.
10.347 + *
10.348 + * @param listener The VetoableChangeListener to be added
10.349 + */
10.350 +
10.351 + public final void addVetoableChangeListener(VetoableChangeListener listener) {
10.352 + vcs.addVetoableChangeListener(listener);
10.353 + }
10.354 +
10.355 + /**
10.356 + * Remove a VetoableChangeListener from the listener list.
10.357 + * This removes a VetoableChangeListener that was registered
10.358 + * for all properties.
10.359 + * If <code>listener</code> was added more than once to the same event
10.360 + * source, it will be notified one less time after being removed.
10.361 + * If <code>listener</code> is null, or was never added, no exception is
10.362 + * thrown and no action is taken.
10.363 + *
10.364 + * @param listener The VetoableChangeListener to be removed
10.365 + */
10.366 + public final void removeVetoableChangeListener(VetoableChangeListener listener) {
10.367 + vcs.removeVetoableChangeListener(listener);
10.368 + }
10.369 +
10.370 + /**
10.371 + * Returns the list of VetoableChangeListeners. If named vetoable change listeners
10.372 + * were added, then VetoableChangeListenerProxy wrappers will returned
10.373 + * <p>
10.374 + * @return List of VetoableChangeListeners and VetoableChangeListenerProxys
10.375 + * if named property change listeners were added.
10.376 + */
10.377 + public final VetoableChangeListener[] getVetoableChangeListeners(){
10.378 + return vcs.getVetoableChangeListeners();
10.379 + }
10.380 +
10.381 + /**
10.382 + * Add a VetoableChangeListener for a specific property. The listener
10.383 + * will be invoked only when a call on fireVetoableChange names that
10.384 + * specific property.
10.385 + * The same listener object may be added more than once. For each
10.386 + * property, the listener will be invoked the number of times it was added
10.387 + * for that property.
10.388 + * If <code>propertyName</code> or <code>listener</code> is null, no
10.389 + * exception is thrown and no action is taken.
10.390 + *
10.391 + * @param propertyName The name of the property to listen on.
10.392 + * @param listener The VetoableChangeListener to be added
10.393 + */
10.394 +
10.395 + public final void addVetoableChangeListener(String propertyName,
10.396 + VetoableChangeListener listener) {
10.397 + vcs.addVetoableChangeListener(propertyName, listener);
10.398 + }
10.399 +
10.400 + /**
10.401 + * Remove a VetoableChangeListener for a specific property.
10.402 + * If <code>listener</code> was added more than once to the same event
10.403 + * source for the specified property, it will be notified one less time
10.404 + * after being removed.
10.405 + * If <code>propertyName</code> is null, no exception is thrown and no
10.406 + * action is taken.
10.407 + * If <code>listener</code> is null, or was never added for the specified
10.408 + * property, no exception is thrown and no action is taken.
10.409 + *
10.410 + * @param propertyName The name of the property that was listened on.
10.411 + * @param listener The VetoableChangeListener to be removed
10.412 + */
10.413 +
10.414 + public final void removeVetoableChangeListener(String propertyName,
10.415 + VetoableChangeListener listener) {
10.416 + vcs.removeVetoableChangeListener(propertyName, listener);
10.417 + }
10.418 +
10.419 + /**
10.420 + * Returns an array of all the listeners which have been associated
10.421 + * with the named property.
10.422 + *
10.423 + * @param propertyName The name of the property being listened to
10.424 + * @return all the <code>VetoableChangeListeners</code> associated with
10.425 + * the named property. If no such listeners have been added,
10.426 + * or if <code>propertyName</code> is null, an empty array is
10.427 + * returned.
10.428 + */
10.429 + public final VetoableChangeListener[] getVetoableChangeListeners(String propertyName) {
10.430 + return vcs.getVetoableChangeListeners(propertyName);
10.431 + }
10.432 +
10.433 + /**
10.434 + * Report a vetoable property update to any registered listeners. If
10.435 + * anyone vetos the change, then fire a new event reverting everyone to
10.436 + * the old value and then rethrow the PropertyVetoException.
10.437 + * <p>
10.438 + * No event is fired if old and new are equal and non-null.
10.439 + *
10.440 + * @param propertyName The programmatic name of the property
10.441 + * that is about to change..
10.442 + * @param oldValue The old value of the property.
10.443 + * @param newValue The new value of the property.
10.444 + * @exception PropertyVetoException if the recipient wishes the property
10.445 + * change to be rolled back.
10.446 + */
10.447 + protected final void fireVetoableChange(String propertyName,
10.448 + Object oldValue, Object newValue)
10.449 + throws PropertyVetoException {
10.450 + vcs.fireVetoableChange(propertyName, oldValue, newValue);
10.451 + }
10.452 +
10.453 + /**
10.454 + * Fire a vetoable property update to any registered listeners. If
10.455 + * anyone vetos the change, then fire a new event reverting everyone to
10.456 + * the old value and then rethrow the PropertyVetoException.
10.457 + * <p>
10.458 + * No event is fired if old and new are equal and non-null.
10.459 + *
10.460 + * @param evt The PropertyChangeEvent to be fired.
10.461 + * @exception PropertyVetoException if the recipient wishes the property
10.462 + * change to be rolled back.
10.463 + */
10.464 + protected final void fireVetoableChange(PropertyChangeEvent evt)
10.465 + throws PropertyVetoException {
10.466 + vcs.fireVetoableChange(evt);
10.467 + }
10.468 +
10.469 + /**
10.470 + * @inheritDoc
10.471 + */
10.472 + public Object clone() throws CloneNotSupportedException {
10.473 + AbstractBean result = (AbstractBean) super.clone();
10.474 + result.pcs = new PropertyChangeSupport(result);
10.475 + result.vcs = new VetoableChangeSupport(result);
10.476 + return result;
10.477 + }
10.478 +}
11.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
11.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/BezierControlPoint.java Wed Apr 29 00:27:46 2009 -0700
11.3 @@ -0,0 +1,265 @@
11.4 +/*
11.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
11.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
11.7 + *
11.8 + * This code is free software; you can redistribute it and/or modify it
11.9 + * under the terms of the GNU General Public License version 2 only, as
11.10 + * published by the Free Software Foundation. Sun designates this
11.11 + * particular file as subject to the "Classpath" exception as provided
11.12 + * by Sun in the LICENSE file that accompanied this code.
11.13 + *
11.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
11.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11.17 + * version 2 for more details (a copy is included in the LICENSE file that
11.18 + * accompanied this code).
11.19 + *
11.20 + * You should have received a copy of the GNU General Public License version
11.21 + * 2 along with this work; if not, write to the Free Software Foundation,
11.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
11.23 + *
11.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
11.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
11.26 + * have any questions.
11.27 + */
11.28 +package org.jdesktop.swingx.designer;
11.29 +
11.30 +import java.awt.BasicStroke;
11.31 +import java.awt.Graphics2D;
11.32 +import java.awt.Shape;
11.33 +import java.awt.geom.Ellipse2D;
11.34 +import java.awt.geom.GeneralPath;
11.35 +import java.awt.geom.Line2D;
11.36 +import java.awt.geom.Point2D;
11.37 +import java.awt.geom.Rectangle2D;
11.38 +import java.beans.PropertyChangeEvent;
11.39 +import java.beans.PropertyChangeListener;
11.40 +import java.util.ArrayList;
11.41 +import java.util.Collections;
11.42 +import java.util.List;
11.43 +
11.44 +/**
11.45 + * BezierControlPoint
11.46 + *
11.47 + * @author Created by Jasper Potts (May 29, 2007)
11.48 + */
11.49 +public class BezierControlPoint extends ControlPoint {
11.50 + private HandleControlPoint cp1 = new HandleControlPoint();
11.51 + private HandleControlPoint cp2 = new HandleControlPoint();
11.52 + private transient boolean makingChange = false;
11.53 + private transient PropertyChangeListener cpListener = new PropertyChangeListener() {
11.54 + public void propertyChange(PropertyChangeEvent evt) {
11.55 +// if (!makingChange) {
11.56 +// makingChange = true;
11.57 +// if (evt.getSource() == cp1) {
11.58 +// double angle = Math.tan((cp1.getY() - getY())/(cp1.getX() - getX()));
11.59 +// double cp2len = Math.sqrt(
11.60 +// Math.pow(cp2.getX() - getX(),2) +
11.61 +// Math.pow(cp2.getY() - getY(),2)
11.62 +// );
11.63 +// double offsetX = cp2len * Math.sin(angle);
11.64 +// double offsetY = cp2len * Math.cos(angle);
11.65 +// cp2.setPosition(getX() - offsetX, getY() - offsetY);
11.66 +// } else {
11.67 +// double angle = Math.tan((cp2.getY() - getY())/(cp2.getX() - getX()));
11.68 +// double cp1len = Math.sqrt(
11.69 +// Math.pow(cp1.getX() - getX(),2) +
11.70 +// Math.pow(cp1.getY() - getY(),2)
11.71 +// );
11.72 +// double offsetX = cp1len * Math.sin(angle);
11.73 +// double offsetY = cp1len * Math.cos(angle);
11.74 +// cp1.setPosition(getX() - offsetX, getY() - offsetY);
11.75 +// }
11.76 +//// if (evt.getSource() == cp1) {
11.77 +//// double offsetX = cp1.getX() - getX();
11.78 +//// double offsetY = cp1.getY() - getY();
11.79 +//// cp2.setPosition(getX() - offsetX, getY() - offsetY);
11.80 +//// } else {
11.81 +//// double offsetX = cp2.getX() - getX();
11.82 +//// double offsetY = cp2.getY() - getY();
11.83 +//// cp1.setPosition(getX() - offsetX, getY() - offsetY);
11.84 +//// }
11.85 +// makingChange = false;
11.86 +// firePropertyChange("cp1", null, cp1);
11.87 +// firePropertyChange("cp2", null, cp1);
11.88 +// }
11.89 + firePropertyChange("shape",null,getShape());
11.90 + }
11.91 + };
11.92 +
11.93 + public BezierControlPoint() {
11.94 + cp1.addPropertyChangeListener(cpListener);
11.95 + cp2.addPropertyChangeListener(cpListener);
11.96 + }
11.97 +
11.98 + public BezierControlPoint(double x, double y) {
11.99 + super(x, y);
11.100 + cp1.addPropertyChangeListener(cpListener);
11.101 + cp2.addPropertyChangeListener(cpListener);
11.102 + cp1.setPosition(x, y);
11.103 + cp2.setPosition(x, y);
11.104 + }
11.105 +
11.106 + public boolean isSharpCorner() {
11.107 + return
11.108 + (cp1.getX() == x.getValue()) &&
11.109 + (cp1.getY() == y.getValue()) &&
11.110 + (cp2.getX() == x.getValue()) &&
11.111 + (cp2.getY() == y.getValue());
11.112 + }
11.113 +
11.114 + public void flip(int width, int height){
11.115 + makingChange = true;
11.116 + if (width > 0){
11.117 + x.setValue(width - x.getValue());
11.118 + cp1.x.setValue(width - cp1.x.getValue());
11.119 + cp2.x.setValue(width - cp2.x.getValue());
11.120 + }
11.121 + if (height > 0){
11.122 + y.setValue(height - y.getValue());
11.123 + cp1.y.setValue(height - cp1.y.getValue());
11.124 + cp2.y.setValue(height - cp2.y.getValue());
11.125 + }
11.126 + makingChange = false;
11.127 + }
11.128 +
11.129 + public void convertToSharpCorner() {
11.130 + cp1.setPosition(x.getValue(), y.getValue());
11.131 + cp2.setPosition(x.getValue(), y.getValue());
11.132 + }
11.133 +
11.134 + public List<ControlPoint> getControlPoints() {
11.135 + if (isSharpCorner()) {
11.136 + return Collections.emptyList();
11.137 + } else {
11.138 + List<ControlPoint> points = new ArrayList<ControlPoint>();
11.139 + points.add(cp1);
11.140 + points.add(cp2);
11.141 + return points;
11.142 + }
11.143 + }
11.144 +
11.145 + public HandleControlPoint getCp1() {
11.146 + return cp1;
11.147 + }
11.148 +
11.149 + public HandleControlPoint getCp2() {
11.150 + return cp2;
11.151 + }
11.152 +
11.153 + public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) {
11.154 + g2.setStroke(new BasicStroke((float) pixelSize));
11.155 + // paint control line
11.156 + g2.setColor(GraphicsHelper.BEZIER_CONTROL_LINE);
11.157 + g2.draw(new Line2D.Double(cp1.getX(), cp1.getY(), getX(), getY()));
11.158 + g2.draw(new Line2D.Double(getX(), getY(), cp2.getX(), cp2.getY()));
11.159 + // paint this control point
11.160 + Shape s;
11.161 + if (isSharpCorner()) {
11.162 + double size = pixelSize * 4d;
11.163 + GeneralPath path = new GeneralPath();
11.164 + path.moveTo(getX() - size, getY());
11.165 + path.lineTo(getX(), getY() + size);
11.166 + path.lineTo(getX() + size, getY());
11.167 + path.lineTo(getX(), getY() - size);
11.168 + path.closePath();
11.169 + s = path;
11.170 + } else {
11.171 + double size = pixelSize * 3d;
11.172 + s = new Ellipse2D.Double(getX() - size, getY() - size,
11.173 + size * 2, size * 2);
11.174 + }
11.175 + g2.setColor(GraphicsHelper.BEZIER_CONTROL_POINT_FILL);
11.176 + g2.fill(s);
11.177 + g2.setColor(GraphicsHelper.BEZIER_CONTROL_POINT_LINE);
11.178 + g2.draw(s);
11.179 + // paint child control points
11.180 + if (!isSharpCorner()) {
11.181 + cp1.paintControls(g2, pixelSize, true);
11.182 + cp2.paintControls(g2, pixelSize, true);
11.183 + }
11.184 + }
11.185 +
11.186 +
11.187 + public void move(double moveX, double moveY, boolean snapPixels) {
11.188 + makingChange = true;
11.189 + super.move(moveX, moveY, snapPixels);
11.190 + cp1.move(moveX, moveY, snapPixels);
11.191 + cp2.move(moveX, moveY, snapPixels);
11.192 + makingChange = false;
11.193 + }
11.194 +
11.195 + public double getCp1X() {
11.196 + return cp1.getX();
11.197 + }
11.198 +
11.199 + public void setCp1X(double v) {
11.200 + cp1.setX(v);
11.201 + }
11.202 +
11.203 + public double getCp1Y() {
11.204 + return cp1.getY();
11.205 + }
11.206 +
11.207 + public void setCp1Y(double v) {
11.208 + cp1.setY(v);
11.209 + }
11.210 +
11.211 + public double getCp2X() {
11.212 + return cp2.getX();
11.213 + }
11.214 +
11.215 + public void setCp2X(double v) {
11.216 + cp2.setX(v);
11.217 + }
11.218 +
11.219 + public double getCp2Y() {
11.220 + return cp2.getY();
11.221 + }
11.222 +
11.223 + public void setCp2Y(double v) {
11.224 + cp2.setY(v);
11.225 + }
11.226 +
11.227 + // =================================================================================================================
11.228 + // Bezier handle control point
11.229 +
11.230 + public class HandleControlPoint extends ControlPoint {
11.231 +
11.232 + public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) {
11.233 + if (!isSharp()){
11.234 + double size = pixelSize * 3d;
11.235 + Shape s = new Ellipse2D.Double(getX() - size, getY() - size,
11.236 + size * 2, size * 2);
11.237 + g2.setColor(GraphicsHelper.BEZIER_CONTROL_POINT_FILL);
11.238 + g2.fill(s);
11.239 + g2.setColor(GraphicsHelper.BEZIER_CONTROL_POINT_LINE);
11.240 + g2.draw(s);
11.241 + g2.draw(new Rectangle2D.Double(getX() - (pixelSize / 2), getY() - (pixelSize / 2), pixelSize, pixelSize));
11.242 + }
11.243 + }
11.244 +
11.245 + public boolean isHit(Point2D p, double pixelSize) {
11.246 + return !isSharp() && super.isHit(p, pixelSize);
11.247 + }
11.248 +
11.249 + /**
11.250 + * Is the line controled by this handle in or out of the parent BezierControlPoint sharp.
11.251 + *
11.252 + * @return <code>true</code> If this is the exact same point as the parent BezierControlPoint.
11.253 + */
11.254 + public boolean isSharp(){
11.255 + return x.getValue() == BezierControlPoint.this.x.getValue() &&
11.256 + y.getValue() == BezierControlPoint.this.y.getValue();
11.257 + }
11.258 +
11.259 + public void convertToSharp(){
11.260 + setPosition(BezierControlPoint.this.x.getValue(),BezierControlPoint.this.y.getValue());
11.261 + }
11.262 +
11.263 + public BezierControlPoint getParentControlPoint(){
11.264 + return BezierControlPoint.this;
11.265 + }
11.266 + }
11.267 +
11.268 +}
12.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
12.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/BlendingMode.java Wed Apr 29 00:27:46 2009 -0700
12.3 @@ -0,0 +1,100 @@
12.4 +/*
12.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
12.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
12.7 + *
12.8 + * This code is free software; you can redistribute it and/or modify it
12.9 + * under the terms of the GNU General Public License version 2 only, as
12.10 + * published by the Free Software Foundation. Sun designates this
12.11 + * particular file as subject to the "Classpath" exception as provided
12.12 + * by Sun in the LICENSE file that accompanied this code.
12.13 + *
12.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
12.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12.17 + * version 2 for more details (a copy is included in the LICENSE file that
12.18 + * accompanied this code).
12.19 + *
12.20 + * You should have received a copy of the GNU General Public License version
12.21 + * 2 along with this work; if not, write to the Free Software Foundation,
12.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
12.23 + *
12.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
12.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
12.26 + * have any questions.
12.27 + */
12.28 +package org.jdesktop.swingx.designer;
12.29 +
12.30 +
12.31 +/**
12.32 + * BlendingMode - Enum of composite blending modes, setup to match photoshop as closely as possible
12.33 + *
12.34 + * @author Created by Jasper Potts (May 31, 2007)
12.35 + */
12.36 +public enum BlendingMode {
12.37 + NORMAL,
12.38 + // DISSOLVE, missing
12.39 + // -----------------------------
12.40 + DARKEN,
12.41 + MULTIPLY,
12.42 + COLOR_BURN,
12.43 + LINEAR_BURN, // (SUBTRACT)
12.44 + // -----------------------------
12.45 + LIGHTEN,
12.46 + SCREEN,
12.47 + COLOR_DODGE,
12.48 + LINEAR_DODGE, // (ADD)
12.49 + // -----------------------------
12.50 + OVERLAY,
12.51 + SOFT_LIGHT,
12.52 + HARD_LIGHT,
12.53 + VIVID_LIGHT, // (HEAT) is close
12.54 + LINEAR_LIGHT, // (GLOW) is close
12.55 + //PIN_LIGHT, missing
12.56 + //HARD_MIX, missing
12.57 + // -----------------------------
12.58 + DIFFERENCE,
12.59 + EXCLUSION,
12.60 + // -----------------------------
12.61 + HUE, // nowhere close
12.62 + SATURATION,
12.63 + COLOR,
12.64 + LUMINOSITY, // close but not exact
12.65 + //LIGHTER_COLOR, missing
12.66 + //DARKER_COLOR, missing
12.67 + ;
12.68 +
12.69 +
12.70 + // =================================================================================================================
12.71 + // Helper methods for creating Blending Mode Combo Box
12.72 +
12.73 + public static final Object[] BLENDING_MODES = new Object[]{
12.74 + BlendingMode.NORMAL,
12.75 + // DISSOLVE, missing
12.76 + "-",
12.77 + BlendingMode.DARKEN,
12.78 + BlendingMode.MULTIPLY,
12.79 + BlendingMode.COLOR_BURN,
12.80 + BlendingMode.LINEAR_BURN, // (SUBTRACT)
12.81 + "-",
12.82 + BlendingMode.LIGHTEN,
12.83 + BlendingMode.SCREEN,
12.84 + BlendingMode.COLOR_DODGE,
12.85 + BlendingMode.LINEAR_DODGE, // (ADD)
12.86 + "-",
12.87 + BlendingMode.OVERLAY,
12.88 + BlendingMode.SOFT_LIGHT,
12.89 + BlendingMode.HARD_LIGHT,
12.90 + BlendingMode.VIVID_LIGHT, // (HEAT) is close
12.91 + BlendingMode.LINEAR_LIGHT, // (GLOW) is close
12.92 + //PIN_LIGHT, missing
12.93 + //HARD_MIX, missing
12.94 + "-",
12.95 + BlendingMode.DIFFERENCE,
12.96 + BlendingMode.EXCLUSION,
12.97 + "-",
12.98 + BlendingMode.HUE, // nowhere close
12.99 + BlendingMode.SATURATION,
12.100 + BlendingMode.COLOR,
12.101 + BlendingMode.LUMINOSITY, // close but not exact
12.102 + };
12.103 +}
13.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
13.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/Canvas.java Wed Apr 29 00:27:46 2009 -0700
13.3 @@ -0,0 +1,308 @@
13.4 +/*
13.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
13.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
13.7 + *
13.8 + * This code is free software; you can redistribute it and/or modify it
13.9 + * under the terms of the GNU General Public License version 2 only, as
13.10 + * published by the Free Software Foundation. Sun designates this
13.11 + * particular file as subject to the "Classpath" exception as provided
13.12 + * by Sun in the LICENSE file that accompanied this code.
13.13 + *
13.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
13.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13.17 + * version 2 for more details (a copy is included in the LICENSE file that
13.18 + * accompanied this code).
13.19 + *
13.20 + * You should have received a copy of the GNU General Public License version
13.21 + * 2 along with this work; if not, write to the Free Software Foundation,
13.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
13.23 + *
13.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
13.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
13.26 + * have any questions.
13.27 + */
13.28 +package org.jdesktop.swingx.designer;
13.29 +
13.30 +import org.jdesktop.beans.AbstractBean;
13.31 +import org.jdesktop.swingx.designer.utils.HasResources;
13.32 +import org.jdesktop.swingx.designer.utils.HasUIDefaults;
13.33 +import org.jibx.runtime.IUnmarshallingContext;
13.34 +
13.35 +import javax.swing.UIDefaults;
13.36 +import java.awt.AlphaComposite;
13.37 +import java.awt.Dimension;
13.38 +import java.awt.Graphics2D;
13.39 +import java.awt.Insets;
13.40 +import java.awt.RenderingHints;
13.41 +import java.awt.image.BufferedImage;
13.42 +import java.beans.PropertyChangeEvent;
13.43 +import java.beans.PropertyChangeListener;
13.44 +import java.io.File;
13.45 +import java.util.ArrayList;
13.46 +import java.util.Collection;
13.47 +import java.util.Collections;
13.48 +import java.util.Iterator;
13.49 +import java.util.List;
13.50 +
13.51 +/**
13.52 + * ComponentRegion
13.53 + *
13.54 + * @author Created by Jasper Potts (May 22, 2007)
13.55 + */
13.56 +public class Canvas extends AbstractBean implements LayerContainer, HasUIDefaults, HasResources {
13.57 + private Dimension size;
13.58 + /** list of all layers in the canvas, the first layer is painted on top */
13.59 + private List<Layer> layers;
13.60 + private int nextLayerNameIndex = 1;
13.61 + private BufferedImage buffer;
13.62 + private boolean isValid = false;
13.63 + private Insets stretchingInsets = null;
13.64 + private Layer workingLayer = null;
13.65 + private PropertyChangeListener layersPropertyChangeListener;
13.66 + private UIDefaults canvasUIDefaults = null;
13.67 + private transient File resourcesDir;
13.68 + private transient File imagesDir;
13.69 + private transient File templatesDir;
13.70 +
13.71 + // =================================================================================================================
13.72 + // Constructor
13.73 +
13.74 + /** Private constructor for JIBX */
13.75 + protected Canvas() {
13.76 + layersPropertyChangeListener = new PropertyChangeListener() {
13.77 + public void propertyChange(PropertyChangeEvent evt) {
13.78 + isValid = false;
13.79 + // pass on layer change
13.80 + int index = layers.indexOf((Layer) evt.getSource());
13.81 + if (index != -1) {
13.82 + firePropertyChange("layers[" + index + "]." + evt.getPropertyName(), evt.getOldValue(),
13.83 + evt.getNewValue());
13.84 + }
13.85 + }
13.86 + };
13.87 + }
13.88 +
13.89 + public Canvas(int width, int height) {
13.90 + this();
13.91 + stretchingInsets = new Insets(1, 1, 1, 1);
13.92 + layers = new ArrayList<Layer>();
13.93 + setSize(new Dimension(width, height));
13.94 + addLayer(new Layer());
13.95 + }
13.96 +
13.97 + // =================================================================================================================
13.98 + // JIBX Methods
13.99 +
13.100 + /**
13.101 + * Called by JIBX before all fields have been set
13.102 + *
13.103 + * @param context The JIBX Unmarshalling Context
13.104 + */
13.105 + private void preSet(IUnmarshallingContext context) {
13.106 + canvasUIDefaults = (UIDefaults) context.getUserContext();
13.107 + }
13.108 +
13.109 + // =================================================================================================================
13.110 + // Bean Methods
13.111 +
13.112 + /**
13.113 + * Get the UIDefaults for this canvas. The UIDefaults is used to store default pallet of colors, fonts etc.
13.114 + *
13.115 + * @return Canvas UIDefaults
13.116 + */
13.117 + public UIDefaults getUiDefaults() {
13.118 + return canvasUIDefaults;
13.119 + }
13.120 +
13.121 + /**
13.122 + * Set the UIDefaults for this canvas. The UIDefaults is used to store default pallet of colors, fonts etc.
13.123 + *
13.124 + * @param canvasUIDefaults Canvas UIDefaults
13.125 + */
13.126 + public void setUiDefaults(UIDefaults canvasUIDefaults) {
13.127 + this.canvasUIDefaults = canvasUIDefaults;
13.128 + }
13.129 +
13.130 + /**
13.131 + * Get the current working layer, is is the layer that new shapes will be drawn into
13.132 + *
13.133 + * @return The current working layer, may be null if there is no working layer
13.134 + */
13.135 + public Layer getWorkingLayer() {
13.136 + return workingLayer;
13.137 + }
13.138 +
13.139 + /**
13.140 + * Set the current working layer, is is the layer that new shapes will be drawn into
13.141 + *
13.142 + * @param workingLayer the new working layer, must be a child of this canvas
13.143 + */
13.144 + public void setWorkingLayer(Layer workingLayer) {
13.145 + Layer old = getWorkingLayer();
13.146 + this.workingLayer = workingLayer;
13.147 + firePropertyChange("workingLayer", old, getWorkingLayer());
13.148 + }
13.149 +
13.150 + public int getNextLayerNameIndex() {
13.151 + return nextLayerNameIndex++;
13.152 + }
13.153 +
13.154 + public Dimension getSize() {
13.155 + return size;
13.156 + }
13.157 +
13.158 + public void setSize(Dimension size) {
13.159 + Dimension old = getSize();
13.160 + this.size = size;
13.161 + buffer = new BufferedImage(this.size.width, this.size.height, BufferedImage.TYPE_INT_ARGB);
13.162 + isValid = false;
13.163 + firePropertyChange("size", old, getSize());
13.164 + }
13.165 +
13.166 +
13.167 + public Insets getStretchingInsets() {
13.168 + return stretchingInsets;
13.169 + }
13.170 +
13.171 + public void setStretchingInsets(Insets stretchingInsets) {
13.172 + Insets old = getStretchingInsets();
13.173 + this.stretchingInsets = stretchingInsets;
13.174 + firePropertyChange("stretchingInsets", old, getStretchingInsets());
13.175 + }
13.176 +
13.177 + public BufferedImage getRenderedImage() {
13.178 + if (!isValid) {
13.179 + Graphics2D g2 = buffer.createGraphics();
13.180 + // clear
13.181 + g2.setComposite(AlphaComposite.Clear);
13.182 + g2.fillRect(0, 0, buffer.getWidth(), buffer.getHeight());
13.183 + // paint
13.184 + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
13.185 + g2.setComposite(AlphaComposite.SrcOver);
13.186 + for (int i = layers.size() - 1; i >= 0; i--) {
13.187 + layers.get(i).paint(g2, 1);
13.188 + }
13.189 + g2.dispose();
13.190 + }
13.191 + return buffer;
13.192 + }
13.193 +
13.194 + /**
13.195 + * @return true if this Canvas has not been edited.
13.196 + * <p/>
13.197 + * TODO Currently this is not a bound property, but should be. That is, when the Canvas becomes edited
13.198 + * (usually due to the Layer having a shape added to it), then a property change event should be fired.
13.199 + */
13.200 + public boolean isBlank() {
13.201 + return layers.size() == 0 || (layers.size() == 1 && layers.get(0).isEmpty());
13.202 + }
13.203 +
13.204 + public File getResourcesDir() {
13.205 + return resourcesDir;
13.206 + }
13.207 +
13.208 + public void setResourcesDir(File resourcesDir) {
13.209 + File old = getResourcesDir();
13.210 + this.resourcesDir = resourcesDir;
13.211 + firePropertyChange("resourcesDir", old, getResourcesDir());
13.212 + }
13.213 +
13.214 + public File getImagesDir() {
13.215 + return imagesDir;
13.216 + }
13.217 +
13.218 + public void setImagesDir(File imagesDir) {
13.219 + File old = getImagesDir();
13.220 + this.imagesDir = imagesDir;
13.221 + firePropertyChange("imagesDir", old, getImagesDir());
13.222 + }
13.223 +
13.224 + public File getTemplatesDir() {
13.225 + return templatesDir;
13.226 + }
13.227 +
13.228 + public void setTemplatesDir(File templatesDir) {
13.229 + File old = getTemplatesDir();
13.230 + this.templatesDir = templatesDir;
13.231 + firePropertyChange("templatesDir", old, getTemplatesDir());
13.232 + }
13.233 +
13.234 + // =================================================================================================================
13.235 + // LayerContainer Methods
13.236 +
13.237 + public LayerContainer getParent() {
13.238 + // we are root so null
13.239 + return null;
13.240 + }
13.241 +
13.242 + public void addLayerToBottom(Layer layer) {
13.243 + layers.add(layer);
13.244 + layer.setParent(this);
13.245 + layer.addPropertyChangeListener(layersPropertyChangeListener);
13.246 + // no single layer changes so fire all changed event
13.247 + firePropertyChange("layers", null, layers);
13.248 + }
13.249 +
13.250 + public void addLayer(int i, Layer layer) {
13.251 + layers.add(i, layer);
13.252 + layer.setParent(this);
13.253 + layer.addPropertyChangeListener(layersPropertyChangeListener);
13.254 + // no single layer changes so fire all changed event
13.255 + firePropertyChange("layers", null, layers);
13.256 + }
13.257 +
13.258 + public void addLayer(Layer layer) {
13.259 + layers.add(0, layer);
13.260 + layer.setParent(this);
13.261 + layer.addPropertyChangeListener(layersPropertyChangeListener);
13.262 + // no single layer changes so fire all changed event
13.263 + firePropertyChange("layers", null, layers);
13.264 + }
13.265 +
13.266 + public Layer getLayer(int index) {
13.267 + return layers.get(index);
13.268 + }
13.269 +
13.270 + public int getLayerCount() {
13.271 + return layers.size();
13.272 + }
13.273 +
13.274 + public Iterator<Layer> getLayerIterator() {
13.275 + return Collections.unmodifiableList(layers).iterator();
13.276 + }
13.277 +
13.278 + public Collection<Layer> getLayers() {
13.279 + return Collections.unmodifiableList(layers);
13.280 + }
13.281 +
13.282 + public int indexOfLayer(Layer layer) {
13.283 + return layers.indexOf(layer);
13.284 + }
13.285 +
13.286 + public void removeLayer(Layer layer) {
13.287 + int index = layers.indexOf(layer);
13.288 + if (index != -1) {
13.289 + layers.remove(layer);
13.290 + layer.removePropertyChangeListener(layersPropertyChangeListener);
13.291 + fireIndexedPropertyChange("layers", index, layer, null);
13.292 + }
13.293 + }
13.294 +
13.295 + public Dimension getRootSize() {
13.296 + return getSize();
13.297 + }
13.298 +
13.299 + // =================================================================================================================
13.300 + // JIBX Helper Methods
13.301 +
13.302 + /** Called by JIBX after "layers" has been filled so we can set parents and listeners */
13.303 + private void setupLayers() {
13.304 + for (Layer layer : layers) {
13.305 + layer.setParent(this);
13.306 + layer.addPropertyChangeListener(layersPropertyChangeListener);
13.307 + }
13.308 + // no single layer changes so fire all changed event
13.309 + firePropertyChange("layers", null, layers);
13.310 + }
13.311 +}
14.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
14.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/ControlPoint.java Wed Apr 29 00:27:46 2009 -0700
14.3 @@ -0,0 +1,157 @@
14.4 +/*
14.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
14.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
14.7 + *
14.8 + * This code is free software; you can redistribute it and/or modify it
14.9 + * under the terms of the GNU General Public License version 2 only, as
14.10 + * published by the Free Software Foundation. Sun designates this
14.11 + * particular file as subject to the "Classpath" exception as provided
14.12 + * by Sun in the LICENSE file that accompanied this code.
14.13 + *
14.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
14.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14.17 + * version 2 for more details (a copy is included in the LICENSE file that
14.18 + * accompanied this code).
14.19 + *
14.20 + * You should have received a copy of the GNU General Public License version
14.21 + * 2 along with this work; if not, write to the Free Software Foundation,
14.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
14.23 + *
14.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
14.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
14.26 + * have any questions.
14.27 + */
14.28 +package org.jdesktop.swingx.designer;
14.29 +
14.30 +import java.awt.BasicStroke;
14.31 +import java.awt.Color;
14.32 +import java.awt.Graphics2D;
14.33 +import java.awt.Shape;
14.34 +import java.awt.geom.Point2D;
14.35 +import java.awt.geom.Rectangle2D;
14.36 +import java.beans.PropertyChangeEvent;
14.37 +import java.beans.PropertyChangeListener;
14.38 +import java.util.Collections;
14.39 +import java.util.List;
14.40 +
14.41 +/**
14.42 + * ControlPoint
14.43 + *
14.44 + * @author Created by Jasper Potts (May 24, 2007)
14.45 + */
14.46 +public class ControlPoint extends SimpleShape {
14.47 + protected Color fillColor;
14.48 + protected Color lineColor;
14.49 + protected DoubleBean x, y;
14.50 +
14.51 + public ControlPoint() {
14.52 + this(new DoubleBean(), new DoubleBean());
14.53 + }
14.54 +
14.55 + public ControlPoint(Color fillColor, Color lineColor) {
14.56 + this(new DoubleBean(), new DoubleBean(), fillColor, lineColor);
14.57 + }
14.58 +
14.59 + public ControlPoint(double x, double y) {
14.60 + this(new DoubleBean(x), new DoubleBean(y));
14.61 + }
14.62 +
14.63 + public ControlPoint(DoubleBean x, DoubleBean y) {
14.64 + this(x, y, GraphicsHelper.CONTROL_POINT_FILL, GraphicsHelper.CONTROL_POINT_LINE);
14.65 + }
14.66 +
14.67 + public ControlPoint(DoubleBean x, DoubleBean y, Color fillColor, Color lineColor) {
14.68 + this.x = x;
14.69 + this.y = y;
14.70 + this.fillColor = fillColor;
14.71 + this.lineColor = lineColor;
14.72 + x.addPropertyChangeListener(new PropertyChangeListener() {
14.73 + public void propertyChange(PropertyChangeEvent evt) {
14.74 + firePropertyChange("position",
14.75 + new Point2D.Double((Double) evt.getOldValue(), getY()),
14.76 + getPosition());
14.77 + }
14.78 + });
14.79 + y.addPropertyChangeListener(new PropertyChangeListener() {
14.80 + public void propertyChange(PropertyChangeEvent evt) {
14.81 + firePropertyChange("position",
14.82 + new Point2D.Double(getX(), (Double) evt.getOldValue()),
14.83 + getPosition());
14.84 + }
14.85 + });
14.86 + }
14.87 +
14.88 + public double getX() {
14.89 + return x.getValue();
14.90 + }
14.91 +
14.92 + public double getY() {
14.93 + return y.getValue();
14.94 + }
14.95 +
14.96 + public void setX(double x) {
14.97 + this.x.setValue(x);
14.98 + }
14.99 +
14.100 + public void setY(double y) {
14.101 + this.y.setValue(y);
14.102 + }
14.103 +
14.104 + public void setPosition(Point2D position) {
14.105 + x.setValue(position.getX());
14.106 + y.setValue(position.getY());
14.107 + }
14.108 +
14.109 + public void setPosition(double x, double y) {
14.110 + setPosition(new Point2D.Double(x, y));
14.111 + }
14.112 +
14.113 + public Point2D getPosition() {
14.114 + return new Point2D.Double(getX(), getY());
14.115 + }
14.116 +
14.117 + public Rectangle2D getBounds(double pixelSize) {
14.118 + double size = pixelSize * 4d;
14.119 + return new Rectangle2D.Double(getX() - size, getY() - size,
14.120 + size * 2, size * 2);
14.121 + }
14.122 +
14.123 + public boolean isHit(Point2D p, double pixelSize) {
14.124 + return getBounds(pixelSize).contains(p);
14.125 + }
14.126 +
14.127 +
14.128 + public Shape getShape() {
14.129 + return getBounds(0);
14.130 + }
14.131 +
14.132 + public void paint(Graphics2D g2, double pixelSize) {
14.133 + }
14.134 +
14.135 + public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) {
14.136 + g2.setStroke(new BasicStroke((float) pixelSize));
14.137 + Shape s = getBounds(pixelSize);
14.138 + g2.setColor(fillColor);
14.139 + g2.fill(s);
14.140 + g2.setColor(lineColor);
14.141 + g2.draw(s);
14.142 + }
14.143 +
14.144 + public List<ControlPoint> getControlPoints() {
14.145 + return Collections.emptyList();
14.146 + }
14.147 +
14.148 +
14.149 + public void move(double moveX, double moveY, boolean snapPixels) {
14.150 + if (snapPixels) {
14.151 + setPosition(
14.152 + Math.round(x.getValue() + moveX),
14.153 + Math.round(y.getValue() + moveY));
14.154 + } else {
14.155 + setPosition(x.getValue() + moveX, y.getValue() + moveY);
14.156 + }
14.157 + }
14.158 +
14.159 +
14.160 +}
15.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
15.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/Designer.jibx.xml Wed Apr 29 00:27:46 2009 -0700
15.3 @@ -0,0 +1,173 @@
15.4 +<?xml version="1.0" encoding="UTF-8"?>
15.5 +
15.6 +<!--
15.7 + Copyright 1998-2004 Sun Microsystems, Inc. All Rights Reserved.
15.8 + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
15.9 +
15.10 + This code is free software; you can redistribute it and/or modify it
15.11 + under the terms of the GNU General Public License version 2 only, as
15.12 + published by the Free Software Foundation. Sun designates this
15.13 + particular file as subject to the "Classpath" exception as provided
15.14 + by Sun in the LICENSE file that accompanied this code.
15.15 +
15.16 + This code is distributed in the hope that it will be useful, but WITHOUT
15.17 + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15.18 + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15.19 + version 2 for more details (a copy is included in the LICENSE file that
15.20 + accompanied this code).
15.21 +
15.22 + You should have received a copy of the GNU General Public License version
15.23 + 2 along with this work; if not, write to the Free Software Foundation,
15.24 + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
15.25 +
15.26 + Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
15.27 + CA 95054 USA or visit www.sun.com if you need additional information or
15.28 + have any questions.
15.29 +-->
15.30 +
15.31 +<!DOCTYPE binding SYSTEM "http://jibx.sourceforge.net">
15.32 +<binding>
15.33 + <!-- == PAINTS =========================================================================================== -->
15.34 + <mapping class="java.awt.Color"
15.35 + marshaller="org.jdesktop.swingx.designer.jibxhelpers.ColorMapper"
15.36 + unmarshaller="org.jdesktop.swingx.designer.jibxhelpers.ColorMapper"/>
15.37 + <mapping name="matte" class="org.jdesktop.swingx.designer.paint.Matte" post-set="postSet">
15.38 + <value name="red" field="red" style="attribute"/>
15.39 + <value name="green" field="green" style="attribute"/>
15.40 + <value name="blue" field="blue" style="attribute"/>
15.41 + <value name="alpha" field="alpha" style="attribute"/>
15.42 + <value name="uiDefaultParentName" field="uiDefaultParentName" style="attribute" usage="optional"/>
15.43 + <value name="componentPropertyName" field="componentPropertyName" style="attribute" usage="optional"/>
15.44 + <value name="hueOffset" field="hueOffset" style="attribute"/>
15.45 + <value name="saturationOffset" field="saturationOffset" style="attribute"/>
15.46 + <value name="brightnessOffset" field="brightnessOffset" style="attribute"/>
15.47 + <value name="alphaOffset" field="alphaOffset" style="attribute"/>
15.48 + <value name="uiResource" field="uiResource" style="attribute" usage="optional" default="true"/>
15.49 + </mapping>
15.50 + <mapping class="org.jdesktop.swingx.designer.paint.AbstractGradient" abstract="true">
15.51 + <value name="cycleMethod" field="cycleMethod" style="attribute"/>
15.52 + <collection field="stops" set-method="setStops" pre-set="clear" create-type="java.util.ArrayList">
15.53 + <structure name="stop" type="org.jdesktop.swingx.designer.paint.GradientStop">
15.54 + <value name="position" field="position" style="attribute"/>
15.55 + <value name="midpoint" field="midpoint" style="attribute"/>
15.56 + <structure field="color" set-method="setColor"/>
15.57 + </structure>
15.58 + </collection>
15.59 + </mapping>
15.60 + <mapping name="gradient" class="org.jdesktop.swingx.designer.paint.Gradient"
15.61 + extends="org.jdesktop.swingx.designer.paint.AbstractGradient">
15.62 + <structure map-as="org.jdesktop.swingx.designer.paint.AbstractGradient"/>
15.63 + </mapping>
15.64 + <mapping name="radialGradient" class="org.jdesktop.swingx.designer.paint.RadialGradient"
15.65 + extends="org.jdesktop.swingx.designer.paint.AbstractGradient">
15.66 + <structure map-as="org.jdesktop.swingx.designer.paint.AbstractGradient"/>
15.67 + </mapping>
15.68 + <!-- == SHAPES =========================================================================================== -->
15.69 + <mapping class="org.jdesktop.swingx.designer.SimpleShape" abstract="true">
15.70 + <!--protected AffineTransform transform = new AffineTransform();-->
15.71 + </mapping>
15.72 + <mapping class="org.jdesktop.swingx.designer.PaintedShape" abstract="true"
15.73 + extends="org.jdesktop.swingx.designer.SimpleShape">
15.74 + <structure map-as="org.jdesktop.swingx.designer.SimpleShape"/>
15.75 + <structure field="paint"/>
15.76 + <structure name="paintPoints">
15.77 + <value name="x1" get-method="getPaintX1" set-method="setPaintX1" style="attribute"/>
15.78 + <value name="y1" get-method="getPaintY1" set-method="setPaintY1" style="attribute"/>
15.79 + <value name="x2" get-method="getPaintX2" set-method="setPaintX2" style="attribute"/>
15.80 + <value name="y2" get-method="getPaintY2" set-method="setPaintY2" style="attribute"/>
15.81 + </structure>
15.82 + </mapping>
15.83 + <mapping name="rectangle" class="org.jdesktop.swingx.designer.RectangleShape"
15.84 + extends="org.jdesktop.swingx.designer.PaintedShape">
15.85 + <structure map-as="org.jdesktop.swingx.designer.PaintedShape"/>
15.86 + <value name="x1" get-method="getX1" set-method="setX1" style="attribute"/>
15.87 + <value name="x2" get-method="getX2" set-method="setX2" style="attribute"/>
15.88 + <value name="y1" get-method="getY1" set-method="setY1" style="attribute"/>
15.89 + <value name="y2" get-method="getY2" set-method="setY2" style="attribute"/>
15.90 + <value name="rounding" get-method="getRounding" set-method="setRounding" style="attribute"/>
15.91 + </mapping>
15.92 + <mapping name="ellipse" class="org.jdesktop.swingx.designer.EllipseShape"
15.93 + extends="org.jdesktop.swingx.designer.PaintedShape">
15.94 + <structure map-as="org.jdesktop.swingx.designer.PaintedShape"/>
15.95 + <value name="x1" get-method="getX1" set-method="setX1" style="attribute"/>
15.96 + <value name="x2" get-method="getX2" set-method="setX2" style="attribute"/>
15.97 + <value name="y1" get-method="getY1" set-method="setY1" style="attribute"/>
15.98 + <value name="y2" get-method="getY2" set-method="setY2" style="attribute"/>
15.99 + </mapping>
15.100 + <mapping name="path" class="org.jdesktop.swingx.designer.PathShape"
15.101 + extends="org.jdesktop.swingx.designer.PaintedShape">
15.102 + <structure map-as="org.jdesktop.swingx.designer.PaintedShape"/>
15.103 + <collection name="points" get-method="getBezierControlPoints"
15.104 + set-method="setControlPoints" create-type="java.util.ArrayList">
15.105 + <structure name="point" type="org.jdesktop.swingx.designer.BezierControlPoint">
15.106 + <value name="x" get-method="getX" set-method="setX" style="attribute"/>
15.107 + <value name="y" get-method="getY" set-method="setY" style="attribute"/>
15.108 + <value name="cp1x" get-method="getCp1X" set-method="setCp1X" style="attribute"/>
15.109 + <value name="cp1y" get-method="getCp1Y" set-method="setCp1Y" style="attribute"/>
15.110 + <value name="cp2x" get-method="getCp2X" set-method="setCp2X" style="attribute"/>
15.111 + <value name="cp2y" get-method="getCp2Y" set-method="setCp2Y" style="attribute"/>
15.112 + </structure>
15.113 + </collection>
15.114 + </mapping>
15.115 + <!-- == EFFECTS =========================================================================================== -->
15.116 + <mapping class="org.jdesktop.swingx.designer.effects.ShadowEffect" abstract="true">
15.117 + <structure field="color"/>
15.118 + <value name="blendingMode" field="blendingMode" style="attribute"/>
15.119 + <value name="opacity" field="opacity" style="attribute"/>
15.120 + <value name="angle" field="angle" style="attribute"/>
15.121 + <value name="distance" field="distance" style="attribute"/>
15.122 + <value name="spread" field="spread" style="attribute"/>
15.123 + <value name="size" field="size" style="attribute"/>
15.124 + </mapping>
15.125 + <mapping name="dropShadow" class="org.jdesktop.swingx.designer.effects.DropShadowEffect"
15.126 + extends="org.jdesktop.swingx.designer.effects.ShadowEffect">
15.127 + <structure map-as="org.jdesktop.swingx.designer.effects.ShadowEffect"/>
15.128 + </mapping>
15.129 + <mapping name="innerShadow" class="org.jdesktop.swingx.designer.effects.InnerShadowEffect"
15.130 + extends="org.jdesktop.swingx.designer.effects.ShadowEffect">
15.131 + <structure map-as="org.jdesktop.swingx.designer.effects.ShadowEffect"/>
15.132 + </mapping>
15.133 + <mapping name="innerGlow" class="org.jdesktop.swingx.designer.effects.InnerGlowEffect"
15.134 + extends="org.jdesktop.swingx.designer.effects.ShadowEffect">
15.135 + <structure map-as="org.jdesktop.swingx.designer.effects.ShadowEffect"/>
15.136 + </mapping>
15.137 + <mapping name="outerGlow" class="org.jdesktop.swingx.designer.effects.OuterGlowEffect"
15.138 + extends="org.jdesktop.swingx.designer.effects.ShadowEffect">
15.139 + <structure map-as="org.jdesktop.swingx.designer.effects.ShadowEffect"/>
15.140 + </mapping>
15.141 + <!-- == TEMPLATE LAYER ================================================================================== -->
15.142 + <mapping name="templateLayer" class="org.jdesktop.swingx.designer.TemplateLayer"
15.143 + extends="org.jdesktop.swingx.designer.Layer" post-set="postInit">
15.144 + <structure map-as="org.jdesktop.swingx.designer.Layer"/>
15.145 + <value name="fileName" field="fileName" style="attribute"/>
15.146 + </mapping>
15.147 + <!-- == LAYER =========================================================================================== -->
15.148 + <mapping name="layer" class="org.jdesktop.swingx.designer.Layer"
15.149 + extends="org.jdesktop.swingx.designer.SimpleShape" post-set="postInit">
15.150 + <structure map-as="org.jdesktop.swingx.designer.SimpleShape"/>
15.151 + <value name="name" field="name" style="attribute"/>
15.152 + <value name="type" field="type" style="attribute" default="standard"/>
15.153 + <value name="opacity" field="opacity"/>
15.154 + <value name="fillOpacity" field="fillOpacity"/>
15.155 + <value name="blendingMode" field="blendingMode"/>
15.156 + <value name="locked" field="locked"/>
15.157 + <value name="visible" field="visible"/>
15.158 + <structure name="shapes">
15.159 + <collection field="shapes" create-type="java.util.ArrayList"/>
15.160 + </structure>
15.161 + <structure name="effects">
15.162 + <collection field="effects" create-type="java.util.ArrayList"/>
15.163 + </structure>
15.164 + </mapping>
15.165 + <!-- == CANVAS =========================================================================================== -->
15.166 + <mapping name="canvas" class="org.jdesktop.swingx.designer.Canvas" pre-set="preSet" post-set="setupLayers">
15.167 + <structure name="size" get-method="getSize" set-method="setSize"
15.168 + marshaller="org.jdesktop.swingx.designer.jibxhelpers.DimensionMapper"
15.169 + unmarshaller="org.jdesktop.swingx.designer.jibxhelpers.DimensionMapper"/>
15.170 + <value name="nextLayerNameIndex" field="nextLayerNameIndex"/>
15.171 + <structure name="stretchingInsets" field="stretchingInsets"
15.172 + marshaller="org.jdesktop.swingx.designer.jibxhelpers.InsetsMapper"
15.173 + unmarshaller="org.jdesktop.swingx.designer.jibxhelpers.InsetsMapper"/>
15.174 + <collection field="layers" create-type="java.util.ArrayList"/>
15.175 + </mapping>
15.176 +</binding>
16.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
16.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/DoubleBean.java Wed Apr 29 00:27:46 2009 -0700
16.3 @@ -0,0 +1,69 @@
16.4 +/*
16.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
16.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
16.7 + *
16.8 + * This code is free software; you can redistribute it and/or modify it
16.9 + * under the terms of the GNU General Public License version 2 only, as
16.10 + * published by the Free Software Foundation. Sun designates this
16.11 + * particular file as subject to the "Classpath" exception as provided
16.12 + * by Sun in the LICENSE file that accompanied this code.
16.13 + *
16.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
16.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16.17 + * version 2 for more details (a copy is included in the LICENSE file that
16.18 + * accompanied this code).
16.19 + *
16.20 + * You should have received a copy of the GNU General Public License version
16.21 + * 2 along with this work; if not, write to the Free Software Foundation,
16.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
16.23 + *
16.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
16.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
16.26 + * have any questions.
16.27 + */
16.28 +package org.jdesktop.swingx.designer;
16.29 +
16.30 +import org.jdesktop.beans.AbstractBean;
16.31 +
16.32 +/**
16.33 + * DoubleBean - Simple bean for a observable double value
16.34 + *
16.35 + * @author Created by Jasper Potts (May 25, 2007)
16.36 + */
16.37 +public class DoubleBean extends AbstractBean {
16.38 + private double value = 0;
16.39 +
16.40 + public DoubleBean() {}
16.41 +
16.42 + public DoubleBean(double value) {
16.43 + this.value = value;
16.44 + }
16.45 +
16.46 + public double getValue() {
16.47 + return value;
16.48 + }
16.49 +
16.50 + public void setValue(double value) {
16.51 + double old = this.value;
16.52 + this.value = value;
16.53 + firePropertyChange("value", old, this.value);
16.54 + }
16.55 +
16.56 +
16.57 + public boolean equals(Object o) {
16.58 + if (this == o) return true;
16.59 + if (o == null || getClass() != o.getClass()) return false;
16.60 +
16.61 + DoubleBean that = (DoubleBean) o;
16.62 +
16.63 + if (Double.compare(that.value, value) != 0) return false;
16.64 +
16.65 + return true;
16.66 + }
16.67 +
16.68 + public int hashCode() {
16.69 + long temp = value != +0.0d ? Double.doubleToLongBits(value) : 0L;
16.70 + return (int) (temp ^ (temp >>> 32));
16.71 + }
16.72 +}
17.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
17.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/EllipseShape.java Wed Apr 29 00:27:46 2009 -0700
17.3 @@ -0,0 +1,189 @@
17.4 +/*
17.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
17.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
17.7 + *
17.8 + * This code is free software; you can redistribute it and/or modify it
17.9 + * under the terms of the GNU General Public License version 2 only, as
17.10 + * published by the Free Software Foundation. Sun designates this
17.11 + * particular file as subject to the "Classpath" exception as provided
17.12 + * by Sun in the LICENSE file that accompanied this code.
17.13 + *
17.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
17.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
17.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
17.17 + * version 2 for more details (a copy is included in the LICENSE file that
17.18 + * accompanied this code).
17.19 + *
17.20 + * You should have received a copy of the GNU General Public License version
17.21 + * 2 along with this work; if not, write to the Free Software Foundation,
17.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
17.23 + *
17.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
17.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
17.26 + * have any questions.
17.27 + */
17.28 +package org.jdesktop.swingx.designer;
17.29 +
17.30 +import javax.swing.*;
17.31 +import java.awt.*;
17.32 +import java.awt.geom.Ellipse2D;
17.33 +import java.awt.geom.Point2D;
17.34 +import java.awt.geom.Rectangle2D;
17.35 +import java.beans.PropertyChangeEvent;
17.36 +import java.beans.PropertyChangeListener;
17.37 +import java.util.ArrayList;
17.38 +import java.util.List;
17.39 +
17.40 +/**
17.41 + * EllipseShape
17.42 + *
17.43 + * @author Created by Jasper Potts (May 22, 2007)
17.44 + */
17.45 +public class EllipseShape extends PaintedShape {
17.46 +
17.47 + private DoubleBean x1 = new DoubleBean();
17.48 + private DoubleBean x2 = new DoubleBean();
17.49 + private DoubleBean y1 = new DoubleBean();
17.50 + private DoubleBean y2 = new DoubleBean();
17.51 + private ControlPoint tl = new ControlPoint(x1, y1);
17.52 + private ControlPoint tr = new ControlPoint(x2, y1);
17.53 + private ControlPoint bl = new ControlPoint(x1, y2);
17.54 + private ControlPoint br = new ControlPoint(x2, y2);
17.55 +
17.56 + // =================================================================================================================
17.57 + // Constructors
17.58 +
17.59 + /** private noargs constructor for JIBX */
17.60 + private EllipseShape() {
17.61 + this(null);
17.62 + }
17.63 +
17.64 + public EllipseShape(UIDefaults canvasUiDefaults) {
17.65 + super(canvasUiDefaults);
17.66 + PropertyChangeListener listener = new PropertyChangeListener() {
17.67 + public void propertyChange(PropertyChangeEvent evt) {
17.68 + firePropertyChange("bounds", null, getBounds(0));
17.69 + }
17.70 + };
17.71 + x1.addPropertyChangeListener(listener);
17.72 + y1.addPropertyChangeListener(listener);
17.73 + x2.addPropertyChangeListener(listener);
17.74 + y2.addPropertyChangeListener(listener);
17.75 + }
17.76 +
17.77 + public EllipseShape(double x, double y, double w, double h) {
17.78 + this();
17.79 + x1.setValue(x);
17.80 + y1.setValue(y);
17.81 + x2.setValue(x + w);
17.82 + y2.setValue(y + h);
17.83 + }
17.84 +
17.85 + public Rectangle2D getBounds(double pixelSize) {
17.86 + double left = Math.min(x1.getValue(), x2.getValue());
17.87 + double right = Math.max(x1.getValue(), x2.getValue());
17.88 + double top = Math.min(y1.getValue(), y2.getValue());
17.89 + double bottom = Math.max(y1.getValue(), y2.getValue());
17.90 + return new Rectangle2D.Double(left, top, right - left, bottom - top);
17.91 + }
17.92 +
17.93 + public Ellipse2D getShape() {
17.94 + double left = Math.min(x1.getValue(), x2.getValue());
17.95 + double right = Math.max(x1.getValue(), x2.getValue());
17.96 + double top = Math.min(y1.getValue(), y2.getValue());
17.97 + double bottom = Math.max(y1.getValue(), y2.getValue());
17.98 + return new Ellipse2D.Double(left, top, right - left, bottom - top);
17.99 + }
17.100 +
17.101 + public boolean isHit(Point2D p, double pixelSize) {
17.102 + return getBounds(pixelSize).contains(p);
17.103 + }
17.104 +
17.105 + public void paint(Graphics2D g2, double pixelSize) {
17.106 + g2.setPaint(getPaint());
17.107 + g2.fill(getShape());
17.108 + }
17.109 +
17.110 + public void setFrame(double x1, double y1, double x2, double y2) {
17.111 + this.x1.setValue(x1);
17.112 + this.y1.setValue(y1);
17.113 + this.x2.setValue(x2);
17.114 + this.y2.setValue(y2);
17.115 + }
17.116 +
17.117 + @Override
17.118 + public String toString() {
17.119 + Rectangle2D bounds = getBounds(0);
17.120 + return "ELLIPSE { x=" + bounds.getX() + ", y=" + bounds.getY() + ", w=" + bounds.getWidth() + ", h=" + bounds.getHeight() + " }";
17.121 + }
17.122 +
17.123 + public List<ControlPoint> getControlPoints() {
17.124 + List<ControlPoint> points = new ArrayList<ControlPoint>();
17.125 + points.addAll(super.getControlPoints());
17.126 + points.add(tl);
17.127 + points.add(tr);
17.128 + points.add(bl);
17.129 + points.add(br);
17.130 + return points;
17.131 + }
17.132 +
17.133 + public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) {
17.134 + if (paintControlLines) {
17.135 + g2.setStroke(new BasicStroke((float) pixelSize));
17.136 + g2.setColor(GraphicsHelper.CONTROL_LINE);
17.137 + g2.draw(getShape());
17.138 + }
17.139 + tl.paintControls(g2, pixelSize, true);
17.140 + tr.paintControls(g2, pixelSize, true);
17.141 + bl.paintControls(g2, pixelSize, true);
17.142 + br.paintControls(g2, pixelSize, true);
17.143 +// super.paintControls(g2, pixelSize, paintControlLines);
17.144 + }
17.145 +
17.146 + public void move(double moveX, double moveY, boolean snapPixels) {
17.147 + if (snapPixels) {
17.148 + x1.setValue(Math.round(x1.getValue() + moveX));
17.149 + x2.setValue(Math.round(x2.getValue() + moveX));
17.150 + y1.setValue(Math.round(y1.getValue() + moveY));
17.151 + y2.setValue(Math.round(y2.getValue() + moveY));
17.152 + } else {
17.153 + x1.setValue(x1.getValue() + moveX);
17.154 + x2.setValue(x2.getValue() + moveX);
17.155 + y1.setValue(y1.getValue() + moveY);
17.156 + y2.setValue(y2.getValue() + moveY);
17.157 + }
17.158 + }
17.159 +
17.160 + public double getX1() {
17.161 + return x1.getValue();
17.162 + }
17.163 +
17.164 + public void setX1(double x1) {
17.165 + this.x1.setValue(x1);
17.166 + }
17.167 +
17.168 + public double getX2() {
17.169 + return x2.getValue();
17.170 + }
17.171 +
17.172 + public void setX2(double x2) {
17.173 + this.x2.setValue(x2);
17.174 + }
17.175 +
17.176 + public double getY1() {
17.177 + return y1.getValue();
17.178 + }
17.179 +
17.180 + public void setY1(double y1) {
17.181 + this.y1.setValue(y1);
17.182 + }
17.183 +
17.184 + public double getY2() {
17.185 + return y2.getValue();
17.186 + }
17.187 +
17.188 + public void setY2(double y2) {
17.189 + this.y2.setValue(y2);
17.190 + }
17.191 +
17.192 +}
18.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
18.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/GraphicsHelper.java Wed Apr 29 00:27:46 2009 -0700
18.3 @@ -0,0 +1,45 @@
18.4 +/*
18.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
18.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
18.7 + *
18.8 + * This code is free software; you can redistribute it and/or modify it
18.9 + * under the terms of the GNU General Public License version 2 only, as
18.10 + * published by the Free Software Foundation. Sun designates this
18.11 + * particular file as subject to the "Classpath" exception as provided
18.12 + * by Sun in the LICENSE file that accompanied this code.
18.13 + *
18.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
18.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
18.17 + * version 2 for more details (a copy is included in the LICENSE file that
18.18 + * accompanied this code).
18.19 + *
18.20 + * You should have received a copy of the GNU General Public License version
18.21 + * 2 along with this work; if not, write to the Free Software Foundation,
18.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18.23 + *
18.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
18.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
18.26 + * have any questions.
18.27 + */
18.28 +package org.jdesktop.swingx.designer;
18.29 +
18.30 +import java.awt.Color;
18.31 +
18.32 +/**
18.33 + * GraphicsHelper
18.34 + *
18.35 + * @author Created by Jasper Potts (May 29, 2007)
18.36 + */
18.37 +public class GraphicsHelper {
18.38 + public static final Color FILL_LINE = Color.BLUE;
18.39 + public static final Color FILL_CP_LINE = Color.BLUE;
18.40 + public static final Color FILL_CP_FILL = Color.WHITE;
18.41 + public static final Color CONTROL_LINE = Color.RED;
18.42 + public static final Color CONTROL_POINT_LINE = Color.RED;
18.43 + public static final Color CONTROL_POINT_FILL = Color.WHITE;
18.44 + public static final Color BEZIER_CONTROL_POINT_LINE = CONTROL_POINT_LINE;
18.45 + public static final Color BEZIER_CONTROL_POINT_FILL = CONTROL_POINT_FILL;
18.46 + public static final Color BEZIER_CONTROL_LINE = Color.DARK_GRAY;
18.47 +
18.48 +}
19.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
19.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/Layer.java Wed Apr 29 00:27:46 2009 -0700
19.3 @@ -0,0 +1,443 @@
19.4 +/*
19.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
19.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
19.7 + *
19.8 + * This code is free software; you can redistribute it and/or modify it
19.9 + * under the terms of the GNU General Public License version 2 only, as
19.10 + * published by the Free Software Foundation. Sun designates this
19.11 + * particular file as subject to the "Classpath" exception as provided
19.12 + * by Sun in the LICENSE file that accompanied this code.
19.13 + *
19.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
19.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19.17 + * version 2 for more details (a copy is included in the LICENSE file that
19.18 + * accompanied this code).
19.19 + *
19.20 + * You should have received a copy of the GNU General Public License version
19.21 + * 2 along with this work; if not, write to the Free Software Foundation,
19.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19.23 + *
19.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
19.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
19.26 + * have any questions.
19.27 + */
19.28 +package org.jdesktop.swingx.designer;
19.29 +
19.30 +import org.jdesktop.swingx.designer.effects.Effect;
19.31 +
19.32 +import java.awt.Dimension;
19.33 +import java.awt.Graphics2D;
19.34 +import java.awt.Shape;
19.35 +import java.awt.geom.Point2D;
19.36 +import java.awt.geom.Rectangle2D;
19.37 +import java.awt.image.BufferedImage;
19.38 +import java.beans.PropertyChangeEvent;
19.39 +import java.beans.PropertyChangeListener;
19.40 +import java.util.ArrayList;
19.41 +import java.util.Collection;
19.42 +import java.util.Collections;
19.43 +import java.util.Iterator;
19.44 +import java.util.List;
19.45 +
19.46 +/**
19.47 + * Layer
19.48 + *
19.49 + * @author Created by Jasper Potts (May 22, 2007)
19.50 + */
19.51 +public class Layer extends SimpleShape implements Iterable<SimpleShape>, LayerContainer {
19.52 + public static enum LayerType {
19.53 + standard, template
19.54 + }
19.55 +
19.56 + private String name;
19.57 + protected LayerType type = LayerType.standard;
19.58 + /** List of shapes in this layer, first shape is painted on top */
19.59 + private List<SimpleShape> shapes = new ArrayList<SimpleShape>();
19.60 + private List<Effect> effects = new ArrayList<Effect>();
19.61 + private double opacity = 1;
19.62 + private double fillOpacity = 1;
19.63 + private BlendingMode blendingMode = BlendingMode.NORMAL;
19.64 + private boolean locked = false;
19.65 + private boolean visible = true;
19.66 + private PropertyChangeListener shapeChangeListener = new PropertyChangeListener() {
19.67 + public void propertyChange(PropertyChangeEvent evt) {
19.68 + int index = shapes.indexOf((SimpleShape) evt.getSource());
19.69 + firePropertyChange("shapes[" + index + "]." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
19.70 + }
19.71 + };
19.72 + private PropertyChangeListener effectChangeListener = new PropertyChangeListener() {
19.73 + public void propertyChange(PropertyChangeEvent evt) {
19.74 + int index = effects.indexOf((Effect) evt.getSource());
19.75 + System.out.println(
19.76 + "Layer.propertyChange EFFECT PROPERTY CHANGED " + evt.getSource() + " -- " + evt.getPropertyName());
19.77 + firePropertyChange("effects[" + index + "]." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
19.78 + }
19.79 + };
19.80 + private BufferedImage buffer = null;
19.81 + // =================================================================================================================
19.82 + // Constructors
19.83 +
19.84 + public Layer() {
19.85 + }
19.86 +
19.87 + public Layer(String name) {
19.88 + this();
19.89 + this.name = name;
19.90 + }
19.91 +
19.92 + /** Called by JIBX after populating this layer so we can add listeners to children */
19.93 + protected void postInit() {
19.94 + for (SimpleShape shape : shapes) {
19.95 + shape.addPropertyChangeListener(shapeChangeListener);
19.96 + shape.setParent(this);
19.97 + }
19.98 + for (Effect effect : effects) {
19.99 + effect.addPropertyChangeListener(effectChangeListener);
19.100 + }
19.101 + }
19.102 +
19.103 + // =================================================================================================================
19.104 + // Bean Methods
19.105 +
19.106 + public LayerType getType() {
19.107 + return type;
19.108 + }
19.109 +
19.110 + public boolean isLocked() {
19.111 + return locked;
19.112 + }
19.113 +
19.114 + public void setLocked(boolean locked) {
19.115 + boolean old = isLocked();
19.116 + this.locked = locked;
19.117 + firePropertyChange("locked", old, isLocked());
19.118 + }
19.119 +
19.120 + public boolean isVisible() {
19.121 + return visible;
19.122 + }
19.123 +
19.124 + public void setVisible(boolean visible) {
19.125 + boolean old = isVisible();
19.126 + this.visible = visible;
19.127 + firePropertyChange("visible", old, isVisible());
19.128 + }
19.129 +
19.130 + public String getName() {
19.131 + return name;
19.132 + }
19.133 +
19.134 + public void setName(String name) {
19.135 + String old = getName();
19.136 + this.name = name;
19.137 + firePropertyChange("name", old, getName());
19.138 + }
19.139 +
19.140 + public void setParent(LayerContainer parent) {
19.141 + super.setParent(parent);
19.142 + // generate a name if null
19.143 + if (name == null) {
19.144 + Canvas c = null;
19.145 + LayerContainer p = parent;
19.146 + while (true) {
19.147 + if (p instanceof Canvas) {
19.148 + c = (Canvas) p;
19.149 + break;
19.150 + } else if (p == null) {
19.151 + break;
19.152 + }
19.153 + p = p.getParent();
19.154 + }
19.155 + if (c != null) {
19.156 + setName("Layer " + c.getNextLayerNameIndex());
19.157 + }
19.158 + }
19.159 + }
19.160 +
19.161 + /**
19.162 + * Add shape to top of layer so it paints above all other shapes
19.163 + *
19.164 + * @param shape The shape to add
19.165 + */
19.166 + public void add(SimpleShape shape) {
19.167 + shapes.add(0, shape);
19.168 + shape.setParent(this);
19.169 + shape.addPropertyChangeListener(shapeChangeListener);
19.170 + fireIndexedPropertyChange("shapes", 0, null, shape);
19.171 + }
19.172 +
19.173 + public void remove(SimpleShape shape) {
19.174 + int index = shapes.indexOf(shape);
19.175 + if (index != -1) {
19.176 + shapes.remove(shape);
19.177 + shape.setParent(null);
19.178 + fireIndexedPropertyChange("shapes", index, shape, null);
19.179 + }
19.180 + }
19.181 +
19.182 + /**
19.183 + * Returns an unmodifianle iterator over a set of elements of type SimpleShape.
19.184 + *
19.185 + * @return an Iterator.
19.186 + */
19.187 + public Iterator<SimpleShape> iterator() {
19.188 + return Collections.unmodifiableList(shapes).iterator();
19.189 + }
19.190 +
19.191 +
19.192 + public List<Effect> getEffects() {
19.193 + return Collections.unmodifiableList(effects);
19.194 + }
19.195 +
19.196 + public void addEffect(Effect effect) {
19.197 + int index = effects.size();
19.198 + effects.add(effect);
19.199 + effect.addPropertyChangeListener(effectChangeListener);
19.200 + fireIndexedPropertyChange("effects", index, null, effects);
19.201 + }
19.202 +
19.203 + public void removeEffect(Effect effect) {
19.204 + int index = effects.indexOf(effect);
19.205 + if (index != -1) {
19.206 + effects.remove(effect);
19.207 + effect.removePropertyChangeListener(effectChangeListener);
19.208 + fireIndexedPropertyChange("effects", index, effect, null);
19.209 + }
19.210 + }
19.211 +
19.212 + public double getOpacity() {
19.213 + return opacity;
19.214 + }
19.215 +
19.216 + public void setOpacity(double opacity) {
19.217 + if (opacity < 0 || opacity > 1) return;
19.218 + double old = getOpacity();
19.219 + this.opacity = opacity;
19.220 + firePropertyChange("opacity", old, getOpacity());
19.221 + }
19.222 +
19.223 + public double getFillOpacity() {
19.224 + return fillOpacity;
19.225 + }
19.226 +
19.227 + public void setFillOpacity(double fillOpacity) {
19.228 + if (fillOpacity < 0 || fillOpacity > 1) return;
19.229 + double old = getFillOpacity();
19.230 + this.fillOpacity = fillOpacity;
19.231 + firePropertyChange("fillOpacity", old, getFillOpacity());
19.232 + }
19.233 +
19.234 + public BlendingMode getBlendingMode() {
19.235 + return blendingMode;
19.236 + }
19.237 +
19.238 + public void setBlendingMode(BlendingMode blendingMode) {
19.239 + BlendingMode old = getBlendingMode();
19.240 + this.blendingMode = blendingMode;
19.241 + firePropertyChange("blendingMode", old, getBlendingMode());
19.242 + }
19.243 +
19.244 + // =================================================================================================================
19.245 + // Layer Methods
19.246 +
19.247 + /**
19.248 + * Get the parent canvas that contains this layer
19.249 + *
19.250 + * @return Parant canvas, or null if the layer is not in a canvas
19.251 + */
19.252 + public Canvas getCanvas() {
19.253 + LayerContainer lc = this;
19.254 + while (lc != null) {
19.255 + if (lc instanceof Canvas) return (Canvas) lc;
19.256 + lc = lc.getParent();
19.257 + }
19.258 + return null;
19.259 + }
19.260 +
19.261 + public List<SimpleShape> getShapes() {
19.262 + return new ArrayList<SimpleShape>(shapes);
19.263 + }
19.264 +
19.265 + public List<SimpleShape> getIntersectingShapes(Point2D p, double pixelSize) {
19.266 + if (isLocked() || !isVisible()) return Collections.emptyList();
19.267 + List<SimpleShape> intersectingShapes = new ArrayList<SimpleShape>();
19.268 + for (SimpleShape shape : shapes) {
19.269 + if (shape instanceof Layer) {
19.270 + intersectingShapes.addAll(((Layer) shape).getIntersectingShapes(p, pixelSize));
19.271 + } else {
19.272 + if (shape.isHit(p, pixelSize)) intersectingShapes.add(shape);
19.273 + }
19.274 + }
19.275 + return intersectingShapes;
19.276 + }
19.277 +
19.278 + public List<SimpleShape> getIntersectingShapes(Rectangle2D rect, double pixelSize) {
19.279 + if (isLocked() || !isVisible()) return Collections.emptyList();
19.280 + List<SimpleShape> intersectingShapes = new ArrayList<SimpleShape>();
19.281 + for (SimpleShape shape : shapes) {
19.282 + if (shape instanceof Layer) {
19.283 + intersectingShapes.addAll(((Layer) shape).getIntersectingShapes(rect, pixelSize));
19.284 + } else {
19.285 + if (shape.intersects(rect, pixelSize)) intersectingShapes.add(shape);
19.286 + }
19.287 + }
19.288 + return intersectingShapes;
19.289 +
19.290 + }
19.291 +
19.292 + public boolean isEmpty() {
19.293 + return shapes.isEmpty();
19.294 + }
19.295 +
19.296 + // =================================================================================================================
19.297 + // SimpleShape Methods
19.298 +
19.299 + public Rectangle2D getBounds(double pixelSize) {
19.300 + Rectangle2D.Double rect = new Rectangle2D.Double();
19.301 + for (SimpleShape shape : shapes) {
19.302 + rect.add(shape.getBounds(pixelSize));
19.303 + }
19.304 + return rect;
19.305 + }
19.306 +
19.307 +
19.308 + public Shape getShape() {
19.309 + return getBounds(0);
19.310 + }
19.311 +
19.312 + public boolean isHit(Point2D p, double pixelSize) {
19.313 + if (isLocked() || !isVisible()) return false;
19.314 + for (SimpleShape shape : shapes) {
19.315 + if (shape.isHit(p, pixelSize)) return true;
19.316 + }
19.317 + return false;
19.318 + }
19.319 +
19.320 + public boolean intersects(Rectangle2D rect, double pixelSize) {
19.321 + if (isLocked() || !isVisible()) return false;
19.322 + for (SimpleShape shape : shapes) {
19.323 + if (shape.intersects(rect, pixelSize)) return true;
19.324 + }
19.325 + return false;
19.326 + }
19.327 +
19.328 + public List<ControlPoint> getControlPoints() {
19.329 + return Collections.emptyList();
19.330 + }
19.331 +
19.332 + public void paint(Graphics2D g2, double pixelSize) {
19.333 + }
19.334 +
19.335 + public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) {
19.336 +
19.337 + }
19.338 +
19.339 + public String toString() {
19.340 + return getName();
19.341 + }
19.342 +
19.343 + // =================================================================================================================
19.344 + // LayerContainer Methods
19.345 +
19.346 + public void addLayer(int i, Layer layer) {
19.347 + // get existing layer at index i
19.348 + Layer existingLayer = getLayer(i);
19.349 + if (existingLayer == null) {
19.350 + addLayer(layer);
19.351 + } else {
19.352 + int index = indexOfLayer(existingLayer);
19.353 + shapes.add(index, layer);
19.354 + layer.setParent(this);
19.355 + layer.addPropertyChangeListener(shapeChangeListener);
19.356 + fireIndexedPropertyChange("layers", index, null, layer);
19.357 + }
19.358 + }
19.359 +
19.360 + public void addLayer(Layer layer) {
19.361 + shapes.add(layer);
19.362 + layer.setParent(this);
19.363 + layer.addPropertyChangeListener(shapeChangeListener);
19.364 + int index = indexOfLayer(layer);
19.365 + fireIndexedPropertyChange("layers", index, null, layer);
19.366 + }
19.367 +
19.368 + public Layer getLayer(int index) {
19.369 + int i = -1;
19.370 + for (SimpleShape shape : shapes) {
19.371 + if (shape instanceof Layer) i++;
19.372 + if (i == index) return (Layer) shape;
19.373 + }
19.374 + return null;
19.375 + }
19.376 +
19.377 + public int getLayerCount() {
19.378 + int count = 0;
19.379 + for (SimpleShape shape : shapes) {
19.380 + if (shape instanceof Layer) count++;
19.381 + }
19.382 + return count;
19.383 + }
19.384 +
19.385 +
19.386 + public Collection<Layer> getLayers() {
19.387 + List<Layer> layers = new ArrayList<Layer>();
19.388 + for (SimpleShape shape : shapes) {
19.389 + if (shape instanceof Layer) layers.add((Layer) shape);
19.390 + }
19.391 + return Collections.unmodifiableList(layers);
19.392 + }
19.393 +
19.394 + public Iterator<Layer> getLayerIterator() {
19.395 + return new Iterator<Layer>() {
19.396 + private int index = 0;
19.397 +
19.398 + public boolean hasNext() {
19.399 + for (int i = index; i < shapes.size(); i++) {
19.400 + if (shapes.get(i) instanceof Layer) {
19.401 + return true;
19.402 + }
19.403 + }
19.404 + return false;
19.405 + }
19.406 +
19.407 + public Layer next() {
19.408 + for (; index < shapes.size(); index++) {
19.409 + if (shapes.get(index) instanceof Layer) {
19.410 + Layer nextLayer = (Layer) shapes.get(index);
19.411 + index++; // increment index so we don't find the same one again
19.412 + return nextLayer;
19.413 + }
19.414 + }
19.415 + return null;
19.416 + }
19.417 +
19.418 + public void remove() {
19.419 + throw new UnsupportedOperationException();
19.420 + }
19.421 + };
19.422 + }
19.423 +
19.424 + public int indexOfLayer(Layer layer) {
19.425 + int i = -1;
19.426 + for (SimpleShape s : shapes) {
19.427 + if (s instanceof Layer) i++;
19.428 + if (s == layer) return i;
19.429 + }
19.430 + return -1;
19.431 + }
19.432 +
19.433 + public void removeLayer(Layer layer) {
19.434 + int index = indexOfLayer(layer);
19.435 + if (index != -1) {
19.436 + shapes.remove(layer);
19.437 + layer.removePropertyChangeListener(shapeChangeListener);
19.438 + fireIndexedPropertyChange("layers", index, layer, null);
19.439 + }
19.440 + }
19.441 +
19.442 +
19.443 + public Dimension getRootSize() {
19.444 + return getParent().getRootSize();
19.445 + }
19.446 +}
20.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
20.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/LayerContainer.java Wed Apr 29 00:27:46 2009 -0700
20.3 @@ -0,0 +1,67 @@
20.4 +/*
20.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
20.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
20.7 + *
20.8 + * This code is free software; you can redistribute it and/or modify it
20.9 + * under the terms of the GNU General Public License version 2 only, as
20.10 + * published by the Free Software Foundation. Sun designates this
20.11 + * particular file as subject to the "Classpath" exception as provided
20.12 + * by Sun in the LICENSE file that accompanied this code.
20.13 + *
20.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
20.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
20.17 + * version 2 for more details (a copy is included in the LICENSE file that
20.18 + * accompanied this code).
20.19 + *
20.20 + * You should have received a copy of the GNU General Public License version
20.21 + * 2 along with this work; if not, write to the Free Software Foundation,
20.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20.23 + *
20.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
20.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
20.26 + * have any questions.
20.27 + */
20.28 +package org.jdesktop.swingx.designer;
20.29 +
20.30 +import java.awt.Dimension;
20.31 +import java.beans.PropertyChangeListener;
20.32 +import java.util.Collection;
20.33 +import java.util.Iterator;
20.34 +
20.35 +/**
20.36 + * LayerContainer
20.37 + *
20.38 + * @author Created by Jasper Potts (May 31, 2007)
20.39 + */
20.40 +public interface LayerContainer {
20.41 + public void addPropertyChangeListener(PropertyChangeListener listener);
20.42 +
20.43 + public void removePropertyChangeListener(PropertyChangeListener listener);
20.44 +
20.45 + public LayerContainer getParent();
20.46 +
20.47 + public void addLayer(Layer layer);
20.48 +
20.49 + public void addLayer(int i, Layer layer);
20.50 +
20.51 + public void removeLayer(Layer layer);
20.52 +
20.53 + public int getLayerCount();
20.54 +
20.55 + public Layer getLayer(int index);
20.56 +
20.57 + public int indexOfLayer(Layer layer);
20.58 +
20.59 + public Iterator<Layer> getLayerIterator();
20.60 +
20.61 + public Collection<Layer> getLayers();
20.62 +
20.63 + /**
20.64 + * Get the size in pixels of the root of the layer tree, this is usualy a canvas
20.65 + *
20.66 + * @return The size of the whole layer tree
20.67 + */
20.68 + public Dimension getRootSize();
20.69 +
20.70 +}
21.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
21.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/PaintedShape.java Wed Apr 29 00:27:46 2009 -0700
21.3 @@ -0,0 +1,289 @@
21.4 +/*
21.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
21.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
21.7 + *
21.8 + * This code is free software; you can redistribute it and/or modify it
21.9 + * under the terms of the GNU General Public License version 2 only, as
21.10 + * published by the Free Software Foundation. Sun designates this
21.11 + * particular file as subject to the "Classpath" exception as provided
21.12 + * by Sun in the LICENSE file that accompanied this code.
21.13 + *
21.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
21.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21.17 + * version 2 for more details (a copy is included in the LICENSE file that
21.18 + * accompanied this code).
21.19 + *
21.20 + * You should have received a copy of the GNU General Public License version
21.21 + * 2 along with this work; if not, write to the Free Software Foundation,
21.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
21.23 + *
21.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
21.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
21.26 + * have any questions.
21.27 + */
21.28 +package org.jdesktop.swingx.designer;
21.29 +
21.30 +import org.jdesktop.swingx.designer.paint.Matte;
21.31 +import org.jdesktop.swingx.designer.paint.PaintModel;
21.32 +
21.33 +import javax.swing.UIDefaults;
21.34 +import java.awt.BasicStroke;
21.35 +import java.awt.Color;
21.36 +import java.awt.GradientPaint;
21.37 +import java.awt.Graphics2D;
21.38 +import java.awt.LinearGradientPaint;
21.39 +import java.awt.Paint;
21.40 +import java.awt.RadialGradientPaint;
21.41 +import java.awt.Shape;
21.42 +import java.awt.geom.Ellipse2D;
21.43 +import java.awt.geom.Line2D;
21.44 +import java.awt.geom.Point2D;
21.45 +import java.awt.geom.Rectangle2D;
21.46 +import java.beans.PropertyChangeEvent;
21.47 +import java.beans.PropertyChangeListener;
21.48 +import java.util.Arrays;
21.49 +import java.util.Collections;
21.50 +import java.util.List;
21.51 +
21.52 +/**
21.53 + * PaintedShape
21.54 + *
21.55 + * @author Created by Jasper Potts (May 22, 2007)
21.56 + */
21.57 +public abstract class PaintedShape extends SimpleShape {
21.58 +
21.59 + private PaintModel paint;
21.60 + // control points for paint control types
21.61 + private DoubleBean px1 = new DoubleBean(0.25);
21.62 + private DoubleBean px2 = new DoubleBean(0.75);
21.63 + private DoubleBean py1 = new DoubleBean(0);
21.64 + private DoubleBean py2 = new DoubleBean(1);
21.65 + private ControlPoint ptl = new PaintControlPoint(px1, py1);
21.66 + private ControlPoint ptr = new PaintControlPoint(px2, py1);
21.67 + private ControlPoint pbl = new PaintControlPoint(px1, py2);
21.68 + private ControlPoint pbr = new PaintControlPoint(px2, py2);
21.69 + private PropertyChangeListener paintListener = new PropertyChangeListener() {
21.70 + public void propertyChange(PropertyChangeEvent evt) {
21.71 + firePropertyChange("paint." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
21.72 + }
21.73 + };
21.74 +
21.75 + protected PaintedShape() {
21.76 + px1.addPropertyChangeListener(new PropertyChangeListener() {
21.77 + public void propertyChange(PropertyChangeEvent evt) {
21.78 + firePropertyChange("x1", evt.getOldValue(), evt.getNewValue());
21.79 + }
21.80 + });
21.81 + py1.addPropertyChangeListener(new PropertyChangeListener() {
21.82 + public void propertyChange(PropertyChangeEvent evt) {
21.83 + firePropertyChange("y1", evt.getOldValue(), evt.getNewValue());
21.84 + }
21.85 + });
21.86 + px2.addPropertyChangeListener(new PropertyChangeListener() {
21.87 + public void propertyChange(PropertyChangeEvent evt) {
21.88 + firePropertyChange("x2", evt.getOldValue(), evt.getNewValue());
21.89 + }
21.90 + });
21.91 + py2.addPropertyChangeListener(new PropertyChangeListener() {
21.92 + public void propertyChange(PropertyChangeEvent evt) {
21.93 + firePropertyChange("y2", evt.getOldValue(), evt.getNewValue());
21.94 + }
21.95 + });
21.96 + }
21.97 +
21.98 + protected PaintedShape(UIDefaults canvasUiDefaults) {
21.99 + this();
21.100 + setPaintModel(new Matte(Color.ORANGE, canvasUiDefaults));
21.101 + }
21.102 +
21.103 + public PaintModel getPaintModel() {
21.104 + return paint;
21.105 + }
21.106 +
21.107 + public void setPaintModel(PaintModel paint) {
21.108 + PaintModel old = getPaintModel();
21.109 + if (old != null) old.removePropertyChangeListener(paintListener);
21.110 + this.paint = paint;
21.111 + this.paint.addPropertyChangeListener(paintListener);
21.112 + firePropertyChange("paintModel", old, getPaintModel());
21.113 + }
21.114 +
21.115 + public Paint getPaint() {
21.116 + Paint p = getPaintModel().getPaint();
21.117 + if (p instanceof Color) {
21.118 + return p;
21.119 + }
21.120 + //resize p as necessary to fit the bounds of this PaintedShape
21.121 + Rectangle2D bounds = getBounds(0);
21.122 + if (p instanceof LinearGradientPaint) {
21.123 + LinearGradientPaint lgp = (LinearGradientPaint) p;
21.124 + return new LinearGradientPaint(
21.125 + convertLocalPoint(ptl.getPosition(), bounds),
21.126 + convertLocalPoint(pbr.getPosition(), bounds),
21.127 + lgp.getFractions(),
21.128 + lgp.getColors());
21.129 + } else if (p instanceof RadialGradientPaint) {
21.130 + RadialGradientPaint rgp = (RadialGradientPaint) p;
21.131 + Point2D outer = convertLocalPoint(ptl.getPosition(), bounds);
21.132 + Point2D center = convertLocalPoint(pbr.getPosition(), bounds);
21.133 + double deltaX = Math.abs(center.getX() - outer.getX());
21.134 + double deltaY = Math.abs(center.getY() - outer.getY());
21.135 + float radius = (float) Math.sqrt((deltaX * deltaX) + (deltaY * deltaY));
21.136 + return new RadialGradientPaint(
21.137 + center,
21.138 + radius,
21.139 + rgp.getFractions(),
21.140 + rgp.getColors());
21.141 + } else {
21.142 + return p;
21.143 + }
21.144 + }
21.145 +
21.146 + public List<? extends ControlPoint> getControlPoints() {
21.147 + switch (paint.getPaintControlType()) {
21.148 + case control_line:
21.149 + return Arrays.asList(ptl, pbr);
21.150 + case control_rect:
21.151 + return Arrays.asList(ptl, ptr, pbl, pbr);
21.152 + default:
21.153 + return Collections.emptyList();
21.154 + }
21.155 + }
21.156 +
21.157 + public void paintFillControls(Graphics2D g2, double pixelSize, boolean paintControlLines) {
21.158 + switch (paint.getPaintControlType()) {
21.159 + case control_line:
21.160 + Point2D p1 = convertLocalPoint(ptl.getPosition(), PaintedShape.this.getBounds(0));
21.161 + Point2D p2 = convertLocalPoint(pbr.getPosition(), PaintedShape.this.getBounds(0));
21.162 + g2.setStroke(new BasicStroke((float) pixelSize));
21.163 + g2.setColor(GraphicsHelper.FILL_LINE);
21.164 + g2.draw(new Line2D.Double(p1.getX(), p1.getY(), p2.getX(), p2.getY()));
21.165 + ptl.paintControls(g2, pixelSize, true);
21.166 + pbr.paintControls(g2, pixelSize, true);
21.167 + break;
21.168 + case control_rect:
21.169 + g2.setStroke(new BasicStroke((float) pixelSize));
21.170 + g2.setColor(GraphicsHelper.FILL_LINE);
21.171 + g2.draw(new Rectangle2D.Double(
21.172 + px1.getValue(),
21.173 + py1.getValue(),
21.174 + px2.getValue() - px1.getValue(),
21.175 + py2.getValue() - py1.getValue()));
21.176 + ptl.paintControls(g2, pixelSize, true);
21.177 + ptr.paintControls(g2, pixelSize, true);
21.178 + pbl.paintControls(g2, pixelSize, true);
21.179 + pbr.paintControls(g2, pixelSize, true);
21.180 + break;
21.181 + }
21.182 + }
21.183 +
21.184 + public void move(double moveX, double moveY, boolean snapPixels) {
21.185 + for (ControlPoint controlPoint : getControlPoints()) {
21.186 + if (!(controlPoint instanceof PaintControlPoint)) controlPoint.move(moveX, moveY, snapPixels);
21.187 + }
21.188 + }
21.189 +
21.190 + public double getPaintX1() {
21.191 + return px1.getValue();
21.192 + }
21.193 +
21.194 + public void setPaintX1(double x1) {
21.195 + this.px1.setValue(x1);
21.196 + }
21.197 +
21.198 + public double getPaintX2() {
21.199 + return px2.getValue();
21.200 + }
21.201 +
21.202 + public void setPaintX2(double x2) {
21.203 + this.px2.setValue(x2);
21.204 + }
21.205 +
21.206 + public double getPaintY1() {
21.207 + return py1.getValue();
21.208 + }
21.209 +
21.210 + public void setPaintY1(double y1) {
21.211 + this.py1.setValue(y1);
21.212 + }
21.213 +
21.214 + public double getPaintY2() {
21.215 + return py2.getValue();
21.216 + }
21.217 +
21.218 + public void setPaintY2(double y2) {
21.219 + this.py2.setValue(y2);
21.220 + }
21.221 +
21.222 + // =================================================================================================================
21.223 + // Private helper methods
21.224 +
21.225 + private Point2D convertLocalPoint(Point2D point, Rectangle2D bounds) {
21.226 + point.setLocation(
21.227 + bounds.getX() + (point.getX() * bounds.getWidth()),
21.228 + bounds.getY() + (point.getY() * bounds.getHeight())
21.229 + );
21.230 + return point;
21.231 + }
21.232 +
21.233 + private Point2D convertScreenPoint(Point2D point, Rectangle2D bounds) {
21.234 + return new Point2D.Double(
21.235 + (point.getX() - bounds.getX()) / bounds.getWidth(),
21.236 + (point.getY() - bounds.getY()) / bounds.getHeight()
21.237 + );
21.238 + }
21.239 +
21.240 + // =================================================================================================================
21.241 + // Gradient ControlPoint
21.242 +
21.243 + /**
21.244 + * A Special ControlPoint thats internal values are in coordinates relative to the shapes bounds. With 0,0 being the
21.245 + * top left of the shape and 1.0X == shape width and 1.0Y == shapes height.
21.246 + */
21.247 + public class PaintControlPoint extends ControlPoint {
21.248 + public PaintControlPoint() {
21.249 + super(GraphicsHelper.FILL_CP_FILL, GraphicsHelper.FILL_CP_LINE);
21.250 + }
21.251 +
21.252 + public PaintControlPoint(DoubleBean x, DoubleBean y) {
21.253 + super(x, y, GraphicsHelper.FILL_CP_FILL, GraphicsHelper.FILL_CP_LINE);
21.254 + }
21.255 +
21.256 + public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) {
21.257 + Point2D p = convertLocalPoint(getPosition(), PaintedShape.this.getBounds(0));
21.258 + g2.setStroke(new BasicStroke((float) pixelSize));
21.259 + double size = pixelSize * 4d;
21.260 + Shape s = new Ellipse2D.Double(p.getX() - size, p.getY() - size,
21.261 + size * 2, size * 2);
21.262 + g2.setPaint(new GradientPaint(
21.263 + (float) p.getX(), (float) (p.getY() - size), Color.CYAN,
21.264 + (float) p.getX(), (float) (p.getY() + size), Color.WHITE
21.265 + ));
21.266 + g2.fill(s);
21.267 + g2.setColor(GraphicsHelper.FILL_CP_LINE);
21.268 + g2.draw(s);
21.269 + }
21.270 +
21.271 + public void move(double moveX, double moveY, boolean snapPixels) {
21.272 + Rectangle2D bounds = PaintedShape.this.getBounds(0);
21.273 + moveX = moveX / bounds.getWidth();
21.274 + moveY = moveY / bounds.getHeight();
21.275 + if (snapPixels) {
21.276 + // snap to neareast 0.5
21.277 + double newX = Math.round((x.getValue() + moveX) * 2d) / 2d;
21.278 + double newY = Math.round((y.getValue() + moveY) * 2d) / 2d;
21.279 + setPosition(newX, newY);
21.280 + } else {
21.281 + setPosition(x.getValue() + moveX, y.getValue() + moveY);
21.282 + }
21.283 + }
21.284 +
21.285 + public Rectangle2D getBounds(double pixelSize) {
21.286 + Point2D p = convertLocalPoint(getPosition(), PaintedShape.this.getBounds(0));
21.287 + double size = pixelSize * 4d;
21.288 + return new Rectangle2D.Double(p.getX() - size, p.getY() - size,
21.289 + size * 2, size * 2);
21.290 + }
21.291 + }
21.292 +}
22.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
22.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/PathShape.java Wed Apr 29 00:27:46 2009 -0700
22.3 @@ -0,0 +1,194 @@
22.4 +/*
22.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
22.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
22.7 + *
22.8 + * This code is free software; you can redistribute it and/or modify it
22.9 + * under the terms of the GNU General Public License version 2 only, as
22.10 + * published by the Free Software Foundation. Sun designates this
22.11 + * particular file as subject to the "Classpath" exception as provided
22.12 + * by Sun in the LICENSE file that accompanied this code.
22.13 + *
22.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
22.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
22.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22.17 + * version 2 for more details (a copy is included in the LICENSE file that
22.18 + * accompanied this code).
22.19 + *
22.20 + * You should have received a copy of the GNU General Public License version
22.21 + * 2 along with this work; if not, write to the Free Software Foundation,
22.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
22.23 + *
22.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
22.26 + * have any questions.
22.27 + */
22.28 +package org.jdesktop.swingx.designer;
22.29 +
22.30 +import javax.swing.*;
22.31 +import java.awt.*;
22.32 +import java.awt.geom.GeneralPath;
22.33 +import java.awt.geom.Point2D;
22.34 +import java.awt.geom.Rectangle2D;
22.35 +import java.beans.PropertyChangeEvent;
22.36 +import java.beans.PropertyChangeListener;
22.37 +import java.util.ArrayList;
22.38 +import java.util.List;
22.39 +
22.40 +/**
22.41 + * PathShape
22.42 + *
22.43 + * @author Created by Jasper Potts (May 29, 2007)
22.44 + */
22.45 +public class PathShape extends PaintedShape {
22.46 +
22.47 + private Shape cachedShape = null;
22.48 + private List<BezierControlPoint> controlPoints = new ArrayList<BezierControlPoint>();
22.49 + private PropertyChangeListener cpListener = new PropertyChangeListener() {
22.50 + public void propertyChange(PropertyChangeEvent evt) {
22.51 + rebuildShape();
22.52 + }
22.53 + };
22.54 +
22.55 + // =================================================================================================================
22.56 + // Constructors
22.57 +
22.58 + /** private noargs constructor for JIBX */
22.59 + private PathShape() {
22.60 + this(null);
22.61 + }
22.62 +
22.63 + public PathShape(UIDefaults canvasUiDefaults) {
22.64 + super(canvasUiDefaults);
22.65 + }
22.66 +
22.67 + public BezierControlPoint addPoint(double x, double y) {
22.68 + BezierControlPoint cp = new BezierControlPoint(x, y);
22.69 + controlPoints.add(cp);
22.70 + cp.addPropertyChangeListener(cpListener);
22.71 + // update shape
22.72 + rebuildShape();
22.73 + // return new control point
22.74 + return cp;
22.75 + }
22.76 +
22.77 + public Shape getShape() {
22.78 + if (cachedShape == null) {
22.79 + rebuildShape();
22.80 + }
22.81 + return cachedShape;
22.82 + }
22.83 +
22.84 + private void rebuildShape() {
22.85 + GeneralPath path = new GeneralPath();
22.86 + BezierControlPoint first, last;
22.87 + first = last = controlPoints.get(0);
22.88 + path.moveTo((float) first.getX(), (float) first.getY());
22.89 + for (int i = 0; i < controlPoints.size(); i++) {
22.90 + BezierControlPoint controlPoint = controlPoints.get(i);
22.91 + if (last.getCp2().isSharp() && controlPoint.getCp1().isSharp()) {
22.92 + path.lineTo(controlPoint.getX(), controlPoint.getY());
22.93 + } else {
22.94 + path.curveTo(
22.95 + (float) last.getCp2().getX(), (float) last.getCp2().getY(),
22.96 + (float) controlPoint.getCp1().getX(), (float) controlPoint.getCp1().getY(),
22.97 + (float) controlPoint.getX(), (float) controlPoint.getY()
22.98 + );
22.99 + }
22.100 + last = controlPoint;
22.101 + }
22.102 + // close path
22.103 + if (last.getCp2().isSharp() && first.getCp1().isSharp()) {
22.104 + path.lineTo(first.getX(), first.getY());
22.105 + } else {
22.106 + path.curveTo(
22.107 + (float) last.getCp2().getX(), (float) last.getCp2().getY(),
22.108 + (float) first.getCp1().getX(), (float) first.getCp1().getY(),
22.109 + (float) first.getX(), (float) first.getY()
22.110 + );
22.111 + }
22.112 + path.closePath();
22.113 + // fire change
22.114 + cachedShape = path;
22.115 + firePropertyChange("shape", null, cachedShape);
22.116 + }
22.117 +
22.118 + @Override
22.119 + public String toString() {
22.120 + String p = "PATH {\n";
22.121 + BezierControlPoint first, last;
22.122 + first = last = controlPoints.get(0);
22.123 + p += " path.moveTo(" + first.getX() + "," + first.getY() + ");";
22.124 + for (int i = 0; i < controlPoints.size(); i++) {
22.125 + BezierControlPoint controlPoint = controlPoints.get(i);
22.126 + p += " path.curveTo(" +
22.127 + (float) last.getCp2().getX() + "," + (float) last.getCp2().getY() + "," +
22.128 + (float) controlPoint.getCp1().getX() + "," + (float) controlPoint.getCp1().getY() + "," +
22.129 + (float) controlPoint.getX() + "," + (float) controlPoint.getY() +
22.130 + ");\n";
22.131 + last = controlPoint;
22.132 + }
22.133 + // close path
22.134 + p += " path.curveTo(" +
22.135 + (float) last.getCp2().getX() + "," + (float) last.getCp2().getY() + "," +
22.136 + (float) first.getCp1().getX() + "," + (float) first.getCp1().getY() + "," +
22.137 + (float) first.getX() + "," + (float) first.getY() +
22.138 + ");\n";
22.139 + p += "}\n";
22.140 + return p;
22.141 + }
22.142 +
22.143 + // =================================================================================================================
22.144 + // Shape Methods
22.145 +
22.146 + public Rectangle2D getBounds(double pixelSize) {
22.147 + return getShape().getBounds2D();
22.148 + }
22.149 +
22.150 + public List<? extends ControlPoint> getControlPoints() {
22.151 + List<ControlPoint> pts = new ArrayList<ControlPoint>();
22.152 + for (BezierControlPoint controlPoint : controlPoints) {
22.153 + pts.add(controlPoint);
22.154 + }
22.155 + for (ControlPoint controlPoint : super.getControlPoints()) {
22.156 + pts.add(controlPoint);
22.157 + }
22.158 + return pts;
22.159 + }
22.160 +
22.161 + public void setControlPoints(List<BezierControlPoint> controlPoints) {
22.162 + List<BezierControlPoint> old = this.controlPoints;
22.163 + for (BezierControlPoint cp : old) {
22.164 + cp.removePropertyChangeListener(cpListener);
22.165 + }
22.166 + this.controlPoints = controlPoints;
22.167 + for (BezierControlPoint cp : this.controlPoints) {
22.168 + cp.addPropertyChangeListener(cpListener);
22.169 + }
22.170 + // update shape
22.171 + rebuildShape();
22.172 + }
22.173 +
22.174 + public boolean isHit(Point2D p, double pixelSize) {
22.175 + return getShape().contains(p);
22.176 + }
22.177 +
22.178 + public void paint(Graphics2D g2, double pixelSize) {
22.179 + g2.setPaint(getPaint());
22.180 + g2.fill(getShape());
22.181 + }
22.182 +
22.183 + public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) {
22.184 + if (paintControlLines) {
22.185 + g2.setStroke(new BasicStroke((float) pixelSize));
22.186 + g2.setColor(GraphicsHelper.CONTROL_LINE);
22.187 + g2.draw(getShape());
22.188 + }
22.189 + for (BezierControlPoint controlPoint : controlPoints) {
22.190 + if (!controlPoint.isSharpCorner()) controlPoint.paintControls(g2, pixelSize, true);
22.191 + }
22.192 + }
22.193 +
22.194 + public List<BezierControlPoint> getBezierControlPoints() {
22.195 + return controlPoints;
22.196 + }
22.197 +}
23.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
23.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/RectangleShape.java Wed Apr 29 00:27:46 2009 -0700
23.3 @@ -0,0 +1,266 @@
23.4 +/*
23.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
23.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
23.7 + *
23.8 + * This code is free software; you can redistribute it and/or modify it
23.9 + * under the terms of the GNU General Public License version 2 only, as
23.10 + * published by the Free Software Foundation. Sun designates this
23.11 + * particular file as subject to the "Classpath" exception as provided
23.12 + * by Sun in the LICENSE file that accompanied this code.
23.13 + *
23.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
23.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
23.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
23.17 + * version 2 for more details (a copy is included in the LICENSE file that
23.18 + * accompanied this code).
23.19 + *
23.20 + * You should have received a copy of the GNU General Public License version
23.21 + * 2 along with this work; if not, write to the Free Software Foundation,
23.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
23.23 + *
23.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
23.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
23.26 + * have any questions.
23.27 + */
23.28 +package org.jdesktop.swingx.designer;
23.29 +
23.30 +import javax.swing.*;
23.31 +import java.awt.*;
23.32 +import java.awt.geom.Ellipse2D;
23.33 +import java.awt.geom.Point2D;
23.34 +import java.awt.geom.Rectangle2D;
23.35 +import java.awt.geom.RoundRectangle2D;
23.36 +import java.beans.PropertyChangeEvent;
23.37 +import java.beans.PropertyChangeListener;
23.38 +import java.util.ArrayList;
23.39 +import java.util.List;
23.40 +
23.41 +/**
23.42 + * RectangleShape
23.43 + *
23.44 + * @author Created by Jasper Potts (May 22, 2007)
23.45 + */
23.46 +public class RectangleShape extends PaintedShape {
23.47 +
23.48 + private DoubleBean x1 = new DoubleBean();
23.49 + private DoubleBean x2 = new DoubleBean();
23.50 + private DoubleBean y1 = new DoubleBean();
23.51 + private DoubleBean y2 = new DoubleBean();
23.52 + private ControlPoint tl = new ControlPoint(x1, y1);
23.53 + private ControlPoint tr = new ControlPoint(x2, y1);
23.54 + private ControlPoint bl = new ControlPoint(x1, y2);
23.55 + private ControlPoint br = new ControlPoint(x2, y2);
23.56 + private DoubleBean roundingX = new DoubleBean() {
23.57 + public void setValue(double value) {
23.58 + // contrain y = y1 and x is between x1+1 and (x2-x1)/2
23.59 + boolean x1isLess = x1.getValue() < x2.getValue();
23.60 + double min = x1isLess ? x1.getValue() + 1 : x1.getValue() - 1;
23.61 + double max = x1isLess ? x1.getValue() + ((x2.getValue() - x1.getValue()) / 2) :
23.62 + x2.getValue() + ((x1.getValue() - x2.getValue()) / 2);
23.63 + double newX = value;
23.64 + if (newX < min) newX = min;
23.65 + if (newX > max) newX = max;
23.66 + super.setValue(newX);
23.67 + }
23.68 + };
23.69 + private ControlPoint rounding = new ControlPoint(roundingX, y1) {
23.70 + public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) {
23.71 + double size = pixelSize * 3d;
23.72 + Shape s = new Ellipse2D.Double(getX() - size, getY() - size,
23.73 + size * 2, size * 2);
23.74 + g2.setColor(GraphicsHelper.BEZIER_CONTROL_POINT_FILL);
23.75 + g2.fill(s);
23.76 + g2.setColor(GraphicsHelper.BEZIER_CONTROL_POINT_LINE);
23.77 + g2.draw(s);
23.78 + }
23.79 +
23.80 + public void setPosition(Point2D position) {
23.81 + // only alow X to change
23.82 + x.setValue(position.getX());
23.83 + }
23.84 +
23.85 + };
23.86 +
23.87 + // =================================================================================================================
23.88 + // Constructors
23.89 +
23.90 + /** private noargs constructor for JIBX */
23.91 + private RectangleShape() {
23.92 + this(null);
23.93 + }
23.94 +
23.95 + public RectangleShape(UIDefaults canvasUiDefaults) {
23.96 + super(canvasUiDefaults);
23.97 + x1.addPropertyChangeListener(new PropertyChangeListener() {
23.98 + public void propertyChange(PropertyChangeEvent evt) {
23.99 + // keep rounding point in sync
23.100 + roundingX.setValue(roundingX.getValue() +
23.101 + ((Double) evt.getNewValue() - (Double) evt.getOldValue()));
23.102 + firePropertyChange("bounds", null, getBounds(0));
23.103 + }
23.104 + });
23.105 + x2.addPropertyChangeListener(new PropertyChangeListener() {
23.106 + public void propertyChange(PropertyChangeEvent evt) {
23.107 + // keep rounding point in sync
23.108 + double distanceFromX1 = Math.abs(roundingX.getValue() - x1.getValue());
23.109 + roundingX.setValue(
23.110 + (x1.getValue() < x2.getValue()) ? x1.getValue() + distanceFromX1 :
23.111 + x1.getValue() - distanceFromX1
23.112 + );
23.113 + firePropertyChange("bounds", null, getBounds(0));
23.114 + }
23.115 + });
23.116 + PropertyChangeListener listener = new PropertyChangeListener() {
23.117 + public void propertyChange(PropertyChangeEvent evt) {
23.118 + firePropertyChange("bounds", null, getBounds(0));
23.119 + }
23.120 + };
23.121 + y1.addPropertyChangeListener(listener);
23.122 + y2.addPropertyChangeListener(listener);
23.123 + rounding.addPropertyChangeListener(listener);
23.124 + }
23.125 +
23.126 + public RectangleShape(double x, double y, double w, double h) {
23.127 + this();
23.128 + x1.setValue(x);
23.129 + y1.setValue(y);
23.130 + x2.setValue(x + w);
23.131 + y2.setValue(y + h);
23.132 + }
23.133 +
23.134 + public Shape getShape() {
23.135 + double rounding = getRounding();
23.136 + double left = Math.min(x1.getValue(), x2.getValue());
23.137 + double right = Math.max(x1.getValue(), x2.getValue());
23.138 + double top = Math.min(y1.getValue(), y2.getValue());
23.139 + double bottom = Math.max(y1.getValue(), y2.getValue());
23.140 + if (rounding > 0) {
23.141 + return new RoundRectangle2D.Double(
23.142 + left, top, right - left, bottom - top, rounding, rounding
23.143 + );
23.144 + } else {
23.145 + return new Rectangle2D.Double(left, top, right - left, bottom - top);
23.146 + }
23.147 + }
23.148 +
23.149 + public double getRounding() {
23.150 + double rounding = Math.abs(roundingX.getValue() - x1.getValue()) * 2;
23.151 + return rounding > 2 ? rounding : 0;
23.152 + }
23.153 +
23.154 + public void setRounding(double rounding) {
23.155 + if (rounding > 0 && rounding < 2) rounding = 0;
23.156 + roundingX.setValue((rounding / 2d) + x1.getValue());
23.157 + }
23.158 +
23.159 + public boolean isRounded() {
23.160 + return getRounding() > 0;
23.161 + }
23.162 +
23.163 + public double getX1() {
23.164 + return x1.getValue();
23.165 + }
23.166 +
23.167 + public void setX1(double x1) {
23.168 + this.x1.setValue(x1);
23.169 + }
23.170 +
23.171 + public double getX2() {
23.172 + return x2.getValue();
23.173 + }
23.174 +
23.175 + public void setX2(double x2) {
23.176 + this.x2.setValue(x2);
23.177 + }
23.178 +
23.179 + public double getY1() {
23.180 + return y1.getValue();
23.181 + }
23.182 +
23.183 + public void setY1(double y1) {
23.184 + this.y1.setValue(y1);
23.185 + }
23.186 +
23.187 + public double getY2() {
23.188 + return y2.getValue();
23.189 + }
23.190 +
23.191 + public void setY2(double y2) {
23.192 + this.y2.setValue(y2);
23.193 + }
23.194 +
23.195 + // =================================================================================================================
23.196 + // SimpleShape Methods
23.197 +
23.198 + public Rectangle2D getBounds(double pixelSize) {
23.199 + double left = Math.min(x1.getValue(), x2.getValue());
23.200 + double right = Math.max(x1.getValue(), x2.getValue());
23.201 + double top = Math.min(y1.getValue(), y2.getValue());
23.202 + double bottom = Math.max(y1.getValue(), y2.getValue());
23.203 + return new Rectangle2D.Double(left, top, right - left, bottom - top);
23.204 + }
23.205 +
23.206 + public boolean isHit(Point2D p, double pixelSize) {
23.207 + return getShape().contains(p);
23.208 + }
23.209 +
23.210 + public void paint(Graphics2D g2, double pixelSize) {
23.211 + g2.setPaint(getPaint());
23.212 + g2.fill(getShape());
23.213 + }
23.214 +
23.215 + public void setFrame(double x1, double y1, double x2, double y2) {
23.216 + this.x1.setValue(x1);
23.217 + this.y1.setValue(y1);
23.218 + this.x2.setValue(x2);
23.219 + this.y2.setValue(y2);
23.220 + }
23.221 +
23.222 + @Override
23.223 + public String toString() {
23.224 + Rectangle2D bounds = getBounds(0);
23.225 + if (isRounded()) {
23.226 + return "ROUND RECT { x=" + bounds.getX() + ", y=" + bounds.getY() + ", w=" + bounds.getWidth() + ", h=" + bounds.getHeight() + ", rounding=" + getRounding() + " }";
23.227 + } else {
23.228 + return "ROUND RECT { x=" + bounds.getX() + ", y=" + bounds.getY() + ", w=" + bounds.getWidth() + ", h=" + bounds.getHeight() + " }";
23.229 + }
23.230 + }
23.231 +
23.232 + public List<ControlPoint> getControlPoints() {
23.233 + List<ControlPoint> points = new ArrayList<ControlPoint>();
23.234 + points.addAll(super.getControlPoints());
23.235 + points.add(tl);
23.236 + points.add(tr);
23.237 + points.add(bl);
23.238 + points.add(br);
23.239 + points.add(rounding);
23.240 + return points;
23.241 + }
23.242 +
23.243 + public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) {
23.244 + if (paintControlLines) {
23.245 + g2.setStroke(new BasicStroke((float) pixelSize));
23.246 + g2.setColor(GraphicsHelper.CONTROL_LINE);
23.247 + g2.draw(getShape());
23.248 + }
23.249 + tl.paintControls(g2, pixelSize, true);
23.250 + tr.paintControls(g2, pixelSize, true);
23.251 + bl.paintControls(g2, pixelSize, true);
23.252 + br.paintControls(g2, pixelSize, true);
23.253 + rounding.paintControls(g2, pixelSize, true);
23.254 + }
23.255 +
23.256 + public void move(double moveX, double moveY, boolean snapPixels) {
23.257 + if (snapPixels) {
23.258 + x1.setValue(Math.round(x1.getValue() + moveX));
23.259 + x2.setValue(Math.round(x2.getValue() + moveX));
23.260 + y1.setValue(Math.round(y1.getValue() + moveY));
23.261 + y2.setValue(Math.round(y2.getValue() + moveY));
23.262 + } else {
23.263 + x1.setValue(x1.getValue() + moveX);
23.264 + x2.setValue(x2.getValue() + moveX);
23.265 + y1.setValue(y1.getValue() + moveY);
23.266 + y2.setValue(y2.getValue() + moveY);
23.267 + }
23.268 + }
23.269 +}
24.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
24.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/SimpleShape.java Wed Apr 29 00:27:46 2009 -0700
24.3 @@ -0,0 +1,81 @@
24.4 +/*
24.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
24.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
24.7 + *
24.8 + * This code is free software; you can redistribute it and/or modify it
24.9 + * under the terms of the GNU General Public License version 2 only, as
24.10 + * published by the Free Software Foundation. Sun designates this
24.11 + * particular file as subject to the "Classpath" exception as provided
24.12 + * by Sun in the LICENSE file that accompanied this code.
24.13 + *
24.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
24.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
24.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
24.17 + * version 2 for more details (a copy is included in the LICENSE file that
24.18 + * accompanied this code).
24.19 + *
24.20 + * You should have received a copy of the GNU General Public License version
24.21 + * 2 along with this work; if not, write to the Free Software Foundation,
24.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
24.23 + *
24.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
24.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
24.26 + * have any questions.
24.27 + */
24.28 +package org.jdesktop.swingx.designer;
24.29 +
24.30 +import org.jdesktop.beans.AbstractBean;
24.31 +
24.32 +import java.awt.Graphics2D;
24.33 +import java.awt.Shape;
24.34 +import java.awt.geom.AffineTransform;
24.35 +import java.awt.geom.Point2D;
24.36 +import java.awt.geom.Rectangle2D;
24.37 +import java.util.List;
24.38 +
24.39 +/**
24.40 + * SimpleShape
24.41 + *
24.42 + * @author Created by Jasper Potts (May 22, 2007)
24.43 + */
24.44 +public abstract class SimpleShape extends AbstractBean {
24.45 +
24.46 + protected AffineTransform transform = new AffineTransform();
24.47 + protected LayerContainer parent = null;
24.48 +
24.49 + public void applyTransform(AffineTransform t) {
24.50 + transform.concatenate(t);
24.51 + }
24.52 +
24.53 + public abstract Rectangle2D getBounds(double pixelSize);
24.54 +
24.55 + public abstract void paint(Graphics2D g2, double pixelSize);
24.56 +
24.57 + public abstract boolean isHit(Point2D p, double pixelSize);
24.58 +
24.59 + public boolean intersects(Rectangle2D rect, double pixelSize) {
24.60 + return getBounds(pixelSize).intersects(rect);
24.61 + }
24.62 +
24.63 + public abstract List<? extends ControlPoint> getControlPoints();
24.64 +
24.65 + public abstract void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines);
24.66 +
24.67 + public void move(double moveX, double moveY, boolean snapPixels) {
24.68 + for (ControlPoint controlPoint : getControlPoints()) {
24.69 + controlPoint.move(moveX, moveY, snapPixels);
24.70 + }
24.71 + }
24.72 +
24.73 + public LayerContainer getParent() {
24.74 + return parent;
24.75 + }
24.76 +
24.77 + public void setParent(LayerContainer parent) {
24.78 + LayerContainer old = getParent();
24.79 + this.parent = parent;
24.80 + firePropertyChange("parent", old, getParent());
24.81 + }
24.82 +
24.83 + public abstract Shape getShape();
24.84 +}
25.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
25.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/TemplateLayer.java Wed Apr 29 00:27:46 2009 -0700
25.3 @@ -0,0 +1,142 @@
25.4 +/*
25.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
25.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
25.7 + *
25.8 + * This code is free software; you can redistribute it and/or modify it
25.9 + * under the terms of the GNU General Public License version 2 only, as
25.10 + * published by the Free Software Foundation. Sun designates this
25.11 + * particular file as subject to the "Classpath" exception as provided
25.12 + * by Sun in the LICENSE file that accompanied this code.
25.13 + *
25.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
25.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
25.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
25.17 + * version 2 for more details (a copy is included in the LICENSE file that
25.18 + * accompanied this code).
25.19 + *
25.20 + * You should have received a copy of the GNU General Public License version
25.21 + * 2 along with this work; if not, write to the Free Software Foundation,
25.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
25.23 + *
25.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
25.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
25.26 + * have any questions.
25.27 + */
25.28 +package org.jdesktop.swingx.designer;
25.29 +
25.30 +import org.jdesktop.swingx.designer.effects.Effect;
25.31 +
25.32 +import javax.imageio.ImageIO;
25.33 +import javax.swing.JOptionPane;
25.34 +import javax.swing.SwingUtilities;
25.35 +import java.awt.Color;
25.36 +import java.awt.FontMetrics;
25.37 +import java.awt.Graphics2D;
25.38 +import java.awt.GraphicsConfiguration;
25.39 +import java.awt.Image;
25.40 +import java.awt.geom.Rectangle2D;
25.41 +import java.awt.image.BufferedImage;
25.42 +import java.io.File;
25.43 +import java.io.IOException;
25.44 +import java.lang.ref.SoftReference;
25.45 +
25.46 +/**
25.47 + * TemplateLayer
25.48 + *
25.49 + * @author Created by Jasper Potts (Jul 2, 2007)
25.50 + */
25.51 +public class TemplateLayer extends Layer {
25.52 +
25.53 + private String fileName;
25.54 + private transient SoftReference<BufferedImage> imgRef = null;
25.55 +
25.56 + public TemplateLayer() {
25.57 + type = LayerType.template;
25.58 + }
25.59 +
25.60 + public TemplateLayer(String fileName, BufferedImage templateImage) {
25.61 + super("Template");
25.62 + this.fileName = fileName;
25.63 + type = LayerType.template;
25.64 + if (templateImage != null) {
25.65 + imgRef = new SoftReference<BufferedImage>(templateImage);
25.66 + }
25.67 + }
25.68 +
25.69 + // =================================================================================================================
25.70 + // Methods
25.71 +
25.72 + public String getName() {
25.73 + return super.getName();
25.74 + }
25.75 +
25.76 + /**
25.77 + * template layers are always locked
25.78 + *
25.79 + * @return <code>true</code>
25.80 + */
25.81 + public boolean isLocked() {
25.82 + return true;
25.83 + }
25.84 +
25.85 + public void add(SimpleShape shape) {
25.86 + throw new IllegalStateException("Template layers can't contain shapes");
25.87 + }
25.88 +
25.89 + public void addEffect(Effect effect) {
25.90 + throw new IllegalStateException("Template layers can't contain effects");
25.91 + }
25.92 +
25.93 + public void addLayer(int i, Layer layer) {
25.94 + throw new IllegalStateException("Template layers can't contain sub layers");
25.95 + }
25.96 +
25.97 + public void addLayer(Layer layer) {
25.98 + throw new IllegalStateException("Template layers can't contain sub layers");
25.99 + }
25.100 +
25.101 + public void paint(Graphics2D g2, double pixelSize) {
25.102 + if (isVisible()) {
25.103 + BufferedImage img = getTemplateImage();
25.104 + if (img != null) g2.drawImage(img, 0, 0, null);
25.105 + }
25.106 + }
25.107 +
25.108 +
25.109 + public Image getBuffer(GraphicsConfiguration graphicsConfiguration) {
25.110 + return getTemplateImage();
25.111 + }
25.112 +
25.113 + public BufferedImage getTemplateImage() {
25.114 + BufferedImage img = null;
25.115 + if (imgRef == null || (img = imgRef.get()) == null) {
25.116 +
25.117 + // can not access canvas
25.118 + final File templateImgFile = new File(getCanvas().getTemplatesDir(), fileName);
25.119 + System.out.println("templateImgFile = " + templateImgFile.getAbsolutePath());
25.120 + System.out.println("templateImgFile.exists = " + templateImgFile.exists());
25.121 + try {
25.122 + img = ImageIO.read(templateImgFile);
25.123 + imgRef = new SoftReference<BufferedImage>(img);
25.124 + } catch (IOException e) {
25.125 + e.printStackTrace();
25.126 + // create error image
25.127 + img = new BufferedImage(getCanvas().getSize().width, getCanvas().getSize().height,
25.128 + BufferedImage.TYPE_INT_RGB);
25.129 + Graphics2D g2 = img.createGraphics();
25.130 + g2.setColor(Color.RED);
25.131 + g2.fillRect(0, 0, img.getWidth(), img.getHeight());
25.132 + g2.setColor(Color.WHITE);
25.133 + g2.setFont(g2.getFont().deriveFont(8f));
25.134 + FontMetrics fontMetrics = g2.getFontMetrics();
25.135 + Rectangle2D stringBounds = fontMetrics.getStringBounds("Missing Image", g2);
25.136 + int offsetX = (int) ((img.getWidth() - stringBounds.getWidth()) / 2d);
25.137 + int offsetY = (int) (((img.getHeight() - stringBounds.getHeight()) / 2d) - stringBounds.getY());
25.138 + g2.drawString("Missing Image", offsetX, offsetY);
25.139 + g2.dispose();
25.140 + imgRef = new SoftReference<BufferedImage>(img);
25.141 + }
25.142 + }
25.143 + return img;
25.144 + }
25.145 +}
26.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
26.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/DropShadowEffect.java Wed Apr 29 00:27:46 2009 -0700
26.3 @@ -0,0 +1,137 @@
26.4 +/*
26.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
26.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
26.7 + *
26.8 + * This code is free software; you can redistribute it and/or modify it
26.9 + * under the terms of the GNU General Public License version 2 only, as
26.10 + * published by the Free Software Foundation. Sun designates this
26.11 + * particular file as subject to the "Classpath" exception as provided
26.12 + * by Sun in the LICENSE file that accompanied this code.
26.13 + *
26.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
26.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
26.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
26.17 + * version 2 for more details (a copy is included in the LICENSE file that
26.18 + * accompanied this code).
26.19 + *
26.20 + * You should have received a copy of the GNU General Public License version
26.21 + * 2 along with this work; if not, write to the Free Software Foundation,
26.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
26.23 + *
26.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
26.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
26.26 + * have any questions.
26.27 + */
26.28 +package org.jdesktop.swingx.designer.effects;
26.29 +
26.30 +import org.jdesktop.swingx.designer.paint.Matte;
26.31 +
26.32 +import javax.swing.UIDefaults;
26.33 +import java.awt.Color;
26.34 +import java.awt.image.BufferedImage;
26.35 +import java.awt.image.Raster;
26.36 +import java.awt.image.WritableRaster;
26.37 +import java.util.Arrays;
26.38 +
26.39 +/**
26.40 + * DropShadowEffect
26.41 + *
26.42 + * @author Created by Jasper Potts (Jun 18, 2007)
26.43 + */
26.44 +public class DropShadowEffect extends ShadowEffect {
26.45 +
26.46 + protected DropShadowEffect() {}
26.47 +
26.48 + ;
26.49 +
26.50 + public DropShadowEffect(UIDefaults uiDefaults) {
26.51 + color = new Matte(Color.BLACK, uiDefaults);
26.52 + }
26.53 +
26.54 + // =================================================================================================================
26.55 + // Effect Methods
26.56 +
26.57 + /**
26.58 + * Get the display name for this effect
26.59 + *
26.60 + * @return The user displayable name
26.61 + */
26.62 + public String getDisplayName() {
26.63 + return "Drop Shadow";
26.64 + }
26.65 +
26.66 + /**
26.67 + * Get the type of this effect, one of UNDER,BLENDED,OVER. UNDER means the result of apply effect should be painted
26.68 + * under the src image. BLENDED means the result of apply sffect contains a modified src image so just it should be
26.69 + * painted. OVER means the result of apply effect should be painted over the src image.
26.70 + *
26.71 + * @return The effect type
26.72 + */
26.73 + public EffectType getEffectType() {
26.74 + return EffectType.UNDER;
26.75 + }
26.76 +
26.77 + /**
26.78 + * Apply the effect to the src image generating the result . The result image may or may not contain the source
26.79 + * image depending on what the effect type is.
26.80 + *
26.81 + * @param src The source image for applying the effect to
26.82 + * @param dst The dstination image to paint effect result into. If this is null then a new image will be created
26.83 + * @param w The width of the src image to apply effect to, this allow the src and dst buffers to be bigger than
26.84 + * the area the need effect applied to it
26.85 + * @param h The height of the src image to apply effect to, this allow the src and dst buffers to be bigger than
26.86 + * the area the need effect applied to it
26.87 + * @return The result of appl
26.88 + */
26.89 + public BufferedImage applyEffect(BufferedImage src, BufferedImage dst, int w, int h) {
26.90 + // calculate offset
26.91 + double trangleAngle = Math.toRadians(angle - 90);
26.92 + int offsetX = (int) (Math.sin(trangleAngle) * distance);
26.93 + int offsetY = (int) (Math.cos(trangleAngle) * distance);
26.94 + // clac expanded size
26.95 + int tmpOffX = offsetX + size;
26.96 + int tmpOffY = offsetY + size;
26.97 + int tmpW = w + offsetX + size + size;
26.98 + int tmpH = h + offsetY + size + size;
26.99 + // create tmp buffers
26.100 + int[] lineBuf = getTmpIntArray(w);
26.101 + byte[] tmpBuf1 = getTmpByteArray1(tmpW * tmpH);
26.102 + Arrays.fill(tmpBuf1, (byte) 0x00);
26.103 + byte[] tmpBuf2 = getTmpByteArray2(tmpW * tmpH);
26.104 + // extract src image alpha channel and inverse and offset
26.105 + Raster srcRaster = src.getRaster();
26.106 + for (int y = 0; y < h; y++) {
26.107 + int dy = (y + tmpOffY);
26.108 + int offset = dy * tmpW;
26.109 + srcRaster.getDataElements(0, y, w, 1, lineBuf);
26.110 + for (int x = 0; x < w; x++) {
26.111 + int dx = x + tmpOffX;
26.112 + tmpBuf1[offset + dx] = (byte) ((lineBuf[x] & 0xFF000000) >>> 24);
26.113 + }
26.114 + }
26.115 + // blur
26.116 + float[] kernel = EffectUtils.createGaussianKernel(size);
26.117 + EffectUtils.blur(tmpBuf1, tmpBuf2, tmpW, tmpH, kernel, size); // horizontal pass
26.118 + EffectUtils.blur(tmpBuf2, tmpBuf1, tmpH, tmpW, kernel, size);// vertical pass
26.119 + //rescale
26.120 + float spread = Math.min(1 / (1 - (0.01f * this.spread)), 255);
26.121 + for (int i = 0; i < tmpBuf1.length; i++) {
26.122 + int val = (int) (((int) tmpBuf1[i] & 0xFF) * spread);
26.123 + tmpBuf1[i] = (val > 255) ? (byte) 0xFF : (byte) val;
26.124 + }
26.125 + // create color image with shadow color and greyscale image as alpha
26.126 + if (dst == null) dst = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
26.127 + WritableRaster shadowRaster = dst.getRaster();
26.128 + int red = color.getRed(), green = color.getGreen(), blue = color.getBlue();
26.129 + for (int y = 0; y < h; y++) {
26.130 + int srcY = y + tmpOffY;
26.131 + int shadowOffset = (srcY - offsetY) * tmpW;
26.132 + for (int x = 0; x < w; x++) {
26.133 + int srcX = x + tmpOffX;
26.134 + lineBuf[x] = tmpBuf1[shadowOffset + (srcX - offsetX)] << 24 | red << 16 | green << 8 | blue;
26.135 + }
26.136 + shadowRaster.setDataElements(0, y, w, 1, lineBuf);
26.137 + }
26.138 + return dst;
26.139 + }
26.140 +}
27.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
27.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/Effect.java Wed Apr 29 00:27:46 2009 -0700
27.3 @@ -0,0 +1,153 @@
27.4 +/*
27.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
27.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
27.7 + *
27.8 + * This code is free software; you can redistribute it and/or modify it
27.9 + * under the terms of the GNU General Public License version 2 only, as
27.10 + * published by the Free Software Foundation. Sun designates this
27.11 + * particular file as subject to the "Classpath" exception as provided
27.12 + * by Sun in the LICENSE file that accompanied this code.
27.13 + *
27.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
27.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
27.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
27.17 + * version 2 for more details (a copy is included in the LICENSE file that
27.18 + * accompanied this code).
27.19 + *
27.20 + * You should have received a copy of the GNU General Public License version
27.21 + * 2 along with this work; if not, write to the Free Software Foundation,
27.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
27.23 + *
27.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
27.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
27.26 + * have any questions.
27.27 + */
27.28 +package org.jdesktop.swingx.designer.effects;
27.29 +
27.30 +import org.jdesktop.beans.AbstractBean;
27.31 +import org.jdesktop.swingx.designer.BlendingMode;
27.32 +
27.33 +import java.awt.image.BufferedImage;
27.34 +import java.lang.ref.SoftReference;
27.35 +
27.36 +/**
27.37 + * Effect
27.38 + *
27.39 + * @author Created by Jasper Potts (Jun 18, 2007)
27.40 + */
27.41 +public abstract class Effect extends AbstractBean {
27.42 + protected boolean visible = true;
27.43 +
27.44 + public enum EffectType {
27.45 + UNDER, BLENDED, OVER
27.46 + }
27.47 +
27.48 + public boolean isVisible() {
27.49 + return visible;
27.50 + }
27.51 +
27.52 + public void setVisible(boolean visible) {
27.53 + boolean old = isVisible();
27.54 + this.visible = visible;
27.55 + firePropertyChange("visible", old, isVisible());
27.56 + }
27.57 +
27.58 + public String toString() {
27.59 + return getDisplayName();
27.60 + }
27.61 +
27.62 + // =================================================================================================================
27.63 + // Abstract Methods
27.64 +
27.65 + /**
27.66 + * Get the display name for this effect
27.67 + *
27.68 + * @return The user displayable name
27.69 + */
27.70 + public abstract String getDisplayName();
27.71 +
27.72 + /**
27.73 + * Get the type of this effect, one of UNDER,BLENDED,OVER. UNDER means the result of apply effect should be painted
27.74 + * under the src image. BLENDED means the result of apply sffect contains a modified src image so just it should be
27.75 + * painted. OVER means the result of apply effect should be painted over the src image.
27.76 + *
27.77 + * @return The effect type
27.78 + */
27.79 + public abstract EffectType getEffectType();
27.80 +
27.81 + /**
27.82 + * Get the blending mode to use to paint the result effected image if the EffectType is UNDER or OVER.
27.83 + *
27.84 + * @return The blending mode for the effect
27.85 + */
27.86 + public abstract BlendingMode getBlendingMode();
27.87 +
27.88 + /**
27.89 + * Get the opacity to use to paint the result effected image if the EffectType is UNDER or OVER.
27.90 + *
27.91 + * @return The opactity for the effect, 0.0f -> 1.0f
27.92 + */
27.93 + public abstract float getOpacity();
27.94 +
27.95 + /**
27.96 + * Apply the effect to the src image generating the result . The result image may or may not contain the source
27.97 + * image depending on what the effect type is.
27.98 + *
27.99 + * @param src The source image for applying the effect to
27.100 + * @param dst The dstination image to paint effect result into. If this is null then a new image will be created
27.101 + * @param w The width of the src image to apply effect to, this allow the src and dst buffers to be bigger than
27.102 + * the area the need effect applied to it
27.103 + * @param h The height of the src image to apply effect to, this allow the src and dst buffers to be bigger than
27.104 + * the area the need effect applied to it
27.105 + * @return The result of appl
27.106 + */
27.107 + public abstract BufferedImage applyEffect(BufferedImage src, BufferedImage dst, int w, int h);
27.108 +
27.109 + // =================================================================================================================
27.110 + // Static data cache
27.111 +
27.112 + private static SoftReference<int[]> tmpIntArray = null;
27.113 + private static SoftReference<byte[]> tmpByteArray1 = null;
27.114 + private static SoftReference<byte[]> tmpByteArray2 = null;
27.115 + private static SoftReference<byte[]> tmpByteArray3 = null;
27.116 +
27.117 + protected static int[] getTmpIntArray(int size) {
27.118 + int[] tmp;
27.119 + if (tmpIntArray == null || (tmp = tmpIntArray.get()) == null || tmp.length < size) {
27.120 + // create new array
27.121 + tmp = new int[size];
27.122 + tmpIntArray = new SoftReference<int[]>(tmp);
27.123 + }
27.124 + return tmp;
27.125 + }
27.126 +
27.127 + protected static byte[] getTmpByteArray1(int size) {
27.128 + byte[] tmp;
27.129 + if (tmpByteArray1 == null || (tmp = tmpByteArray1.get()) == null || tmp.length < size) {
27.130 + // create new array
27.131 + tmp = new byte[size];
27.132 + tmpByteArray1 = new SoftReference<byte[]>(tmp);
27.133 + }
27.134 + return tmp;
27.135 + }
27.136 +
27.137 + protected static byte[] getTmpByteArray2(int size) {
27.138 + byte[] tmp;
27.139 + if (tmpByteArray2 == null || (tmp = tmpByteArray2.get()) == null || tmp.length < size) {
27.140 + // create new array
27.141 + tmp = new byte[size];
27.142 + tmpByteArray2 = new SoftReference<byte[]>(tmp);
27.143 + }
27.144 + return tmp;
27.145 + }
27.146 +
27.147 + protected static byte[] getTmpByteArray3(int size) {
27.148 + byte[] tmp;
27.149 + if (tmpByteArray3 == null || (tmp = tmpByteArray3.get()) == null || tmp.length < size) {
27.150 + // create new array
27.151 + tmp = new byte[size];
27.152 + tmpByteArray3 = new SoftReference<byte[]>(tmp);
27.153 + }
27.154 + return tmp;
27.155 + }
27.156 +}
28.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
28.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/EffectUtils.java Wed Apr 29 00:27:46 2009 -0700
28.3 @@ -0,0 +1,99 @@
28.4 +/*
28.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
28.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
28.7 + *
28.8 + * This code is free software; you can redistribute it and/or modify it
28.9 + * under the terms of the GNU General Public License version 2 only, as
28.10 + * published by the Free Software Foundation. Sun designates this
28.11 + * particular file as subject to the "Classpath" exception as provided
28.12 + * by Sun in the LICENSE file that accompanied this code.
28.13 + *
28.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
28.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
28.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
28.17 + * version 2 for more details (a copy is included in the LICENSE file that
28.18 + * accompanied this code).
28.19 + *
28.20 + * You should have received a copy of the GNU General Public License version
28.21 + * 2 along with this work; if not, write to the Free Software Foundation,
28.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
28.23 + *
28.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
28.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
28.26 + * have any questions.
28.27 + */
28.28 +package org.jdesktop.swingx.designer.effects;
28.29 +
28.30 +
28.31 +/**
28.32 + * EffectUtils
28.33 + *
28.34 + * @author Created by Jasper Potts (Jun 18, 2007)
28.35 + */
28.36 +public class EffectUtils {
28.37 +
28.38 + /**
28.39 + * <p>Blurs the source pixels into the destination pixels. The force of the blur is specified by the radius which
28.40 + * must be greater than 0.</p> <p>The source and destination pixels arrays are expected to be in the BYTE_GREY
28.41 + * format.</p> <p>After this method is executed, dstPixels contains a transposed and filtered copy of
28.42 + * srcPixels.</p>
28.43 + *
28.44 + * @param srcPixels the source pixels
28.45 + * @param dstPixels the destination pixels
28.46 + * @param width the width of the source picture
28.47 + * @param height the height of the source picture
28.48 + * @param kernel the kernel of the blur effect
28.49 + * @param radius the radius of the blur effect
28.50 + */
28.51 + public static void blur(byte[] srcPixels, byte[] dstPixels,
28.52 + int width, int height,
28.53 + float[] kernel, int radius) {
28.54 + float p;
28.55 + int cp;
28.56 + for (int y = 0; y < height; y++) {
28.57 + int index = y;
28.58 + int offset = y * width;
28.59 + for (int x = 0; x < width; x++) {
28.60 + p = 0.0f;
28.61 + for (int i = -radius; i <= radius; i++) {
28.62 + int subOffset = x + i;
28.63 + if (subOffset < 0 || subOffset >= width) {
28.64 + subOffset = (x + width) % width;
28.65 + }
28.66 + int pixel = srcPixels[offset + subOffset] & 0xFF;
28.67 + float blurFactor = kernel[radius + i];
28.68 + p += blurFactor * pixel;
28.69 + }
28.70 + cp = (int) (p + 0.5f);
28.71 + dstPixels[index] = (byte) (cp > 255 ? 255 : cp);
28.72 + index += height;
28.73 + }
28.74 + }
28.75 + }
28.76 +
28.77 + public static float[] createGaussianKernel(int radius) {
28.78 + if (radius < 1) {
28.79 + throw new IllegalArgumentException("Radius must be >= 1");
28.80 + }
28.81 +
28.82 + float[] data = new float[radius * 2 + 1];
28.83 +
28.84 + float sigma = radius / 3.0f;
28.85 + float twoSigmaSquare = 2.0f * sigma * sigma;
28.86 + float sigmaRoot = (float) Math.sqrt(twoSigmaSquare * Math.PI);
28.87 + float total = 0.0f;
28.88 +
28.89 + for (int i = -radius; i <= radius; i++) {
28.90 + float distance = i * i;
28.91 + int index = i + radius;
28.92 + data[index] = (float) Math.exp(-distance / twoSigmaSquare) / sigmaRoot;
28.93 + total += data[index];
28.94 + }
28.95 +
28.96 + for (int i = 0; i < data.length; i++) {
28.97 + data[i] /= total;
28.98 + }
28.99 +
28.100 + return data;
28.101 + }
28.102 +}
29.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
29.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/EffectUtilsTemp.java Wed Apr 29 00:27:46 2009 -0700
29.3 @@ -0,0 +1,82 @@
29.4 +/*
29.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
29.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
29.7 + *
29.8 + * This code is free software; you can redistribute it and/or modify it
29.9 + * under the terms of the GNU General Public License version 2 only, as
29.10 + * published by the Free Software Foundation. Sun designates this
29.11 + * particular file as subject to the "Classpath" exception as provided
29.12 + * by Sun in the LICENSE file that accompanied this code.
29.13 + *
29.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
29.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
29.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
29.17 + * version 2 for more details (a copy is included in the LICENSE file that
29.18 + * accompanied this code).
29.19 + *
29.20 + * You should have received a copy of the GNU General Public License version
29.21 + * 2 along with this work; if not, write to the Free Software Foundation,
29.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
29.23 + *
29.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
29.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
29.26 + * have any questions.
29.27 + */
29.28 +package org.jdesktop.swingx.designer.effects;
29.29 +
29.30 +import java.awt.Composite;
29.31 +import java.awt.CompositeContext;
29.32 +import java.awt.Graphics2D;
29.33 +import java.awt.RenderingHints;
29.34 +import java.awt.image.BufferedImage;
29.35 +import java.awt.image.ColorModel;
29.36 +import java.awt.image.Raster;
29.37 +import java.awt.image.WritableRaster;
29.38 +
29.39 +/**
29.40 + * EffectUtilsTemp - effect utils methods that are not being used for now but we might want later
29.41 + *
29.42 + * @author Created by Jasper Potts (Jun 18, 2007)
29.43 + */
29.44 +public class EffectUtilsTemp {
29.45 +
29.46 + /**
29.47 + * Extract the alpha channel of a image into new greyscale buffered image
29.48 + *
29.49 + * @param src Must but INT_ARGB buffered image
29.50 + * @return new TYPE_BYTE_GRAY image of just the alpha channel
29.51 + */
29.52 + public static BufferedImage extractAlpha(BufferedImage src) {
29.53 + int w = src.getWidth();
29.54 + int h = src.getHeight();
29.55 + // extract image alpha channel as greyscale image
29.56 + final BufferedImage greyImg = new BufferedImage(w, h, BufferedImage.TYPE_BYTE_GRAY);
29.57 + Graphics2D g2 = greyImg.createGraphics();
29.58 + g2.setComposite(new Composite() {
29.59 + public CompositeContext createContext(ColorModel srcColorModel, ColorModel dstColorModel,
29.60 + RenderingHints hints) {
29.61 + return new CompositeContext() {
29.62 + public void dispose() {}
29.63 +
29.64 + public void compose(Raster src, Raster dstIn, WritableRaster dstOut) {
29.65 + int width = Math.min(src.getWidth(), dstIn.getWidth());
29.66 + int height = Math.min(src.getHeight(), dstIn.getHeight());
29.67 + int[] srcPixels = new int[width];
29.68 + byte[] dstPixels = new byte[width];
29.69 + for (int y = 0; y < height; y++) {
29.70 + src.getDataElements(0, y, width, 1, srcPixels);
29.71 + for (int x = 0; x < width; x++) {
29.72 + dstPixels[x] = (byte) ((srcPixels[x] & 0xFF000000) >>> 24);
29.73 + }
29.74 + dstOut.setDataElements(0, y, width, 1, dstPixels);
29.75 + }
29.76 + }
29.77 + };
29.78 + }
29.79 + });
29.80 + g2.drawImage(src, 0, 0, null);
29.81 + g2.dispose();
29.82 + return greyImg;
29.83 + }
29.84 +
29.85 +}
30.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
30.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/InnerGlowEffect.java Wed Apr 29 00:27:46 2009 -0700
30.3 @@ -0,0 +1,55 @@
30.4 +/*
30.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
30.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
30.7 + *
30.8 + * This code is free software; you can redistribute it and/or modify it
30.9 + * under the terms of the GNU General Public License version 2 only, as
30.10 + * published by the Free Software Foundation. Sun designates this
30.11 + * particular file as subject to the "Classpath" exception as provided
30.12 + * by Sun in the LICENSE file that accompanied this code.
30.13 + *
30.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
30.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
30.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
30.17 + * version 2 for more details (a copy is included in the LICENSE file that
30.18 + * accompanied this code).
30.19 + *
30.20 + * You should have received a copy of the GNU General Public License version
30.21 + * 2 along with this work; if not, write to the Free Software Foundation,
30.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
30.23 + *
30.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
30.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
30.26 + * have any questions.
30.27 + */
30.28 +package org.jdesktop.swingx.designer.effects;
30.29 +
30.30 +import org.jdesktop.swingx.designer.paint.Matte;
30.31 +
30.32 +import javax.swing.UIDefaults;
30.33 +import java.awt.Color;
30.34 +
30.35 +/**
30.36 + * InnerGlowEffect
30.37 + *
30.38 + * @author Created by Jasper Potts (Jun 21, 2007)
30.39 + */
30.40 +public class InnerGlowEffect extends InnerShadowEffect {
30.41 +
30.42 + protected InnerGlowEffect() {
30.43 + distance = 0;
30.44 + }
30.45 +
30.46 + public InnerGlowEffect(UIDefaults uiDefaults) {
30.47 + color = new Matte(new Color(255, 255, 211), uiDefaults);
30.48 + }
30.49 +
30.50 + /**
30.51 + * Get the display name for this effect
30.52 + *
30.53 + * @return The user displayable name
30.54 + */
30.55 + public String getDisplayName() {
30.56 + return "Inner Glow";
30.57 + }
30.58 +}
31.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
31.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/InnerShadowEffect.java Wed Apr 29 00:27:46 2009 -0700
31.3 @@ -0,0 +1,142 @@
31.4 +/*
31.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
31.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
31.7 + *
31.8 + * This code is free software; you can redistribute it and/or modify it
31.9 + * under the terms of the GNU General Public License version 2 only, as
31.10 + * published by the Free Software Foundation. Sun designates this
31.11 + * particular file as subject to the "Classpath" exception as provided
31.12 + * by Sun in the LICENSE file that accompanied this code.
31.13 + *
31.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
31.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
31.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
31.17 + * version 2 for more details (a copy is included in the LICENSE file that
31.18 + * accompanied this code).
31.19 + *
31.20 + * You should have received a copy of the GNU General Public License version
31.21 + * 2 along with this work; if not, write to the Free Software Foundation,
31.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
31.23 + *
31.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
31.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
31.26 + * have any questions.
31.27 + */
31.28 +package org.jdesktop.swingx.designer.effects;
31.29 +
31.30 +import org.jdesktop.swingx.designer.paint.Matte;
31.31 +
31.32 +import javax.swing.UIDefaults;
31.33 +import java.awt.Color;
31.34 +import java.awt.image.BufferedImage;
31.35 +import java.awt.image.Raster;
31.36 +import java.awt.image.WritableRaster;
31.37 +import java.util.Arrays;
31.38 +
31.39 +/**
31.40 + * InnerShadowEffect
31.41 + *
31.42 + * @author Created by Jasper Potts (Jun 18, 2007)
31.43 + */
31.44 +public class InnerShadowEffect extends ShadowEffect {
31.45 +
31.46 + protected InnerShadowEffect() {}
31.47 +
31.48 + ;
31.49 +
31.50 + public InnerShadowEffect(UIDefaults uiDefaults) {
31.51 + color = new Matte(Color.BLACK, uiDefaults);
31.52 + }
31.53 +
31.54 + // =================================================================================================================
31.55 + // Effect Methods
31.56 +
31.57 + /**
31.58 + * Get the display name for this effect
31.59 + *
31.60 + * @return The user displayable name
31.61 + */
31.62 + public String getDisplayName() {
31.63 + return "Inner Shadow";
31.64 + }
31.65 +
31.66 + /**
31.67 + * Get the type of this effect, one of UNDER,BLENDED,OVER. UNDER means the result of apply effect should be painted
31.68 + * under the src image. BLENDED means the result of apply sffect contains a modified src image so just it should be
31.69 + * painted. OVER means the result of apply effect should be painted over the src image.
31.70 + *
31.71 + * @return The effect type
31.72 + */
31.73 + public Effect.EffectType getEffectType() {
31.74 + return Effect.EffectType.OVER;
31.75 + }
31.76 +
31.77 + /**
31.78 + * Apply the effect to the src image generating the result . The result image may or may not contain the source
31.79 + * image depending on what the effect type is.
31.80 + *
31.81 + * @param src The source image for applying the effect to
31.82 + * @param dst The dstination image to paint effect result into. If this is null then a new image will be created
31.83 + * @param w The width of the src image to apply effect to, this allow the src and dst buffers to be bigger than
31.84 + * the area the need effect applied to it
31.85 + * @param h The height of the src image to apply effect to, this allow the src and dst buffers to be bigger than
31.86 + * the area the need effect applied to it
31.87 + * @return The result of appl
31.88 + */
31.89 + public BufferedImage applyEffect(BufferedImage src, BufferedImage dst, int w, int h) {
31.90 + // calculate offset
31.91 + double trangleAngle = Math.toRadians(angle - 90);
31.92 + int offsetX = (int) (Math.sin(trangleAngle) * distance);
31.93 + int offsetY = (int) (Math.cos(trangleAngle) * distance);
31.94 + // clac expanded size
31.95 + int tmpOffX = offsetX + size;
31.96 + int tmpOffY = offsetY + size;
31.97 + int tmpW = w + offsetX + size + size;
31.98 + int tmpH = h + offsetY + size + size;
31.99 + // create tmp buffers
31.100 + int[] lineBuf = getTmpIntArray(w);
31.101 + byte[] srcAlphaBuf = getTmpByteArray1(tmpW * tmpH);
31.102 + Arrays.fill(srcAlphaBuf, (byte) 0xFF);
31.103 + byte[] tmpBuf1 = getTmpByteArray2(tmpW * tmpH);
31.104 + byte[] tmpBuf2 = getTmpByteArray3(tmpW * tmpH);
31.105 + // extract src image alpha channel and inverse and offset
31.106 + Raster srcRaster = src.getRaster();
31.107 + for (int y = 0; y < h; y++) {
31.108 + int dy = (y + tmpOffY);
31.109 + int offset = dy * tmpW;
31.110 + srcRaster.getDataElements(0, y, w, 1, lineBuf);
31.111 + for (int x = 0; x < w; x++) {
31.112 + int dx = x + tmpOffX;
31.113 + srcAlphaBuf[offset + dx] = (byte) ((255 - ((lineBuf[x] & 0xFF000000) >>> 24)) & 0xFF);
31.114 + }
31.115 + }
31.116 + // blur
31.117 + float[] kernel = EffectUtils.createGaussianKernel(size * 2);
31.118 + EffectUtils.blur(srcAlphaBuf, tmpBuf2, tmpW, tmpH, kernel, size * 2); // horizontal pass
31.119 + EffectUtils.blur(tmpBuf2, tmpBuf1, tmpH, tmpW, kernel, size * 2);// vertical pass
31.120 + //rescale
31.121 + float spread = Math.min(1 / (1 - (0.01f * this.spread)), 255);
31.122 + for (int i = 0; i < tmpBuf1.length; i++) {
31.123 + int val = (int) (((int) tmpBuf1[i] & 0xFF) * spread);
31.124 + tmpBuf1[i] = (val > 255) ? (byte) 0xFF : (byte) val;
31.125 + }
31.126 + // create color image with shadow color and greyscale image as alpha
31.127 + if (dst == null) dst = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
31.128 + WritableRaster shadowRaster = dst.getRaster();
31.129 + int red = color.getRed(), green = color.getGreen(), blue = color.getBlue();
31.130 + for (int y = 0; y < h; y++) {
31.131 + int srcY = y + tmpOffY;
31.132 + int offset = srcY * tmpW;
31.133 + int shadowOffset = (srcY - offsetY) * tmpW;
31.134 + for (int x = 0; x < w; x++) {
31.135 + int srcX = x + tmpOffX;
31.136 + int origianlAlphaVal = 255 - ((int) srcAlphaBuf[offset + srcX] & 0xFF);
31.137 + int shadowVal = (int) tmpBuf1[shadowOffset + (srcX - offsetX)] & 0xFF;
31.138 + int alphaVal = Math.min(origianlAlphaVal, shadowVal);
31.139 + lineBuf[x] = ((byte) alphaVal & 0xFF) << 24 | red << 16 | green << 8 | blue;
31.140 + }
31.141 + shadowRaster.setDataElements(0, y, w, 1, lineBuf);
31.142 + }
31.143 + return dst;
31.144 + }
31.145 +}
32.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
32.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/OuterGlowEffect.java Wed Apr 29 00:27:46 2009 -0700
32.3 @@ -0,0 +1,55 @@
32.4 +/*
32.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
32.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
32.7 + *
32.8 + * This code is free software; you can redistribute it and/or modify it
32.9 + * under the terms of the GNU General Public License version 2 only, as
32.10 + * published by the Free Software Foundation. Sun designates this
32.11 + * particular file as subject to the "Classpath" exception as provided
32.12 + * by Sun in the LICENSE file that accompanied this code.
32.13 + *
32.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
32.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
32.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
32.17 + * version 2 for more details (a copy is included in the LICENSE file that
32.18 + * accompanied this code).
32.19 + *
32.20 + * You should have received a copy of the GNU General Public License version
32.21 + * 2 along with this work; if not, write to the Free Software Foundation,
32.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
32.23 + *
32.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
32.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
32.26 + * have any questions.
32.27 + */
32.28 +package org.jdesktop.swingx.designer.effects;
32.29 +
32.30 +import org.jdesktop.swingx.designer.paint.Matte;
32.31 +
32.32 +import javax.swing.UIDefaults;
32.33 +import java.awt.Color;
32.34 +
32.35 +/**
32.36 + * OuterGlowEffect
32.37 + *
32.38 + * @author Created by Jasper Potts (Jun 21, 2007)
32.39 + */
32.40 +public class OuterGlowEffect extends DropShadowEffect {
32.41 +
32.42 + protected OuterGlowEffect() {
32.43 + distance = 0;
32.44 + }
32.45 +
32.46 + public OuterGlowEffect(UIDefaults uiDefaults) {
32.47 + color = new Matte(new Color(255, 255, 211), uiDefaults);
32.48 + }
32.49 +
32.50 + /**
32.51 + * Get the display name for this effect
32.52 + *
32.53 + * @return The user displayable name
32.54 + */
32.55 + public String getDisplayName() {
32.56 + return "Outer Glow";
32.57 + }
32.58 +}
33.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
33.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/ShadowEffect.java Wed Apr 29 00:27:46 2009 -0700
33.3 @@ -0,0 +1,132 @@
33.4 +/*
33.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
33.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
33.7 + *
33.8 + * This code is free software; you can redistribute it and/or modify it
33.9 + * under the terms of the GNU General Public License version 2 only, as
33.10 + * published by the Free Software Foundation. Sun designates this
33.11 + * particular file as subject to the "Classpath" exception as provided
33.12 + * by Sun in the LICENSE file that accompanied this code.
33.13 + *
33.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
33.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
33.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
33.17 + * version 2 for more details (a copy is included in the LICENSE file that
33.18 + * accompanied this code).
33.19 + *
33.20 + * You should have received a copy of the GNU General Public License version
33.21 + * 2 along with this work; if not, write to the Free Software Foundation,
33.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
33.23 + *
33.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
33.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
33.26 + * have any questions.
33.27 + */
33.28 +package org.jdesktop.swingx.designer.effects;
33.29 +
33.30 +import org.jdesktop.swingx.designer.BlendingMode;
33.31 +import org.jdesktop.swingx.designer.paint.Matte;
33.32 +
33.33 +import javax.swing.UIDefaults;
33.34 +import java.awt.Color;
33.35 +
33.36 +/**
33.37 + * ShadowEffect - base class with all the standard properties for shadow effects
33.38 + *
33.39 + * @author Created by Jasper Potts (Jun 18, 2007)
33.40 + */
33.41 +public abstract class ShadowEffect extends Effect {
33.42 + protected Matte color;
33.43 + protected BlendingMode blendingMode = BlendingMode.NORMAL;
33.44 + /** Opacity a float 0-1 for percentage */
33.45 + protected float opacity = 0.75f;
33.46 + /** Angle in degrees between 0-360 */
33.47 + protected int angle = 135;
33.48 + /** Distance in pixels */
33.49 + protected int distance = 5;
33.50 + /** The shadow spread between 0-100 % */
33.51 + protected int spread = 0;
33.52 + /** Size in pixels */
33.53 + protected int size = 5;
33.54 +
33.55 + protected ShadowEffect() {}
33.56 +
33.57 + ;
33.58 +
33.59 + public ShadowEffect(UIDefaults uiDefaults) {
33.60 + color = new Matte(Color.BLACK, uiDefaults);
33.61 + }
33.62 +
33.63 + // =================================================================================================================
33.64 + // Bean methods
33.65 +
33.66 + public Matte getColor() {
33.67 + return color;
33.68 + }
33.69 +
33.70 + public void setColor(Matte color) {
33.71 + Matte old = getColor();
33.72 + this.color = color;
33.73 + firePropertyChange("color", old, getColor());
33.74 + }
33.75 +
33.76 + public BlendingMode getBlendingMode() {
33.77 + return blendingMode;
33.78 + }
33.79 +
33.80 + public void setBlendingMode(BlendingMode blendingMode) {
33.81 + BlendingMode old = getBlendingMode();
33.82 + this.blendingMode = blendingMode;
33.83 + firePropertyChange("blendingMode", old, getBlendingMode());
33.84 + }
33.85 +
33.86 + public float getOpacity() {
33.87 + return opacity;
33.88 + }
33.89 +
33.90 + public void setOpacity(float opacity) {
33.91 + float old = getOpacity();
33.92 + this.opacity = opacity;
33.93 + firePropertyChange("opacity", old, getOpacity());
33.94 + }
33.95 +
33.96 + public int getAngle() {
33.97 + return angle;
33.98 + }
33.99 +
33.100 + public void setAngle(int angle) {
33.101 + int old = getAngle();
33.102 + this.angle = angle;
33.103 + firePropertyChange("angle", old, getAngle());
33.104 + }
33.105 +
33.106 + public int getDistance() {
33.107 + return distance;
33.108 + }
33.109 +
33.110 + public void setDistance(int distance) {
33.111 + int old = getDistance();
33.112 + this.distance = distance;
33.113 + firePropertyChange("distance", old, getDistance());
33.114 + }
33.115 +
33.116 + public int getSpread() {
33.117 + return spread;
33.118 + }
33.119 +
33.120 + public void setSpread(int spread) {
33.121 + int old = getSpread();
33.122 + this.spread = spread;
33.123 + firePropertyChange("spread", old, getSpread());
33.124 + }
33.125 +
33.126 + public int getSize() {
33.127 + return size;
33.128 + }
33.129 +
33.130 + public void setSize(int size) {
33.131 + int old = getSize();
33.132 + this.size = size;
33.133 + firePropertyChange("size", old, getSize());
33.134 + }
33.135 +}
34.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
34.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/font/Typeface.java Wed Apr 29 00:27:46 2009 -0700
34.3 @@ -0,0 +1,484 @@
34.4 +/*
34.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
34.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
34.7 + *
34.8 + * This code is free software; you can redistribute it and/or modify it
34.9 + * under the terms of the GNU General Public License version 2 only, as
34.10 + * published by the Free Software Foundation. Sun designates this
34.11 + * particular file as subject to the "Classpath" exception as provided
34.12 + * by Sun in the LICENSE file that accompanied this code.
34.13 + *
34.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
34.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
34.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
34.17 + * version 2 for more details (a copy is included in the LICENSE file that
34.18 + * accompanied this code).
34.19 + *
34.20 + * You should have received a copy of the GNU General Public License version
34.21 + * 2 along with this work; if not, write to the Free Software Foundation,
34.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
34.23 + *
34.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
34.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
34.26 + * have any questions.
34.27 + */
34.28 +package org.jdesktop.swingx.designer.font;
34.29 +
34.30 +import java.awt.Font;
34.31 +import java.beans.PropertyChangeEvent;
34.32 +import java.beans.PropertyChangeListener;
34.33 +import javax.swing.UIDefaults;
34.34 +import org.jdesktop.beans.AbstractBean;
34.35 +import org.jdesktop.swingx.designer.utils.HasUIDefaults;
34.36 +import org.jibx.runtime.IUnmarshallingContext;
34.37 +
34.38 +/**
34.39 + * I don't think the name is technically correct (ie: a typeface is not a font),
34.40 + * but I wanted something besides "font" so, here it is.
34.41 + *
34.42 + * This is a mutable font, much like Matte is a mutable color. Also like Matte,
34.43 + * Typeface can be derived.
34.44 + *
34.45 + * @author rbair
34.46 + */
34.47 +public class Typeface extends AbstractBean {
34.48 + //specifies whether to derive bold, or italic.
34.49 + //Default means, get my value from my parent.
34.50 + //Off means, leave bold/italic off.
34.51 + //On means, make bold/italic on.
34.52 + public enum DeriveStyle { Default, Off, On }
34.53 +
34.54 + private String uiDefaultParentName;
34.55 + /** This is a local UIDefaults that contains all the UIDefaults in the Model. */
34.56 + private transient UIDefaults uiDefaults = new UIDefaults();
34.57 + private PropertyChangeListener uiDefaultsChangeListener = new PropertyChangeListener() {
34.58 + public void propertyChange(PropertyChangeEvent evt) {
34.59 + if (uiDefaultParentName != null && uiDefaultParentName.equals(evt.getPropertyName())) {
34.60 + updateFontFromOffsets();
34.61 + }
34.62 + }
34.63 + };
34.64 +
34.65 + /**
34.66 + * The name of the font. If uiDefaultParentName is specified, then this name
34.67 + * will be set to be equal to the name of the parent font.
34.68 + */
34.69 + private String name;
34.70 + /**
34.71 + * The size of the font. If uiDefaultParentName is set, then this value is
34.72 + * updated to reflect the size of the parent font * the sizeOffset.
34.73 + */
34.74 + private int size;
34.75 +
34.76 + //this field is not publically accessible. Rather, it is updated based on
34.77 + //"bold" and "italic" as necessary.
34.78 + private int style = Font.PLAIN;
34.79 + private DeriveStyle bold = DeriveStyle.Default;
34.80 + private DeriveStyle italic = DeriveStyle.Default;
34.81 +
34.82 + /**
34.83 + * The size offset. Only used if uiDefaultParentName is specified. This offset
34.84 + * will be multiplied with the parent font's size to determine the size of this
34.85 + * typeface. The offset is specified as a percentage, either positive or negative.
34.86 + *
34.87 + * The reason a percentage was used, was so that things would look correctly
34.88 + * when scaled, such as with high DPI situations.
34.89 + */
34.90 + private float sizeOffset;
34.91 +
34.92 + /**
34.93 + * Create a new Typeface. Note that, without specifying the uiDefaults,
34.94 + * you cannot have font derivation. Thus, this constructor should never
34.95 + * be called, except for the XML binding stuff.
34.96 + */
34.97 + public Typeface() { }
34.98 +
34.99 + /**
34.100 + * Creates a new Typeface.
34.101 + *
34.102 + * @param f The font from which to get the font name, size, and style to use
34.103 + * to initialize this typeface. Note that this font is not used as a parent
34.104 + * font for derivation purposes. Rather, it is used as a source from which to
34.105 + * copy initial settings.
34.106 + *
34.107 + * @param uiDefaults The uiDefaults to use for font derivation purposes.
34.108 + * When the uiDefaultParentName is specified, then this Typeface will inspect
34.109 + * the given UIDefaults for that parent <em>font</em>. Note that the UIDefaults
34.110 + * should be populated with a font, and not with a typeface.
34.111 + */
34.112 + public Typeface(Font f, UIDefaults uiDefaults) {
34.113 + if (f != null) {
34.114 + this.name = f.getName();
34.115 + this.size = f.getSize();
34.116 + this.style = f.getStyle();
34.117 + }
34.118 + setUiDefaults(uiDefaults);
34.119 + }
34.120 +
34.121 + // =================================================================================================================
34.122 + // JIBX Methods
34.123 +
34.124 + /**
34.125 + * Called by JIBX after all fields have been set
34.126 + *
34.127 + * @param context The JIBX Unmarshalling Context
34.128 + */
34.129 + protected void postSet(IUnmarshallingContext context) {
34.130 + // walk up till we get synth model
34.131 + for (int i = 0; i < context.getStackDepth(); i++) {
34.132 + if (context.getStackObject(i) instanceof HasUIDefaults) {
34.133 + UIDefaults uiDefaults = ((HasUIDefaults) context.getStackObject(i)).getUiDefaults();
34.134 + if (uiDefaults != null) {
34.135 + setUiDefaults(uiDefaults);
34.136 + break;
34.137 + }
34.138 + }
34.139 + }
34.140 + }
34.141 +
34.142 + // =================================================================================================================
34.143 + // Typeface methods
34.144 +
34.145 + /**
34.146 + * Is the Typeface an absolute Font not derived from a parent ui default
34.147 + *
34.148 + * @return <code>true</code> if this is a absolute not uidefault derived font
34.149 + */
34.150 + public boolean isAbsolute() {
34.151 + return uiDefaultParentName == null;
34.152 + }
34.153 +
34.154 + /**
34.155 + * Set all properties of this Typeface to be the same as <code>src</code> and fire all the change events
34.156 + *
34.157 + * @param src the Typeface to copy properties from
34.158 + */
34.159 + public void copy(Typeface src) {
34.160 + // keep old values
34.161 + Font oldFont = getFont();
34.162 + String oldParentName = uiDefaultParentName;
34.163 + String oldName = name;
34.164 + int oldSize = size;
34.165 + float oldSizeOffset = sizeOffset;
34.166 + DeriveStyle oldBold = bold, oldItalic = italic;
34.167 +
34.168 + style = src.style;
34.169 +
34.170 + //Note, I don't just call the setters here, because I want to make
34.171 + //sure the "font" PCE is only fired once, at the end.
34.172 + name = src.name;
34.173 + firePropertyChange("name", oldName, name);
34.174 + size = src.size;
34.175 + firePropertyChange("size", oldSize, size);
34.176 + bold = src.bold;
34.177 + firePropertyChange("bold", oldBold, bold);
34.178 + italic = src.italic;
34.179 + firePropertyChange("italic", oldItalic, italic);
34.180 + sizeOffset = src.sizeOffset;
34.181 + firePropertyChange("sizeOffset", oldSizeOffset, sizeOffset);
34.182 + uiDefaultParentName = src.uiDefaultParentName;
34.183 + firePropertyChange("uiDefaultParentName", oldParentName, uiDefaultParentName);
34.184 + setUiDefaults(src.uiDefaults);
34.185 + firePropertyChange("font", oldFont, getFont());
34.186 + }
34.187 +
34.188 + // =================================================================================================================
34.189 + // Bean Methods
34.190 +
34.191 + /**
34.192 + * Get the local UIDefaults that contains all the UIDefaults in the Model.
34.193 + *
34.194 + * @return The UIDefaults for the model that contains this Typeface, can be null if this Typeface is not part of a bigger
34.195 + * model
34.196 + */
34.197 + public UIDefaults getUiDefaults() {
34.198 + return uiDefaults;
34.199 + }
34.200 +
34.201 + /**
34.202 + * Set the local UIDefaults that contains all the UIDefaults in the Model.
34.203 + *
34.204 + * @param uiDefaults The UIDefaults for the model that contains this Typeface, can be null if this Typeface is not part of
34.205 + * a bigger model
34.206 + */
34.207 + public void setUiDefaults(UIDefaults uiDefaults) {
34.208 + if (uiDefaults != this.uiDefaults) {
34.209 + UIDefaults old = getUiDefaults();
34.210 + if (old != null) old.removePropertyChangeListener(uiDefaultsChangeListener);
34.211 + this.uiDefaults = uiDefaults;
34.212 + if (uiDefaults != null) this.uiDefaults.addPropertyChangeListener(uiDefaultsChangeListener);
34.213 + firePropertyChange("uiDefaults", old, getUiDefaults());
34.214 + }
34.215 + }
34.216 +
34.217 + /**
34.218 + * Get the name if the uidefault font that is the parent that this Typeface is derived from. If null then this is a
34.219 + * absolute font.
34.220 + *
34.221 + * @return Parent font ui default name
34.222 + */
34.223 + public String getUiDefaultParentName() {
34.224 + return uiDefaultParentName;
34.225 + }
34.226 +
34.227 + /**
34.228 + * Set the name if the uidefault font that is the parent that this Typeface is derived from. If null then this is a
34.229 + * absolute font.
34.230 + *
34.231 + * @param uiDefaultParentName Parent font ui default name
34.232 + */
34.233 + public void setUiDefaultParentName(String uiDefaultParentName) {
34.234 + String old = getUiDefaultParentName();
34.235 + this.uiDefaultParentName = uiDefaultParentName;
34.236 + firePropertyChange("uiDefaultParentName", old, getUiDefaultParentName());
34.237 + if (isAbsolute()) {
34.238 + // reset offsets
34.239 + float oldSizeOffset = sizeOffset;
34.240 + sizeOffset = 0;
34.241 + firePropertyChange("sizeOffset", oldSizeOffset, sizeOffset);
34.242 + } else {
34.243 + updateFontFromOffsets();
34.244 + }
34.245 + }
34.246 +
34.247 + /**
34.248 + * @return Gets the name of the font
34.249 + */
34.250 + public final String getName() {
34.251 + return name;
34.252 + }
34.253 +
34.254 + /**
34.255 + * Sets the name of the font. This method call <em>only</em> works if
34.256 + * <code>isAbsolute</code> returns true. Otherwise, it is ignored.
34.257 + * @param name the name of the font
34.258 + */
34.259 + public void setName(String name) {
34.260 + if (isAbsolute()) {
34.261 + String old = this.name;
34.262 + Font oldF = getFont();
34.263 + this.name = name;
34.264 + firePropertyChange("name", old, this.name);
34.265 + firePropertyChange("font", oldF, getFont());
34.266 + }
34.267 + }
34.268 +
34.269 + /**
34.270 + * @return gets the size of the font.
34.271 + */
34.272 + public final int getSize() {
34.273 + return size;
34.274 + }
34.275 +
34.276 + /**
34.277 + * <p>Sets the size of the font. THis method call will work whether
34.278 + * <code>isAbsolute</code> returns true or false. If this is an absolute
34.279 + * typeface, then the size is set directly. Otherwise, if this is a
34.280 + * derived typeface, then the sizeOffset will be updated to reflect the
34.281 + * proper offset based on this size, and the size of the parent font.</p>
34.282 + *
34.283 + * <p>For example, if the parent font's size was 12, and the sizeOffset was
34.284 + * -2 (thus yielding as size on this typeface of 10), and you call setSize
34.285 + * passing in "14" as the size, then the sizeOffset will be updated to be
34.286 + * equal to "2".</p>
34.287 + *
34.288 + * @param size the new size for this typeface.
34.289 + */
34.290 + public void setSize(int size) {
34.291 + int old = this.size;
34.292 + Font oldF = getFont();
34.293 + this.size = size;
34.294 + firePropertyChange("size", old, this.size);
34.295 + firePropertyChange("font", oldF, getFont());
34.296 + updateOffsetsFromFont();
34.297 + }
34.298 +
34.299 + /**
34.300 + * @return the size offset
34.301 + */
34.302 + public final float getSizeOffset() {
34.303 + return sizeOffset;
34.304 + }
34.305 +
34.306 + /**
34.307 + * Sets the percentage by which the size of this font should be different
34.308 + * from its parent font. This property is kept in synch with the size property.
34.309 + *
34.310 + * @param sizeOffset the size offset. May be any float. The value "1" means,
34.311 + * 100%. -1 means "-100%". 2 means "200%", and so on.
34.312 + */
34.313 + public void setSizeOffset(float sizeOffset) {
34.314 + float old = this.sizeOffset;
34.315 + Font oldF = getFont();
34.316 + this.sizeOffset = sizeOffset;
34.317 + firePropertyChange("sizeOffset", old, this.sizeOffset);
34.318 + firePropertyChange("font", oldF, getFont());
34.319 + updateFontFromOffsets();
34.320 + }
34.321 +
34.322 + public DeriveStyle getBold() {
34.323 + return bold;
34.324 + }
34.325 +
34.326 + public void setBold(DeriveStyle bold) {
34.327 + DeriveStyle old = this.bold;
34.328 + this.bold = bold == null ? DeriveStyle.Default : bold;
34.329 + firePropertyChange("bold", old, this.bold);
34.330 + updateFontFromOffsets();
34.331 + }
34.332 +
34.333 + public DeriveStyle getItalic() {
34.334 + return italic;
34.335 + }
34.336 +
34.337 + public void setItalic(DeriveStyle italic) {
34.338 + DeriveStyle old = this.italic;
34.339 + this.italic = italic == null ? DeriveStyle.Default : italic;
34.340 + firePropertyChange("italic", old, this.italic);
34.341 + updateFontFromOffsets();
34.342 + }
34.343 +
34.344 + /**
34.345 + * @return whether or not the font represented by this typeface is supported
34.346 + * on this operating system platform.
34.347 + */
34.348 + public boolean isFontSupported() {
34.349 + return true;//Font.getFont(name) != null;
34.350 + }
34.351 +
34.352 + /**
34.353 + * @return Gets the font associated with this Typeface. If font derivation is
34.354 + * being used, then the Font returned is the result of that derivation.
34.355 + */
34.356 + public Font getFont() {
34.357 + return new Font(name, style, size);
34.358 + }
34.359 +
34.360 + /**
34.361 + * Sets the font from which this Typeface should extract the font name, style,
34.362 + * and size. If font derivation is being used, then the font name will be ignored,
34.363 + * the style will be used (and always override the parent font), and the size
34.364 + * will be set and the sizeOffset updated appropriately.
34.365 + *
34.366 + * @param f the Font
34.367 + */
34.368 + public void setFont(Font f) {
34.369 + Font oldFont = getFont();
34.370 + String oldName = name;
34.371 + int oldSize = size;
34.372 + DeriveStyle oldBold = bold, oldItalic = italic;
34.373 + name = f.getName();
34.374 + size = f.getSize();
34.375 + style = f.getStyle();
34.376 + updateOffsetsFromFont();
34.377 + firePropertyChange("name", oldName, name);
34.378 + firePropertyChange("size", oldSize, size);
34.379 + firePropertyChange("bold", oldBold, bold);
34.380 + firePropertyChange("italic", oldItalic, italic);
34.381 + firePropertyChange("font", oldFont, getFont());
34.382 + }
34.383 +
34.384 + /**
34.385 + * @inheritDoc
34.386 + *
34.387 + * @return A formatted string representing this Typeface. This String should
34.388 + * not be considered public API, as it may change in a future release.
34.389 + */
34.390 + @Override public String toString() {
34.391 + Font f = getFont();
34.392 + String strStyle;
34.393 + if (f.isBold()) {
34.394 + strStyle = f.isItalic() ? "bolditalic" : "bold";
34.395 + } else {
34.396 + strStyle = f.isItalic() ? "italic" : "plain";
34.397 + }
34.398 +
34.399 + if (isAbsolute()) {
34.400 + return Typeface.class.getName() + "[name=" + name + ", size=" + size + ", style=" + strStyle + "]";
34.401 + } else {
34.402 + return Typeface.class.getName() + "[base=" + uiDefaultParentName +
34.403 + ", name=" + name + ", size=" + size + "(offset " + sizeOffset + ")" +
34.404 + ", style=" + strStyle + "]";
34.405 + }
34.406 + }
34.407 +
34.408 + @Override public boolean equals(Object o) {
34.409 + if (this == o) return true;
34.410 + if (o == null || getClass() != o.getClass()) return false;
34.411 + Typeface typeface = (Typeface) o;
34.412 + if (!typeface.name.equals(name)) return false;
34.413 + if (size != typeface.size) return false;
34.414 + if (bold != typeface.bold) return false;
34.415 + if (italic != typeface.italic) return false;
34.416 + if (sizeOffset != typeface.sizeOffset) return false;
34.417 + if (uiDefaultParentName != null ? !uiDefaultParentName.equals(typeface.uiDefaultParentName) :
34.418 + typeface.uiDefaultParentName != null) return false;
34.419 + return true;
34.420 + }
34.421 +
34.422 + @Override public int hashCode() {
34.423 + int result;
34.424 + result = name.hashCode();
34.425 + result = 31 * result + size;
34.426 + result = 31 * result + bold.ordinal();
34.427 + result = 31 * result + italic.ordinal();
34.428 + result = 31 * result + (int)(sizeOffset*100);
34.429 + result = 31 * result + (uiDefaultParentName != null ? uiDefaultParentName.hashCode() : 0);
34.430 + return result;
34.431 + }
34.432 +
34.433 + @Override public Typeface clone() {
34.434 + Typeface clone = new Typeface();
34.435 + clone.name = name;
34.436 + clone.size = size;
34.437 + clone.style = style;
34.438 + clone.bold = bold;
34.439 + clone.italic = italic;
34.440 + clone.sizeOffset = sizeOffset;
34.441 + clone.uiDefaultParentName = uiDefaultParentName;
34.442 + clone.setUiDefaults(uiDefaults);
34.443 + return clone;
34.444 + }
34.445 +
34.446 + // =================================================================================================================
34.447 + // Private Helper Methods
34.448 +
34.449 + private void updateOffsetsFromFont() {
34.450 + if (!isAbsolute()) {
34.451 + float oldSizeOffset = sizeOffset;
34.452 + Font parentFont = uiDefaults.getFont(uiDefaultParentName);
34.453 + if (parentFont != null) {
34.454 + float s = size;
34.455 + float p = parentFont.getSize();
34.456 + sizeOffset = (s/p) - 1f;
34.457 + firePropertyChange("sizeOffset", oldSizeOffset, sizeOffset);
34.458 + }
34.459 + }
34.460 + }
34.461 +
34.462 + private void updateFontFromOffsets() {
34.463 + if (!isAbsolute()) {
34.464 + Font oldFont = getFont();
34.465 + // get parent font data
34.466 + Font parentFont = uiDefaults.getFont(uiDefaultParentName);
34.467 + if (parentFont != null) {
34.468 + String oldName = name;
34.469 + int oldSize = size;
34.470 +
34.471 + name = parentFont.getName();
34.472 + size = Math.round(parentFont.getSize() * (1f + sizeOffset));
34.473 +
34.474 + boolean isBold = (bold == DeriveStyle.Default && parentFont.isBold()) || bold == DeriveStyle.On;
34.475 + boolean isItalic = (italic == DeriveStyle.Default && parentFont.isItalic()) || italic == DeriveStyle.On;
34.476 + style = Font.PLAIN;
34.477 + if (isBold) style = style | Font.BOLD;
34.478 + if (isItalic) style = style | Font.ITALIC;
34.479 +
34.480 + // update fire events
34.481 + firePropertyChange("name", oldName, name);
34.482 + firePropertyChange("size", oldSize, size);
34.483 + firePropertyChange("font", oldFont, getFont());
34.484 + }
34.485 + }
34.486 + }
34.487 +}
35.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
35.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/jibxhelpers/CanvasMapper.java Wed Apr 29 00:27:46 2009 -0700
35.3 @@ -0,0 +1,123 @@
35.4 +/*
35.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
35.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
35.7 + *
35.8 + * This code is free software; you can redistribute it and/or modify it
35.9 + * under the terms of the GNU General Public License version 2 only, as
35.10 + * published by the Free Software Foundation. Sun designates this
35.11 + * particular file as subject to the "Classpath" exception as provided
35.12 + * by Sun in the LICENSE file that accompanied this code.
35.13 + *
35.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
35.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
35.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
35.17 + * version 2 for more details (a copy is included in the LICENSE file that
35.18 + * accompanied this code).
35.19 + *
35.20 + * You should have received a copy of the GNU General Public License version
35.21 + * 2 along with this work; if not, write to the Free Software Foundation,
35.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
35.23 + *
35.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
35.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
35.26 + * have any questions.
35.27 + */
35.28 +package org.jdesktop.swingx.designer.jibxhelpers;
35.29 +
35.30 +import org.jdesktop.swingx.designer.Canvas;
35.31 +import org.jdesktop.swingx.designer.utils.HasPath;
35.32 +import org.jdesktop.swingx.designer.utils.HasResources;
35.33 +import org.jdesktop.swingx.designer.utils.HasUIDefaults;
35.34 +import org.jibx.runtime.BindingDirectory;
35.35 +import org.jibx.runtime.IBindingFactory;
35.36 +import org.jibx.runtime.IMarshallable;
35.37 +import org.jibx.runtime.IMarshaller;
35.38 +import org.jibx.runtime.IMarshallingContext;
35.39 +import org.jibx.runtime.IUnmarshaller;
35.40 +import org.jibx.runtime.IUnmarshallingContext;
35.41 +import org.jibx.runtime.JiBXException;
35.42 +import org.jibx.runtime.impl.MarshallingContext;
35.43 +import org.jibx.runtime.impl.UnmarshallingContext;
35.44 +
35.45 +import javax.swing.UIDefaults;
35.46 +import java.io.File;
35.47 +
35.48 +/**
35.49 + * CanvasMapper
35.50 + *
35.51 + * @author Created by Jasper Potts (Jun 12, 2007)
35.52 + */
35.53 +public class CanvasMapper implements IMarshaller, IUnmarshaller {
35.54 + private static final String ELEMENT_NAME = "canvas";
35.55 + private IBindingFactory bindingFactory;
35.56 +
35.57 +
35.58 + public CanvasMapper() {
35.59 + try {
35.60 + bindingFactory = BindingDirectory.getFactory(Canvas.class);
35.61 + } catch (JiBXException e) {
35.62 + e.printStackTrace();
35.63 + }
35.64 + }
35.65 +
35.66 + public boolean isExtension(int i) {
35.67 + return false;
35.68 + }
35.69 +
35.70 + public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
35.71 + return iUnmarshallingContext.isAt(null, ELEMENT_NAME);
35.72 + }
35.73 +
35.74 + public void marshal(Object object, IMarshallingContext iMarshallingContext) throws JiBXException {
35.75 + if (!(object instanceof Canvas)) {
35.76 + throw new JiBXException("Invalid object type for marshaller");
35.77 + } else if (!(iMarshallingContext instanceof MarshallingContext)) {
35.78 + throw new JiBXException("Invalid object type for marshaller");
35.79 + } else {
35.80 + // version found, create marshaller for the associated binding
35.81 +// IBindingFactory bindingFactory = BindingDirectory.getFactory(object.getClass());
35.82 + MarshallingContext context = (MarshallingContext) bindingFactory.createMarshallingContext();
35.83 + // configure marshaller for writing document
35.84 + context.setXmlWriter(iMarshallingContext.getXmlWriter());
35.85 + // output object as document
35.86 + ((IMarshallable) object).marshal(context);
35.87 + }
35.88 + }
35.89 +
35.90 + public Object unmarshal(Object object, IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
35.91 + // make sure we're at the appropriate start tag
35.92 + UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext;
35.93 + if (!ctx.isAt(null, ELEMENT_NAME)) {
35.94 + ctx.throwStartTagNameError(null, ELEMENT_NAME);
35.95 + }
35.96 +
35.97 +// IBindingFactory bindingFactory = BindingDirectory.getFactory(Canvas.class);
35.98 + UnmarshallingContext uctx = (UnmarshallingContext) bindingFactory.createUnmarshallingContext();
35.99 + uctx.setFromContext(ctx);
35.100 + // get the uiDefaults from SynthModel and set them as user context
35.101 + UIDefaults uiDefaults = ((HasUIDefaults) ctx.getStackObject(ctx.getStackDepth() - 1)).getUiDefaults();
35.102 + uctx.setUserContext(uiDefaults);
35.103 + // get has resources
35.104 + HasResources hasResources = (HasResources) ctx.getStackObject(ctx.getStackDepth() - 1);
35.105 + // get path
35.106 + HasPath hasPath = null;
35.107 + for (int i = 0; i < ctx.getStackDepth(); i++) {
35.108 + if (ctx.getStackObject(i) instanceof HasPath) {
35.109 + hasPath = (HasPath) ctx.getStackObject(i);
35.110 + break;
35.111 + }
35.112 + }
35.113 + // Unmarshal the Canvas
35.114 + Canvas canvas = (Canvas) uctx.unmarshalElement();
35.115 + // set canvas's ui defaults
35.116 + canvas.setUiDefaults(uiDefaults);
35.117 + // get canvas path
35.118 + String canvasPath = hasPath.getPath();
35.119 + // calc and set resources
35.120 + canvas.setResourcesDir(new File(hasResources.getResourcesDir(), canvasPath));
35.121 + canvas.setTemplatesDir(new File(hasResources.getTemplatesDir(), canvasPath));
35.122 + canvas.setImagesDir(new File(hasResources.getImagesDir(), canvasPath));
35.123 + // return canvas
35.124 + return canvas;
35.125 + }
35.126 +}
36.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
36.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/jibxhelpers/ColorMapper.java Wed Apr 29 00:27:46 2009 -0700
36.3 @@ -0,0 +1,89 @@
36.4 +/*
36.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
36.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
36.7 + *
36.8 + * This code is free software; you can redistribute it and/or modify it
36.9 + * under the terms of the GNU General Public License version 2 only, as
36.10 + * published by the Free Software Foundation. Sun designates this
36.11 + * particular file as subject to the "Classpath" exception as provided
36.12 + * by Sun in the LICENSE file that accompanied this code.
36.13 + *
36.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
36.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
36.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
36.17 + * version 2 for more details (a copy is included in the LICENSE file that
36.18 + * accompanied this code).
36.19 + *
36.20 + * You should have received a copy of the GNU General Public License version
36.21 + * 2 along with this work; if not, write to the Free Software Foundation,
36.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
36.23 + *
36.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
36.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
36.26 + * have any questions.
36.27 + */
36.28 +package org.jdesktop.swingx.designer.jibxhelpers;
36.29 +
36.30 +import org.jibx.runtime.IMarshaller;
36.31 +import org.jibx.runtime.IMarshallingContext;
36.32 +import org.jibx.runtime.IUnmarshaller;
36.33 +import org.jibx.runtime.IUnmarshallingContext;
36.34 +import org.jibx.runtime.JiBXException;
36.35 +import org.jibx.runtime.impl.MarshallingContext;
36.36 +import org.jibx.runtime.impl.UnmarshallingContext;
36.37 +
36.38 +import java.awt.Color;
36.39 +
36.40 +/**
36.41 + * ColorMapper
36.42 + *
36.43 + * @author Created by Jasper Potts (Jun 8, 2007)
36.44 + */
36.45 +public class ColorMapper implements IMarshaller, IUnmarshaller {
36.46 + private static final String ELEMENT_NAME = "color";
36.47 + private static final String RED_NAME = "red";
36.48 + private static final String GREEN_NAME = "green";
36.49 + private static final String BLUE_NAME = "blue";
36.50 + private static final String ALPHA_NAME = "alpha";
36.51 +
36.52 + public boolean isExtension(int i) {
36.53 + return false;
36.54 + }
36.55 +
36.56 + public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
36.57 + return iUnmarshallingContext.isAt(null, ELEMENT_NAME);
36.58 + }
36.59 +
36.60 + public void marshal(Object object, IMarshallingContext iMarshallingContext) throws JiBXException {
36.61 + if (!(object instanceof Color)) {
36.62 + throw new JiBXException("Invalid object type for marshaller");
36.63 + } else if (!(iMarshallingContext instanceof MarshallingContext)) {
36.64 + throw new JiBXException("Invalid object type for marshaller");
36.65 + } else {
36.66 + MarshallingContext ctx = (MarshallingContext) iMarshallingContext;
36.67 + Color color = (Color) object;
36.68 + ctx.startTagAttributes(0, ELEMENT_NAME).
36.69 + attribute(0, RED_NAME, color.getRed()).
36.70 + attribute(0, GREEN_NAME, color.getGreen()).
36.71 + attribute(0, BLUE_NAME, color.getBlue()).
36.72 + attribute(0, ALPHA_NAME, color.getAlpha()).
36.73 + closeStartEmpty();
36.74 + }
36.75 + }
36.76 +
36.77 + public Object unmarshal(Object object, IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
36.78 + // make sure we're at the appropriate start tag
36.79 + UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext;
36.80 + if (!ctx.isAt(null, ELEMENT_NAME)) {
36.81 + ctx.throwStartTagNameError(null, ELEMENT_NAME);
36.82 + }
36.83 + // get values
36.84 + int red = ctx.attributeInt(null, RED_NAME, 0);
36.85 + int green = ctx.attributeInt(null, GREEN_NAME, 0);
36.86 + int blue = ctx.attributeInt(null, BLUE_NAME, 0);
36.87 + int alpha = ctx.attributeInt(null, ALPHA_NAME, 0);
36.88 + ctx.parsePastEndTag(null, ELEMENT_NAME);
36.89 + // create
36.90 + return new Color(red, green, blue, alpha);
36.91 + }
36.92 +}
37.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
37.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/jibxhelpers/DimensionMapper.java Wed Apr 29 00:27:46 2009 -0700
37.3 @@ -0,0 +1,101 @@
37.4 +/*
37.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
37.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
37.7 + *
37.8 + * This code is free software; you can redistribute it and/or modify it
37.9 + * under the terms of the GNU General Public License version 2 only, as
37.10 + * published by the Free Software Foundation. Sun designates this
37.11 + * particular file as subject to the "Classpath" exception as provided
37.12 + * by Sun in the LICENSE file that accompanied this code.
37.13 + *
37.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
37.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
37.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
37.17 + * version 2 for more details (a copy is included in the LICENSE file that
37.18 + * accompanied this code).
37.19 + *
37.20 + * You should have received a copy of the GNU General Public License version
37.21 + * 2 along with this work; if not, write to the Free Software Foundation,
37.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
37.23 + *
37.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
37.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
37.26 + * have any questions.
37.27 + */
37.28 +package org.jdesktop.swingx.designer.jibxhelpers;
37.29 +
37.30 +import org.jibx.runtime.IAliasable;
37.31 +import org.jibx.runtime.IMarshaller;
37.32 +import org.jibx.runtime.IMarshallingContext;
37.33 +import org.jibx.runtime.IUnmarshaller;
37.34 +import org.jibx.runtime.IUnmarshallingContext;
37.35 +import org.jibx.runtime.JiBXException;
37.36 +import org.jibx.runtime.impl.MarshallingContext;
37.37 +import org.jibx.runtime.impl.UnmarshallingContext;
37.38 +
37.39 +import java.awt.Dimension;
37.40 +
37.41 +/**
37.42 + * DimensionMapper
37.43 + *
37.44 + * @author Created by Jasper Potts (Jun 12, 2007)
37.45 + */
37.46 +public class DimensionMapper implements IMarshaller, IUnmarshaller, IAliasable {
37.47 + private static final String ELEMENT_NAME = "dimension";
37.48 + private static final String WIDTH_NAME = "width";
37.49 + private static final String HEIGHT_NAME = "height";
37.50 +
37.51 + private String uri;
37.52 + private int index;
37.53 + private String name;
37.54 +
37.55 + public DimensionMapper() {
37.56 + uri = null;
37.57 + index = 0;
37.58 + name = ELEMENT_NAME;
37.59 + }
37.60 +
37.61 + public DimensionMapper(String uri, int index, String name) {
37.62 + this.uri = uri;
37.63 + this.index = index;
37.64 + this.name = name;
37.65 + }
37.66 +
37.67 + public boolean isExtension(int i) {
37.68 + return false;
37.69 + }
37.70 +
37.71 + public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
37.72 + return iUnmarshallingContext.isAt(uri, ELEMENT_NAME);
37.73 + }
37.74 +
37.75 + public void marshal(Object object, IMarshallingContext iMarshallingContext) throws JiBXException {
37.76 + if (!(object instanceof Dimension)) {
37.77 + throw new JiBXException("Invalid object type for marshaller");
37.78 + } else if (!(iMarshallingContext instanceof MarshallingContext)) {
37.79 + throw new JiBXException("Invalid object type for marshaller");
37.80 + } else {
37.81 + MarshallingContext ctx = (MarshallingContext) iMarshallingContext;
37.82 + Dimension dimension = (Dimension) object;
37.83 + ctx.startTagAttributes(index, name).
37.84 + attribute(index, WIDTH_NAME, dimension.width).
37.85 + attribute(index, HEIGHT_NAME, dimension.height).
37.86 + closeStartEmpty();
37.87 + }
37.88 + }
37.89 +
37.90 + public Object unmarshal(Object object, IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
37.91 + // make sure we're at the appropriate start tag
37.92 + UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext;
37.93 + if (!ctx.isAt(uri, name)) {
37.94 + ctx.throwStartTagNameError(uri, name);
37.95 + }
37.96 + // get values
37.97 + int width = ctx.attributeInt(uri, WIDTH_NAME, index);
37.98 + int height = ctx.attributeInt(uri, HEIGHT_NAME, index);
37.99 + // state finished parsing
37.100 + ctx.parsePastEndTag(uri, name);
37.101 + // create
37.102 + return new Dimension(width, height);
37.103 + }
37.104 +}
38.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
38.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/jibxhelpers/InsetsMapper.java Wed Apr 29 00:27:46 2009 -0700
38.3 @@ -0,0 +1,117 @@
38.4 +/*
38.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
38.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
38.7 + *
38.8 + * This code is free software; you can redistribute it and/or modify it
38.9 + * under the terms of the GNU General Public License version 2 only, as
38.10 + * published by the Free Software Foundation. Sun designates this
38.11 + * particular file as subject to the "Classpath" exception as provided
38.12 + * by Sun in the LICENSE file that accompanied this code.
38.13 + *
38.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
38.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
38.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
38.17 + * version 2 for more details (a copy is included in the LICENSE file that
38.18 + * accompanied this code).
38.19 + *
38.20 + * You should have received a copy of the GNU General Public License version
38.21 + * 2 along with this work; if not, write to the Free Software Foundation,
38.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
38.23 + *
38.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
38.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
38.26 + * have any questions.
38.27 + */
38.28 +package org.jdesktop.swingx.designer.jibxhelpers;
38.29 +
38.30 +import org.jibx.runtime.IAliasable;
38.31 +import org.jibx.runtime.IMarshaller;
38.32 +import org.jibx.runtime.IMarshallingContext;
38.33 +import org.jibx.runtime.IUnmarshaller;
38.34 +import org.jibx.runtime.IUnmarshallingContext;
38.35 +import org.jibx.runtime.JiBXException;
38.36 +import org.jibx.runtime.impl.MarshallingContext;
38.37 +import org.jibx.runtime.impl.UnmarshallingContext;
38.38 +
38.39 +import java.awt.Insets;
38.40 +
38.41 +/**
38.42 + * InsetsMapper
38.43 + *
38.44 + * @author Created by Jasper Potts (Jun 8, 2007)
38.45 + */
38.46 +public class InsetsMapper implements IMarshaller, IUnmarshaller, IAliasable {
38.47 + private static final String ELEMENT_NAME = "insets";
38.48 + private static final String TOP_NAME = "top";
38.49 + private static final String BOTTOM_NAME = "bottom";
38.50 + private static final String LEFT_NAME = "left";
38.51 + private static final String RIGHT_NAME = "right";
38.52 +
38.53 + private String uri;
38.54 + private int index;
38.55 + private String name;
38.56 +
38.57 + public InsetsMapper() {
38.58 + uri = null;
38.59 + index = 0;
38.60 + name = ELEMENT_NAME;
38.61 + }
38.62 +
38.63 + public InsetsMapper(String uri, int index, String name) {
38.64 + this.uri = uri;
38.65 + this.index = index;
38.66 + this.name = name;
38.67 +// System.out.println("InsetsMapper.CONSTRCUTED with uri="+uri+" index="+index+" name="+name);
38.68 + }
38.69 +
38.70 + public boolean isExtension(int i) {
38.71 + return false;
38.72 + }
38.73 +
38.74 + public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
38.75 + return iUnmarshallingContext.isAt(uri, ELEMENT_NAME);
38.76 + }
38.77 +
38.78 + public void marshal(Object object, IMarshallingContext iMarshallingContext) throws JiBXException {
38.79 + if (!(object instanceof Insets)) {
38.80 + throw new JiBXException("Invalid object type for marshaller");
38.81 + } else if (!(iMarshallingContext instanceof MarshallingContext)) {
38.82 + throw new JiBXException("Invalid object type for marshaller");
38.83 + } else {
38.84 +// System.out.println("InsetsMapper.marshal name="+name);
38.85 + MarshallingContext ctx = (MarshallingContext) iMarshallingContext;
38.86 + Insets insets = (Insets) object;
38.87 + ctx.startTagAttributes(index, name).
38.88 + attribute(index, TOP_NAME, insets.top).
38.89 + attribute(index, BOTTOM_NAME, insets.bottom).
38.90 + attribute(index, LEFT_NAME, insets.left).
38.91 + attribute(index, RIGHT_NAME, insets.right).
38.92 + closeStartEmpty();
38.93 + }
38.94 + }
38.95 +
38.96 + public Object unmarshal(Object object, IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
38.97 + // make sure we're at the appropriate start tag
38.98 + UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext;
38.99 + if (!ctx.isAt(uri, name)) {
38.100 +// System.out.println("InsetsMapper.unmarshal name="+name+" uri="+uri+" currentNode="+ctx.getName());
38.101 + ctx.throwStartTagNameError(uri, name);
38.102 + } else {
38.103 +// System.out.println("InsetsMapper.unmarshal name="+name+" uri="+uri+" currentNode="+ctx.getName());
38.104 + }
38.105 + // get values
38.106 + int top = ctx.attributeInt(uri, TOP_NAME, index);
38.107 + int bottom = ctx.attributeInt(uri, BOTTOM_NAME, index);
38.108 + int left = ctx.attributeInt(uri, LEFT_NAME, index);
38.109 + int right = ctx.attributeInt(uri, RIGHT_NAME, index);
38.110 + // create new hashmap if needed
38.111 + Insets insets = (Insets) object;
38.112 + if (insets == null) {
38.113 + insets = new Insets(top, left, bottom, right);
38.114 + } else {
38.115 + insets.set(top, left, bottom, right);
38.116 + }
38.117 + ctx.parsePastEndTag(uri, name);
38.118 + return insets;
38.119 + }
38.120 +}
39.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
39.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/AbstractGradient.java Wed Apr 29 00:27:46 2009 -0700
39.3 @@ -0,0 +1,280 @@
39.4 +/*
39.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
39.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
39.7 + *
39.8 + * This code is free software; you can redistribute it and/or modify it
39.9 + * under the terms of the GNU General Public License version 2 only, as
39.10 + * published by the Free Software Foundation. Sun designates this
39.11 + * particular file as subject to the "Classpath" exception as provided
39.12 + * by Sun in the LICENSE file that accompanied this code.
39.13 + *
39.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
39.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
39.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
39.17 + * version 2 for more details (a copy is included in the LICENSE file that
39.18 + * accompanied this code).
39.19 + *
39.20 + * You should have received a copy of the GNU General Public License version
39.21 + * 2 along with this work; if not, write to the Free Software Foundation,
39.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
39.23 + *
39.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
39.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
39.26 + * have any questions.
39.27 + */
39.28 +package org.jdesktop.swingx.designer.paint;
39.29 +
39.30 +import java.awt.Color;
39.31 +import java.awt.MultipleGradientPaint.CycleMethod;
39.32 +import java.awt.Paint;
39.33 +import java.beans.PropertyChangeEvent;
39.34 +import java.beans.PropertyChangeListener;
39.35 +import java.util.ArrayList;
39.36 +import java.util.Collections;
39.37 +import java.util.Comparator;
39.38 +import java.util.List;
39.39 +
39.40 +/** @author rbair */
39.41 +public abstract class AbstractGradient extends PaintModel {
39.42 + private final Comparator<GradientStop> sorter = new Comparator<GradientStop>() {
39.43 + public int compare(GradientStop s1, GradientStop s2) {
39.44 + //since a float value may be -.001 or .001, and since casting
39.45 + //this to an int will round off to 0, I have to do a more direct
39.46 + //comparison
39.47 + float v = s1.getPosition() - s2.getPosition();
39.48 +
39.49 + if (v < 0) return -1;
39.50 + else if (v == 0) return 0;
39.51 + else return 1;
39.52 + }
39.53 + };
39.54 + private PropertyChangeListener stopListener = new PropertyChangeListener() {
39.55 + public void propertyChange(PropertyChangeEvent evt) {
39.56 + if (evt.getPropertyName().equals("position")) {
39.57 + if (stops.contains((GradientStop) evt.getSource())) {
39.58 + resortModel(true);
39.59 + } else {
39.60 + System.err.println("[WARNING] The position of an orphaned stop was changed.");
39.61 + }
39.62 + } else {
39.63 + firePropertyChange("paint", null, getPaint());
39.64 + }
39.65 + }
39.66 + };
39.67 +
39.68 + private List<GradientStop> stops = new ArrayList<GradientStop>();
39.69 + private List<GradientStop> unmodifiable;
39.70 + private CycleMethod cycleMethod;
39.71 +
39.72 + protected AbstractGradient() {
39.73 + unmodifiable = Collections.unmodifiableList(stops);
39.74 + cycleMethod = CycleMethod.NO_CYCLE;
39.75 + setStops(new GradientStop(0, new Matte(Color.BLUE, null)),
39.76 + new GradientStop(1, new Matte(Color.WHITE, null)));
39.77 + }
39.78 +
39.79 + /**
39.80 + * Copy stops and cycleMethod from src to dst
39.81 + *
39.82 + * @param dst The gradient to update to same stops and cycle method as this gradient
39.83 + */
39.84 + protected void copyTo(AbstractGradient dst) {
39.85 + dst.stops.clear();
39.86 + List<GradientStop> stops = new ArrayList<GradientStop>();
39.87 + for (GradientStop stop : this.stops) {
39.88 + stops.add(stop.clone());
39.89 + }
39.90 + dst.setStops(stops);
39.91 + dst.cycleMethod = this.cycleMethod;
39.92 + }
39.93 +
39.94 +
39.95 + public PaintControlType getPaintControlType() {
39.96 + return PaintControlType.control_line;
39.97 + }
39.98 +
39.99 + public void setCycleMethod(CycleMethod method) {
39.100 + CycleMethod old = cycleMethod;
39.101 + Paint oldp = getPaint();
39.102 + cycleMethod = method == null ? CycleMethod.NO_CYCLE : method;
39.103 + firePropertyChange("cycleMethod", old, cycleMethod);
39.104 + firePropertyChange("paint", oldp, getPaint());
39.105 + }
39.106 +
39.107 + public final CycleMethod getCycleMethod() {
39.108 + return cycleMethod;
39.109 + }
39.110 +
39.111 + public void setStops(GradientStop... stops) {
39.112 + if (stops == null || stops.length < 1) {
39.113 + throw new IllegalArgumentException("Must have more than one stop");
39.114 + }
39.115 + List<GradientStop> old = new ArrayList<GradientStop>(this.stops);
39.116 + for (GradientStop stop : old) {
39.117 + stop.removePropertyChangeListener(stopListener);
39.118 + }
39.119 + Paint oldp = getPaint();
39.120 + this.stops.clear();
39.121 + Collections.addAll(this.stops, stops);
39.122 + for (GradientStop stop : this.stops) {
39.123 + stop.addPropertyChangeListener(stopListener);
39.124 + }
39.125 + resortModel(false);
39.126 + firePropertyChange("stops", old, getStops());
39.127 + firePropertyChange("paint", oldp, getPaint());
39.128 + }
39.129 +
39.130 + public final void setStops(List<GradientStop> stops) {
39.131 + setStops(stops == null ? null : stops.toArray(new GradientStop[0]));
39.132 + }
39.133 +
39.134 + public final List<GradientStop> getStops() {
39.135 + return unmodifiable;
39.136 + }
39.137 +
39.138 + private void resortModel(boolean fireEvent) {
39.139 + Collections.sort(this.stops, sorter);
39.140 + if (fireEvent) {
39.141 + Paint oldp = getPaint();
39.142 + firePropertyChange("stops", null, getStops());
39.143 + firePropertyChange("paint", oldp, getPaint());
39.144 + }
39.145 + }
39.146 +
39.147 + //adds a new stop, and interoplates the proper color to use based on
39.148 + //its position
39.149 + public GradientStop addStop(float position) {
39.150 + GradientStop prevStop = null;
39.151 + GradientStop nextStop = null;
39.152 + for (GradientStop stop : stops) {
39.153 + if (stop.getPosition() <= position) {
39.154 + prevStop = stop;
39.155 + } else if (stop.getPosition() >= position) {
39.156 + nextStop = stop;
39.157 + }
39.158 + }
39.159 +
39.160 + Matte c = null;
39.161 + if (prevStop != null && nextStop != null) {
39.162 + //interpolate the value of c
39.163 + c = interpolate(prevStop.getColor(), nextStop.getColor(),
39.164 + position / (nextStop.getPosition() - prevStop.getPosition()));
39.165 + } else if (prevStop != null) {
39.166 + c = prevStop.getColor().clone();
39.167 + } else if (nextStop != null) {
39.168 + c = nextStop.getColor().clone();
39.169 + }
39.170 +
39.171 + return addStop(position, c);
39.172 + }
39.173 +
39.174 + public GradientStop addStop(float position, Matte color) {
39.175 + GradientStop s = new GradientStop(position, color);
39.176 + s.addPropertyChangeListener(stopListener);
39.177 + List<GradientStop> old = new ArrayList<GradientStop>(stops);
39.178 + Paint oldp = getPaint();
39.179 + stops.add(s);
39.180 + resortModel(false);
39.181 + firePropertyChange("stops", old, getStops());
39.182 + firePropertyChange("paint", oldp, getPaint());
39.183 +
39.184 + return s;
39.185 + }
39.186 +
39.187 + public GradientStop removeStop(GradientStop s) {
39.188 + List<GradientStop> old = new ArrayList<GradientStop>(stops);
39.189 + Paint oldp = getPaint();
39.190 + stops.remove(s);
39.191 + s.removePropertyChangeListener(stopListener);
39.192 + resortModel(false);
39.193 + firePropertyChange("stops", old, getStops());
39.194 + firePropertyChange("paint", oldp, getPaint());
39.195 + return s;
39.196 + }
39.197 +
39.198 + @Override public Paint getPaint() {
39.199 + if (stops.size() == 0) {
39.200 + return null;
39.201 + }
39.202 +
39.203 + //there are stops.size() number of main stops. Between each is
39.204 + //a fractional stop. Thus, there are:
39.205 + //stops.size() + stops.size() - 1
39.206 + //number of fractions and colors.
39.207 +
39.208 + float[] fractions = new float[stops.size() + stops.size() - 1];
39.209 + Matte[] colors = new Matte[fractions.length];
39.210 +
39.211 + //for each stop, create the stop and it's associated fraction
39.212 + int index = 0; // the index into fractions and colors
39.213 + for (int i = 0; i < stops.size(); i++) {
39.214 + GradientStop s = stops.get(i);
39.215 + //copy over the stop's data
39.216 + colors[index] = s.getColor();
39.217 + fractions[index] = s.getPosition();
39.218 +
39.219 + //If this isn't the last stop, then add in the fraction
39.220 + if (index < fractions.length - 1) {
39.221 + float f1 = s.getPosition();
39.222 + float f2 = stops.get(i + 1).getPosition();
39.223 +
39.224 + index++;
39.225 + fractions[index] = f1 + (f2 - f1) * s.getMidpoint();
39.226 + colors[index] = interpolate(colors[index - 1], stops.get(i + 1).getColor(), .5f);
39.227 + }
39.228 +
39.229 + index++;
39.230 + }
39.231 +
39.232 + for (int i = 1; i < fractions.length; i++) {
39.233 + //to avoid an error with LinearGradientPaint where two fractions
39.234 + //are identical, bump up the fraction value by a miniscule amount
39.235 + //if it is identical to the previous one
39.236 + //NOTE: The <= is critical because the previous value may already
39.237 + //have been bumped up
39.238 + if (fractions[i] <= fractions[i - 1]) {
39.239 + fractions[i] = fractions[i - 1] + .000001f;
39.240 + }
39.241 + }
39.242 +
39.243 + //another boundary condition where multiple stops are all at the end. The
39.244 + //previous loop bumped all but one of these past 1.0, which is bad.
39.245 + //so remove any fractions (and their colors!) that are beyond 1.0
39.246 + int outOfBoundsIndex = -1;
39.247 + for (int i = 0; i < fractions.length; i++) {
39.248 + if (fractions[i] > 1) {
39.249 + outOfBoundsIndex = i;
39.250 + break;
39.251 + }
39.252 + }
39.253 +
39.254 + if (outOfBoundsIndex >= 0) {
39.255 + float[] f = fractions;
39.256 + Matte[] c = colors;
39.257 + fractions = new float[outOfBoundsIndex];
39.258 + colors = new Matte[outOfBoundsIndex];
39.259 + System.arraycopy(f, 0, fractions, 0, outOfBoundsIndex);
39.260 + System.arraycopy(c, 0, colors, 0, outOfBoundsIndex);
39.261 + }
39.262 +
39.263 + return createPaint(fractions, colors, cycleMethod);
39.264 + }
39.265 +
39.266 + protected abstract Paint createPaint(float[] fractions, Matte[] colors, CycleMethod method);
39.267 +
39.268 + protected static Matte interpolate(Matte v0, Matte v1, float fraction) {
39.269 + return new Matte(interpolate(v0.getColor(), v1.getColor(), fraction), v0.getUiDefaults());
39.270 + }
39.271 +
39.272 + protected static Color interpolate(Color v0, Color v1, float fraction) {
39.273 + int r = v0.getRed() +
39.274 + (int) ((v1.getRed() - v0.getRed()) * fraction + 0.5f);
39.275 + int g = v0.getGreen() +
39.276 + (int) ((v1.getGreen() - v0.getGreen()) * fraction + 0.5f);
39.277 + int b = v0.getBlue() +
39.278 + (int) ((v1.getBlue() - v0.getBlue()) * fraction + 0.5f);
39.279 + int a = v0.getAlpha() +
39.280 + (int) ((v1.getAlpha() - v0.getAlpha()) * fraction + 0.5f);
39.281 + return new Color(r, g, b, a);
39.282 + }
39.283 +}
40.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
40.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/Gradient.java Wed Apr 29 00:27:46 2009 -0700
40.3 @@ -0,0 +1,51 @@
40.4 +/*
40.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
40.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
40.7 + *
40.8 + * This code is free software; you can redistribute it and/or modify it
40.9 + * under the terms of the GNU General Public License version 2 only, as
40.10 + * published by the Free Software Foundation. Sun designates this
40.11 + * particular file as subject to the "Classpath" exception as provided
40.12 + * by Sun in the LICENSE file that accompanied this code.
40.13 + *
40.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
40.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
40.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
40.17 + * version 2 for more details (a copy is included in the LICENSE file that
40.18 + * accompanied this code).
40.19 + *
40.20 + * You should have received a copy of the GNU General Public License version
40.21 + * 2 along with this work; if not, write to the Free Software Foundation,
40.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
40.23 + *
40.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
40.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
40.26 + * have any questions.
40.27 + */
40.28 +package org.jdesktop.swingx.designer.paint;
40.29 +
40.30 +import java.awt.Color;
40.31 +import java.awt.LinearGradientPaint;
40.32 +import java.awt.MultipleGradientPaint.CycleMethod;
40.33 +import java.awt.Paint;
40.34 +
40.35 +/**
40.36 + * Represents a GradientPaint or LinearGradientPaint.
40.37 + *
40.38 + * @author rbair
40.39 + */
40.40 +public class Gradient extends AbstractGradient implements Cloneable {
40.41 + protected Paint createPaint(float[] fractions, Matte[] mattes, CycleMethod method) {
40.42 + Color[] colors = new Color[mattes.length];
40.43 + for (int i = 0; i < colors.length; i++) {
40.44 + colors[i] = mattes[i].getColor();
40.45 + }
40.46 + return new LinearGradientPaint(0, 0, 1, 0, fractions, colors, method);
40.47 + }
40.48 +
40.49 + @Override public Gradient clone() {
40.50 + Gradient gradient = new Gradient();
40.51 + copyTo(gradient);
40.52 + return gradient;
40.53 + }
40.54 +}
41.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
41.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/GradientStop.java Wed Apr 29 00:27:46 2009 -0700
41.3 @@ -0,0 +1,123 @@
41.4 +/*
41.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
41.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
41.7 + *
41.8 + * This code is free software; you can redistribute it and/or modify it
41.9 + * under the terms of the GNU General Public License version 2 only, as
41.10 + * published by the Free Software Foundation. Sun designates this
41.11 + * particular file as subject to the "Classpath" exception as provided
41.12 + * by Sun in the LICENSE file that accompanied this code.
41.13 + *
41.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
41.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
41.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
41.17 + * version 2 for more details (a copy is included in the LICENSE file that
41.18 + * accompanied this code).
41.19 + *
41.20 + * You should have received a copy of the GNU General Public License version
41.21 + * 2 along with this work; if not, write to the Free Software Foundation,
41.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
41.23 + *
41.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
41.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
41.26 + * have any questions.
41.27 + */
41.28 +package org.jdesktop.swingx.designer.paint;
41.29 +
41.30 +import org.jdesktop.beans.AbstractBean;
41.31 +
41.32 +import java.beans.PropertyChangeEvent;
41.33 +import java.beans.PropertyChangeListener;
41.34 +
41.35 +/** Each stop is defined linearly, at positions between 0 and 1. */
41.36 +public final class GradientStop extends AbstractBean implements Cloneable {
41.37 + private float position;
41.38 + private Matte color;
41.39 + private PropertyChangeListener matteListener = new PropertyChangeListener() {
41.40 + public void propertyChange(PropertyChangeEvent evt) {
41.41 + firePropertyChange("color", null, color);
41.42 + }
41.43 + };
41.44 +
41.45 + /**
41.46 + * The midpoint to the right of the stop. Must be 0 <= midpoint <= 1. The midpoint value of the last Stop is
41.47 + * ignored.
41.48 + */
41.49 + private float midpoint;
41.50 +
41.51 + public GradientStop() {}
41.52 +
41.53 + public GradientStop(float position, Matte color) {
41.54 + if (color == null) {
41.55 + throw new IllegalArgumentException("Color must not be null");
41.56 + }
41.57 +
41.58 + this.position = clamp(0, 1, position);
41.59 + this.color = color;
41.60 + this.midpoint = .5f;
41.61 +
41.62 + if (this.color != null) {
41.63 + this.color.addPropertyChangeListener("color", matteListener);
41.64 + }
41.65 + }
41.66 +
41.67 +
41.68 + public GradientStop clone() {
41.69 + GradientStop clone = new GradientStop(this.position, this.color.clone());
41.70 + clone.midpoint = midpoint;
41.71 + return clone;
41.72 + }
41.73 +
41.74 + public final float getPosition() {
41.75 + return position;
41.76 + }
41.77 +
41.78 + public final void setPosition(float position) {
41.79 + float old = this.position;
41.80 + this.position = clamp(0, 1, position);
41.81 + firePropertyChange("position", old, this.position);
41.82 + }
41.83 +
41.84 + public final Matte getColor() {
41.85 + return color;
41.86 + }
41.87 +
41.88 + public final void setColor(Matte c) {
41.89 + if (c == null) throw new IllegalArgumentException("Color must not be null");
41.90 + Matte old = this.color;
41.91 + if (old != null) old.removePropertyChangeListener(matteListener);
41.92 + this.color = c;
41.93 + if (this.color != null) this.color.addPropertyChangeListener(matteListener);
41.94 + firePropertyChange("color", old, c);
41.95 + }
41.96 +
41.97 + public final void setOpacity(int opacity) {
41.98 + int old = getOpacity();
41.99 + color.setAlpha(opacity);
41.100 + firePropertyChange("opacity", old, getOpacity());
41.101 + }
41.102 +
41.103 + public final int getOpacity() {
41.104 + return color.getAlpha();
41.105 + }
41.106 +
41.107 + public final float getMidpoint() {
41.108 + return midpoint;
41.109 + }
41.110 +
41.111 + public final void setMidpoint(float midpoint) {
41.112 + float old = this.midpoint;
41.113 + this.midpoint = clamp(0, 1, midpoint);
41.114 + firePropertyChange("midpoint", old, this.midpoint);
41.115 + }
41.116 +
41.117 + private float clamp(float lo, float hi, float value) {
41.118 + if (value < lo) {
41.119 + return lo;
41.120 + } else if (value > hi) {
41.121 + return hi;
41.122 + } else {
41.123 + return value;
41.124 + }
41.125 + }
41.126 +}
42.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
42.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/Matte.java Wed Apr 29 00:27:46 2009 -0700
42.3 @@ -0,0 +1,610 @@
42.4 +/*
42.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
42.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
42.7 + *
42.8 + * This code is free software; you can redistribute it and/or modify it
42.9 + * under the terms of the GNU General Public License version 2 only, as
42.10 + * published by the Free Software Foundation. Sun designates this
42.11 + * particular file as subject to the "Classpath" exception as provided
42.12 + * by Sun in the LICENSE file that accompanied this code.
42.13 + *
42.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
42.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
42.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
42.17 + * version 2 for more details (a copy is included in the LICENSE file that
42.18 + * accompanied this code).
42.19 + *
42.20 + * You should have received a copy of the GNU General Public License version
42.21 + * 2 along with this work; if not, write to the Free Software Foundation,
42.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
42.23 + *
42.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
42.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
42.26 + * have any questions.
42.27 + */
42.28 +package org.jdesktop.swingx.designer.paint;
42.29 +
42.30 +import org.jdesktop.swingx.designer.utils.HasUIDefaults;
42.31 +import org.jibx.runtime.IUnmarshallingContext;
42.32 +
42.33 +import javax.swing.UIDefaults;
42.34 +import java.awt.Color;
42.35 +import java.awt.Paint;
42.36 +import java.beans.PropertyChangeEvent;
42.37 +import java.beans.PropertyChangeListener;
42.38 +
42.39 +/**
42.40 + * Representing a single uniform color. Basically, it represents the java.awt.Color. It can either be absolute or
42.41 + * derived from a UIDefault color.
42.42 + *
42.43 + * @author rbair & jasper potts
42.44 + */
42.45 +public class Matte extends PaintModel implements HasUIDefaults {
42.46 + private float[] tmpf1 = new float[3];
42.47 + private float[] tmpf2 = new float[3];
42.48 +
42.49 + private int red;
42.50 + private int green;
42.51 + private int blue;
42.52 + private int alpha;
42.53 + private Color cached = null;
42.54 +
42.55 + /**
42.56 + * The name of the ui default key to derive this color from.
42.57 + */
42.58 + private String uiDefaultParentName = null;
42.59 + /**
42.60 + * The name of the bean property, or client property, on this component
42.61 + * from which to extract a color used for painting. So for example the color
42.62 + * used in a painter could be the background of the component.
42.63 + */
42.64 + private String componentPropertyName = null;
42.65 + private float hueOffset = 0, saturationOffset = 0, brightnessOffset = 0;
42.66 + private int alphaOffset = 0;
42.67 + /**
42.68 + * When true this color will become a UIResource in the UIManager defaults
42.69 + * table. If false, then it will not be a UIResource. This is sometimes
42.70 + * required, such as with colors installed on renderers.
42.71 + */
42.72 + private boolean uiResource = true;
42.73 +
42.74 + /** This is a local UIDefaults that contains all the UIDefaults in the Model. */
42.75 + private transient UIDefaults uiDefaults = new UIDefaults();
42.76 + private PropertyChangeListener uiDefaultsChangeListener = new PropertyChangeListener() {
42.77 + public void propertyChange(PropertyChangeEvent evt) {
42.78 + if (uiDefaultParentName != null && uiDefaultParentName.equals(evt.getPropertyName())) {
42.79 + updateARGBFromOffsets();
42.80 + }
42.81 + }
42.82 + };
42.83 +
42.84 + // =================================================================================================================
42.85 + // Constructors
42.86 +
42.87 + /** propected constructor for JIBX */
42.88 + protected Matte() {}
42.89 +
42.90 + public Matte(Color c, UIDefaults uiDefaults) {
42.91 + if (c != null) {
42.92 + this.red = c.getRed();
42.93 + this.green = c.getGreen();
42.94 + this.blue = c.getBlue();
42.95 + this.alpha = c.getAlpha();
42.96 + }
42.97 + setUiDefaults(uiDefaults);
42.98 + }
42.99 +
42.100 + // =================================================================================================================
42.101 + // JIBX Methods
42.102 +
42.103 + /**
42.104 + * Called by JIBX after all fields have been set
42.105 + *
42.106 + * @param context The JIBX Unmarshalling Context
42.107 + */
42.108 + protected void postSet(IUnmarshallingContext context) {
42.109 + // walk up till we get synth model
42.110 + for (int i = 0; i < context.getStackDepth(); i++) {
42.111 + if (context.getStackObject(i) instanceof HasUIDefaults) {
42.112 + UIDefaults uiDefaults = ((HasUIDefaults) context.getStackObject(i)).getUiDefaults();
42.113 + if (uiDefaults != null) {
42.114 + setUiDefaults(uiDefaults);
42.115 + break;
42.116 + }
42.117 + }
42.118 + }
42.119 + }
42.120 +
42.121 + // =================================================================================================================
42.122 + // Matte methods
42.123 +
42.124 + /**
42.125 + * Is the matte an absolute color ot derived from a parent ui default
42.126 + *
42.127 + * @return <code>true</code> if this is a absolute not uidefault derived color
42.128 + */
42.129 + public boolean isAbsolute() {
42.130 + return uiDefaultParentName == null;
42.131 + }
42.132 +
42.133 + /**
42.134 + * Set all properties of this matte to be the same as <code>srcMatte</code> and fire all the change events
42.135 + *
42.136 + * @param srcMatte the matte to copy properties from
42.137 + */
42.138 + public void copy(Matte srcMatte) {
42.139 + // keep old values
42.140 + Color oldColor = getColor();
42.141 + String oldParentName = uiDefaultParentName;
42.142 + String oldComponentPropertyName = componentPropertyName;
42.143 + boolean oldUiResource = uiResource;
42.144 + int oldR = red, oldG = green, oldB = blue, oldA = alpha;
42.145 + float oldH = hueOffset, oldS = saturationOffset, oldBr = brightnessOffset;
42.146 + // set properties
42.147 + if (uiResource != srcMatte.uiResource) {
42.148 + uiResource = srcMatte.uiResource;
42.149 + firePropertyChange("uiResource", oldUiResource, isUiResource());
42.150 + }
42.151 + if (red != srcMatte.red) {
42.152 + red = srcMatte.red;
42.153 + firePropertyChange("red", oldR, getRed());
42.154 + }
42.155 + if (green != srcMatte.green) {
42.156 + green = srcMatte.green;
42.157 + firePropertyChange("green", oldG, getGreen());
42.158 + }
42.159 + if (blue != srcMatte.blue) {
42.160 + blue = srcMatte.blue;
42.161 + firePropertyChange("blue", oldB, getBlue());
42.162 + }
42.163 + if (alpha != srcMatte.alpha) {
42.164 + alpha = srcMatte.alpha;
42.165 + firePropertyChange("alpha", oldA, getAlpha());
42.166 + }
42.167 + if (hueOffset != srcMatte.hueOffset) {
42.168 + hueOffset = srcMatte.hueOffset;
42.169 + firePropertyChange("hueOffset", oldH, getHueOffset());
42.170 + }
42.171 + if (saturationOffset != srcMatte.saturationOffset) {
42.172 + saturationOffset = srcMatte.saturationOffset;
42.173 + firePropertyChange("saturationOffset", oldS, getSaturationOffset());
42.174 + }
42.175 + if (brightnessOffset != srcMatte.brightnessOffset) {
42.176 + brightnessOffset = srcMatte.brightnessOffset;
42.177 + firePropertyChange("brightnessOffset", oldBr, getBrightnessOffset());
42.178 + }
42.179 + if (alphaOffset != srcMatte.alphaOffset) {
42.180 + alphaOffset = srcMatte.alphaOffset;
42.181 + firePropertyChange("alphaOffset", oldA, getAlphaOffset());
42.182 + }
42.183 + if (uiDefaultParentName != srcMatte.uiDefaultParentName) {
42.184 + uiDefaultParentName = srcMatte.uiDefaultParentName;
42.185 + firePropertyChange("uiDefaultParentName", oldParentName, getUiDefaultParentName());
42.186 + }
42.187 + if (componentPropertyName != srcMatte.componentPropertyName) {
42.188 + componentPropertyName = srcMatte.componentPropertyName;
42.189 + firePropertyChange("componentPropertyName", oldComponentPropertyName, getComponentPropertyName());
42.190 + }
42.191 + if (uiDefaults != srcMatte.uiDefaults) {
42.192 + setUiDefaults(srcMatte.uiDefaults);
42.193 + }
42.194 + if (!oldColor.equals(srcMatte.getColor())) {
42.195 + firePropertyChange("paint", oldColor, getColor());
42.196 + firePropertyChange("color", oldColor, getColor());
42.197 + fireHSBChange(oldR, oldG, oldB);
42.198 + }
42.199 + }
42.200 +
42.201 + // =================================================================================================================
42.202 + // PaintModel methods
42.203 +
42.204 + public PaintControlType getPaintControlType() {
42.205 + return PaintControlType.none;
42.206 + }
42.207 +
42.208 + // =================================================================================================================
42.209 + // Bean Methods
42.210 +
42.211 + /**
42.212 + * Get the local UIDefaults that contains all the UIDefaults in the Model.
42.213 + *
42.214 + * @return The UIDefaults for the model that contains this Matte, can be null if this Matte is not part of a bigger
42.215 + * model
42.216 + */
42.217 + public UIDefaults getUiDefaults() {
42.218 + return uiDefaults;
42.219 + }
42.220 +
42.221 + /**
42.222 + * Set the local UIDefaults that contains all the UIDefaults in the Model.
42.223 + *
42.224 + * @param uiDefaults The UIDefaults for the model that contains this Matte, can be null if this Matte is not part of
42.225 + * a bigger model
42.226 + */
42.227 + public void setUiDefaults(UIDefaults uiDefaults) {
42.228 + if (uiDefaults != this.uiDefaults) {
42.229 + UIDefaults old = getUiDefaults();
42.230 + if (old != null) old.removePropertyChangeListener(uiDefaultsChangeListener);
42.231 + this.uiDefaults = uiDefaults;
42.232 + if (uiDefaults != null) this.uiDefaults.addPropertyChangeListener(uiDefaultsChangeListener);
42.233 + firePropertyChange("uiDefaults", old, getUiDefaults());
42.234 + }
42.235 + }
42.236 +
42.237 + /**
42.238 + * Get the name if the uidefault color that is the parent that this matte is derived from. If null then this is a
42.239 + * absolute color.
42.240 + *
42.241 + * @return Parent color ui default name
42.242 + */
42.243 + public String getUiDefaultParentName() {
42.244 + return uiDefaultParentName;
42.245 + }
42.246 +
42.247 + /**
42.248 + * Set the name if the uidefault color that is the parent that this matte is derived from. If null then this is a
42.249 + * absolute color.
42.250 + *
42.251 + * @param uiDefaultParentName Parent color ui default name
42.252 + */
42.253 + public void setUiDefaultParentName(String uiDefaultParentName) {
42.254 + String old = getUiDefaultParentName();
42.255 + this.uiDefaultParentName = uiDefaultParentName;
42.256 + firePropertyChange("uiDefaultParentName", old, getUiDefaultParentName());
42.257 + if (isAbsolute()) {
42.258 + // reset offsets
42.259 + float oldH = hueOffset, oldS = saturationOffset, oldB = brightnessOffset;
42.260 + int oldA = alphaOffset;
42.261 + hueOffset = 0;
42.262 + saturationOffset = 0;
42.263 + brightnessOffset = 0;
42.264 + alphaOffset = 0;
42.265 + firePropertyChange("hueOffset", oldH, getHueOffset());
42.266 + firePropertyChange("saturationOffset", oldS, getSaturationOffset());
42.267 + firePropertyChange("brightnessOffset", oldB, getBrightnessOffset());
42.268 + firePropertyChange("alphaOffset", oldA, getAlphaOffset());
42.269 + }
42.270 + updateARGBFromOffsets();
42.271 + }
42.272 +
42.273 + /**
42.274 + * Sets the property to use for extracting the color for whatever component
42.275 + * is passed to the painter. Can be a key in client properties. Can be null.
42.276 + * @param name
42.277 + */
42.278 + public void setComponentPropertyName(String name) {
42.279 + String old = componentPropertyName;
42.280 + firePropertyChange("componentPropertyName", old, componentPropertyName = name);
42.281 + }
42.282 +
42.283 + /**
42.284 + * Gets the name of the bean property, or client property, on this component
42.285 + * from which to extract a color used for painting. So for example the color
42.286 + * used in a painter could be the background of the component.
42.287 + *
42.288 + * @return
42.289 + */
42.290 + public String getComponentPropertyName() {
42.291 + return componentPropertyName;
42.292 + }
42.293 +
42.294 + /**
42.295 + * Sets whether this color should be represented as a UIResource in UIDefaults
42.296 + * @param b true if the color should be a ui resource
42.297 + */
42.298 + public void setUiResource(boolean b) {
42.299 + boolean old = uiResource;
42.300 + firePropertyChange("uiResource", old, uiResource = b);
42.301 + }
42.302 +
42.303 + /**
42.304 + * When false this color will become a non-UIResource in the UIManager defaults
42.305 + * table. This is sometimes required to force swing to use the given color,
42.306 + * such as with renderers.
42.307 + * @return false if the color should not be a uiresource
42.308 + */
42.309 + public boolean isUiResource() {
42.310 + return uiResource;
42.311 + }
42.312 +
42.313 + public float getHueOffset() {
42.314 + return hueOffset;
42.315 + }
42.316 +
42.317 + public void setHueOffset(float hueOffset) {
42.318 + float old = getHueOffset();
42.319 + this.hueOffset = hueOffset;
42.320 + firePropertyChange("hueOffset", old, getHueOffset());
42.321 + updateARGBFromOffsets();
42.322 + }
42.323 +
42.324 + public float getSaturationOffset() {
42.325 + return saturationOffset;
42.326 + }
42.327 +
42.328 + public void setSaturationOffset(float satOffset) {
42.329 + float old = getSaturationOffset();
42.330 + this.saturationOffset = satOffset;
42.331 + firePropertyChange("saturationOffset", old, getSaturationOffset());
42.332 + updateARGBFromOffsets();
42.333 + }
42.334 +
42.335 + public float getBrightnessOffset() {
42.336 + return brightnessOffset;
42.337 + }
42.338 +
42.339 + public void setBrightnessOffset(float brightOffset) {
42.340 + float old = getBrightnessOffset();
42.341 + this.brightnessOffset = brightOffset;
42.342 + firePropertyChange("brightnessOffset", old, getBrightnessOffset());
42.343 + updateARGBFromOffsets();
42.344 + }
42.345 +
42.346 + public int getAlphaOffset() {
42.347 + return alphaOffset;
42.348 + }
42.349 +
42.350 + public void setAlphaOffset(int alphaOffset) {
42.351 + int old = getAlphaOffset();
42.352 + this.alphaOffset = alphaOffset;
42.353 + firePropertyChange("alphaOffset", old, alphaOffset);
42.354 + updateARGBFromOffsets();
42.355 + }
42.356 +
42.357 +
42.358 + public void setRed(int red) {
42.359 + red = clamp(red);
42.360 + if (this.red != red) {
42.361 + Color old = getColor();
42.362 + int oldr = this.red;
42.363 + this.red = red;
42.364 + firePropertyChange("paint", old, getColor());
42.365 + firePropertyChange("color", old, getColor());
42.366 + firePropertyChange("red", oldr, red);
42.367 + fireHSBChange(oldr, green, blue);
42.368 + updateOffsetsFromARGB();
42.369 + }
42.370 + }
42.371 +
42.372 + public final int getRed() {
42.373 + return red;
42.374 + }
42.375 +
42.376 + public void setGreen(int green) {
42.377 + green = clamp(green);
42.378 + if (this.green != green) {
42.379 + Color old = getColor();
42.380 + int oldg = this.green;
42.381 + this.green = green;
42.382 + firePropertyChange("paint", old, getColor());
42.383 + firePropertyChange("color", old, getColor());
42.384 + firePropertyChange("green", oldg, green);
42.385 + fireHSBChange(red, oldg, blue);
42.386 + updateOffsetsFromARGB();
42.387 + }
42.388 + }
42.389 +
42.390 + public final int getGreen() {
42.391 + return green;
42.392 + }
42.393 +
42.394 + public void setBlue(int blue) {
42.395 + blue = clamp(blue);
42.396 + if (this.blue != blue) {
42.397 + Color old = getColor();
42.398 + int oldb = this.blue;
42.399 + this.blue = blue;
42.400 + firePropertyChange("paint", old, getColor());
42.401 + firePropertyChange("color", old, getColor());
42.402 + firePropertyChange("blue", oldb, blue);
42.403 + fireHSBChange(red, green, oldb);
42.404 + updateOffsetsFromARGB();
42.405 + }
42.406 + }
42.407 +
42.408 + public final int getBlue() {
42.409 + return blue;
42.410 + }
42.411 +
42.412 + public void setAlpha(int alpha) {
42.413 + alpha = clamp(alpha);
42.414 + if (this.alpha != alpha) {
42.415 + int old = getAlpha();
42.416 + this.alpha = alpha;
42.417 + firePropertyChange("alpha", old, alpha);
42.418 + firePropertyChange("paint", old, getColor());
42.419 + firePropertyChange("color", old, getColor());
42.420 + updateOffsetsFromARGB();
42.421 + }
42.422 + }
42.423 +
42.424 + public final int getAlpha() {
42.425 + return alpha;
42.426 + }
42.427 +
42.428 + public Color getColor() {
42.429 + if (cached == null || red != cached.getRed() || green != cached.getGreen() ||
42.430 + blue != cached.getBlue() || alpha != cached.getAlpha()) {
42.431 + cached = new Color(red, green, blue, alpha);
42.432 + }
42.433 + return cached;
42.434 + }
42.435 +
42.436 + public void setColor(Color c) {
42.437 + setColor(c, false);
42.438 + }
42.439 +
42.440 + public void setColor(Color c, boolean dontSetAlpha) {
42.441 + Color oldColor = getColor();
42.442 + int oldR = red, oldG = green, oldB = blue, oldA = alpha;
42.443 + cached = c;
42.444 + red = c.getRed();
42.445 + green = c.getGreen();
42.446 + blue = c.getBlue();
42.447 + if (!dontSetAlpha) alpha = c.getAlpha();
42.448 + updateOffsetsFromARGB();
42.449 + firePropertyChange("red", oldR, getRed());
42.450 + firePropertyChange("green", oldG, getGreen());
42.451 + firePropertyChange("blue", oldB, getBlue());
42.452 + fireHSBChange(oldR, oldG, oldB);
42.453 + if (!dontSetAlpha) firePropertyChange("alpha", oldA, getAlpha());
42.454 + firePropertyChange("paint", oldColor, getColor());
42.455 + firePropertyChange("color", oldColor, getColor());
42.456 + }
42.457 +
42.458 + @Override public Paint getPaint() {
42.459 + return getColor();
42.460 + }
42.461 +
42.462 +
42.463 + @Override public String toString() {
42.464 + if (isAbsolute()) {
42.465 + return Matte.class.getName() + "[r=" + red + ", g=" + green + ", b=" + blue + ", a=" + alpha + "]";
42.466 + } else {
42.467 + return Matte.class.getName() + "[base=" + uiDefaultParentName + ", H+" + hueOffset +
42.468 + ", S+" + saturationOffset + ", B+" + brightnessOffset + ", A+" + alphaOffset + "]";
42.469 + }
42.470 + }
42.471 +
42.472 + public boolean equals(Object o) {
42.473 + if (this == o) return true;
42.474 + if (o == null || getClass() != o.getClass()) return false;
42.475 + Matte matte = (Matte) o;
42.476 + if (alpha != matte.alpha) return false;
42.477 + if (alphaOffset != matte.alphaOffset) return false;
42.478 + if (Float.compare(matte.alpha, alpha) != 0) return false;
42.479 + if (blue != matte.blue) return false;
42.480 + if (Float.compare(matte.brightnessOffset, brightnessOffset) != 0)
42.481 + return false;
42.482 + if (green != matte.green) return false;
42.483 + if (Float.compare(matte.hueOffset, hueOffset) != 0) return false;
42.484 + if (red != matte.red) return false;
42.485 + if (uiResource != matte.uiResource) return false;
42.486 + if (Float.compare(matte.saturationOffset, saturationOffset) != 0)
42.487 + return false;
42.488 + if (componentPropertyName != null ?
42.489 + !componentPropertyName.equals(componentPropertyName) :
42.490 + matte.componentPropertyName != null) return false;
42.491 +
42.492 + if (uiDefaultParentName != null ?
42.493 + !uiDefaultParentName.equals(matte.uiDefaultParentName) :
42.494 + matte.uiDefaultParentName != null) return false;
42.495 + return true;
42.496 + }
42.497 +
42.498 + public int hashCode() {
42.499 + int result;
42.500 + result = red;
42.501 + result = 31 * result + green;
42.502 + result = 31 * result + blue;
42.503 + result = 31 * result + alpha;
42.504 + result = 31 * result + (uiDefaultParentName != null ?
42.505 + uiDefaultParentName.hashCode() : 0);
42.506 + result = 31 * result + (componentPropertyName != null ?
42.507 + componentPropertyName.hashCode() : 0);
42.508 + result = 31 * result + hueOffset != +0.0f ?
42.509 + Float.floatToIntBits(hueOffset) : 0;
42.510 + result = 31 * result + saturationOffset != +0.0f ?
42.511 + Float.floatToIntBits(saturationOffset) : 0;
42.512 + result = 31 * result + brightnessOffset != +0.0f ?
42.513 + Float.floatToIntBits(brightnessOffset) : 0;
42.514 + result = 31 * result + (uiResource ? 1 : 0);
42.515 + return result;
42.516 + }
42.517 +
42.518 + @Override public Matte clone() {
42.519 + Matte m = new Matte();
42.520 + m.red = red;
42.521 + m.green = green;
42.522 + m.blue = blue;
42.523 + m.alpha = alpha;
42.524 + m.brightnessOffset = brightnessOffset;
42.525 + m.hueOffset = hueOffset;
42.526 + m.saturationOffset = saturationOffset;
42.527 + m.alphaOffset = alphaOffset;
42.528 + m.uiDefaultParentName = uiDefaultParentName;
42.529 + m.componentPropertyName = componentPropertyName;
42.530 + m.uiResource = uiResource;
42.531 + m.setUiDefaults(uiDefaults);
42.532 + return m;
42.533 + }
42.534 +
42.535 + // =================================================================================================================
42.536 + // Private Helper Methods
42.537 +
42.538 + private void updateOffsetsFromARGB() {
42.539 + if (!isAbsolute()) {
42.540 + tmpf1 = Color.RGBtoHSB(red, green, blue, tmpf1);
42.541 + Color parentColor = uiDefaults.getColor(uiDefaultParentName);
42.542 + tmpf2 = Color.RGBtoHSB(parentColor.getRed(), parentColor.getGreen(), parentColor.getBlue(), tmpf2);
42.543 + // update offset properties and fire events
42.544 + float oldH = hueOffset, oldS = saturationOffset, oldB = brightnessOffset;
42.545 + int oldA = alphaOffset;
42.546 + hueOffset = tmpf1[0] - tmpf2[0];
42.547 + saturationOffset = tmpf1[1] - tmpf2[1];
42.548 + brightnessOffset = tmpf1[2] - tmpf2[2];
42.549 + alphaOffset = alpha - parentColor.getAlpha();
42.550 + firePropertyChange("hueOffset", oldH, getHueOffset());
42.551 + firePropertyChange("saturationOffset", oldS, getSaturationOffset());
42.552 + firePropertyChange("brightnessOffset", oldB, getBrightnessOffset());
42.553 + firePropertyChange("alphaOffset", oldA, getAlphaOffset());
42.554 + }
42.555 + }
42.556 +
42.557 + private void updateARGBFromOffsets() {
42.558 + if (!isAbsolute()) {
42.559 + Color oldColor = getColor();
42.560 + // get parent color HSB
42.561 + Color parentColor = uiDefaults.getColor(uiDefaultParentName);
42.562 + tmpf1 = Color.RGBtoHSB(parentColor.getRed(), parentColor.getGreen(), parentColor.getBlue(), tmpf1);
42.563 + // apply offsets
42.564 + tmpf1[0] = clamp(tmpf1[0] + hueOffset);
42.565 + tmpf1[1] = clamp(tmpf1[1] + saturationOffset);
42.566 + tmpf1[2] = clamp(tmpf1[2] + brightnessOffset);
42.567 + int oldA = getAlpha();
42.568 + alpha = clamp(parentColor.getAlpha() + alphaOffset);
42.569 + updateRGB(tmpf1);
42.570 + // update fire events
42.571 + firePropertyChange("alpha", oldA, getAlpha());
42.572 + firePropertyChange("paint", oldColor, getColor());
42.573 + firePropertyChange("color", oldColor, getColor());
42.574 + }
42.575 + }
42.576 +
42.577 + private void updateRGB(float[] hsb) {
42.578 + int oldR = red, oldG = green, oldB = blue;
42.579 + int rgb = Color.HSBtoRGB(hsb[0], hsb[1], hsb[2]);
42.580 + red = (rgb >> 16) & 0xFF;
42.581 + green = (rgb >> 8) & 0xFF;
42.582 + blue = rgb & 0xFF;
42.583 + firePropertyChange("red", oldR, getRed());
42.584 + firePropertyChange("green", oldG, getGreen());
42.585 + firePropertyChange("blue", oldB, getBlue());
42.586 + }
42.587 +
42.588 + private void fireHSBChange(int oldR, int oldG, int oldB) {
42.589 + tmpf1 = Color.RGBtoHSB(oldR, oldG, oldB, tmpf1);
42.590 + tmpf2 = Color.RGBtoHSB(red, green, blue, tmpf2);
42.591 + firePropertyChange("hue", tmpf1[0], tmpf2[0]);
42.592 + firePropertyChange("saturation", tmpf1[1], tmpf2[1]);
42.593 + firePropertyChange("brightness", tmpf1[2], tmpf2[2]);
42.594 + }
42.595 +
42.596 + private float clamp(float value) {
42.597 + if (value < 0) {
42.598 + value = 0;
42.599 + } else if (value > 1) {
42.600 + value = 1;
42.601 + }
42.602 + return value;
42.603 + }
42.604 +
42.605 + private int clamp(int value) {
42.606 + if (value < 0) {
42.607 + value = 0;
42.608 + } else if (value > 255) {
42.609 + value = 255;
42.610 + }
42.611 + return value;
42.612 + }
42.613 +}
43.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
43.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/PaintModel.java Wed Apr 29 00:27:46 2009 -0700
43.3 @@ -0,0 +1,64 @@
43.4 +/*
43.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
43.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
43.7 + *
43.8 + * This code is free software; you can redistribute it and/or modify it
43.9 + * under the terms of the GNU General Public License version 2 only, as
43.10 + * published by the Free Software Foundation. Sun designates this
43.11 + * particular file as subject to the "Classpath" exception as provided
43.12 + * by Sun in the LICENSE file that accompanied this code.
43.13 + *
43.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
43.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
43.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
43.17 + * version 2 for more details (a copy is included in the LICENSE file that
43.18 + * accompanied this code).
43.19 + *
43.20 + * You should have received a copy of the GNU General Public License version
43.21 + * 2 along with this work; if not, write to the Free Software Foundation,
43.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
43.23 + *
43.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
43.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
43.26 + * have any questions.
43.27 + */
43.28 +package org.jdesktop.swingx.designer.paint;
43.29 +
43.30 +import org.jdesktop.beans.AbstractBean;
43.31 +
43.32 +import java.awt.Paint;
43.33 +
43.34 +/**
43.35 + * I'd have just called it Paint, but sadly, that name was already taken, and would have been too confusing.
43.36 + * <p/>
43.37 + * Whenever size or position values are required (for example with Texture or Gradient), they are specified in the unit
43.38 + * square: that is, between 0 and 1 inclusive. They can then later be scaled as necessary by any painting code.
43.39 + *
43.40 + * @author rbair
43.41 + */
43.42 +public abstract class PaintModel extends AbstractBean implements Cloneable {
43.43 + public static enum PaintControlType {
43.44 + none, control_line, control_rect
43.45 + }
43.46 +
43.47 + protected PaintModel() { }
43.48 +
43.49 + /**
43.50 + * @return an instance of Paint that is represented by this PaintModel. This is often not a reversable operation,
43.51 + * and hence there is no "setPaint" method. Rather, tweaking the exposed properties of the PaintModel fires,
43.52 + * when necessary, property change events for the "paint" property, and results in different values returned
43.53 + * from this method.
43.54 + */
43.55 + public abstract Paint getPaint();
43.56 +
43.57 + /**
43.58 + * Get the type of controls for this paint model
43.59 + *
43.60 + * @return The type of paint controls, one of PaintControlType.none, PaintControlType.control_line or
43.61 + * PaintControlType.control_rect
43.62 + */
43.63 + public abstract PaintControlType getPaintControlType();
43.64 +
43.65 +
43.66 + public abstract PaintModel clone();
43.67 +}
44.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
44.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/RadialGradient.java Wed Apr 29 00:27:46 2009 -0700
44.3 @@ -0,0 +1,51 @@
44.4 +/*
44.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
44.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44.7 + *
44.8 + * This code is free software; you can redistribute it and/or modify it
44.9 + * under the terms of the GNU General Public License version 2 only, as
44.10 + * published by the Free Software Foundation. Sun designates this
44.11 + * particular file as subject to the "Classpath" exception as provided
44.12 + * by Sun in the LICENSE file that accompanied this code.
44.13 + *
44.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
44.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
44.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
44.17 + * version 2 for more details (a copy is included in the LICENSE file that
44.18 + * accompanied this code).
44.19 + *
44.20 + * You should have received a copy of the GNU General Public License version
44.21 + * 2 along with this work; if not, write to the Free Software Foundation,
44.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
44.23 + *
44.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
44.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
44.26 + * have any questions.
44.27 + */
44.28 +package org.jdesktop.swingx.designer.paint;
44.29 +
44.30 +import java.awt.Color;
44.31 +import java.awt.MultipleGradientPaint.CycleMethod;
44.32 +import java.awt.Paint;
44.33 +import java.awt.RadialGradientPaint;
44.34 +
44.35 +/**
44.36 + * Represents a RadialGradientPaint.
44.37 + *
44.38 + * @author rbair
44.39 + */
44.40 +public class RadialGradient extends AbstractGradient {
44.41 + protected Paint createPaint(float[] fractions, Matte[] mattes, CycleMethod method) {
44.42 + Color[] colors = new Color[mattes.length];
44.43 + for (int i = 0; i < colors.length; i++) {
44.44 + colors[i] = mattes[i].getColor();
44.45 + }
44.46 + return new RadialGradientPaint(.5f, .5f, 1, fractions, colors, method);
44.47 + }
44.48 +
44.49 + @Override public RadialGradient clone() {
44.50 + RadialGradient gradient = new RadialGradient();
44.51 + copyTo(gradient);
44.52 + return gradient;
44.53 + }
44.54 +}
45.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
45.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/Texture.java Wed Apr 29 00:27:46 2009 -0700
45.3 @@ -0,0 +1,69 @@
45.4 +/*
45.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
45.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
45.7 + *
45.8 + * This code is free software; you can redistribute it and/or modify it
45.9 + * under the terms of the GNU General Public License version 2 only, as
45.10 + * published by the Free Software Foundation. Sun designates this
45.11 + * particular file as subject to the "Classpath" exception as provided
45.12 + * by Sun in the LICENSE file that accompanied this code.
45.13 + *
45.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
45.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
45.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
45.17 + * version 2 for more details (a copy is included in the LICENSE file that
45.18 + * accompanied this code).
45.19 + *
45.20 + * You should have received a copy of the GNU General Public License version
45.21 + * 2 along with this work; if not, write to the Free Software Foundation,
45.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
45.23 + *
45.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
45.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
45.26 + * have any questions.
45.27 + */
45.28 +package org.jdesktop.swingx.designer.paint;
45.29 +
45.30 +import java.awt.Paint;
45.31 +import java.awt.TexturePaint;
45.32 +import java.awt.geom.Rectangle2D;
45.33 +import java.awt.image.BufferedImage;
45.34 +
45.35 +/**
45.36 + * Represents a TexturePaint.
45.37 + *
45.38 + * @author rbair
45.39 + */
45.40 +public class Texture extends PaintModel {
45.41 + private static final Rectangle2D RECT = new Rectangle2D.Double(0, 0, 1, 1);
45.42 + private BufferedImage img;
45.43 +
45.44 + public Texture() {
45.45 + }
45.46 +
45.47 + public PaintControlType getPaintControlType() {
45.48 + return PaintControlType.control_rect;
45.49 + }
45.50 +
45.51 + public void setImage(BufferedImage img) {
45.52 + BufferedImage old = this.img;
45.53 + this.img = img;
45.54 + firePropertyChange("paint", old, this.img);
45.55 + firePropertyChange("image", old, this.img);
45.56 + }
45.57 +
45.58 + public final BufferedImage getImage() {
45.59 + return img;
45.60 + }
45.61 +
45.62 + public Paint getPaint() {
45.63 + return new TexturePaint(img, RECT);
45.64 + }
45.65 +
45.66 +
45.67 + public Texture clone() {
45.68 + Texture newTexture = new Texture();
45.69 + newTexture.img = this.img;
45.70 + return newTexture;
45.71 + }
45.72 +}
46.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
46.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/utils/HasPath.java Wed Apr 29 00:27:46 2009 -0700
46.3 @@ -0,0 +1,34 @@
46.4 +/*
46.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
46.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
46.7 + *
46.8 + * This code is free software; you can redistribute it and/or modify it
46.9 + * under the terms of the GNU General Public License version 2 only, as
46.10 + * published by the Free Software Foundation. Sun designates this
46.11 + * particular file as subject to the "Classpath" exception as provided
46.12 + * by Sun in the LICENSE file that accompanied this code.
46.13 + *
46.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
46.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
46.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
46.17 + * version 2 for more details (a copy is included in the LICENSE file that
46.18 + * accompanied this code).
46.19 + *
46.20 + * You should have received a copy of the GNU General Public License version
46.21 + * 2 along with this work; if not, write to the Free Software Foundation,
46.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
46.23 + *
46.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
46.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
46.26 + * have any questions.
46.27 + */
46.28 +package org.jdesktop.swingx.designer.utils;
46.29 +
46.30 +/**
46.31 + * HasPath - interface for model nodes that can provide there path in the tree
46.32 + *
46.33 + * @author Created by Jasper Potts (Jul 2, 2007)
46.34 + */
46.35 +public interface HasPath {
46.36 + public String getPath();
46.37 +}
47.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
47.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/utils/HasResources.java Wed Apr 29 00:27:46 2009 -0700
47.3 @@ -0,0 +1,42 @@
47.4 +/*
47.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
47.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
47.7 + *
47.8 + * This code is free software; you can redistribute it and/or modify it
47.9 + * under the terms of the GNU General Public License version 2 only, as
47.10 + * published by the Free Software Foundation. Sun designates this
47.11 + * particular file as subject to the "Classpath" exception as provided
47.12 + * by Sun in the LICENSE file that accompanied this code.
47.13 + *
47.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
47.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
47.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
47.17 + * version 2 for more details (a copy is included in the LICENSE file that
47.18 + * accompanied this code).
47.19 + *
47.20 + * You should have received a copy of the GNU General Public License version
47.21 + * 2 along with this work; if not, write to the Free Software Foundation,
47.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
47.23 + *
47.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
47.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
47.26 + * have any questions.
47.27 + */
47.28 +package org.jdesktop.swingx.designer.utils;
47.29 +
47.30 +import java.io.File;
47.31 +
47.32 +/**
47.33 + * HasResources - interface for model nodes that have resources
47.34 + *
47.35 + * @author Created by Jasper Potts (Jul 2, 2007)
47.36 + */
47.37 +public interface HasResources {
47.38 +
47.39 + public File getResourcesDir();
47.40 +
47.41 + public File getImagesDir();
47.42 +
47.43 + public File getTemplatesDir();
47.44 +
47.45 +}
48.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
48.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/utils/HasUIDefaults.java Wed Apr 29 00:27:46 2009 -0700
48.3 @@ -0,0 +1,36 @@
48.4 +/*
48.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
48.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
48.7 + *
48.8 + * This code is free software; you can redistribute it and/or modify it
48.9 + * under the terms of the GNU General Public License version 2 only, as
48.10 + * published by the Free Software Foundation. Sun designates this
48.11 + * particular file as subject to the "Classpath" exception as provided
48.12 + * by Sun in the LICENSE file that accompanied this code.
48.13 + *
48.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
48.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
48.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
48.17 + * version 2 for more details (a copy is included in the LICENSE file that
48.18 + * accompanied this code).
48.19 + *
48.20 + * You should have received a copy of the GNU General Public License version
48.21 + * 2 along with this work; if not, write to the Free Software Foundation,
48.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
48.23 + *
48.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
48.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
48.26 + * have any questions.
48.27 + */
48.28 +package org.jdesktop.swingx.designer.utils;
48.29 +
48.30 +import javax.swing.UIDefaults;
48.31 +
48.32 +/**
48.33 + * HasUIDefaults - A tagging interface for any class that has UIDefaults
48.34 + *
48.35 + * @author Created by Jasper Potts (Jun 22, 2007)
48.36 + */
48.37 +public interface HasUIDefaults {
48.38 + public UIDefaults getUiDefaults();
48.39 +}
49.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
49.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/DefaultsGenerator.java Wed Apr 29 00:27:46 2009 -0700
49.3 @@ -0,0 +1,726 @@
49.4 +/*
49.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
49.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
49.7 + *
49.8 + * This code is free software; you can redistribute it and/or modify it
49.9 + * under the terms of the GNU General Public License version 2 only, as
49.10 + * published by the Free Software Foundation. Sun designates this
49.11 + * particular file as subject to the "Classpath" exception as provided
49.12 + * by Sun in the LICENSE file that accompanied this code.
49.13 + *
49.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
49.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
49.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
49.17 + * version 2 for more details (a copy is included in the LICENSE file that
49.18 + * accompanied this code).
49.19 + *
49.20 + * You should have received a copy of the GNU General Public License version
49.21 + * 2 along with this work; if not, write to the Free Software Foundation,
49.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
49.23 + *
49.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
49.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
49.26 + * have any questions.
49.27 + */
49.28 +package org.jdesktop.synthdesigner.generator;
49.29 +
49.30 +import org.jdesktop.swingx.designer.Canvas;
49.31 +import org.jdesktop.swingx.designer.font.Typeface;
49.32 +import org.jdesktop.swingx.designer.paint.Matte;
49.33 +import org.jdesktop.swingx.designer.paint.PaintModel;
49.34 +import static org.jdesktop.synthdesigner.generator.GeneratorUtils.makePretty;
49.35 +import static org.jdesktop.synthdesigner.generator.GeneratorUtils.toConstantName;
49.36 +import static org.jdesktop.synthdesigner.generator.ObjectCodeConvertors.convert;
49.37 +import static org.jdesktop.synthdesigner.generator.TemplateWriter.read;
49.38 +import static org.jdesktop.synthdesigner.generator.TemplateWriter.writeSrcFile;
49.39 +import org.jdesktop.synthdesigner.synthmodel.SynthModel;
49.40 +import org.jdesktop.synthdesigner.synthmodel.UIComponent;
49.41 +import org.jdesktop.synthdesigner.synthmodel.UIFont;
49.42 +import org.jdesktop.synthdesigner.synthmodel.UIIconRegion;
49.43 +import org.jdesktop.synthdesigner.synthmodel.UIPaint;
49.44 +import org.jdesktop.synthdesigner.synthmodel.UIProperty;
49.45 +import org.jdesktop.synthdesigner.synthmodel.UIRegion;
49.46 +import org.jdesktop.synthdesigner.synthmodel.UIState;
49.47 +import org.jdesktop.synthdesigner.synthmodel.UIStateType;
49.48 +import org.jdesktop.synthdesigner.synthmodel.UIStyle;
49.49 +
49.50 +import javax.swing.border.BevelBorder;
49.51 +import javax.swing.border.Border;
49.52 +import javax.swing.border.CompoundBorder;
49.53 +import javax.swing.border.EmptyBorder;
49.54 +import javax.swing.border.EtchedBorder;
49.55 +import javax.swing.border.LineBorder;
49.56 +import javax.swing.border.MatteBorder;
49.57 +import java.awt.Dimension;
49.58 +import java.awt.Font;
49.59 +import java.awt.Insets;
49.60 +import java.io.File;
49.61 +import java.io.IOException;
49.62 +import java.util.List;
49.63 +import java.util.Map;
49.64 +import org.jdesktop.synthdesigner.synthmodel.PainterBorder;
49.65 +
49.66 +/**
49.67 + * DefaultsGenerator
49.68 + * <p/>
49.69 + * There are two main sets of defaults that must be configured. The first is
49.70 + * the actual UI defaults tree. The second is a map of components + regions, which
49.71 + * are used to decide what SynthStyle to use.
49.72 + *
49.73 + * @author Jasper Potts
49.74 + * @author Richard Bair
49.75 + */
49.76 +public class DefaultsGenerator {
49.77 + private static String stateTypeImplTemplate;
49.78 +
49.79 + private static String getStateTypeTemplate() {
49.80 + if (stateTypeImplTemplate == null) {
49.81 + //load the painter template file into an in-memory string to improve performance
49.82 + //when generating a lot of classes
49.83 + try {
49.84 + stateTypeImplTemplate = read("resources/StateImpl.template");
49.85 + } catch (IOException e) {
49.86 + System.err.println("Failed to read template files.");
49.87 + throw new RuntimeException(e);
49.88 + }
49.89 + }
49.90 + return stateTypeImplTemplate;
49.91 + }
49.92 +
49.93 + /**
49.94 + * Generate the defaults file and all painter files for a SynthModel. This method
49.95 + * is the main entry point, called by the Generator class.
49.96 + *
49.97 + * @param uiDefaultInit The buffer to write ui default put methods of the form <code>d.put("activeCaption", new
49.98 + * ColorUIResource(123, 45, 200));</code>
49.99 + * @param styleInit The buffer to write out code to generate Synth Style populating the styles map <code>m
49.100 + * = new HashMap<Key, LazyStyle>()</code>
49.101 + * @param model The Synth Model we are writing out defaults class for
49.102 + * @param variables The variables map pre populated with "PACKAGE" and "LAF_NAME"
49.103 + * @param packageNamePrefix The package name associated with this synth look and feel. For example,
49.104 + * org.mypackage.mylaf
49.105 + * @param painterPackageRoot The directory to write painters out to
49.106 + */
49.107 + public static void generateDefaults(StringBuilder uiDefaultInit, StringBuilder styleInit, SynthModel model,
49.108 + Map<String, String> variables, String packageNamePrefix,
49.109 + File painterPackageRoot) {
49.110 + // write color palette
49.111 + uiDefaultInit.append(" //Color palette\n");
49.112 + writeColorPalette(uiDefaultInit, model.getColorPalette());
49.113 + uiDefaultInit.append("\n");
49.114 + // write fonts palette
49.115 + uiDefaultInit.append(" //Font palette\n");
49.116 + uiDefaultInit.append(" d.put(\"defaultFont\", new FontUIResource(defaultFont));\n");
49.117 + writeFontPalette(uiDefaultInit, model.getFontPalette());
49.118 + uiDefaultInit.append("\n");
49.119 + // TODO: Other palettes
49.120 + uiDefaultInit.append(" //Border palette\n");
49.121 + uiDefaultInit.append("\n");
49.122 + // write global style
49.123 + uiDefaultInit.append(" //The global style definition\n");
49.124 + writeStyle(model.getStyle(), uiDefaultInit, "");
49.125 + uiDefaultInit.append("\n");
49.126 + // write components
49.127 + for (UIComponent c : model.getComponents()) {
49.128 + String prefix = escape(c.getKey());
49.129 + uiDefaultInit.append(" //Initialize ").append(prefix)
49.130 + .append("\n");
49.131 + writeRegion(c, c, prefix, uiDefaultInit,
49.132 + styleInit, variables, packageNamePrefix, painterPackageRoot);
49.133 + uiDefaultInit.append("\n");
49.134 + }
49.135 + }
49.136 +
49.137 + private static void writeColorPalette(StringBuilder uiDefaultInit, List<UIPaint> colors) {
49.138 + for (UIPaint color : colors) {
49.139 + uiDefaultInit.append(" d.put(\"")
49.140 + .append(color.getName())
49.141 + .append("\",")
49.142 + .append(convertPaint(color.getValue()))
49.143 + .append(");\n");
49.144 + }
49.145 + }
49.146 +
49.147 + private static void writeFontPalette(StringBuilder uiDefaultInit, List<UIFont> fonts) {
49.148 + for (UIFont font : fonts) {
49.149 + // We have no way of doing CSS style font lists yet so will just
49.150 + // just the first font
49.151 + if (!font.getFonts().isEmpty()){
49.152 + Typeface t = font.getFonts().get(0);
49.153 + if (t.isAbsolute()){
49.154 + Font f = t.getFont();
49.155 + uiDefaultInit.append(" d.put(\"")
49.156 + .append(font.getName())
49.157 + .append("\", new javax.swing.plaf.FontUIResource(\"")
49.158 + .append(f.getName())
49.159 + .append("\", ")
49.160 + .append(f.getStyle())
49.161 + .append(", ")
49.162 + .append(f.getSize())
49.163 + .append("));\n");
49.164 + } else {
49.165 + uiDefaultInit.append(" d.put(\"")
49.166 + .append(font.getName())
49.167 + .append("\", new DerivedFont(\"")
49.168 + .append(t.getUiDefaultParentName())
49.169 + .append("\", ")
49.170 + .append(t.getSizeOffset())
49.171 + .append("f, ");
49.172 + switch (t.getBold()){
49.173 + case Default:
49.174 + uiDefaultInit.append("null");
49.175 + break;
49.176 + case On:
49.177 + uiDefaultInit.append("true");
49.178 + break;
49.179 + case Off:
49.180 + uiDefaultInit.append("false");
49.181 + break;
49.182 + }
49.183 + uiDefaultInit.append(", ");
49.184 + switch (t.getItalic()){
49.185 + case Default:
49.186 + uiDefaultInit.append("null");
49.187 + break;
49.188 + case On:
49.189 + uiDefaultInit.append("true");
49.190 + break;
49.191 + case Off:
49.192 + uiDefaultInit.append("false");
49.193 + break;
49.194 + }
49.195 + uiDefaultInit.append("));\n");
49.196 + }
49.197 + }
49.198 + }
49.199 + }
49.200 +
49.201 + /**
49.202 + * Write out the UIDefaults entries for a style
49.203 + *
49.204 + * @param style The style to write defaults entries for
49.205 + * @param uiDefaultInit The buffer to write ui default put methods of the form <code>d.put("activeCaption", new
49.206 + * ColorUIResource(123, 45, 200));</code>
49.207 + * @param prefix The prefix for the style property names, for the model path where the style is from, should
49.208 + * end with a "."
49.209 + */
49.210 + private static void writeStyle(UIStyle style, StringBuilder uiDefaultInit, String prefix) {
49.211 + if (!style.isTextForegroundInherited()) writeMatte(prefix + "textForeground", style.getTextForeground(), uiDefaultInit);
49.212 + if (!style.isTextBackgroundInherited()) writeMatte(prefix + "textBackground", style.getTextBackground(), uiDefaultInit);
49.213 + if (!style.isBackgroundInherited()) writeMatte(prefix + "background", style.getBackground(), uiDefaultInit);
49.214 + if (!style.isFontInherited()) writeTypeFace(prefix + "font", style.getFont(), uiDefaultInit);
49.215 + for (UIProperty property : style.getUiProperties()) {
49.216 + switch (property.getType()) {
49.217 + case BOOLEAN:
49.218 + Boolean b = ((Boolean)property.getValue());
49.219 + if (b != null) {
49.220 + uiDefaultInit.append(" d.put(\"")
49.221 + .append(prefix)
49.222 + .append(property.getName())
49.223 + .append("\", ")
49.224 + .append(b ? "Boolean.TRUE" : "Boolean.FALSE")
49.225 + .append(");\n");
49.226 + }
49.227 + break;
49.228 + case STRING:
49.229 + uiDefaultInit.append(" d.put(\"")
49.230 + .append(prefix)
49.231 + .append(property.getName())
49.232 + .append("\", \"")
49.233 + .append(property.getValue().toString())
49.234 + .append("\");\n");
49.235 + break;
49.236 + case INT:
49.237 + uiDefaultInit.append(" d.put(\"")
49.238 + .append(prefix)
49.239 + .append(property.getName())
49.240 + .append("\", new Integer(")
49.241 + .append(((Integer) property.getValue()).intValue())
49.242 + .append("));\n");
49.243 + break;
49.244 + case FLOAT:
49.245 + uiDefaultInit.append(" d.put(\"")
49.246 + .append(prefix)
49.247 + .append(property.getName())
49.248 + .append("\", new Float(")
49.249 + .append(((Float) property.getValue()).floatValue())
49.250 + .append("f));\n");
49.251 + break;
49.252 + case DOUBLE:
49.253 + uiDefaultInit.append(" d.put(\"")
49.254 + .append(prefix)
49.255 + .append(property.getName())
49.256 + .append("\", new Double(")
49.257 + .append(((Double) property.getValue()).doubleValue())
49.258 + .append("));\n");
49.259 + break;
49.260 + case COLOR:
49.261 + uiDefaultInit.append(" d.put(\"")
49.262 + .append(prefix)
49.263 + .append(property.getName())
49.264 + .append("\", ")
49.265 + .append(convertPaint((Matte)property.getValue()))
49.266 + .append(");\n");
49.267 + break;
49.268 + case FONT:
49.269 + writeTypeFace(prefix.replace("\"", "\\\"") + property.getName(),
49.270 + (Typeface) property.getValue(), uiDefaultInit);
49.271 + break;
49.272 + case INSETS:
49.273 + Insets i = (Insets) property.getValue();
49.274 + uiDefaultInit.append(" d.put(\"")
49.275 + .append(prefix)
49.276 + .append(property.getName())
49.277 + .append("\", new InsetsUIResource(")
49.278 + .append(i.top).append(", ").append(i.left).append(", ").append(i.bottom).append(", ")
49.279 + .append(i.right)
49.280 + .append("));\n");
49.281 + break;
49.282 + case DIMENSION:
49.283 + Dimension d = (Dimension) property.getValue();
49.284 + uiDefaultInit.append(" d.put(\"")
49.285 + .append(prefix)
49.286 + .append(property.getName())
49.287 + .append("\", new DimensionUIResource(")
49.288 + .append(d.width).append(", ").append(d.height)
49.289 + .append("));\n");
49.290 + break;
49.291 + case BORDER:
49.292 + uiDefaultInit.append(" d.put(\"")
49.293 + .append(prefix)
49.294 + .append(property.getName())
49.295 + .append("\", new BorderUIResource(");
49.296 + uiDefaultInit.append(convertBorder(
49.297 + (Border)property.getValue()));
49.298 + uiDefaultInit.append("));\n");
49.299 + break;
49.300 + }
49.301 + }
49.302 + }
49.303 +
49.304 + private static void writeMatte(String propertyName, Matte matte, StringBuilder uiDefaultInit) {
49.305 + if (matte==null) System.err.println("Error matte is NULL for ["+propertyName+"]");
49.306 + uiDefaultInit.append(" d.put(\"")
49.307 + .append(propertyName)
49.308 + .append("\", ")
49.309 + .append(convertPaint(matte))
49.310 + .append(");\n");
49.311 + }
49.312 +
49.313 + private static void writeTypeFace(String propertyName, Typeface typeface, StringBuilder uiDefaultInit) {
49.314 + uiDefaultInit.append(" d.put(\"")
49.315 + .append(propertyName)
49.316 + .append("\", new DerivedFont(\"")
49.317 + .append(typeface.getUiDefaultParentName())
49.318 + .append("\", ")
49.319 + .append(typeface.getSizeOffset())
49.320 + .append("f, ");
49.321 + switch (typeface.getBold()) {
49.322 + case Default:
49.323 + uiDefaultInit.append("null,");
49.324 + break;
49.325 + case Off:
49.326 + uiDefaultInit.append("Boolean.FALSE,");
49.327 + break;
49.328 + case On:
49.329 + uiDefaultInit.append("Boolean.TRUE,");
49.330 + break;
49.331 + }
49.332 + switch (typeface.getItalic()) {
49.333 + case Default:
49.334 + uiDefaultInit.append("null");
49.335 + break;
49.336 + case Off:
49.337 + uiDefaultInit.append("Boolean.FALSE");
49.338 + break;
49.339 + case On:
49.340 + uiDefaultInit.append("Boolean.TRUE");
49.341 + break;
49.342 + }
49.343 + uiDefaultInit.append("));\n");
49.344 + }
49.345 +
49.346 +
49.347 + /**
49.348 + * Write out code for a Component or Region
49.349 + *
49.350 + * @param comp This may be the same as the region <code>reg</code> or is the parent component
49.351 + * containing the region
49.352 + * @param region The region we are writing out
49.353 + * @param prefix This is dot sperated path of component and sub regions to and including the region
49.354 + * <code>reg</code> of the form [Comp].[Region]......[Region] path
49.355 + * @param uiDefaultInit This is for inserting into org.mypackage.mylaf.MyDefaults#getDefaults() method
49.356 + * @param styleInit This is for inserting into org.mypackage.mylaf.MyDefaults#initialize() method
49.357 + * @param variables The variables map pre populated with "PACKAGE" and "LAF_NAME"
49.358 + * @param packageNamePrefix The package name associated with this synth look and feel. For example,
49.359 + * org.mypackage.mylaf
49.360 + * @param painterPackageRoot The directory to write painters out to
49.361 + */
49.362 + private static void writeRegion(UIComponent comp, UIRegion region, String prefix, StringBuilder uiDefaultInit,
49.363 + StringBuilder styleInit, Map<String, String> variables,
49.364 + String packageNamePrefix, File painterPackageRoot) {
49.365 + // register component with LAF
49.366 + String regionCode = GeneratorUtils.getRegionNameCaps(region.getName());
49.367 + if (regionCode == null) {
49.368 + throw new IllegalStateException("We were asked to encode a region we know nothing about: " + region.getName());
49.369 + } else {
49.370 + regionCode = "Region." + regionCode;
49.371 + }
49.372 +
49.373 + //construct the list of States that accompany this registration.
49.374 + StringBuffer regString = new StringBuffer(); //like: Enabled,Disabled,Foo,Default,Etc
49.375 + List<UIStateType> types = comp.getStateTypes(); //state types are only defined on the UIComponent level
49.376 + if (types != null && types.size() > 0) {
49.377 + for (UIStateType type : types) {
49.378 + regString.append(type.getKey());
49.379 + regString.append(",");
49.380 + }
49.381 + //remove the last ","
49.382 + regString.deleteCharAt(regString.length()-1);
49.383 + }
49.384 +
49.385 + styleInit.append(" register(")
49.386 + .append(regionCode)
49.387 + .append(", \"")
49.388 + .append(prefix);
49.389 + styleInit.append("\"");
49.390 + styleInit.append(");\n");
49.391 +
49.392 + // write content margins
49.393 + Insets i = (Insets) region.getContentMargins();
49.394 + uiDefaultInit.append(" d.put(\"")
49.395 + .append(prefix)
49.396 + .append(".contentMargins")
49.397 + .append("\", new InsetsUIResource(")
49.398 + .append(i.top).append(", ").append(i.left).append(", ").append(i.bottom).append(", ").append(i.right)
49.399 + .append("));\n");
49.400 + // write opaque if true
49.401 + if (region instanceof UIComponent && ((UIComponent)region).isOpaque()) {
49.402 + uiDefaultInit.append(" d.put(\"")
49.403 + .append(prefix)
49.404 + .append(".opaque")
49.405 + .append("\", Boolean.TRUE);\n");
49.406 + }
49.407 + //write the State, if necessary
49.408 + if (!regString.equals("Enabled,MouseOver,Pressed,Disabled,Focused,Selected,Default") && types.size() > 0) {
49.409 + //there were either custom states, or the normal states were in a custom order
49.410 + //so go ahead and write out prefix.State
49.411 + uiDefaultInit.append(" d.put(\"")
49.412 + .append(prefix)
49.413 + .append(".States")
49.414 + .append("\", \"")
49.415 + .append(regString)
49.416 + .append("\");\n");
49.417 + }
49.418 + //write out any custom states, if necessary
49.419 + for (UIStateType type : types) {
49.420 + String synthState = type.getKey();
49.421 + if (!"Enabled".equals(synthState) &&
49.422 + !"MouseOver".equals(synthState) &&
49.423 + !"Pressed".equals(synthState) &&
49.424 + !"Disabled".equals(synthState) &&
49.425 + !"Focused".equals(synthState) &&
49.426 + !"Selected".equals(synthState) &&
49.427 + !"Default".equals(synthState)) {
49.428 + //what we have here, gentlemen, is a bona-fide custom state.
49.429 + try {
49.430 + //if the type is not one of the standard types, then construct a name for
49.431 + //the new type, and write out a new subclass of State.
49.432 + java.lang.String className = makePretty(prefix) + synthState + "State";
49.433 + java.lang.String body = type.getCodeSnippet();
49.434 + variables.put("STATE_NAME", className);
49.435 + variables.put("STATE_KEY", synthState);
49.436 + variables.put("BODY", body);
49.437 +
49.438 + writeSrcFile(getStateTypeTemplate(), variables, new java.io.File(painterPackageRoot, className + ".java"));
49.439 +
49.440 + variables.remove("STATE_NAME");
49.441 + variables.remove("STATE_KEY");
49.442 + variables.remove("BODY");
49.443 +
49.444 + uiDefaultInit.append(" d.put(\"")
49.445 + .append(prefix)
49.446 + .append(".")
49.447 + .append(synthState)
49.448 + .append("\", new ")
49.449 + .append(className)
49.450 + .append("());\n");
49.451 + } catch (IOException ex) {
49.452 + ex.printStackTrace();
49.453 + }
49.454 + }
49.455 + }
49.456 + // write region style
49.457 + writeStyle(region.getStyle(), uiDefaultInit, prefix + ".");
49.458 +
49.459 + try {
49.460 + boolean hasCanvas = hasCanvas(region);
49.461 + if (hasCanvas) {
49.462 + PainterGenerator.writePainter(region, variables, painterPackageRoot, prefix);
49.463 + }
49.464 + String fileNamePrefix = makePretty(prefix) + "Painter";
49.465 + // write states ui defaults
49.466 + for (UIState state : region.getBackgroundStates()) {
49.467 + String statePrefix = prefix + "[" + state.getName() + "]";
49.468 + // write state style
49.469 + writeStyle(state.getStyle(), uiDefaultInit, statePrefix + ".");
49.470 + // write painter
49.471 + if (hasCanvas) {
49.472 + writeLazyPainter(state, uiDefaultInit, statePrefix, packageNamePrefix, fileNamePrefix, "background");
49.473 + }
49.474 + }
49.475 + for (UIState state : region.getForegroundStates()) {
49.476 + String statePrefix = prefix + "[" + state.getName() + "]";
49.477 + // write state style
49.478 + writeStyle(state.getStyle(), uiDefaultInit, statePrefix + ".");
49.479 + // write painter
49.480 + if (hasCanvas) {
49.481 + writeLazyPainter(state, uiDefaultInit, statePrefix, packageNamePrefix, fileNamePrefix, "foreground");
49.482 + }
49.483 + }
49.484 + for (UIState state : region.getBorderStates()) {
49.485 + String statePrefix = prefix + "[" + state.getName() + "]";
49.486 + // write state style
49.487 + writeStyle(state.getStyle(), uiDefaultInit, statePrefix + ".");
49.488 + // write painter
49.489 + if (hasCanvas) {
49.490 + writeLazyPainter(state, uiDefaultInit, statePrefix, packageNamePrefix, fileNamePrefix, "border");
49.491 + }
49.492 + }
49.493 + } catch (Exception e) {
49.494 + e.printStackTrace();
49.495 + }
49.496 +
49.497 + // handle sub regions
49.498 + for (UIRegion subRegion : region.getSubRegions()) {
49.499 + String subregionName = prefix + ":" + escape(subRegion.getKey());
49.500 + if (subRegion instanceof UIIconRegion) {
49.501 + writeIconRegion(comp, (UIIconRegion) subRegion, prefix, uiDefaultInit,
49.502 + variables, packageNamePrefix, painterPackageRoot);
49.503 + } else if (subRegion instanceof UIComponent) {
49.504 + // inner named component
49.505 + UIComponent subComponent = (UIComponent) subRegion;
49.506 + writeRegion(subComponent, subRegion, subregionName,
49.507 + uiDefaultInit, styleInit, variables, packageNamePrefix, painterPackageRoot);
49.508 + } else {
49.509 + writeRegion(comp, subRegion, subregionName, uiDefaultInit, styleInit, variables,
49.510 + packageNamePrefix, painterPackageRoot);
49.511 + }
49.512 + }
49.513 + }
49.514 +
49.515 + private static void writeLazyPainter(UIState state, StringBuilder uiDefaultInit, String statePrefix, String packageNamePrefix, String fileNamePrefix, String painterSuffix) {
49.516 + Canvas canvas = state.getCanvas();
49.517 + if (!canvas.isBlank()) {
49.518 + Insets si = canvas.getStretchingInsets();
49.519 + boolean inverted = state.isInverted();
49.520 + UIStyle.CacheMode cache = state.getStyle().getCacheMode();
49.521 + String cacheModeString = null;
49.522 + switch (cache) {
49.523 + case NO_CACHING: cacheModeString = "AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING"; break;
49.524 + case FIXED_SIZES: cacheModeString = "AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES"; break;
49.525 + case NINE_SQUARE_SCALE: cacheModeString = "AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE"; break;
49.526 + }
49.527 + double maxH = state.getStyle().getMaxHozCachedImgScaling();
49.528 + double maxV = state.getStyle().getMaxVertCachedImgScaling();
49.529 + String stateConstant = toConstantName(painterSuffix + "_" + UIState.keysToString(state.getStateKeys()));
49.530 +
49.531 + uiDefaultInit.append(" d.put(\"")
49.532 + .append(statePrefix)
49.533 + .append(".").append(painterSuffix).append("Painter\", new LazyPainter(\"")
49.534 + .append(packageNamePrefix).append(".").append(fileNamePrefix)
49.535 + .append("\", ")
49.536 + .append(fileNamePrefix).append(".").append(stateConstant).append(", ")
49.537 + .append(convert(si)).append(", ")
49.538 + .append(convert(canvas.getSize())).append(", ")
49.539 + .append(inverted).append(", ")
49.540 + .append(cacheModeString).append(", ")
49.541 + .append(maxH == Double.POSITIVE_INFINITY ? "Double.POSITIVE_INFINITY" : maxH).append(", ")
49.542 + .append(maxV == Double.POSITIVE_INFINITY ? "Double.POSITIVE_INFINITY" : maxV).append("));\n");
49.543 + }
49.544 + }
49.545 +
49.546 +
49.547 + /**
49.548 + * Write out code for a IconRegion
49.549 + *
49.550 + * @param comp This may be the same as the region <code>region</code> or is the parent component
49.551 + * containing the region
49.552 + * @param region The region we are writing out
49.553 + * @param prefix This is [Comp][Region]......[Region] path
49.554 + * @param key The key for this icon.
49.555 + * @param uiDefaultInit This is for inserting into org.mypackage.mylaf.MyDefaults#getDefaults() method
49.556 + * @param variables The variables map pre populated with "PACKAGE" and "LAF_NAME"
49.557 + * @param packageNamePrefix The package name associated with this synth look and feel. For example,
49.558 + * org.mypackage.mylaf
49.559 + * @param painterPackageRoot The directory to write painters out to
49.560 + */
49.561 + private static void writeIconRegion(UIComponent comp, UIIconRegion region, String prefix,
49.562 + StringBuilder uiDefaultInit, Map<String, String> variables,
49.563 + String packageNamePrefix, File painterPackageRoot) {
49.564 +
49.565 + Dimension size = null;
49.566 + String fileNamePrefix = makePretty(prefix) + "Painter";
49.567 + // write states ui defaults
49.568 + for (UIState state : region.getBackgroundStates()) {// TODO: Handle Background,Foreground and Borders States Lists? Actually not sure that IconRegions need support borders or foregrounds
49.569 + Canvas canvas = state.getCanvas();
49.570 + if (!canvas.isBlank()) {
49.571 + String statePrefix = prefix + "[" + state.getName() + "]";
49.572 + // Put Painter in UiDefaults
49.573 + writeLazyPainter(state, uiDefaultInit, statePrefix, packageNamePrefix, fileNamePrefix, region.getKey());
49.574 + size = canvas.getSize();
49.575 + }
49.576 + }
49.577 +
49.578 + if (size != null) {
49.579 + // Put SynthIconImpl wrapper in UiDefaults
49.580 + String key = region.getBasicKey() == null ? prefix + "." + region.getKey() : region.getBasicKey();
49.581 + uiDefaultInit.append(" d.put(\"")
49.582 + .append(key)
49.583 + .append("\", new NimbusIcon(\"") //TODO should this be wrapped in an IconUIResource?
49.584 + .append(prefix)
49.585 + .append("\", \"")
49.586 + .append(region.getKey())
49.587 + .append("Painter")
49.588 + .append("\", ")
49.589 + .append(size.width)
49.590 + .append(", ")
49.591 + .append(size.height)
49.592 + .append("));\n");
49.593 + }
49.594 +
49.595 + // handle sub regions
49.596 + if (region.getSubRegions().length > 0) {
49.597 + // there is no meaning to a sub region inside a IconRegion
49.598 + throw new IllegalStateException("You can not have sub regions inside UiIconRegions. \"" +
49.599 + comp.getSubRegions()[0].getName() + "\" is inside \""
49.600 + + prefix.substring(0, prefix.length() - 1) + "\"");
49.601 + }
49.602 + }
49.603 +
49.604 + /**
49.605 + * Utility method for escaping all double quotes with backslash double-quote.
49.606 + */
49.607 + private static String escape(String s) {
49.608 + return s.replace("\"", "\\\"");
49.609 + }
49.610 +
49.611 + private static String convertPaint(PaintModel paint){
49.612 + if (paint instanceof Matte){
49.613 + Matte matte = (Matte)paint;
49.614 + if (matte.isAbsolute()){
49.615 + String colorParams = convert(matte.getColor());
49.616 + if (matte.isUiResource()) {
49.617 + return "new ColorUIResource(" + colorParams + ")";
49.618 + } else {
49.619 + return colorParams;
49.620 + }
49.621 + } else {
49.622 + String s = "getDerivedColor(\"" +
49.623 + matte.getUiDefaultParentName()+"\","+
49.624 + matte.getHueOffset()+"f,"+matte.getSaturationOffset()+
49.625 + "f,"+matte.getBrightnessOffset()+"f,"+
49.626 + matte.getAlphaOffset();
49.627 + if (matte.isUiResource()) {
49.628 + return s + ")";
49.629 + } else {
49.630 + return s + ",false)";
49.631 + }
49.632 + }
49.633 + } else {
49.634 + //TODO: What about gradients etc here?
49.635 + System.err.println("Error: Could not write paint in " +
49.636 + "DefaultsGenerator as it was not a Matte. = "+
49.637 + paint.getClass().getName());
49.638 + return "";
49.639 + }
49.640 + }
49.641 +
49.642 + private static String convertBorder(Border val) {
49.643 + StringBuilder uiDefaultInit = new StringBuilder();
49.644 + Insets i;
49.645 + if (val instanceof PainterBorder) {
49.646 + PainterBorder pb = (PainterBorder) val;
49.647 + i = pb.getBorderInsets();
49.648 + uiDefaultInit.append("new PainterBorder(\"")
49.649 + .append(pb.getPainterName())
49.650 + .append("\", new Insets(")
49.651 + .append(i.top).append(", ")
49.652 + .append(i.left).append(", ")
49.653 + .append(i.bottom).append(", ")
49.654 + .append(i.right)
49.655 + .append("))");
49.656 + } else if (val instanceof EmptyBorder) {
49.657 + i = ((EmptyBorder) val).getBorderInsets();
49.658 + uiDefaultInit.append("BorderFactory.createEmptyBorder(")
49.659 + .append(i.top).append(", ")
49.660 + .append(i.left).append(", ")
49.661 + .append(i.bottom).append(", ")
49.662 + .append(i.right)
49.663 + .append(")");
49.664 + } else if (val instanceof LineBorder) {
49.665 + LineBorder border = (LineBorder) val;
49.666 + uiDefaultInit.append("BorderFactory.createLineBorder(")
49.667 + .append(convert(border.getLineColor()))
49.668 + .append(",")
49.669 + .append(border.getThickness())
49.670 + .append(")");
49.671 + } else if (val instanceof EtchedBorder) {
49.672 + EtchedBorder border = (EtchedBorder) val;
49.673 + uiDefaultInit.append("BorderFactory.createEtchedBorder(")
49.674 + .append(border.getEtchType())
49.675 + .append(",")
49.676 + .append(convert(border.getHighlightColor()))
49.677 + .append(",")
49.678 + .append(convert(border.getShadowColor()))
49.679 + .append(")");
49.680 + } else if (val instanceof BevelBorder) {
49.681 + BevelBorder border = (BevelBorder) val;
49.682 + uiDefaultInit.append("BorderFactory.createEtchedBorder(")
49.683 + .append(border.getBevelType())
49.684 + .append(",")
49.685 + .append(convert(border.getHighlightOuterColor()))
49.686 + .append(",")
49.687 + .append(convert(border.getHighlightInnerColor()))
49.688 + .append(",")
49.689 + .append(convert(border.getShadowOuterColor()))
49.690 + .append(",")
49.691 + .append(convert(border.getShadowInnerColor()))
49.692 + .append(")");
49.693 + } else if (val instanceof MatteBorder) {
49.694 + MatteBorder border = (MatteBorder) val;
49.695 + i = border.getBorderInsets();
49.696 + uiDefaultInit.append("BorderFactory.createEmptyBorder(")
49.697 + .append(i.top).append(", ")
49.698 + .append(i.left).append(", ")
49.699 + .append(i.bottom).append(", ")
49.700 + .append(i.right).append(", ")
49.701 + .append(convert(border.getMatteColor()))
49.702 + .append(")");
49.703 + } else if (val instanceof CompoundBorder) {
49.704 + CompoundBorder border = (CompoundBorder) val;
49.705 + uiDefaultInit.append("BorderFactory.createEmptyBorder(")
49.706 + .append(convertBorder(border.getOutsideBorder()))
49.707 + .append(",")
49.708 + .append(convertBorder(border.getInsideBorder()))
49.709 + .append(")");
49.710 + }
49.711 + return uiDefaultInit.toString();
49.712 + }
49.713 +
49.714 + private static boolean hasCanvas(UIRegion region) {
49.715 + for (UIState s : region.getBackgroundStates()) {
49.716 + if (!s.getCanvas().isBlank()) return true;
49.717 + }
49.718 + for (UIState s : region.getBorderStates()) {
49.719 + if (!s.getCanvas().isBlank()) return true;
49.720 + }
49.721 + for (UIState s : region.getForegroundStates()) {
49.722 + if (!s.getCanvas().isBlank()) return true;
49.723 + }
49.724 + for (UIRegion subregion : region.getSubRegions()) {
49.725 + if (hasCanvas(subregion)) return true;
49.726 + }
49.727 + return false;
49.728 + }
49.729 +}
50.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
50.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/Generator.java Wed Apr 29 00:27:46 2009 -0700
50.3 @@ -0,0 +1,289 @@
50.4 +/*
50.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
50.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
50.7 + *
50.8 + * This code is free software; you can redistribute it and/or modify it
50.9 + * under the terms of the GNU General Public License version 2 only, as
50.10 + * published by the Free Software Foundation. Sun designates this
50.11 + * particular file as subject to the "Classpath" exception as provided
50.12 + * by Sun in the LICENSE file that accompanied this code.
50.13 + *
50.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
50.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
50.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
50.17 + * version 2 for more details (a copy is included in the LICENSE file that
50.18 + * accompanied this code).
50.19 + *
50.20 + * You should have received a copy of the GNU General Public License version
50.21 + * 2 along with this work; if not, write to the Free Software Foundation,
50.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
50.23 + *
50.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
50.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
50.26 + * have any questions.
50.27 + */
50.28 +package org.jdesktop.synthdesigner.generator;
50.29 +
50.30 +import static org.jdesktop.synthdesigner.generator.TemplateWriter.read;
50.31 +import static org.jdesktop.synthdesigner.generator.TemplateWriter.writeSrcFile;
50.32 +import org.jdesktop.synthdesigner.synthmodel.SynthModel;
50.33 +import org.jibx.runtime.BindingDirectory;
50.34 +import org.jibx.runtime.IBindingFactory;
50.35 +import org.jibx.runtime.IUnmarshallingContext;
50.36 +
50.37 +import java.io.File;
50.38 +import java.io.FileInputStream;
50.39 +import java.io.IOException;
50.40 +import java.util.HashMap;
50.41 +import java.util.Map;
50.42 +
50.43 +/**
50.44 + * Generates the various Java artifacts based on a SynthModel.
50.45 + * <p/>
50.46 + * Generated source files are split up among two different locations. There are those source files that are meant to be
50.47 + * edited (generally, only the LookAndFeel class itself) and those that are autogenerated (everything else).
50.48 + * <p/>
50.49 + * All autogenerated files are placed in "buildPackageRoot" and are package private. A LAF author (one who has access to
50.50 + * the generated sources) will be able to access any of the generated classes. Those referencing the library, however,
50.51 + * will only be able to access the main LookAndFeel class itself (since everything else is package private).
50.52 + *
50.53 + * @author Richard Bair
50.54 + * @author Jasper Potts
50.55 + */
50.56 +public class Generator {
50.57 + /** A map of variables that are used for variable substitution in the template files. */
50.58 + private Map<String, String> variables;
50.59 +
50.60 + private boolean full = false;
50.61 + private File buildPackageRoot;
50.62 + private File srcPackageRoot;
50.63 + private String packageNamePrefix;
50.64 + private String lafName;
50.65 + private SynthModel model;
50.66 +
50.67 + /**
50.68 + * MAIN APPLICATION
50.69 + * <p/>
50.70 + * This is for using the generator as part of the java build process
50.71 + *
50.72 + * @param args The commandline arguments
50.73 + */
50.74 + public static void main(String[] args) {
50.75 + if (args.length == 0 || (args.length % 2) != 0) {
50.76 + System.out.println("Usage: generator [-options]\n" +
50.77 + " -full <true|false> True if we should build the whole LAF or false for building just states and painters.\n" +
50.78 + " -skinFile <value> Path to the skin.laf file for the LAF to be generated from.\n" +
50.79 + " -buildDir <value> The directory beneath which the build-controlled artifacts (such as the Painters) should\n" +
50.80 + " be placed. This is the root directory beneath which the necessary packages and source\n" +
50.81 + " files will be created.\n" +
50.82 + " -srcDir <value> The directory beneath which the normal user-controlled artifacts (such as the core\n" +
50.83 + " LookAndFeel file) should be placed. These are one-time generated files. This is the root\n" +
50.84 + " directory beneath which the necessary packages and source files will be created.\n" +
50.85 + " -resourcesDir <value> The resources directory containing templates and images.\n" +
50.86 + " -packagePrefix <value> The package name associated with this synth look and feel. For example,\n" +
50.87 + " \"org.mypackage.mylaf\"\n" +
50.88 + " -lafName <value> The name of the laf, such as \"MyLAF\".\n");
50.89 + } else {
50.90 + boolean full = false;
50.91 + File skinFile = new File(System.getProperty("user.dir"));
50.92 + File buildDir = new File(System.getProperty("user.dir"));
50.93 + File srcDir = new File(System.getProperty("user.dir"));
50.94 + File resourcesDir = new File(System.getProperty("user.dir"));
50.95 + String packagePrefix = "org.mypackage.mylaf";
50.96 + String lafName = "MyLAF";
50.97 + for (int i = 0; i < args.length; i += 2) {
50.98 + String key = args[i].trim().toLowerCase();
50.99 + String value = args[i + 1].trim();
50.100 + if ("-full".equals(key)) {
50.101 + full = Boolean.parseBoolean(value);
50.102 + } else if ("-skinfile".equals(key)) {
50.103 + skinFile = new File(value);
50.104 + } else if ("-builddir".equals(key)) {
50.105 + buildDir = new File(value);
50.106 + } else if ("-srcdir".equals(key)) {
50.107 + srcDir = new File(value);
50.108 + } else if ("-resourcesdir".equals(key)) {
50.109 + resourcesDir = new File(value);
50.110 + } else if ("-packageprefix".equals(key)) {
50.111 + packagePrefix = value;
50.112 + } else if ("-lafname".equals(key)) {
50.113 + lafName = value;
50.114 + }
50.115 + }
50.116 + System.out.println("### GENERATING LAF CODE ################################");
50.117 + System.out.println(" full :" + full);
50.118 + System.out.println(" skinFile :" + skinFile.getAbsolutePath());
50.119 + System.out.println(" buildDir :" + buildDir.getAbsolutePath());
50.120 + System.out.println(" srcDir :" + srcDir.getAbsolutePath());
50.121 + System.out.println(" resourcesDir :" + resourcesDir.getAbsolutePath());
50.122 + System.out.println(" packagePrefix :" +packagePrefix);
50.123 + System.out.println(" lafName :" +lafName);
50.124 + try {
50.125 + // LOAD SKIN MODEL
50.126 + IBindingFactory bindingFactory = BindingDirectory.getFactory(SynthModel.class);
50.127 + IUnmarshallingContext mctx = bindingFactory.createUnmarshallingContext();
50.128 + mctx.setDocument(new FileInputStream(skinFile), "UTF-8");
50.129 + // pass resources directory in as user context so it can be used in SynthModel preSet
50.130 + mctx.setUserContext(resourcesDir);
50.131 + SynthModel model = (SynthModel) mctx.unmarshalElement();
50.132 + // create and run generator
50.133 + Generator generator = new Generator(full, buildDir, srcDir, packagePrefix, lafName, model);
50.134 + generator.generate();
50.135 + } catch (Exception e) {
50.136 + System.err.println("Error loading skin and generating java src:");
50.137 + e.printStackTrace();
50.138 + }
50.139 + }
50.140 + }
50.141 +
50.142 + /**
50.143 + * Creates a new Generator, capable of outputting the source code artifacts related to a given SynthModel. It is
50.144 + * capable of generating the one-time artifacts in addition to the regeneration of build-controlled artifacts.
50.145 + *
50.146 + * @param full True if we should build the whole LAF or false for building just states and painters.
50.147 + * @param buildDir The directory beneath which the build-controlled artifacts (such as the Painters) should
50.148 + * be placed. This is the root directory beneath which the necessary packages and source
50.149 + * files will be created.
50.150 + * @param srcDir The directory beneath which the normal user-controlled artifacts (such as the core
50.151 + * LookAndFeel file) should be placed. These are one-time generated files. This is the root
50.152 + * directory beneath which the necessary packages and source files will be created.
50.153 + * @param packageNamePrefix The package name associated with this synth look and feel. For example,
50.154 + * org.mypackage.mylaf
50.155 + * @param lafName The name of the laf, such as MyLAF.
50.156 + * @param model The actual SynthModel to base these generated files on.
50.157 + */
50.158 + public Generator(boolean full, File buildDir, File srcDir, String packageNamePrefix, String lafName,
50.159 + SynthModel model) {
50.160 + this.full = full;
50.161 + //validate the input variables
50.162 + if (packageNamePrefix == null) {
50.163 + throw new IllegalArgumentException("You must specify a package name prefix");
50.164 + }
50.165 + if (buildDir == null) {
50.166 + throw new IllegalArgumentException("You must specify the build directory");
50.167 + }
50.168 + if (srcDir == null) {
50.169 + throw new IllegalArgumentException("You must specify the source directory");
50.170 + }
50.171 + if (model == null) {
50.172 + throw new IllegalArgumentException("You must specify the SynthModel");
50.173 + }
50.174 + if (lafName == null) {
50.175 + throw new IllegalArgumentException("You must specify the name of the look and feel");
50.176 + }
50.177 +
50.178 + //construct the map which is used to do variable substitution of the template
50.179 + //files
50.180 + variables = new HashMap<String, String>();
50.181 + variables.put("PACKAGE", packageNamePrefix);
50.182 + variables.put("LAF_NAME", lafName);
50.183 +
50.184 + //generate and save references to the package-root directories.
50.185 + //(That is, given the buildDir and srcDir, generate references to the
50.186 + //org.mypackage.mylaf subdirectories)
50.187 + buildPackageRoot = new File(buildDir, packageNamePrefix.replaceAll("\\.", "\\/"));
50.188 + buildPackageRoot.mkdirs();
50.189 + srcPackageRoot = new File(srcDir, packageNamePrefix.replaceAll("\\.", "\\/"));
50.190 + srcPackageRoot.mkdirs();
50.191 +
50.192 + //save the variables
50.193 + this.packageNamePrefix = packageNamePrefix;
50.194 + this.lafName = lafName;
50.195 + this.model = model;
50.196 + }
50.197 +
50.198 + public void generate() {
50.199 + //Generate the one-time files. If these files already exist, skip the
50.200 + //ones that exist and create the missing ones. Register warnings for the
50.201 + //already existing files.
50.202 +
50.203 + //TODO Skip existing files, send warnings, etc.
50.204 + if (full) {
50.205 + try {
50.206 + //create the LookAndFeel file
50.207 + String template = read("resources/LookAndFeel.template");
50.208 + writeSrcFile(template, variables, new File(srcPackageRoot, lafName + "LookAndFeel.java"));
50.209 + } catch (IOException e) {
50.210 + e.printStackTrace();
50.211 + }
50.212 + }
50.213 + //create the painters and such.
50.214 + regenerate();
50.215 + }
50.216 +
50.217 + public void regenerate() {
50.218 + try {
50.219 + if (full) {
50.220 + //first, create the AbstractRegionPainter.java file.
50.221 + String template = read("resources/AbstractRegionPainter.template");
50.222 + writeSrcFile(template, variables, new File(buildPackageRoot, "AbstractRegionPainter.java"));
50.223 +
50.224 + //write out BlendingMode.java
50.225 + template = read("resources/BlendingMode.template");
50.226 + writeSrcFile(template, variables, new File(buildPackageRoot, "BlendingMode.java"));
50.227 +
50.228 + //create the SynthPainterImpl class
50.229 + template = read("resources/SynthPainterImpl.template");
50.230 + writeSrcFile(template, variables, new File(buildPackageRoot, "SynthPainterImpl.java"));
50.231 +
50.232 + //create the IconImpl class
50.233 + template = read("resources/IconImpl.template");
50.234 + writeSrcFile(template, variables, new File(buildPackageRoot, lafName + "Icon.java"));
50.235 +
50.236 + //create the StyleImpl class
50.237 + template = read("resources/StyleImpl.template");
50.238 + writeSrcFile(template, variables, new File(buildPackageRoot, lafName + "Style.java"));
50.239 +
50.240 + //write out Effect.java
50.241 + template = read("resources/Effect.template");
50.242 + writeSrcFile(template, variables, new File(buildPackageRoot, "Effect.java"));
50.243 +
50.244 + //write out EffectUtils.java
50.245 + template = read("resources/EffectUtils.template");
50.246 + writeSrcFile(template, variables, new File(buildPackageRoot, "EffectUtils.java"));
50.247 +
50.248 + //write out ShadowEffect.java
50.249 + template = read("resources/ShadowEffect.template");
50.250 + writeSrcFile(template, variables, new File(buildPackageRoot, "ShadowEffect.java"));
50.251 +
50.252 + //write out DropShadowEffect.java
50.253 + template = read("resources/DropShadowEffect.template");
50.254 + writeSrcFile(template, variables, new File(buildPackageRoot, "DropShadowEffect.java"));
50.255 +
50.256 + //write out InnerShadowEffect.java
50.257 + template = read("resources/InnerShadowEffect.template");
50.258 + writeSrcFile(template, variables, new File(buildPackageRoot, "InnerShadowEffect.java"));
50.259 +
50.260 + //write out InnerGlowEffect.java
50.261 + template = read("resources/InnerGlowEffect.template");
50.262 + writeSrcFile(template, variables, new File(buildPackageRoot, "InnerGlowEffect.java"));
50.263 +
50.264 + //write out OuterGlowEffect.java
50.265 + template = read("resources/OuterGlowEffect.template");
50.266 + writeSrcFile(template, variables, new File(buildPackageRoot, "OuterGlowEffect.java"));
50.267 +
50.268 + //write out State.java
50.269 + template = read("resources/State.template");
50.270 + writeSrcFile(template, variables, new File(buildPackageRoot, "State.java"));
50.271 +
50.272 + template = read("resources/ImageCache.template");
50.273 + writeSrcFile(template, variables, new File(buildPackageRoot, "ImageCache.java"));
50.274 +
50.275 + template = read("resources/ImageScalingHelper.template");
50.276 + writeSrcFile(template, variables, new File(buildPackageRoot, "ImageScalingHelper.java"));
50.277 + }
50.278 + //next, populate the first set of ui defaults based on what is in the
50.279 + //various palettes of the synth model
50.280 + StringBuilder uiDefaultInit = new StringBuilder();
50.281 + StringBuilder styleInit = new StringBuilder();
50.282 + DefaultsGenerator.generateDefaults(uiDefaultInit, styleInit, model, variables, packageNamePrefix,
50.283 + buildPackageRoot);
50.284 + variables.put("UI_DEFAULT_INIT", uiDefaultInit.toString());
50.285 + variables.put("STYLE_INIT", styleInit.toString());
50.286 + writeSrcFile(read("resources/Defaults.template"), variables,
50.287 + new File(buildPackageRoot, lafName + "Defaults.java"));
50.288 + } catch (IOException e) {
50.289 + e.printStackTrace();
50.290 + }
50.291 + }
50.292 +}
51.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
51.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/GeneratorUtils.java Wed Apr 29 00:27:46 2009 -0700
51.3 @@ -0,0 +1,295 @@
51.4 +/*
51.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
51.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
51.7 + *
51.8 + * This code is free software; you can redistribute it and/or modify it
51.9 + * under the terms of the GNU General Public License version 2 only, as
51.10 + * published by the Free Software Foundation. Sun designates this
51.11 + * particular file as subject to the "Classpath" exception as provided
51.12 + * by Sun in the LICENSE file that accompanied this code.
51.13 + *
51.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
51.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
51.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
51.17 + * version 2 for more details (a copy is included in the LICENSE file that
51.18 + * accompanied this code).
51.19 + *
51.20 + * You should have received a copy of the GNU General Public License version
51.21 + * 2 along with this work; if not, write to the Free Software Foundation,
51.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
51.23 + *
51.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
51.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
51.26 + * have any questions.
51.27 + */
51.28 +package org.jdesktop.synthdesigner.generator;
51.29 +
51.30 +import javax.swing.plaf.synth.Region;
51.31 +import javax.swing.plaf.synth.SynthConstants;
51.32 +
51.33 +/**
51.34 + * GeneratorUtils
51.35 + *
51.36 + * @author Richard Bair
51.37 + * @author Jasper Potts
51.38 + */
51.39 +class GeneratorUtils {
51.40 + private GeneratorUtils() {}
51.41 +
51.42 + /**
51.43 + * Given a synth state, create the appropriate name as it would be used for a ui default key.
51.44 + * <p/>
51.45 + * For example:
51.46 + * <p/>
51.47 + * enabled enabled+over enabled+over+selected
51.48 + */
51.49 + static String toUIDefaultKey(int state) {
51.50 + StringBuffer buffer = new StringBuffer();
51.51 + if ((state & SynthConstants.DEFAULT) == SynthConstants.DEFAULT) {
51.52 + buffer.append("default");
51.53 + }
51.54 + if ((state & SynthConstants.DISABLED) == SynthConstants.DISABLED) {
51.55 + if (buffer.length() > 0) buffer.append("+");
51.56 + buffer.append("disabled");
51.57 + }
51.58 + if ((state & SynthConstants.ENABLED) == SynthConstants.ENABLED) {
51.59 + if (buffer.length() > 0) buffer.append("+");
51.60 + buffer.append("enabled");
51.61 + }
51.62 + if ((state & SynthConstants.FOCUSED) == SynthConstants.FOCUSED) {
51.63 + if (buffer.length() > 0) buffer.append("+");
51.64 + buffer.append("focused");
51.65 + }
51.66 + if ((state & SynthConstants.MOUSE_OVER) == SynthConstants.MOUSE_OVER) {
51.67 + if (buffer.length() > 0) buffer.append("+");
51.68 + buffer.append("over");
51.69 + }
51.70 + if ((state & SynthConstants.PRESSED) == SynthConstants.PRESSED) {
51.71 + if (buffer.length() > 0) buffer.append("+");
51.72 + buffer.append("down");
51.73 + }
51.74 + if ((state & SynthConstants.SELECTED) == SynthConstants.SELECTED) {
51.75 + if (buffer.length() > 0) buffer.append("+");
51.76 + buffer.append("selected");
51.77 + }
51.78 + return buffer.toString();
51.79 + }
51.80 +
51.81 + //takes a states string of the form Enabled+Foo+Bar.
51.82 + //removes any whitespace. Replaces the + signs with And.
51.83 + static String toClassName(String states) {
51.84 + String s = states.replace(" ", "");
51.85 + s = states.replace("+", "And");
51.86 + return s;
51.87 + }
51.88 +
51.89 + //takes a states string of the form Enabled+Foo+Bar.
51.90 + //removes any whitespace. Replaces the + signs with _.
51.91 + //capitalizes the whole lot
51.92 + static String toConstantName(String states) {
51.93 + String s = states.replace(" ", "");
51.94 + s = states.replace("+", "_");
51.95 + return s.toUpperCase();
51.96 + }
51.97 +
51.98 + /**
51.99 + * Given a string "s" of the form:
51.100 + *
51.101 + * A.\"A.a\".B
51.102 + *
51.103 + * Make it such that:
51.104 + *
51.105 + * AAAB
51.106 + *
51.107 + * For example, ComboBox.\"ComboBox.arrowButton\" would become
51.108 + * ComboBoxComboBoxArrowButton
51.109 + *
51.110 + * @param s
51.111 + * @return
51.112 + */
51.113 + static String makePretty(String s) {
51.114 + char[] src = s.toCharArray();
51.115 + char[] dst = new char[src.length];
51.116 + int dstIndex = 0;
51.117 + for (int i=0; i<src.length; i++) {
51.118 + //if the src char is a period and there is a following character,
51.119 + //make sure the character is capitalized.
51.120 + if ((src[i] == '.' || src[i] == ':') && i < src.length -1) {
51.121 + src[i+1] = Character.toUpperCase(src[i+1]);
51.122 + continue;
51.123 + }
51.124 + //if the src char is one that is to be removed, skip it.
51.125 + if (src[i] == '.' || src[i] == ':' || src[i] == '\\' || src[i] == '"') {
51.126 + continue;
51.127 + }
51.128 + //copy over the current char.
51.129 + dst[dstIndex++] = src[i];
51.130 + }
51.131 + //at this point, dstIndex is 1 greater than the last valid index position in dst
51.132 + //or in other words it represents the count.
51.133 + return new String(dst, 0, dstIndex);
51.134 + }
51.135 +
51.136 + /**
51.137 + * Encodes the given synth state as if it were specified in java code, such as
51.138 + * <p/>
51.139 + * SynthConstants.ENABLED | SynthConstants.MOUSE_OVER
51.140 + */
51.141 + static String toJavaList(int state) {
51.142 + StringBuffer buffer = new StringBuffer();
51.143 + if ((state & SynthConstants.DEFAULT) == SynthConstants.DEFAULT) {
51.144 + buffer.append("SynthConstants.DEFAULT");
51.145 + }
51.146 + if ((state & SynthConstants.DISABLED) == SynthConstants.DISABLED) {
51.147 + if (buffer.length() > 0) buffer.append(" | ");
51.148 + buffer.append("SynthConstants.DISABLED");
51.149 + }
51.150 + if ((state & SynthConstants.ENABLED) == SynthConstants.ENABLED) {
51.151 + if (buffer.length() > 0) buffer.append(" | ");
51.152 + buffer.append("SynthConstants.ENABLED");
51.153 + }
51.154 + if ((state & SynthConstants.FOCUSED) == SynthConstants.FOCUSED) {
51.155 + if (buffer.length() > 0) buffer.append(" | ");
51.156 + buffer.append("SynthConstants.FOCUSED");
51.157 + }
51.158 + if ((state & SynthConstants.MOUSE_OVER) == SynthConstants.MOUSE_OVER) {
51.159 + if (buffer.length() > 0) buffer.append(" | ");
51.160 + buffer.append("SynthConstants.MOUSE_OVER");
51.161 + }
51.162 + if ((state & SynthConstants.PRESSED) == SynthConstants.PRESSED) {
51.163 + if (buffer.length() > 0) buffer.append(" | ");
51.164 + buffer.append("SynthConstants.PRESSED");
51.165 + }
51.166 + if ((state & SynthConstants.SELECTED) == SynthConstants.SELECTED) {
51.167 + if (buffer.length() > 0) buffer.append(" | ");
51.168 + buffer.append("SynthConstants.SELECTED");
51.169 + }
51.170 + return buffer.toString();
51.171 + }
51.172 +
51.173 + /**
51.174 + * Checks the given region name to discover if it is one of the standard synth regions. If so, return the name in
51.175 + * caps and such. Otherwise, return a big fat null.
51.176 + * <p/>
51.177 + * I have to do this because, unfortunately, synth's Region doesn't implement equals.
51.178 + */
51.179 + static String getRegionNameCaps(String regionName) {
51.180 + if (Region.ARROW_BUTTON.getName().equals(regionName)) {
51.181 + return "ARROW_BUTTON";
51.182 + } else if (Region.BUTTON.getName().equals(regionName)) {
51.183 + return "BUTTON";
51.184 + } else if (Region.CHECK_BOX.getName().equals(regionName)) {
51.185 + return "CHECK_BOX";
51.186 + } else if (Region.CHECK_BOX_MENU_ITEM.getName().equals(regionName)) {
51.187 + return "CHECK_BOX_MENU_ITEM";
51.188 + } else if (Region.COLOR_CHOOSER.getName().equals(regionName)) {
51.189 + return "COLOR_CHOOSER";
51.190 + } else if (Region.COMBO_BOX.getName().equals(regionName)) {
51.191 + return "COMBO_BOX";
51.192 + } else if (Region.DESKTOP_ICON.getName().equals(regionName)) {
51.193 + return "DESKTOP_ICON";
51.194 + } else if (Region.DESKTOP_PANE.getName().equals(regionName)) {
51.195 + return "DESKTOP_PANE";
51.196 + } else if (Region.EDITOR_PANE.getName().equals(regionName)) {
51.197 + return "EDITOR_PANE";
51.198 + } else if (Region.FILE_CHOOSER.getName().equals(regionName)) {
51.199 + return "FILE_CHOOSER";
51.200 + } else if (Region.FORMATTED_TEXT_FIELD.getName().equals(regionName)) {
51.201 + return "FORMATTED_TEXT_FIELD";
51.202 + } else if (Region.INTERNAL_FRAME.getName().equals(regionName)) {
51.203 + return "INTERNAL_FRAME";
51.204 + } else if (Region.INTERNAL_FRAME_TITLE_PANE.getName().equals(regionName)) {
51.205 + return "INTERNAL_FRAME_TITLE_PANE";
51.206 + } else if (Region.LABEL.getName().equals(regionName)) {
51.207 + return "LABEL";
51.208 + } else if (Region.LIST.getName().equals(regionName)) {
51.209 + return "LIST";
51.210 + } else if (Region.MENU.getName().equals(regionName)) {
51.211 + return "MENU";
51.212 + } else if (Region.MENU_BAR.getName().equals(regionName)) {
51.213 + return "MENU_BAR";
51.214 + } else if (Region.MENU_ITEM.getName().equals(regionName)) {
51.215 + return "MENU_ITEM";
51.216 + } else if (Region.MENU_ITEM_ACCELERATOR.getName().equals(regionName)) {
51.217 + return "MENU_ITEM_ACCELERATOR";
51.218 + } else if (Region.OPTION_PANE.getName().equals(regionName)) {
51.219 + return "OPTION_PANE";
51.220 + } else if (Region.PANEL.getName().equals(regionName)) {
51.221 + return "PANEL";
51.222 + } else if (Region.PASSWORD_FIELD.getName().equals(regionName)) {
51.223 + return "PASSWORD_FIELD";
51.224 + } else if (Region.POPUP_MENU.getName().equals(regionName)) {
51.225 + return "POPUP_MENU";
51.226 + } else if (Region.POPUP_MENU_SEPARATOR.getName().equals(regionName)) {
51.227 + return "POPUP_MENU_SEPARATOR";
51.228 + } else if (Region.PROGRESS_BAR.getName().equals(regionName)) {
51.229 + return "PROGRESS_BAR";
51.230 + } else if (Region.RADIO_BUTTON.getName().equals(regionName)) {
51.231 + return "RADIO_BUTTON";
51.232 + } else if (Region.RADIO_BUTTON_MENU_ITEM.getName().equals(regionName)) {
51.233 + return "RADIO_BUTTON_MENU_ITEM";
51.234 + } else if (Region.ROOT_PANE.getName().equals(regionName)) {
51.235 + return "ROOT_PANE";
51.236 + } else if (Region.SCROLL_BAR.getName().equals(regionName)) {
51.237 + return "SCROLL_BAR";
51.238 + } else if (Region.SCROLL_BAR_THUMB.getName().equals(regionName)) {
51.239 + return "SCROLL_BAR_THUMB";
51.240 + } else if (Region.SCROLL_BAR_TRACK.getName().equals(regionName)) {
51.241 + return "SCROLL_BAR_TRACK";
51.242 + } else if (Region.SCROLL_PANE.getName().equals(regionName)) {
51.243 + return "SCROLL_PANE";
51.244 + } else if (Region.SEPARATOR.getName().equals(regionName)) {
51.245 + return "SEPARATOR";
51.246 + } else if (Region.SLIDER.getName().equals(regionName)) {
51.247 + return "SLIDER";
51.248 + } else if (Region.SLIDER_THUMB.getName().equals(regionName)) {
51.249 + return "SLIDER_THUMB";
51.250 + } else if (Region.SLIDER_TRACK.getName().equals(regionName)) {
51.251 + return "SLIDER_TRACK";
51.252 + } else if (Region.SPINNER.getName().equals(regionName)) {
51.253 + return "SPINNER";
51.254 + } else if (Region.SPLIT_PANE.getName().equals(regionName)) {
51.255 + return "SPLIT_PANE";
51.256 + } else if (Region.SPLIT_PANE_DIVIDER.getName().equals(regionName)) {
51.257 + return "SPLIT_PANE_DIVIDER";
51.258 + } else if (Region.TABBED_PANE.getName().equals(regionName)) {
51.259 + return "TABBED_PANE";
51.260 + } else if (Region.TABBED_PANE_CONTENT.getName().equals(regionName)) {
51.261 + return "TABBED_PANE_CONTENT";
51.262 + } else if (Region.TABBED_PANE_TAB.getName().equals(regionName)) {
51.263 + return "TABBED_PANE_TAB";
51.264 + } else if (Region.TABBED_PANE_TAB_AREA.getName().equals(regionName)) {
51.265 + return "TABBED_PANE_TAB_AREA";
51.266 + } else if (Region.TABLE.getName().equals(regionName)) {
51.267 + return "TABLE";
51.268 + } else if (Region.TABLE_HEADER.getName().equals(regionName)) {
51.269 + return "TABLE_HEADER";
51.270 + } else if (Region.TEXT_AREA.getName().equals(regionName)) {
51.271 + return "TEXT_AREA";
51.272 + } else if (Region.TEXT_FIELD.getName().equals(regionName)) {
51.273 + return "TEXT_FIELD";
51.274 + } else if (Region.TEXT_PANE.getName().equals(regionName)) {
51.275 + return "TEXT_PANE";
51.276 + } else if (Region.TOGGLE_BUTTON.getName().equals(regionName)) {
51.277 + return "TOGGLE_BUTTON";
51.278 + } else if (Region.TOOL_BAR.getName().equals(regionName)) {
51.279 + return "TOOL_BAR";
51.280 + } else if (Region.TOOL_BAR_CONTENT.getName().equals(regionName)) {
51.281 + return "TOOL_BAR_CONTENT";
51.282 + } else if (Region.TOOL_BAR_DRAG_WINDOW.getName().equals(regionName)) {
51.283 + return "TOOL_BAR_DRAG_WINDOW";
51.284 + } else if (Region.TOOL_BAR_SEPARATOR.getName().equals(regionName)) {
51.285 + return "TOOL_BAR_SEPARATOR";
51.286 + } else if (Region.TOOL_TIP.getName().equals(regionName)) {
51.287 + return "TOOL_TIP";
51.288 + } else if (Region.TREE.getName().equals(regionName)) {
51.289 + return "TREE";
51.290 + } else if (Region.TREE_CELL.getName().equals(regionName)) {
51.291 + return "TREE_CELL";
51.292 + } else if (Region.VIEWPORT.getName().equals(regionName)) {
51.293 + return "VIEWPORT";
51.294 + }
51.295 + System.err.println("[Info] Couldn't find a Region for " + regionName);
51.296 + return null;
51.297 + }
51.298 +}
52.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
52.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/ObjectCodeConvertors.java Wed Apr 29 00:27:46 2009 -0700
52.3 @@ -0,0 +1,108 @@
52.4 +/*
52.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
52.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
52.7 + *
52.8 + * This code is free software; you can redistribute it and/or modify it
52.9 + * under the terms of the GNU General Public License version 2 only, as
52.10 + * published by the Free Software Foundation. Sun designates this
52.11 + * particular file as subject to the "Classpath" exception as provided
52.12 + * by Sun in the LICENSE file that accompanied this code.
52.13 + *
52.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
52.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
52.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
52.17 + * version 2 for more details (a copy is included in the LICENSE file that
52.18 + * accompanied this code).
52.19 + *
52.20 + * You should have received a copy of the GNU General Public License version
52.21 + * 2 along with this work; if not, write to the Free Software Foundation,
52.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
52.23 + *
52.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
52.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
52.26 + * have any questions.
52.27 + */
52.28 +package org.jdesktop.synthdesigner.generator;
52.29 +
52.30 +import java.awt.*;
52.31 +
52.32 +/**
52.33 + * ObjectCodeConvertors
52.34 + *
52.35 + * @author Richard Bair
52.36 + * @author Jasper Potts
52.37 + */
52.38 +public class ObjectCodeConvertors {
52.39 + static java.math.MathContext ctx = new java.math.MathContext(3);
52.40 +
52.41 + /**
52.42 + * Given a value (x), encode it such that 0 -> 1 is to the left of a, 1 -> 2 is between a and b, and 2 -> 3
52.43 + * is to the right of b.
52.44 + *
52.45 + * @param w width in the case of the x axis, height in the case of the y axis.
52.46 + */
52.47 + static float encode(float x, float a, float b, float w) {
52.48 + float r = 0;
52.49 + if (x < a) {
52.50 + r = (x / a);
52.51 + } else if (x > b) {
52.52 + r = 2 + ((x - b) / (w - b));
52.53 + } else if (x == a && x == b) {
52.54 + return 1.5f;
52.55 + } else {
52.56 + r = 1 + ((x - a) / (b - a));
52.57 + }
52.58 +
52.59 + if (Float.isNaN(r)) {
52.60 + System.err.println("[Error] Encountered NaN: encode(" + x + ", " + a + ", " + b + ", " + w + ")");
52.61 + return 0;
52.62 + } else if (Float.isInfinite(r)) {
52.63 + System.err.println("[Error] Encountered Infinity: encode(" + x + ", " + a + ", " + b + ", " + w + ")");
52.64 + return 0;
52.65 + } else if (r < 0) {
52.66 + System.err.println("[Error] encoded value was less than 0: encode(" + x + ", " + a + ", " + b + ", " + w + ")");
52.67 + return 0;
52.68 + } else if (r > 3) {
52.69 + System.err.println("[Error] encoded value was greater than 3: encode(" + x + ", " + a + ", " + b + ", " + w + ")");
52.70 + return 3;
52.71 + } else {
52.72 + //for prettyness sake (and since we aren't really going to miss
52.73 + //any accuracy here) I'm rounding this to 3 decimal places
52.74 +// return java.math.BigDecimal.valueOf(r).round(ctx).doubleValue();
52.75 + return r;
52.76 + }
52.77 + }
52.78 +
52.79 + static String convert(Paint paint) {
52.80 + //TODO need to support writing out other Paints, such as gradients
52.81 + if (paint instanceof Color) {
52.82 + return convert((Color) paint);
52.83 + } else {
52.84 + System.err.println("[WARNING] Unable to encode a paint in the encode(Paint) method: " + paint);
52.85 + return "null";
52.86 + }
52.87 + }
52.88 +
52.89 + /**
52.90 + * Given a Color, write out the java code required to create a new Color.
52.91 + *
52.92 + * @param color The color to convert
52.93 + * @return String of the code for the color
52.94 + */
52.95 + static String convert(Color color) {
52.96 + return "new Color(" +
52.97 + color.getRed() + ", " +
52.98 + color.getGreen() + ", " +
52.99 + color.getBlue() + ", " +
52.100 + color.getAlpha() + ")";
52.101 + }
52.102 +
52.103 + static String convert(Insets i) {
52.104 + return "new Insets(" + i.top + ", " + i.left + ", " + i.bottom + ", " + i.right + ")";
52.105 + }
52.106 +
52.107 + static String convert(Dimension d) {
52.108 + return "new Dimension(" + d.width + ", " + d.height + ")";
52.109 + }
52.110 +
52.111 +}
53.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
53.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/PainterGenerator.java Wed Apr 29 00:27:46 2009 -0700
53.3 @@ -0,0 +1,758 @@
53.4 +/*
53.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
53.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
53.7 + *
53.8 + * This code is free software; you can redistribute it and/or modify it
53.9 + * under the terms of the GNU General Public License version 2 only, as
53.10 + * published by the Free Software Foundation. Sun designates this
53.11 + * particular file as subject to the "Classpath" exception as provided
53.12 + * by Sun in the LICENSE file that accompanied this code.
53.13 + *
53.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
53.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
53.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
53.17 + * version 2 for more details (a copy is included in the LICENSE file that
53.18 + * accompanied this code).
53.19 + *
53.20 + * You should have received a copy of the GNU General Public License version
53.21 + * 2 along with this work; if not, write to the Free Software Foundation,
53.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
53.23 + *
53.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
53.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
53.26 + * have any questions.
53.27 + */
53.28 +package org.jdesktop.synthdesigner.generator;
53.29 +
53.30 +import org.jdesktop.swingx.designer.BezierControlPoint;
53.31 +import org.jdesktop.swingx.designer.Canvas;
53.32 +import org.jdesktop.swingx.designer.EllipseShape;
53.33 +import org.jdesktop.swingx.designer.Layer;
53.34 +import org.jdesktop.swingx.designer.PaintedShape;
53.35 +import org.jdesktop.swingx.designer.PathShape;
53.36 +import org.jdesktop.swingx.designer.RectangleShape;
53.37 +import org.jdesktop.swingx.designer.SimpleShape;
53.38 +import org.jdesktop.swingx.designer.TemplateLayer;
53.39 +import org.jdesktop.swingx.designer.paint.Gradient;
53.40 +import org.jdesktop.swingx.designer.paint.Matte;
53.41 +import org.jdesktop.swingx.designer.paint.PaintModel;
53.42 +import org.jdesktop.swingx.designer.paint.RadialGradient;
53.43 +import org.jdesktop.swingx.designer.paint.GradientStop;
53.44 +import org.jdesktop.swingx.designer.paint.AbstractGradient;
53.45 +import static org.jdesktop.synthdesigner.generator.GeneratorUtils.makePretty;
53.46 +import static org.jdesktop.synthdesigner.generator.GeneratorUtils.toClassName;
53.47 +import static org.jdesktop.synthdesigner.generator.GeneratorUtils.toConstantName;
53.48 +import static org.jdesktop.synthdesigner.generator.TemplateWriter.read;
53.49 +import static org.jdesktop.synthdesigner.generator.TemplateWriter.writeSrcFile;
53.50 +import org.jdesktop.synthdesigner.synthmodel.UIIconRegion;
53.51 +import org.jdesktop.synthdesigner.synthmodel.UIRegion;
53.52 +import org.jdesktop.synthdesigner.synthmodel.UIState;
53.53 +
53.54 +import java.awt.*;
53.55 +import java.awt.geom.Point2D;
53.56 +import java.beans.Beans;
53.57 +import java.io.File;
53.58 +import java.io.IOException;
53.59 +import java.lang.reflect.Method;
53.60 +import java.lang.reflect.InvocationTargetException;
53.61 +import java.util.ArrayList;
53.62 +import java.util.HashMap;
53.63 +import java.util.LinkedHashMap;
53.64 +import java.util.List;
53.65 +import java.util.Map;
53.66 +import javax.swing.JComponent;
53.67 +import javax.swing.SwingUtilities;
53.68 +import javax.swing.JList;
53.69 +import javax.swing.JTable;
53.70 +import javax.swing.text.JTextComponent;
53.71 +
53.72 +/**
53.73 + * PainterGenerator - Class for generating Painter class java source from a Canvas
53.74 + *
53.75 + * Following in the general theory that is used to generate a Painter file.
53.76 + *
53.77 + * Each Painter file represents a Region. So there is one painter file per region. In
53.78 + * skin.laf we support Icon subregions, which are really just hacked versions of the
53.79 + * parent region.
53.80 + *
53.81 + * In order to generate the most compact and efficient bytecode possible for the
53.82 + * Painters, we actually perform the generation sequence in two steps. The first
53.83 + * step is the analysis phase, where we walk through the SynthModel for the region
53.84 + * and discover commonality among the different states in the region. For example,
53.85 + * do they have common paths? Do they have common colors? Gradients? Is the painting
53.86 + * code for the different states identical other than for colors?
53.87 + *
53.88 + * We gather this information up. On the second pass, we use this data to determine the
53.89 + * methods that need to be generated, and the class variables that need to be generated.
53.90 + * We try to keep the actual bytecode count as small as possible so that we may reduce
53.91 + * the overall size of the look and feel significantly.
53.92 + *
53.93 + * @author Richard Bair
53.94 + * @author Jasper Potts
53.95 + */
53.96 +public class PainterGenerator {
53.97 + private static String painterImplTemplate;
53.98 + private static String getPainterImplTemplate() {
53.99 + if (painterImplTemplate == null) {
53.100 + //load the painter template file into an in-memory string to improve performance
53.101 + //when generating a lot of classes
53.102 + try {
53.103 + painterImplTemplate = read("resources/PainterImpl.template");
53.104 + } catch (IOException e) {
53.105 + System.err.println("Failed to read template files.");
53.106 + throw new RuntimeException(e);
53.107 + }
53.108 + }
53.109 + return painterImplTemplate;
53.110 + }
53.111 +
53.112 +
53.113 + //a handful of counters, incremented whenever the associated object type is encounted.
53.114 + //These counters form the basis of the field and method suffixes.
53.115 + //These are all 1 based, because I felt like it :-)
53.116 + private int colorCounter = 1;
53.117 + private int gradientCounter = 1;
53.118 + private int radialCounter = 1;
53.119 + private int pathCounter = 1;
53.120 + private int rectCounter = 1;
53.121 + private int roundRectCounter = 1;
53.122 + private int ellipseCounter = 1;
53.123 +
53.124 + private int stateTypeCounter = 1;
53.125 +
53.126 + //during the first pass, we will construct these maps
53.127 + private Map<String, String> colors = new HashMap<String, String>();
53.128 + /**
53.129 + * Code=>method name.
53.130 + */
53.131 + private Map<String, String> methods = new HashMap<String, String>();
53.132 +
53.133 + //these variables hold the generated code
53.134 + /**
53.135 + * The source code in this variable will be used to define the various state types
53.136 + */
53.137 + private StringBuilder stateTypeCode = new StringBuilder();
53.138 + /**
53.139 + * The source code in this variable will be used to define the switch statement for painting
53.140 + */
53.141 + private StringBuilder switchCode = new StringBuilder();
53.142 + /**
53.143 + * The source code in this variable will be used to define the methods for painting each state
53.144 + */
53.145 + private StringBuilder paintingCode = new StringBuilder();
53.146 + /**
53.147 + * The source code in this variable will be used to add getExtendedCacheKeys
53.148 + * implementation if needed.
53.149 + */
53.150 + private StringBuilder getExtendedCacheKeysCode = new StringBuilder();
53.151 + /**
53.152 + * The source code in this variable will be used to define the methods for decoding gradients
53.153 + * and shapes.
53.154 + */
53.155 + private StringBuilder gradientsCode = new StringBuilder();
53.156 + private StringBuilder colorCode = new StringBuilder();
53.157 + private StringBuilder shapesCode = new StringBuilder();
53.158 + /**
53.159 + * Map of component colors keyed by state constant name
53.160 + */
53.161 + private Map<String, List<ComponentColor>> componentColorsMap =
53.162 + new LinkedHashMap<String, List<ComponentColor>>();
53.163 + /**
53.164 + * For the current state the list of all component colors used by this
53.165 + * painter, the index in this list is also the index in the runtime array
53.166 + * of defaults and keys.
53.167 + */
53.168 + private List<ComponentColor> componentColors = null;
53.169 +
53.170 + PainterGenerator(UIRegion r) {
53.171 + generate(r);
53.172 + }
53.173 +
53.174 + private void generate(UIRegion r) {
53.175 + for (UIState state : r.getBackgroundStates()) {
53.176 + System.out.println("------>" + state.getName());
53.177 +
53.178 + Canvas canvas = state.getCanvas();
53.179 + String type = r instanceof UIIconRegion ? ((UIIconRegion)r).getKey() : "Background";
53.180 + generate(state, canvas, type);
53.181 + }
53.182 + for (UIState state : r.getForegroundStates()) {
53.183 + Canvas canvas = state.getCanvas();
53.184 + generate(state, canvas, "Foreground");
53.185 + }
53.186 + for (UIState state : r.getBorderStates()) {
53.187 + Canvas canvas = state.getCanvas();
53.188 + generate(state, canvas, "Border");
53.189 + }
53.190 + //now check for any uiIconRegions, since these are collapsed together.
53.191 + for (UIRegion sub : r.getSubRegions()) {
53.192 + if (sub instanceof UIIconRegion) {
53.193 + generate(sub);
53.194 + }
53.195 + }
53.196 + //generate all the code for component colors
53.197 + if (!componentColorsMap.isEmpty()) {
53.198 + getExtendedCacheKeysCode
53.199 + .append(" protected Object[] getExtendedCacheKeys(JComponent c) {\n")
53.200 + .append(" Object[] extendedCacheKeys = null;\n")
53.201 + .append(" switch(state) {\n");
53.202 + for (Map.Entry<String, List<ComponentColor>> entry : componentColorsMap.entrySet()) {
53.203 + getExtendedCacheKeysCode
53.204 + .append(" case ")
53.205 + .append(entry.getKey()).append(":\n")
53.206 + .append(" extendedCacheKeys = new Object[] {\n");
53.207 + for (int i=0; i<entry.getValue().size(); i++) {
53.208 + ComponentColor cc = entry.getValue().get(i);
53.209 + getExtendedCacheKeysCode
53.210 + .append(" getComponentColor(c, \"")
53.211 + .append(cc.propertyName).append("\", ")
53.212 + .append(cc.defaultColorVariableName).append(", ")
53.213 + .append(cc.saturationOffset).append("f, ")
53.214 + .append(cc.brightnessOffset).append("f, ")
53.215 + .append(cc.alphaOffset);
53.216 + if (i + 1 < entry.getValue().size()) {
53.217 + getExtendedCacheKeysCode.append("),\n");
53.218 + } else {
53.219 + getExtendedCacheKeysCode.append(")");
53.220 + }
53.221 + }
53.222 + getExtendedCacheKeysCode.append("};\n")
53.223 + .append(" break;\n");
53.224 + }
53.225 + getExtendedCacheKeysCode
53.226 + .append(" }\n")
53.227 + .append(" return extendedCacheKeys;\n")
53.228 + .append(" }");
53.229 + }
53.230 + }
53.231 +
53.232 + //type is background, foreground, border, upArrowIcon, etc.
53.233 + private void generate(UIState state, Canvas canvas, String type) {
53.234 + String states = UIState.keysToString(state.getStateKeys());
53.235 + String stateType = toConstantName(type + "_" + states);
53.236 + String paintMethodName = "paint" + type + toClassName(states);
53.237 + //create new array for component colors for this state
53.238 + componentColors = new ArrayList<ComponentColor>();
53.239 +
53.240 + stateTypeCode.append(" static final int ").append(stateType).append(" = ").append(stateTypeCounter++).append(";\n");
53.241 +
53.242 + if (canvas.isBlank()) {
53.243 + return;
53.244 + }
53.245 +
53.246 + switchCode.append(" case ").append(stateType).append(": ").append(paintMethodName).append("(g); break;\n");
53.247 + paintingCode.append(" private void ").append(paintMethodName).append("(Graphics2D g) {\n");
53.248 +
53.249 + //start by setting up common info needed to encode the control points
53.250 + Insets in = canvas.getStretchingInsets();
53.251 + float a = in.left;
53.252 + float b = canvas.getSize().width - in.right;
53.253 + float c = in.top;
53.254 + float d = canvas.getSize().height - in.bottom;
53.255 + float width = canvas.getSize().width;
53.256 + float height = canvas.getSize().height;
53.257 + float cw = b - a;
53.258 + float ch = d - c;
53.259 +
53.260 + Layer[] layers = canvas.getLayers().toArray(new Layer[0]);
53.261 + for (int index=layers.length-1; index >= 0; index--) {
53.262 + Layer layer = layers[index];
53.263 + if (layer instanceof TemplateLayer) {
53.264 + continue;
53.265 + }
53.266 + //shapes must be painted in reverse order
53.267 + List<SimpleShape> shapes = layer.getShapes();
53.268 + for (int i=shapes.size()-1; i>=0; i--) {
53.269 + SimpleShape s = shapes.get(i);
53.270 + if (s instanceof PaintedShape) {
53.271 + PaintedShape shape = (PaintedShape)s;
53.272 + PaintModel paint = shape.getPaintModel();
53.273 +
53.274 + /*
53.275 + We attempt to write the minimal number of bytecodes as possible when
53.276 + generating code. Due to the inherit complexities in determining what
53.277 + is extraneous, we use the following system:
53.278 +
53.279 + We first generate the code for the shape. Then, we check to see if
53.280 + this shape has already been generated. If so, then we defer to an
53.281 + existing method. If not, then we will create a new methods, stick
53.282 + the code in it, and refer to that method.
53.283 + */
53.284 +
53.285 + String shapeMethodName = null; // will contain the name of the method which creates the shape
53.286 + String shapeVariable = null; // will be one of rect, roundRect, ellipse, or path.
53.287 + String shapeMethodBody = null;
53.288 +
53.289 + if (shape instanceof RectangleShape) {
53.290 + RectangleShape rshape = (RectangleShape) shape;
53.291 + float x1 = encode((float)rshape.getX1(), a, b, width);
53.292 + float y1 = encode((float)rshape.getY1(), c, d, height);
53.293 + float x2 = encode((float)rshape.getX2(), a, b, width);
53.294 + float y2 = encode((float)rshape.getY2(), c, d, height);
53.295 + if (rshape.isRounded()) {
53.296 + //it is a rounded rectangle
53.297 + float rounding = (float)rshape.getRounding();
53.298 +
53.299 + shapeMethodBody =
53.300 + " roundRect.setRoundRect(" +
53.301 + writeDecodeX(x1) + ", //x\n" +
53.302 + " " + writeDecodeY(y1) + ", //y\n" +
53.303 + " " + writeDecodeX(x2) + " - " + writeDecodeX(x1) + ", //width\n" +
53.304 + " " + writeDecodeY(y2) + " - " + writeDecodeY(y1) + ", //height\n" +
53.305 + " " + rounding + "f, " + rounding + "f); //rounding";
53.306 + shapeVariable = "roundRect";
53.307 + } else {
53.308 + shapeMethodBody =
53.309 + " rect.setRect(" +
53.310 + writeDecodeX(x1) + ", //x\n" +
53.311 + " " + writeDecodeY(y1) + ", //y\n" +
53.312 + " " + writeDecodeX(x2) + " - " + writeDecodeX(x1) + ", //width\n" +
53.313 + " " + writeDecodeY(y2) + " - " + writeDecodeY(y1) + "); //height";
53.314 + shapeVariable = "rect";
53.315 + }
53.316 + } else if (shape instanceof EllipseShape) {
53.317 + EllipseShape eshape = (EllipseShape) shape;
53.318 + float x1 = encode((float)eshape.getX1(), a, b, width);
53.319 + float y1 = encode((float)eshape.getY1(), c, d, height);
53.320 + float x2 = encode((float)eshape.getX2(), a, b, width);
53.321 + float y2 = encode((float)eshape.getY2(), c, d, height);
53.322 + shapeMethodBody =
53.323 + " ellipse.setFrame(" +
53.324 + writeDecodeX(x1) + ", //x\n" +
53.325 + " " + writeDecodeY(y1) + ", //y\n" +
53.326 + " " + writeDecodeX(x2) + " - " + writeDecodeX(x1) + ", //width\n" +
53.327 + " " + writeDecodeY(y2) + " - " + writeDecodeY(y1) + "); //height";
53.328 + shapeVariable = "ellipse";
53.329 + } else if (shape instanceof PathShape) {
53.330 + PathShape pshape = (PathShape) shape;
53.331 + List<BezierControlPoint> controlPoints = pshape.getBezierControlPoints();
53.332 + BezierControlPoint first, last;
53.333 + first = last = controlPoints.get(0);
53.334 + StringBuilder buffer = new StringBuilder();
53.335 + buffer.append(" path.reset();\n");
53.336 + buffer.append(" path.moveTo(" + writeDecodeX(encode((float)first.getX(), a, b, width)) + ", " + writeDecodeY(encode((float)first.getY(), c, d, height)) + ");\n");
53.337 + for (int j=1; j<controlPoints.size(); j++) {
53.338 + BezierControlPoint cp = controlPoints.get(j);
53.339 + if (last.getCp2().isSharp() && cp.getCp1().isSharp()) {
53.340 + float x = encode((float)cp.getX(), a, b, width);
53.341 + float y = encode((float)cp.getY(), c, d, height);
53.342 + buffer.append(" path.lineTo(" + writeDecodeX(x) + ", " + writeDecodeY(y) + ");\n");
53.343 + } else {
53.344 + float x1 = encode((float)last.getX(), a, b, width);
53.345 + float y1 = encode((float)last.getY(), c, d, height);
53.346 + float x2 = encode((float)cp.getX(), a, b, width);
53.347 + float y2 = encode((float)cp.getY(), c, d, height);
53.348 + buffer.append(
53.349 + " path.curveTo(" + writeDecodeBezierX(x1, last.getX(), last.getCp2X()) + ", "
53.350 + + writeDecodeBezierY(y1, last.getY(), last.getCp2Y()) + ", "
53.351 + + writeDecodeBezierX(x2, cp.getX(), cp.getCp1X()) + ", "
53.352 + + writeDecodeBezierY(y2, cp.getY(), cp.getCp1Y()) + ", "
53.353 + + writeDecodeX(x2) + ", " + writeDecodeY(y2) + ");\n");
53.354 + }
53.355 + last = cp;
53.356 + }
53.357 + if (last.getCp2().isSharp() && first.getCp1().isSharp()) {
53.358 + float x = encode((float)first.getX(), a, b, width);
53.359 + float y = encode((float)first.getY(), c, d, height);
53.360 + buffer.append(" path.lineTo(" + writeDecodeX(x) + ", " + writeDecodeY(y) + ");\n");
53.361 + } else {
53.362 + float x1 = encode((float)last.getX(), a, b, width);
53.363 + float y1 = encode((float)last.getY(), c, d, height);
53.364 + float x2 = encode((float)first.getX(), a, b, width);
53.365 + float y2 = encode((float)first.getY(), c, d, height);
53.366 + buffer.append(
53.367 + " path.curveTo(" + writeDecodeBezierX(x1, last.getX(), last.getCp2X()) + ", "
53.368 + + writeDecodeBezierY(y1, last.getY(), last.getCp2Y()) + ", "
53.369 + + writeDecodeBezierX(x2, first.getX(), first.getCp1X()) + ", "
53.370 + + writeDecodeBezierY(y2, first.getY(), first.getCp1Y()) + ", "
53.371 + + writeDecodeX(x2) + ", " + writeDecodeY(y2) + ");\n");
53.372 + }
53.373 + buffer.append(" path.closePath();");
53.374 + shapeMethodBody = buffer.toString();
53.375 + shapeVariable = "path";
53.376 + } else {
53.377 + throw new RuntimeException("Cannot happen unless a new Shape has been defined");
53.378 + }
53.379 +
53.380 + //now that we have the shape defined in shapeMethodBody, and a shapeVariable name,
53.381 + //look to see if such a body has been previously defined.
53.382 + shapeMethodName = methods.get(shapeMethodBody);
53.383 + String returnType = null;
53.384 + if (shapeMethodName == null) {
53.385 + if ("rect".equals(shapeVariable)) {
53.386 + shapeMethodName = "decodeRect" + rectCounter++;
53.387 + returnType = "Rectangle2D";
53.388 + } else if ("roundRect".equals(shapeVariable)) {
53.389 + shapeMethodName = "decodeRoundRect" + roundRectCounter++;
53.390 + returnType = "RoundRectangle2D";
53.391 + } else if ("ellipse".equals(shapeVariable)) {
53.392 + shapeMethodName = "decodeEllipse" + ellipseCounter++;
53.393 + returnType = "Ellipse2D";
53.394 + } else {
53.395 + shapeMethodName = "decodePath" + pathCounter++;
53.396 + returnType = "Path2D";
53.397 + }
53.398 + methods.put(shapeMethodBody, shapeMethodName);
53.399 +
53.400 + //since the method wasn't previously defined, time to define it
53.401 + shapesCode.append(" private ").append(returnType).append(" ").append(shapeMethodName).append("() {\n");
53.402 + shapesCode.append(shapeMethodBody);
53.403 + shapesCode.append("\n");
53.404 + shapesCode.append(" return " + shapeVariable + ";\n");
53.405 + shapesCode.append(" }\n\n");
53.406 + }
53.407 +
53.408 + //now that the method has been defined, I can go on and decode the
53.409 + //paint. After the paint is decoded, I can write the g.fill() method call,
53.410 + //using the result of the shapeMethodName. Yay!
53.411 +
53.412 +// if (shapeVariable != null) {
53.413 + //first, calculate the bounds of the shape being painted and store in variables
53.414 + paintingCode.append(" ").append(shapeVariable).append(" = ").append(shapeMethodName).append("();\n");
53.415 +
53.416 + if (paint instanceof Matte) {
53.417 + String colorVariable = encodeMatte((Matte)paint);
53.418 + paintingCode.append(" g.setPaint(").append(colorVariable).append(");\n");
53.419 + } else if (paint instanceof Gradient) {
53.420 + String gradientMethodName = encodeGradient(shape, (Gradient)paint);
53.421 + paintingCode.append(" g.setPaint(").append(gradientMethodName).append("(").append(shapeVariable).append("));\n");
53.422 + } else if (paint instanceof RadialGradient) {
53.423 + String radialMethodName = encodeRadial(shape, (RadialGradient)paint);
53.424 + paintingCode.append(" g.setPaint(").append(radialMethodName).append("(").append(shapeVariable).append("));\n");
53.425 + }
53.426 + paintingCode.append(" g.fill(").append(shapeVariable).append(");\n");
53.427 + }
53.428 + }
53.429 + }
53.430 +
53.431 + paintingCode.append("\n }\n\n");
53.432 +
53.433 + //collect component colors
53.434 + if (!componentColors.isEmpty()) {
53.435 + componentColorsMap.put(stateType, componentColors);
53.436 + componentColors = null;
53.437 + }
53.438 + }
53.439 +
53.440 + private float encode(float x, float a, float b, float width) {
53.441 + return ObjectCodeConvertors.encode(x, a, b, width);
53.442 + }
53.443 +
53.444 + private String writeDecodeX(float encodedX) {
53.445 + return "decodeX(" + encodedX + "f)";
53.446 + }
53.447 +
53.448 + private String writeDecodeY(float encodedY) {
53.449 + return "decodeY(" + encodedY + "f)";
53.450 + }
53.451 +
53.452 + /**
53.453 + *
53.454 + * @param ex encoded x value
53.455 + * @param x unencoded x value
53.456 + * @param cpx unencoded cpx value
53.457 + * @return
53.458 + */
53.459 + private static String writeDecodeBezierX(double ex, double x, double cpx) {
53.460 + return "decodeAnchorX(" + ex + "f, " + (cpx - x) + "f)";
53.461 + }
53.462 +
53.463 + /**
53.464 + *
53.465 + * @param ey encoded y value
53.466 + * @param y unencoded y value
53.467 + * @param cpy unencoded cpy value
53.468 + * @return
53.469 + */
53.470 + private static String writeDecodeBezierY(double ey, double y, double cpy) {
53.471 + return "decodeAnchorY(" + ey + "f, " + (cpy - y) + "f)";
53.472 + }
53.473 +
53.474 + private String encodeMatte(Matte m) {
53.475 + String declaration = null;
53.476 + if (m.isAbsolute()) {
53.477 + Color c = m.getColor();
53.478 + declaration = ObjectCodeConvertors.convert(c);
53.479 + } else {
53.480 + declaration = "decodeColor(\"" + m.getUiDefaultParentName() +
53.481 + "\", " + m.getHueOffset() + "f, " +
53.482 + m.getSaturationOffset() + "f, " +
53.483 + m.getBrightnessOffset() + "f, " +
53.484 + m.getAlphaOffset() + ")";
53.485 + }
53.486 +
53.487 + String variableName = colors.get(declaration);
53.488 + if (variableName == null) {
53.489 + variableName = "color" + colorCounter++;
53.490 + colors.put(declaration, variableName);
53.491 + colorCode.append(" private Color ").append(variableName).append(" = ");
53.492 + colorCode.append(declaration).append(";\n");
53.493 + }
53.494 + // handle component colors
53.495 + if (m.getComponentPropertyName() != null) {
53.496 + ComponentColor cc = new ComponentColor(m.getComponentPropertyName(),
53.497 + variableName, m.getSaturationOffset(),
53.498 + m.getBrightnessOffset(), m.getAlphaOffset());
53.499 + int index = componentColors.indexOf(cc);
53.500 + if (index == -1) {
53.501 + index = componentColors.size();
53.502 + componentColors.add(cc);
53.503 + }
53.504 + return "(Color)componentColors[" + index + "]";
53.505 + } else {
53.506 + return variableName;
53.507 + }
53.508 + }
53.509 +
53.510 + private String encodeColor(Color c) {
53.511 + String declaration = ObjectCodeConvertors.convert(c);
53.512 + String variableName = colors.get(declaration);
53.513 + if (variableName == null) {
53.514 + variableName = "color" + colorCounter++;
53.515 + colors.put(declaration, variableName);
53.516 + colorCode.append(" private Color ").append(variableName).append(" = ");
53.517 + colorCode.append(declaration).append(";\n");
53.518 + }
53.519 +
53.520 + return variableName;
53.521 + }
53.522 +
53.523 + private String encodeGradient(PaintedShape ps, Gradient g) {
53.524 + StringBuilder b = new StringBuilder();
53.525 + float x1 = (float)ps.getPaintX1();
53.526 + float y1 = (float)ps.getPaintY1();
53.527 + float x2 = (float)ps.getPaintX2();
53.528 + float y2 = (float)ps.getPaintY2();
53.529 + b.append(" return decodeGradient((");
53.530 + b.append(x1);
53.531 + b.append("f * w) + x, (");
53.532 + b.append(y1);
53.533 + b.append("f * h) + y, (");
53.534 + b.append(x2);
53.535 + b.append("f * w) + x, (");
53.536 + b.append(y2);
53.537 + b.append("f * h) + y,\n");
53.538 + encodeGradientColorsAndFractions(g,b);
53.539 + b.append(");");
53.540 +
53.541 + String methodBody = b.toString();
53.542 + String methodName = methods.get(methodBody);
53.543 + if (methodName == null) {
53.544 + methodName = "decodeGradient" + gradientCounter++;
53.545 + gradientsCode.append(" private Paint ").append(methodName).append("(Shape s) {\n");
53.546 + gradientsCode.append(" Rectangle2D bounds = s.getBounds2D();\n");
53.547 + gradientsCode.append(" float x = (float)bounds.getX();\n");
53.548 + gradientsCode.append(" float y = (float)bounds.getY();\n");
53.549 + gradientsCode.append(" float w = (float)bounds.getWidth();\n");
53.550 + gradientsCode.append(" float h = (float)bounds.getHeight();\n");
53.551 + gradientsCode.append(methodBody);
53.552 + gradientsCode.append("\n }\n\n");
53.553 + methods.put(methodBody, methodName);
53.554 + }
53.555 + return methodName;
53.556 + }
53.557 +
53.558 + /**
53.559 + * Takes a abstract gradient and creates the code for the fractions float
53.560 + * array and the colors array that can be used in the constructors of linear
53.561 + * and radial gradients.
53.562 + *
53.563 + * @param g The abstract gradient to get stops from
53.564 + * @param b Append code string of the form "new float[]{...},
53.565 + * new Color[]{...}" to this StringBuilder
53.566 + */
53.567 + private void encodeGradientColorsAndFractions(AbstractGradient g,
53.568 + StringBuilder b) {
53.569 + List<GradientStop> stops = g.getStops();
53.570 + // there are stops.size() number of main stops. Between each is a
53.571 + // fractional stop. Thus, there are: stops.size() + stops.size() - 1
53.572 + // number of fractions and colors.
53.573 + float[] fractions = new float[stops.size() + stops.size() - 1];
53.574 + String[] colors = new String[fractions.length];
53.575 + //for each stop, create the stop and it's associated fraction
53.576 + int index = 0; // the index into fractions and colors
53.577 + for (int i = 0; i < stops.size(); i++) {
53.578 + GradientStop s = stops.get(i);
53.579 + //copy over the stop's data
53.580 + colors[index] = encodeMatte(s.getColor());
53.581 + fractions[index] = s.getPosition();
53.582 +
53.583 + //If this isn't the last stop, then add in the fraction
53.584 + if (index < fractions.length - 1) {
53.585 + float f1 = s.getPosition();
53.586 + float f2 = stops.get(i + 1).getPosition();
53.587 + index++;
53.588 + fractions[index] = f1 + (f2 - f1) * s.getMidpoint();
53.589 + colors[index] = "decodeColor("+
53.590 + colors[index - 1]+","+
53.591 + encodeMatte(stops.get(i + 1).getColor())+",0.5f)";
53.592 + }
53.593 + index++;
53.594 + }
53.595 + // Check boundry conditions
53.596 + for (int i = 1; i < fractions.length; i++) {
53.597 + //to avoid an error with LinearGradientPaint where two fractions
53.598 + //are identical, bump up the fraction value by a miniscule amount
53.599 + //if it is identical to the previous one
53.600 + //NOTE: The <= is critical because the previous value may already
53.601 + //have been bumped up
53.602 + if (fractions[i] <= fractions[i - 1]) {
53.603 + fractions[i] = fractions[i - 1] + .000001f;
53.604 + }
53.605 + }
53.606 + //another boundary condition where multiple stops are all at the end. The
53.607 + //previous loop bumped all but one of these past 1.0, which is bad.
53.608 + //so remove any fractions (and their colors!) that are beyond 1.0
53.609 + int outOfBoundsIndex = -1;
53.610 + for (int i = 0; i < fractions.length; i++) {
53.611 + if (fractions[i] > 1) {
53.612 + outOfBoundsIndex = i;
53.613 + break;
53.614 + }
53.615 + }
53.616 + if (outOfBoundsIndex >= 0) {
53.617 + float[] f = fractions;
53.618 + String[] c = colors;
53.619 + fractions = new float[outOfBoundsIndex];
53.620 + colors = new String[outOfBoundsIndex];
53.621 + System.arraycopy(f, 0, fractions, 0, outOfBoundsIndex);
53.622 + System.arraycopy(c, 0, colors, 0, outOfBoundsIndex);
53.623 + }
53.624 + // build string
53.625 + b.append(" new float[] { ");
53.626 + for (int i = 0; i < fractions.length; i++) {
53.627 + if (i>0)b.append(',');
53.628 + b.append(fractions[i]);
53.629 + b.append('f');
53.630 + }
53.631 + b.append(" },\n new Color[] { ");
53.632 + for (int i = 0; i < colors.length; i++) {
53.633 + if (i>0) b.append(",\n ");
53.634 + b.append(colors[i]);
53.635 + }
53.636 + b.append("}");
53.637 + }
53.638 +
53.639 + private String encodeRadial(PaintedShape ps, RadialGradient g) {
53.640 + float centerX1 = (float)ps.getPaintX1();
53.641 + float centerY1 = (float)ps.getPaintY1();
53.642 + float x2 = (float)ps.getPaintX2();
53.643 + float y2 = (float)ps.getPaintY2();
53.644 + float radius = (float)Point2D.distance(centerX1, centerY1, x2, y2);
53.645 + StringBuilder b = new StringBuilder();
53.646 +
53.647 + b.append(" return decodeRadialGradient((");
53.648 + b.append(centerX1);
53.649 + b.append("f * w) + x, (");
53.650 + b.append(centerY1);
53.651 + b.append("f * h) + y, ");
53.652 + b.append(radius);
53.653 + b.append("f,\n");
53.654 + encodeGradientColorsAndFractions(g,b);
53.655 + b.append(");");
53.656 +
53.657 + String methodBody = b.toString();
53.658 + String methodName = methods.get(methodBody);
53.659 + if (methodName == null) {
53.660 + methodName = "decodeRadial" + radialCounter++;
53.661 + gradientsCode.append(" private Paint ").append(methodName).append("(Shape s) {\n");
53.662 + gradientsCode.append(" Rectangle2D bounds = s.getBounds2D();\n");
53.663 + gradientsCode.append(" float x = (float)bounds.getX();\n");
53.664 + gradientsCode.append(" float y = (float)bounds.getY();\n");
53.665 + gradientsCode.append(" float w = (float)bounds.getWidth();\n");
53.666 + gradientsCode.append(" float h = (float)bounds.getHeight();\n");
53.667 + gradientsCode.append(methodBody);
53.668 + gradientsCode.append("\n }\n\n");
53.669 + methods.put(methodBody, methodName);
53.670 + }
53.671 + return methodName;
53.672 + }
53.673 +
53.674 + //note that this method is not thread-safe. In fact, none of this class is.
53.675 + static void writePainter(UIRegion r, Map<String, String> variables, File painterPackageRoot, String prefix) throws IOException {
53.676 + //Need only write out the stuff for this region, don't need to worry about subregions
53.677 + //since this method will be called for each of those (and they go in their own file, anyway).
53.678 + //The only subregion that we compound into this is the one for icons.
53.679 +
53.680 + String painterName = makePretty(prefix) + "Painter";
53.681 + PainterGenerator gen = new PainterGenerator(r);
53.682 + System.out.println("Generating source file: " + painterName + ".java");
53.683 + System.out.println(gen.stateTypeCode.toString());
53.684 + variables.put("PAINTER_NAME", painterName);
53.685 + variables.put("STATIC_DECL", gen.stateTypeCode.toString());
53.686 + variables.put("COLORS_DECL", gen.colorCode.toString());
53.687 + variables.put("DO_PAINT_SWITCH_BODY", gen.switchCode.toString());
53.688 + variables.put("PAINTING_DECL", gen.paintingCode.toString());
53.689 + variables.put("GET_EXTENDED_CACHE_KEYS", gen.getExtendedCacheKeysCode.toString());
53.690 + variables.put("SHAPES_DECL", gen.shapesCode.toString());
53.691 + variables.put("GRADIENTS_DECL", gen.gradientsCode.toString());
53.692 +
53.693 + writeSrcFile(getPainterImplTemplate(), variables, new File(painterPackageRoot, painterName + ".java"));
53.694 +
53.695 + variables.remove("PAINTER_NAME");
53.696 + variables.remove("STATIC_DECL");
53.697 + variables.remove("COLORS_DECL");
53.698 + variables.remove("DO_PAINT_SWITCH_BODY");
53.699 + variables.remove("PAINTING_DECL");
53.700 + variables.remove("SHAPES_DECL");
53.701 + variables.remove("GRADIENTS_DECL");
53.702 + }
53.703 +
53.704 + /**
53.705 + * Represents the usage of a color from a component within a painter. That
53.706 + * is, a painter can use colors from the component when it paints. This
53.707 + * class represents the usage of such a color, containing a reference to
53.708 + * the name of the property that contains the color, and the various
53.709 + * derivation offsets to apply to that color.
53.710 + */
53.711 + private static class ComponentColor {
53.712 + public String propertyName;
53.713 + public String defaultColorVariableName;
53.714 + private float saturationOffset = 0, brightnessOffset = 0;
53.715 + private int alphaOffset = 0;
53.716 +
53.717 + private ComponentColor(String propertyName,
53.718 + String defaultColorVariableName,
53.719 + float saturationOffset,
53.720 + float brightnessOffset,
53.721 + int alphaOffset) {
53.722 + this.propertyName = propertyName;
53.723 + this.defaultColorVariableName = defaultColorVariableName;
53.724 + this.saturationOffset = saturationOffset;
53.725 + this.brightnessOffset = brightnessOffset;
53.726 + this.alphaOffset = alphaOffset;
53.727 + }
53.728 +
53.729 + @Override
53.730 + public boolean equals(Object o) {
53.731 + if (this == o) return true;
53.732 + if (o == null || getClass() != o.getClass()) return false;
53.733 +
53.734 + ComponentColor c = (ComponentColor)o;
53.735 + if (alphaOffset != c.alphaOffset) return false;
53.736 + if (Float.compare(saturationOffset, c.saturationOffset) != 0)
53.737 + return false;
53.738 + if (Float.compare(brightnessOffset, c.brightnessOffset) != 0)
53.739 + return false;
53.740 + if (defaultColorVariableName != null ?
53.741 + !defaultColorVariableName.equals(c.defaultColorVariableName) :
53.742 + c.defaultColorVariableName != null) return false;
53.743 + if (propertyName != null ? !propertyName.equals(c.propertyName) :
53.744 + c.propertyName != null) return false;
53.745 + return true;
53.746 + }
53.747 +
53.748 + @Override
53.749 + public int hashCode() {
53.750 + int hash = 5;
53.751 + hash = 61 * hash + (this.propertyName != null ?
53.752 + this.propertyName.hashCode() : 0);
53.753 + hash = 61 * hash + (this.defaultColorVariableName != null ?
53.754 + this.defaultColorVariableName.hashCode() : 0);
53.755 + hash = 61 * hash + Float.floatToIntBits(this.saturationOffset);
53.756 + hash = 61 * hash + Float.floatToIntBits(this.brightnessOffset);
53.757 + hash = 61 * hash + this.alphaOffset;
53.758 + return hash;
53.759 + }
53.760 + }
53.761 +}
54.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
54.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/TemplateWriter.java Wed Apr 29 00:27:46 2009 -0700
54.3 @@ -0,0 +1,114 @@
54.4 +/*
54.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
54.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
54.7 + *
54.8 + * This code is free software; you can redistribute it and/or modify it
54.9 + * under the terms of the GNU General Public License version 2 only, as
54.10 + * published by the Free Software Foundation. Sun designates this
54.11 + * particular file as subject to the "Classpath" exception as provided
54.12 + * by Sun in the LICENSE file that accompanied this code.
54.13 + *
54.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
54.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
54.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
54.17 + * version 2 for more details (a copy is included in the LICENSE file that
54.18 + * accompanied this code).
54.19 + *
54.20 + * You should have received a copy of the GNU General Public License version
54.21 + * 2 along with this work; if not, write to the Free Software Foundation,
54.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
54.23 + *
54.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
54.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
54.26 + * have any questions.
54.27 + */
54.28 +package org.jdesktop.synthdesigner.generator;
54.29 +
54.30 +import java.io.BufferedReader;
54.31 +import java.io.File;
54.32 +import java.io.FileWriter;
54.33 +import java.io.IOException;
54.34 +import java.io.InputStream;
54.35 +import java.io.PrintWriter;
54.36 +import java.io.StringReader;
54.37 +import java.util.Map;
54.38 +
54.39 +/**
54.40 + * TemplateWriter - Class for writing Java Source files using a src template and variable subsitution
54.41 + *
54.42 + * @author Richard Bair
54.43 + * @author Jasper Potts
54.44 + */
54.45 +public class TemplateWriter {
54.46 +
54.47 + /**
54.48 + * Write a Java source file by taking a template file and applying variable substitution and writing to the output
54.49 + * file.
54.50 + *
54.51 + * @param template The template to use
54.52 + * @param variables Map of the variable names and values to substitute in the template
54.53 + * @param output The file to write to
54.54 + * @throws IOException If there was a problem writing the Java source file
54.55 + */
54.56 + static void writeSrcFile(String template, Map<String, String> variables, File output) throws IOException {
54.57 + TemplateReader in = new TemplateReader(variables, template);
54.58 + PrintWriter out =
54.59 + new PrintWriter(new FileWriter(output));
54.60 +
54.61 + String line = in.readLine();
54.62 + while (line != null) {
54.63 + out.println(line);
54.64 + line = in.readLine();
54.65 + }
54.66 +
54.67 + out.close();
54.68 + }
54.69 +
54.70 + /**
54.71 + * Read a template file into a string
54.72 + *
54.73 + * @param name The template file path relative to Generator class
54.74 + * @return The contents of the template file as string
54.75 + * @throws IOException If there was a problem reading the template file
54.76 + */
54.77 + static String read(String name) throws IOException {
54.78 + InputStream in = Generator.class.getResourceAsStream(name);
54.79 + if (in==null) throw new IOException("Could not find template ["+name+
54.80 + "] relative to class ["+Generator.class.getName()+"]");
54.81 + byte[] data = new byte[4096];
54.82 + int length = -1;
54.83 + StringBuilder buffer = new StringBuilder();
54.84 + while ((length = in.read(data)) != -1) {
54.85 + buffer.append(new String(data, 0, length));
54.86 + }
54.87 + return buffer.toString();
54.88 + }
54.89 +
54.90 + /** A BufferedReader implementation that automatically performs string replacements as needed. */
54.91 + private static final class TemplateReader extends BufferedReader {
54.92 + private Map<String, String> variables;
54.93 +
54.94 + TemplateReader(Map<String, String> variables, String template) {
54.95 + super(new StringReader(template));
54.96 + this.variables = variables;
54.97 + }
54.98 +
54.99 + /**
54.100 + * @return a line of text from the template but with variables substituted. Other methods will return the text
54.101 + * sans substitution. Call this method.
54.102 + * @throws java.io.IOException
54.103 + */
54.104 + public String readLine() throws IOException {
54.105 + return substituteVariables(super.readLine());
54.106 + }
54.107 +
54.108 + private String substituteVariables(String input) {
54.109 + if (input == null) return null;
54.110 + for (Map.Entry<String, String> variable : variables.entrySet()) {
54.111 + input = input.replace("${" + variable.getKey() + "}", variable.getValue());
54.112 + }
54.113 + return input;
54.114 + }
54.115 + }
54.116 +
54.117 +}
55.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
55.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/CustomUIDefault.java Wed Apr 29 00:27:46 2009 -0700
55.3 @@ -0,0 +1,43 @@
55.4 +/*
55.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
55.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
55.7 + *
55.8 + * This code is free software; you can redistribute it and/or modify it
55.9 + * under the terms of the GNU General Public License version 2 only, as
55.10 + * published by the Free Software Foundation. Sun designates this
55.11 + * particular file as subject to the "Classpath" exception as provided
55.12 + * by Sun in the LICENSE file that accompanied this code.
55.13 + *
55.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
55.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
55.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
55.17 + * version 2 for more details (a copy is included in the LICENSE file that
55.18 + * accompanied this code).
55.19 + *
55.20 + * You should have received a copy of the GNU General Public License version
55.21 + * 2 along with this work; if not, write to the Free Software Foundation,
55.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
55.23 + *
55.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
55.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
55.26 + * have any questions.
55.27 + */
55.28 +package org.jdesktop.synthdesigner.synthmodel;
55.29 +
55.30 +/**
55.31 + * CustomUIDefault
55.32 + *
55.33 + * @author Richard Bair
55.34 + * @author Jasper Potts
55.35 + */
55.36 +public class CustomUIDefault<T> extends UIDefault<T> {
55.37 + private static int counter = -1;
55.38 +
55.39 + public CustomUIDefault() {
55.40 + super("Unnamed" + (++counter == 0 ? "" : counter), null);
55.41 + }
55.42 +
55.43 + public void setName(String id) {
55.44 + super.setName(id);
55.45 + }
55.46 +}
56.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
56.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/HasUIStyle.java Wed Apr 29 00:27:46 2009 -0700
56.3 @@ -0,0 +1,36 @@
56.4 +/*
56.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
56.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
56.7 + *
56.8 + * This code is free software; you can redistribute it and/or modify it
56.9 + * under the terms of the GNU General Public License version 2 only, as
56.10 + * published by the Free Software Foundation. Sun designates this
56.11 + * particular file as subject to the "Classpath" exception as provided
56.12 + * by Sun in the LICENSE file that accompanied this code.
56.13 + *
56.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
56.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
56.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
56.17 + * version 2 for more details (a copy is included in the LICENSE file that
56.18 + * accompanied this code).
56.19 + *
56.20 + * You should have received a copy of the GNU General Public License version
56.21 + * 2 along with this work; if not, write to the Free Software Foundation,
56.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
56.23 + *
56.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
56.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
56.26 + * have any questions.
56.27 + */
56.28 +package org.jdesktop.synthdesigner.synthmodel;
56.29 +
56.30 +/**
56.31 + * HasUIStyle - A marker interface for all classes that have a UIStyle
56.32 + *
56.33 + * @author Richard Bair
56.34 + * @author Jasper Potts
56.35 + */
56.36 +public interface HasUIStyle {
56.37 +
56.38 + public UIStyle getStyle();
56.39 +}
57.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
57.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/PainterBorder.java Wed Apr 29 00:27:46 2009 -0700
57.3 @@ -0,0 +1,43 @@
57.4 +/*
57.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
57.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
57.7 + *
57.8 + * This code is free software; you can redistribute it and/or modify it
57.9 + * under the terms of the GNU General Public License version 2 only, as
57.10 + * published by the Free Software Foundation. Sun designates this
57.11 + * particular file as subject to the "Classpath" exception as provided
57.12 + * by Sun in the LICENSE file that accompanied this code.
57.13 + *
57.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
57.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
57.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
57.17 + * version 2 for more details (a copy is included in the LICENSE file that
57.18 + * accompanied this code).
57.19 + *
57.20 + * You should have received a copy of the GNU General Public License version
57.21 + * 2 along with this work; if not, write to the Free Software Foundation,
57.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
57.23 + *
57.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
57.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
57.26 + * have any questions.
57.27 + */
57.28 +package org.jdesktop.synthdesigner.synthmodel;
57.29 +
57.30 +import javax.swing.border.EmptyBorder;
57.31 +
57.32 +/**
57.33 + * Represents a border that refers to a Painter to do it's work. This border
57.34 + * doesn't actually render -- it is just used as part of the model.
57.35 + *
57.36 + * @author Richard Bair
57.37 + */
57.38 +public class PainterBorder extends EmptyBorder {
57.39 + private String painterName;
57.40 + public PainterBorder(String painterName, int top, int left, int bottom, int right) {
57.41 + super(top, left, bottom, right);
57.42 + this.painterName = painterName;
57.43 + }
57.44 +
57.45 + public String getPainterName() { return painterName; }
57.46 +}
58.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
58.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/SynthModel.java Wed Apr 29 00:27:46 2009 -0700
58.3 @@ -0,0 +1,530 @@
58.4 +/*
58.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
58.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
58.7 + *
58.8 + * This code is free software; you can redistribute it and/or modify it
58.9 + * under the terms of the GNU General Public License version 2 only, as
58.10 + * published by the Free Software Foundation. Sun designates this
58.11 + * particular file as subject to the "Classpath" exception as provided
58.12 + * by Sun in the LICENSE file that accompanied this code.
58.13 + *
58.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
58.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
58.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
58.17 + * version 2 for more details (a copy is included in the LICENSE file that
58.18 + * accompanied this code).
58.19 + *
58.20 + * You should have received a copy of the GNU General Public License version
58.21 + * 2 along with this work; if not, write to the Free Software Foundation,
58.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
58.23 + *
58.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
58.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
58.26 + * have any questions.
58.27 + */
58.28 +package org.jdesktop.synthdesigner.synthmodel;
58.29 +
58.30 +import org.jdesktop.beans.AbstractBean;
58.31 +import org.jdesktop.swingx.designer.utils.HasResources;
58.32 +import org.jdesktop.swingx.designer.utils.HasUIDefaults;
58.33 +import org.jibx.runtime.IUnmarshallingContext;
58.34 +
58.35 +import javax.swing.JButton;
58.36 +import javax.swing.JCheckBox;
58.37 +import javax.swing.JCheckBoxMenuItem;
58.38 +import javax.swing.JColorChooser;
58.39 +import javax.swing.JComboBox;
58.40 +import javax.swing.JDesktopPane;
58.41 +import javax.swing.JEditorPane;
58.42 +import javax.swing.JFileChooser;
58.43 +import javax.swing.JFormattedTextField;
58.44 +import javax.swing.JInternalFrame;
58.45 +import javax.swing.JLabel;
58.46 +import javax.swing.JList;
58.47 +import javax.swing.JMenu;
58.48 +import javax.swing.JMenuBar;
58.49 +import javax.swing.JMenuItem;
58.50 +import javax.swing.JOptionPane;
58.51 +import javax.swing.JPanel;
58.52 +import javax.swing.JPasswordField;
58.53 +import javax.swing.JPopupMenu;
58.54 +import javax.swing.JProgressBar;
58.55 +import javax.swing.JRadioButton;
58.56 +import javax.swing.JRadioButtonMenuItem;
58.57 +import javax.swing.JRootPane;
58.58 +import javax.swing.JScrollBar;
58.59 +import javax.swing.JScrollPane;
58.60 +import javax.swing.JSeparator;
58.61 +import javax.swing.JSlider;
58.62 +import javax.swing.JSpinner;
58.63 +import javax.swing.JSplitPane;
58.64 +import javax.swing.JTabbedPane;
58.65 +import javax.swing.JTable;
58.66 +import javax.swing.JTextArea;
58.67 +import javax.swing.JTextField;
58.68 +import javax.swing.JTextPane;
58.69 +import javax.swing.JToggleButton;
58.70 +import javax.swing.JToolBar;
58.71 +import javax.swing.JToolTip;
58.72 +import javax.swing.JTree;
58.73 +import javax.swing.JViewport;
58.74 +import javax.swing.UIDefaults;
58.75 +import javax.swing.plaf.basic.BasicLookAndFeel;
58.76 +import javax.swing.plaf.metal.MetalLookAndFeel;
58.77 +import static javax.swing.plaf.synth.SynthConstants.*;
58.78 +import javax.swing.table.JTableHeader;
58.79 +import java.awt.Insets;
58.80 +import java.io.File;
58.81 +import java.util.ArrayList;
58.82 +import java.util.List;
58.83 +
58.84 +/**
58.85 + * Models a Synth look and feel. Contains all of the colors, fonts, painters, states, etc that compose a synth look and
58.86 + * feel.
58.87 + * <p/>
58.88 + * To model Synth properly, I need to both Model the way Synth works (with styles, and so forth) and the way a look and
58.89 + * feel works (UIDefaults table, etc) since both of these are supported ways of doing things in Synth.
58.90 + * <p/>
58.91 + * One important (but non-visual) thing that needs to be configurable is the support for InputMaps per component. In
58.92 + * Synth, an input map can be associated with the main Synth element, meaning it applies to everything. Or it can be
58.93 + * associated with a single style. An Inputmap can have an id, and it can contain multiple key/action pairs (where
58.94 + * actions are denoted by name).
58.95 + * <p/>
58.96 + * It looks like Regions can have InputMaps? Sounds fishy to me. I think only Components really have input maps.
58.97 + * <p/>
58.98 + * I would like some way of denoting special keys between mac and other platforms. For example, cut, copy, paste etc
58.99 + * should be different. In general, the ctrl key and apple (meta) key are reversed from what is typically on windows.
58.100 + *
58.101 + * @author Richard Bair
58.102 + * @author Jasper Potts
58.103 + */
58.104 +public class SynthModel extends AbstractBean implements HasUIDefaults, HasUIStyle, HasResources {
58.105 + //I'm going to want:
58.106 + //entries related to the Control color, and other colors of the Basic LAF
58.107 + //entries related to fonts (standard fonts) used in the Basic LAF
58.108 + //entries related to standard insets, borders, dimensions, icons
58.109 + //entries related to component specific entries in the LAF
58.110 + private List<UIPaint> colors;
58.111 + private List<UIFont> fonts;
58.112 + private List<UIInsets> insets;
58.113 + private List<UIBorder> borders;
58.114 + private List<UIDimension> dimensions;
58.115 + private List<UIIcon> icons;
58.116 + private List<UIComponent> components;
58.117 + /**
58.118 + * This is a local UIDefaults that contains all the UIDefaults in this synth model. It is kept uptodate by the
58.119 + * indervidual UIDefaults nodes
58.120 + */
58.121 + private transient UIDefaults modelDefaults = new UIDefaults();
58.122 + private transient UIStyle globalStyle = new UIStyle();
58.123 +
58.124 + private transient File resourcesDir;
58.125 + private transient File imagesDir;
58.126 + private transient File templatesDir;
58.127 +
58.128 + /** Default constructor used by JIBX to create new empty SynthModel */
58.129 + protected SynthModel() {
58.130 + this(false);
58.131 + }
58.132 +
58.133 + public SynthModel(boolean populateWithDefaults) {
58.134 + // create observable lists that fire changes on as property changes
58.135 + colors = new ArrayList<UIPaint>();
58.136 + fonts = new ArrayList<UIFont>();
58.137 + insets = new ArrayList<UIInsets>();
58.138 + borders = new ArrayList<UIBorder>();
58.139 + dimensions = new ArrayList<UIDimension>();
58.140 + icons = new ArrayList<UIIcon>();
58.141 + components = new ArrayList<UIComponent>();
58.142 +
58.143 + if (populateWithDefaults) {
58.144 + //get the ui defaults from the SynthLookAndFeel. Using the UIDefaults table,
58.145 + //pre initialize everything.
58.146 +// SynthLookAndFeel synth = new SynthLookAndFeel();
58.147 + BasicLookAndFeel synth = new MetalLookAndFeel();
58.148 + UIDefaults defaults = synth.getDefaults();
58.149 +
58.150 + //pre-init the palettes
58.151 + colors.add(new UIColor("desktop", defaults.getColor("desktop"), modelDefaults));
58.152 + colors.add(new UIColor("activeCaption", defaults.getColor("activeCaption"), modelDefaults));
58.153 + colors.add(new UIColor("activeCaptionText", defaults.getColor("activeCaptionText"), modelDefaults));
58.154 + colors.add(new UIColor("activeCaptionBorder", defaults.getColor("activeCaptionBorder"), modelDefaults));
58.155 + colors.add(new UIColor("inactiveCaption", defaults.getColor("inactiveCaption"), modelDefaults));
58.156 + colors.add(new UIColor("inactiveCaptionText", defaults.getColor("inactiveCaptionText"), modelDefaults));
58.157 + colors.add(new UIColor("inactiveCaptionBorder", defaults.getColor("inactiveCaptionBorder"), modelDefaults));
58.158 + colors.add(new UIColor("window", defaults.getColor("window"), modelDefaults));
58.159 + colors.add(new UIColor("windowBorder", defaults.getColor("windowBorder"), modelDefaults));
58.160 + colors.add(new UIColor("windowText", defaults.getColor("windowText"), modelDefaults));
58.161 + colors.add(new UIColor("menu", defaults.getColor("menu"), modelDefaults));
58.162 + colors.add(new UIColor("menuText", defaults.getColor("menuText"), modelDefaults));
58.163 + colors.add(new UIColor("text", defaults.getColor("text"), modelDefaults));
58.164 + colors.add(new UIColor("textText", defaults.getColor("textText"), modelDefaults));
58.165 + colors.add(new UIColor("textHighlight", defaults.getColor("textHighlight"), modelDefaults));
58.166 + colors.add(new UIColor("textHighlightText", defaults.getColor("textHighlightText"), modelDefaults));
58.167 + colors.add(new UIColor("textInactiveText", defaults.getColor("textInactiveText"), modelDefaults));
58.168 + colors.add(new UIColor("control", defaults.getColor("control"), modelDefaults));
58.169 + colors.add(new UIColor("controlText", defaults.getColor("controlText"), modelDefaults));
58.170 + colors.add(new UIColor("controlHighlight", defaults.getColor("controlHighlight"), modelDefaults));
58.171 + colors.add(new UIColor("controlLHighlight", defaults.getColor("controlLHighlight"), modelDefaults));
58.172 + colors.add(new UIColor("controlShadow", defaults.getColor("controlShadow"), modelDefaults));
58.173 + colors.add(new UIColor("controlDkShadow", defaults.getColor("controlDkShadow"), modelDefaults));
58.174 + colors.add(new UIColor("scrollbar", defaults.getColor("scrollbar"), modelDefaults));
58.175 + colors.add(new UIColor("info", defaults.getColor("info"), modelDefaults));
58.176 + colors.add(new UIColor("infoText", defaults.getColor("infoText"), modelDefaults));
58.177 +
58.178 + fonts.add(new UIFont("dialogPlain", defaults.getFont("Button.font"), modelDefaults));
58.179 + fonts.add(new UIFont("serifPlain", defaults.getFont("TextPane.font"), modelDefaults));
58.180 + fonts.add(new UIFont("sansSerifPlain", defaults.getFont("ToolTip.font"), modelDefaults));
58.181 + fonts.add(new UIFont("monospacedPlain", defaults.getFont("TextArea.font"), modelDefaults));
58.182 + fonts.add(new UIFont("dialogBold", defaults.getFont("InternalFrame.titleFont"), modelDefaults));
58.183 +
58.184 + insets.add(new UIInsets("zeroInsets", new Insets(0, 0, 0, 0)));
58.185 + insets.add(new UIInsets("twoInsets", new Insets(2, 2, 2, 2)));
58.186 + insets.add(new UIInsets("threeInsets", new Insets(3, 3, 3, 3)));
58.187 +
58.188 + borders.add(new UIBorder("marginBorder", defaults.getBorder("MenuItem.border")));
58.189 + borders.add(new UIBorder("etchedBorder", defaults.getBorder("TitledBorder.border")));
58.190 + borders.add(new UIBorder("loweredBevelBorder", defaults.getBorder("Table.scrollPaneBorder")));
58.191 + borders.add(new UIBorder("blackLineBorder", defaults.getBorder("ToolTip.border")));
58.192 +
58.193 + //TODO have to deal with the special arrow button region
58.194 +
58.195 + //pre-init the list of UI components
58.196 + UIComponent button = new UIComponent("Button", JButton.class.getName(), "ButtonUI");
58.197 + addStates(this, button, DEFAULT, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.198 + components.add(button);
58.199 +
58.200 + UIComponent toggleButton =
58.201 + new UIComponent("ToggleButton", JToggleButton.class.getName(), "ToggleButtonUI");
58.202 + addStates(this, toggleButton, DEFAULT, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED, SELECTED,
58.203 + SELECTED | PRESSED, SELECTED | MOUSE_OVER, DISABLED | SELECTED);
58.204 + components.add(toggleButton);
58.205 +
58.206 + UIComponent radioButton =
58.207 + new UIComponent("RadioButton", JRadioButton.class.getName(), "RadioButtonUI");
58.208 + addStates(this, radioButton, DEFAULT, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED, SELECTED,
58.209 + SELECTED | PRESSED, SELECTED | MOUSE_OVER, DISABLED | SELECTED);
58.210 + components.add(radioButton);
58.211 +
58.212 + UIComponent checkBox =
58.213 + new UIComponent("CheckBox", JCheckBox.class.getName(), "CheckBoxUI");
58.214 + addStates(this, checkBox, DEFAULT, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED, SELECTED,
58.215 + SELECTED | PRESSED, SELECTED | MOUSE_OVER, DISABLED | SELECTED);
58.216 + components.add(checkBox);
58.217 +
58.218 + UIComponent colorChooser =
58.219 + new UIComponent("ColorChooser", JColorChooser.class.getName(), "ColorChooserUI");
58.220 + addStates(this, colorChooser, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.221 + components.add(colorChooser);
58.222 +
58.223 + UIComponent comboBox =
58.224 + new UIComponent("ComboBox", JComboBox.class.getName(), "ComboBoxUI");
58.225 + addStates(this, comboBox, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.226 + components.add(comboBox);
58.227 +
58.228 + UIComponent fileChooser =
58.229 + new UIComponent("FileChooser", JFileChooser.class.getName(), "FileChooserUI");
58.230 + addStates(this, fileChooser, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.231 + components.add(fileChooser);
58.232 +
58.233 + //not represented in Synth
58.234 +// UIComponent fileView = new UIComponent ("FileView",
58.235 +// list(DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.236 +
58.237 + UIComponent internalFrame =
58.238 + new UIComponent("InternalFrame", JInternalFrame.class.getName(), "InternalFrameUI");
58.239 + addStates(this, internalFrame, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.240 + //has an internal frame title pane region
58.241 + components.add(internalFrame);
58.242 +
58.243 + //TODO DesktopIcon ???
58.244 +
58.245 + UIComponent desktop =
58.246 + new UIComponent("Desktop", JDesktopPane.class.getName(), "DesktopPaneUI");
58.247 + addStates(this, desktop, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.248 + components.add(desktop);
58.249 +
58.250 + UIComponent label = new UIComponent("Label", JLabel.class.getName(), "LabelUI");
58.251 + addStates(this, label, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.252 + components.add(label);
58.253 +
58.254 + UIComponent list = new UIComponent("List", JList.class.getName(), "ListUI");
58.255 + addStates(this, list, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.256 + components.add(list);
58.257 +
58.258 + UIComponent menuBar = new UIComponent("MenuBar", JMenuBar.class.getName(), "MenuBarUI");
58.259 + addStates(this, menuBar, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.260 + components.add(menuBar);
58.261 +
58.262 + UIComponent menuItem =
58.263 + new UIComponent("MenuItem", JMenuItem.class.getName(), "MenuItemUI");
58.264 + addStates(this, menuItem, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.265 + //has a menuItemAccelerator region
58.266 + components.add(menuItem);
58.267 +
58.268 + UIComponent radioButtonMenuItem =
58.269 + new UIComponent("RadioButtonMenuItem", JRadioButtonMenuItem.class.getName(),
58.270 + "RadioButtonMenuItemUI");
58.271 + addStates(this, radioButtonMenuItem, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.272 + components.add(radioButtonMenuItem);
58.273 +
58.274 + UIComponent checkBoxMenuItem =
58.275 + new UIComponent("CheckBoxMenuItem", JCheckBoxMenuItem.class.getName(),
58.276 + "CheckBoxMenuItemUI");
58.277 + addStates(this, checkBoxMenuItem, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.278 + components.add(checkBoxMenuItem);
58.279 +
58.280 + UIComponent menu = new UIComponent("Menu", JMenu.class.getName(), "MenuUI");
58.281 + addStates(this, menu, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.282 + components.add(menu);
58.283 +
58.284 + UIComponent popupMenu =
58.285 + new UIComponent("PopupMenu", JPopupMenu.class.getName(), "PopupMenuUI");
58.286 + addStates(this, popupMenu, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.287 + //has a popupMenuSeparator region
58.288 + components.add(popupMenu);
58.289 +
58.290 + UIComponent optionPane =
58.291 + new UIComponent("OptionPane", JOptionPane.class.getName(), "OptionPaneUI");
58.292 + addStates(this, optionPane, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.293 + components.add(optionPane);
58.294 +
58.295 + UIComponent panel = new UIComponent("Panel", JPanel.class.getName(), "PanelUI");
58.296 + addStates(this, panel, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.297 + components.add(panel);
58.298 +
58.299 + UIComponent progressBar =
58.300 + new UIComponent("ProgressBar", JProgressBar.class.getName(), "ProgressBarUI");
58.301 + addStates(this, progressBar, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.302 + components.add(progressBar);
58.303 +
58.304 + UIComponent separator =
58.305 + new UIComponent("Separator", JSeparator.class.getName(), "SeparatorUI");
58.306 + addStates(this, separator, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.307 + components.add(separator);
58.308 +
58.309 + UIRegion scrollBarThumb = new UIRegion("ScrollBar.Thumb");
58.310 + addStates(this, scrollBarThumb, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.311 + UIRegion scrollBarTrack = new UIRegion("ScrollBar.Track");
58.312 + addStates(this, scrollBarTrack, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.313 + UIComponent scrollBar =
58.314 + new UIComponent("ScrollBar", JScrollBar.class.getName(), "ScrollBarUI", scrollBarThumb,
58.315 + scrollBarTrack);
58.316 + addStates(this, scrollBar, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.317 + components.add(scrollBar);
58.318 +
58.319 + UIComponent scrollPane =
58.320 + new UIComponent("ScrollPane", JScrollPane.class.getName(), "ScrollPaneUI");
58.321 + addStates(this, scrollPane, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.322 + components.add(scrollPane);
58.323 +
58.324 + UIComponent viewport =
58.325 + new UIComponent("Viewport", JViewport.class.getName(), "ViewportUI");
58.326 + addStates(this, viewport, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.327 + components.add(viewport);
58.328 +
58.329 + UIComponent slider = new UIComponent("Slider", JSlider.class.getName(), "SliderUI");
58.330 + addStates(this, slider, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.331 + //has sliderThumb and sliderTrack sub regions
58.332 + components.add(slider);
58.333 +
58.334 + UIComponent spinner = new UIComponent("Spinner", JSpinner.class.getName(), "SpinnerUI");
58.335 + addStates(this, spinner, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.336 + components.add(spinner);
58.337 +
58.338 + UIComponent splitPane =
58.339 + new UIComponent("SplitPane", JSplitPane.class.getName(), "SplitPaneUI");
58.340 + addStates(this, splitPane, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.341 + //has splitPaneDivider sub region
58.342 + components.add(splitPane);
58.343 +
58.344 + UIComponent tabbedPane =
58.345 + new UIComponent("TabbedPane", JTabbedPane.class.getName(), "TabbedPaneUI");
58.346 + addStates(this, tabbedPane, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.347 + //has tabbedPaneContent and tabbedPaneTab and TabbedPaneTabArea sub regions
58.348 + components.add(tabbedPane);
58.349 +
58.350 + UIComponent table = new UIComponent("Table", JTable.class.getName(), "TableUI");
58.351 + addStates(this, table, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.352 + components.add(table);
58.353 +
58.354 + UIComponent tableHeader =
58.355 + new UIComponent("TableHeader", JTableHeader.class.getName(), "TableHeaderUI");
58.356 + addStates(this, tableHeader, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.357 + components.add(tableHeader);
58.358 +
58.359 + UIComponent textField =
58.360 + new UIComponent("TextField", JTextField.class.getName(), "TextFieldUI");
58.361 + addStates(this, textField, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.362 + components.add(textField);
58.363 +
58.364 + UIComponent formattedTextField =
58.365 + new UIComponent("FormattedTextField", JFormattedTextField.class.getName(),
58.366 + "FormattedTextFieldUI");
58.367 + addStates(this, formattedTextField, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.368 + components.add(formattedTextField);
58.369 +
58.370 + UIComponent passwordField =
58.371 + new UIComponent("PasswordField", JPasswordField.class.getName(), "PasswordFieldUI");
58.372 + addStates(this, passwordField, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.373 + components.add(passwordField);
58.374 +
58.375 + UIComponent textArea =
58.376 + new UIComponent("TextArea", JTextArea.class.getName(), "TextAreaUI");
58.377 + addStates(this, textArea, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.378 + components.add(textArea);
58.379 +
58.380 + UIComponent textPane =
58.381 + new UIComponent("TextPane", JTextPane.class.getName(), "TextPaneUI");
58.382 + addStates(this, textPane, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.383 + components.add(textPane);
58.384 +
58.385 + UIComponent editorPane =
58.386 + new UIComponent("EditorPane", JEditorPane.class.getName(), "EditorPaneUI");
58.387 + addStates(this, editorPane, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.388 + components.add(editorPane);
58.389 +
58.390 + /*
58.391 + * The only thing not represented in Synth as a region. I suppose we'll have
58.392 + * to make it a CustomUIComponent
58.393 + */
58.394 +// UIComponent titledBorder = new UIComponent ("TitledBorder",
58.395 +// list(DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.396 +
58.397 + UIComponent toolBar = new UIComponent("ToolBar", JToolBar.class.getName(), "ToolBarUI");
58.398 + addStates(this, toolBar, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.399 + //toolBarContent, toolBarDragWindow, toolBarSeparator sub regions
58.400 + components.add(toolBar);
58.401 +
58.402 + UIComponent toolTip = new UIComponent("ToolTip", JToolTip.class.getName(), "ToolTipUI");
58.403 + addStates(this, toolTip, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.404 + components.add(toolTip);
58.405 +
58.406 + //tooltip manager
58.407 +
58.408 + UIComponent tree = new UIComponent("Tree", JTree.class.getName(), "TreeUI");
58.409 + addStates(this, tree, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.410 + //treeCell sub region
58.411 + components.add(tree);
58.412 +
58.413 + UIComponent rootPane =
58.414 + new UIComponent("RootPane", JRootPane.class.getName(), "RootPaneUI");
58.415 + addStates(this, rootPane, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED);
58.416 + components.add(rootPane);
58.417 + }
58.418 + }
58.419 +
58.420 + public List<UIPaint> getColorPalette() {
58.421 + return colors;
58.422 + }
58.423 +
58.424 + public List<UIFont> getFontPalette() {
58.425 + return fonts;
58.426 + }
58.427 +
58.428 + public List<UIInsets> getInsetPalette() {
58.429 + return insets;
58.430 + }
58.431 +
58.432 + public List<UIBorder> getBorderPalette() {
58.433 + return borders;
58.434 + }
58.435 +
58.436 + public List<UIDimension> getDimensionPalette() {
58.437 + return dimensions;
58.438 + }
58.439 +
58.440 + public List<UIIcon> getIconPalette() {
58.441 + return icons;
58.442 + }
58.443 +
58.444 + public List<UIComponent> getComponents() {
58.445 + return components;
58.446 + }
58.447 +
58.448 + /**
58.449 + * Get the local UIDefaults that contains all the UIDefaults in this synth model. It is kept uptodate by the
58.450 + * indervidual UIDefaults nodes
58.451 + *
58.452 + * @return The UIDefaults for the synth model
58.453 + */
58.454 + public UIDefaults getUiDefaults() {
58.455 + return modelDefaults;
58.456 + }
58.457 +
58.458 + public UIStyle getStyle() {
58.459 + return globalStyle;
58.460 + }
58.461 +
58.462 + // by default there are no painters assigned to the various states
58.463 + private static void addStates(SynthModel model, UIRegion parentRegion, int... states) {
58.464 + for (int state : states) {
58.465 + List<String> stateList = new ArrayList<String>();
58.466 + if ((state & ENABLED) != 0) {
58.467 + stateList.add(UIStateType.ENABLED_KEY);
58.468 + }
58.469 + if ((state & MOUSE_OVER) != 0) {
58.470 + stateList.add(UIStateType.MOUSE_OVER_KEY);
58.471 + }
58.472 + if ((state & PRESSED) != 0) {
58.473 + stateList.add(UIStateType.PRESSED_KEY);
58.474 + }
58.475 + if ((state & DISABLED) != 0) {
58.476 + stateList.add(UIStateType.DISABLED_KEY);
58.477 + }
58.478 + if ((state & FOCUSED) != 0) {
58.479 + stateList.add(UIStateType.FOCUSED_KEY);
58.480 + }
58.481 + if ((state & SELECTED) != 0) {
58.482 + stateList.add(UIStateType.SELECTED_KEY);
58.483 + }
58.484 + if ((state & DEFAULT) != 0) {
58.485 + stateList.add(UIStateType.DEFAULT_KEY);
58.486 + }
58.487 + parentRegion.addBackgroundState(new UIState(model, parentRegion, stateList.toArray(new String[stateList.size()])));
58.488 + }
58.489 + }
58.490 +
58.491 + public File getResourcesDir() {
58.492 + return resourcesDir;
58.493 + }
58.494 +
58.495 + public void setResourcesDir(File resourcesDir) {
58.496 + System.out.println("SynthModel.setResourcesDir(" + resourcesDir + ")");
58.497 + File old = getResourcesDir();
58.498 + this.resourcesDir = resourcesDir;
58.499 + firePropertyChange("resourcesDir", old, getResourcesDir());
58.500 + }
58.501 +
58.502 + public File getImagesDir() {
58.503 + return imagesDir;
58.504 + }
58.505 +
58.506 + public void setImagesDir(File imagesDir) {
58.507 + System.out.println("SynthModel.setImagesDir(" + imagesDir + ")");
58.508 + File old = getImagesDir();
58.509 + this.imagesDir = imagesDir;
58.510 + firePropertyChange("imagesDir", old, getImagesDir());
58.511 + }
58.512 +
58.513 + public File getTemplatesDir() {
58.514 + return templatesDir;
58.515 + }
58.516 +
58.517 + public void setTemplatesDir(File templatesDir) {
58.518 + System.out.println("SynthModel.setTemplatesDir(" + templatesDir + ")");
58.519 + File old = getTemplatesDir();
58.520 + this.templatesDir = templatesDir;
58.521 + firePropertyChange("templatesDir", old, getTemplatesDir());
58.522 + }
58.523 +
58.524 + // =================================================================================================================
58.525 + // JIBX Methods
58.526 +
58.527 + public void preSet(IUnmarshallingContext context) {
58.528 + File resourcesDir = (File) context.getUserContext();
58.529 + this.resourcesDir = resourcesDir;
58.530 + this.imagesDir = new File(resourcesDir, "images");
58.531 + this.templatesDir = new File(resourcesDir, "templates");
58.532 + }
58.533 +}
59.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
59.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/SynthModel.jibx.xml Wed Apr 29 00:27:46 2009 -0700
59.3 @@ -0,0 +1,181 @@
59.4 +<?xml version="1.0" encoding="UTF-8"?>
59.5 +
59.6 +<!--
59.7 + Copyright 1998-2004 Sun Microsystems, Inc. All Rights Reserved.
59.8 + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
59.9 +
59.10 + This code is free software; you can redistribute it and/or modify it
59.11 + under the terms of the GNU General Public License version 2 only, as
59.12 + published by the Free Software Foundation. Sun designates this
59.13 + particular file as subject to the "Classpath" exception as provided
59.14 + by Sun in the LICENSE file that accompanied this code.
59.15 +
59.16 + This code is distributed in the hope that it will be useful, but WITHOUT
59.17 + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
59.18 + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
59.19 + version 2 for more details (a copy is included in the LICENSE file that
59.20 + accompanied this code).
59.21 +
59.22 + You should have received a copy of the GNU General Public License version
59.23 + 2 along with this work; if not, write to the Free Software Foundation,
59.24 + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
59.25 +
59.26 + Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
59.27 + CA 95054 USA or visit www.sun.com if you need additional information or
59.28 + have any questions.
59.29 +-->
59.30 +
59.31 +<!DOCTYPE binding SYSTEM "http://jibx.sourceforge.net">
59.32 +<binding>
59.33 + <mapping class="org.jdesktop.synthdesigner.synthmodel.UIDefault" abstract="true" post-set="postSet">
59.34 + <value name="name" field="name" style="attribute"/>
59.35 + </mapping>
59.36 + <!-- == AWT TYPES =========================================================================================== -->
59.37 + <mapping class="java.awt.Color"
59.38 + marshaller="org.jdesktop.swingx.designer.jibxhelpers.ColorMapper"
59.39 + unmarshaller="org.jdesktop.swingx.designer.jibxhelpers.ColorMapper"/>
59.40 + <mapping class="java.lang.Class"
59.41 + marshaller="org.jdesktop.synthdesigner.synthmodel.jibxhelpers.ClassMapper"
59.42 + unmarshaller="org.jdesktop.synthdesigner.synthmodel.jibxhelpers.ClassMapper"/>
59.43 + <!-- == UI FONT =========================================================================================== -->
59.44 + <mapping name="typeface" class="org.jdesktop.swingx.designer.font.Typeface" post-set="postSet">
59.45 + <value name="family" field="name" style="attribute" usage="optional"/>
59.46 + <value name="bold" field="bold" style="attribute" usage="optional" default="Default"/>
59.47 + <value name="italic" field="italic" style="attribute" usage="optional" default="Default"/>
59.48 + <value name="size" field="size" style="attribute" usage="optional"/>
59.49 + <value name="sizeOffset" field="sizeOffset" style="attribute" usage="optional" default="1"/>
59.50 + <value name="uiDefaultParentName" field="uiDefaultParentName" style="attribute" usage="optional"/>
59.51 + </mapping>
59.52 + <mapping name="uiFont" class="org.jdesktop.synthdesigner.synthmodel.UIFont"
59.53 + extends="org.jdesktop.synthdesigner.synthmodel.UIDefault">
59.54 + <structure map-as="org.jdesktop.synthdesigner.synthmodel.UIDefault"/>
59.55 + <collection get-method="getFonts" set-method="setFonts" create-type="java.util.ArrayList"/>
59.56 + </mapping>
59.57 + <!-- == UI INSETS =========================================================================================== -->
59.58 + <mapping name="uiInsets" class="org.jdesktop.synthdesigner.synthmodel.UIInsets"
59.59 + extends="org.jdesktop.synthdesigner.synthmodel.UIDefault">
59.60 + <structure map-as="org.jdesktop.synthdesigner.synthmodel.UIDefault"/>
59.61 + <structure name="insets" get-method="getInsets" set-method="setInsets"
59.62 + marshaller="org.jdesktop.swingx.designer.jibxhelpers.InsetsMapper"
59.63 + unmarshaller="org.jdesktop.swingx.designer.jibxhelpers.InsetsMapper"/>
59.64 + </mapping>
59.65 + <!-- == UI PAINT =========================================================================================== -->
59.66 + <mapping name="matte" class="org.jdesktop.swingx.designer.paint.Matte" post-set="postSet">
59.67 + <value name="red" field="red" style="attribute"/>
59.68 + <value name="green" field="green" style="attribute"/>
59.69 + <value name="blue" field="blue" style="attribute"/>
59.70 + <value name="alpha" field="alpha" style="attribute"/>
59.71 + <value name="uiDefaultParentName" field="uiDefaultParentName" style="attribute" usage="optional"/>
59.72 + <value name="componentPropertyName" field="componentPropertyName" style="attribute" usage="optional"/>
59.73 + <value name="hueOffset" field="hueOffset" style="attribute"/>
59.74 + <value name="saturationOffset" field="saturationOffset" style="attribute"/>
59.75 + <value name="brightnessOffset" field="brightnessOffset" style="attribute"/>
59.76 + <value name="alphaOffset" field="alphaOffset" style="attribute"/>
59.77 + <value name="uiResource" field="uiResource" style="attribute" usage="optional" default="true"/>
59.78 + </mapping>
59.79 + <mapping class="org.jdesktop.synthdesigner.synthmodel.UIPaint" abstract="true" type-name="uipaint"
59.80 + extends="org.jdesktop.synthdesigner.synthmodel.UIDefault">
59.81 + <structure map-as="org.jdesktop.synthdesigner.synthmodel.UIDefault"/>
59.82 + <structure get-method="getPaint" set-method="setPaint"/>
59.83 + </mapping>
59.84 + <mapping name="uiPaint" class="org.jdesktop.synthdesigner.synthmodel.UIPaint"
59.85 + extends="org.jdesktop.synthdesigner.synthmodel.UIDefault">
59.86 + <structure map-as="uipaint"/>
59.87 + </mapping>
59.88 + <mapping name="uiColor" class="org.jdesktop.synthdesigner.synthmodel.UIColor"
59.89 + extends="org.jdesktop.synthdesigner.synthmodel.UIPaint">
59.90 + <structure map-as="uipaint"/>
59.91 + </mapping>
59.92 + <!-- == UI STYLE =========================================================================================== -->
59.93 + <mapping class="org.jdesktop.synthdesigner.synthmodel.UIStyle" abstract="true" post-set="postSet">
59.94 + <structure field="font" usage="optional"/>
59.95 + <structure name="textForeground" usage="optional">
59.96 + <structure field="textForeground" usage="optional"/>
59.97 + </structure>
59.98 + <structure name="textBackground" usage="optional">
59.99 + <structure field="textBackground" usage="optional"/>
59.100 + </structure>
59.101 + <structure name="background" usage="optional">
59.102 + <structure field="background" usage="optional"/>
59.103 + </structure>
59.104 + <value name="inherit-font" field="fontInherited" usage="optional" default="true"/>
59.105 + <value name="inherit-textForeground" field="textForegroundInherited" usage="optional" default="true"/>
59.106 + <value name="inherit-textBackground" field="textBackgroundInherited" usage="optional" default="true"/>
59.107 + <value name="inherit-background" field="backgroundInherited" usage="optional" default="true"/>
59.108 + <value name="hintAlphaInterpolation" field="hintAlphaInterpolation" usage="optional"/>
59.109 + <value name="hintAntialiasing" field="hintAntialiasing" usage="optional"/>
59.110 + <value name="hintColorRendering" field="hintColorRendering" usage="optional"/>
59.111 + <value name="hintDithering" field="hintDithering" usage="optional"/>
59.112 + <value name="hintFractionalMetrics" field="hintFractionalMetrics" usage="optional"/>
59.113 + <value name="hintInterpolation" field="hintInterpolation" usage="optional"/>
59.114 + <value name="hintRendering" field="hintRendering" usage="optional"/>
59.115 + <value name="hintStrokeControl" field="hintStrokeControl" usage="optional"/>
59.116 + <value name="hintTextAntialiasing" field="hintTextAntialiasing" usage="optional"/>
59.117 + <value name="cacheSettingsInherited" field="cacheSettingsInherited" usage="optional" default="true"/>
59.118 + <value name="cacheMode" field="cacheMode" usage="optional" default="FIXED_SIZES"/>
59.119 + <value name="maxHozCachedImgScaling" field="maxHozCachedImgScaling" usage="optional" default="1"/>
59.120 + <value name="maxVertCachedImgScaling" field="maxVertCachedImgScaling" usage="optional" default="1"/>
59.121 + <collection name="uiproperties" field="uiProperties" create-type="java.util.ArrayList">
59.122 + <structure marshaller="org.jdesktop.synthdesigner.synthmodel.jibxhelpers.UIPropertyMapper"
59.123 + unmarshaller="org.jdesktop.synthdesigner.synthmodel.jibxhelpers.UIPropertyMapper"/>
59.124 + </collection>
59.125 + </mapping>
59.126 + <!-- == UI STATE =========================================================================================== -->
59.127 + <mapping name="stateType" class="org.jdesktop.synthdesigner.synthmodel.UIStateType">
59.128 + <value name="key" field="key" style="attribute"/>
59.129 + <structure name="codeSnippet" usage="optional" test-method="hasCodeSnippet">
59.130 + <value field="codeSnippet" style="cdata" usage="optional"/>
59.131 + </structure>
59.132 + </mapping>
59.133 + <mapping name="state" class="org.jdesktop.synthdesigner.synthmodel.UIState" post-set="postSet" pre-set="preSet">
59.134 + <value name="stateKeys" field="stateKeys" style="attribute" get-method="getStateKeys" set-method="setStateKeys"
59.135 + serializer="org.jdesktop.synthdesigner.synthmodel.UIState.keysToString"
59.136 + deserializer="org.jdesktop.synthdesigner.synthmodel.UIState.stringToKeys"/>
59.137 + <value name="inverted" field="inverted" style="attribute" usage="optional"/>
59.138 + <structure name="style" field="style"/>
59.139 + <structure field="canvas"
59.140 + marshaller="org.jdesktop.swingx.designer.jibxhelpers.CanvasMapper"
59.141 + unmarshaller="org.jdesktop.swingx.designer.jibxhelpers.CanvasMapper"/>
59.142 + </mapping>
59.143 + <!-- == REGIONS =========================================================================================== -->
59.144 + <mapping class="org.jdesktop.synthdesigner.synthmodel.UIRegion" abstract="true"
59.145 + type-name="region" pre-set="preSet">
59.146 + <value name="name" field="name" style="attribute"/>
59.147 + <value name="ui" field="ui" style="attribute" usage="optional"/>
59.148 + <value name="subregion" field="subregion" style="attribute"/>
59.149 + <value name="key" field="key" style="attribute" usage="optional"/>
59.150 + <value name="title" field="title" style="attribute" usage="optional"/>
59.151 + <structure name="contentMargins" field="contentMargins"
59.152 + marshaller="org.jdesktop.swingx.designer.jibxhelpers.InsetsMapper"
59.153 + unmarshaller="org.jdesktop.swingx.designer.jibxhelpers.InsetsMapper"/>
59.154 + <structure name="style" field="style"/>
59.155 + <collection name="backgroundStates" field="backgroundStates" create-type="java.util.ArrayList"/>
59.156 + <collection name="foregroundStates" field="foregroundStates" create-type="java.util.ArrayList"/>
59.157 + <collection name="borderStates" field="borderStates" create-type="java.util.ArrayList"/>
59.158 + <collection name="regions" field="subRegions" create-type="java.util.ArrayList"/>
59.159 + </mapping>
59.160 + <mapping name="region" class="org.jdesktop.synthdesigner.synthmodel.UIRegion">
59.161 + <structure map-as="region"/>
59.162 + </mapping>
59.163 + <mapping name="uiIconRegion" class="org.jdesktop.synthdesigner.synthmodel.UIIconRegion"
59.164 + extends="org.jdesktop.synthdesigner.synthmodel.UIRegion">
59.165 + <structure map-as="region"/>
59.166 + <value name="basicKey" field="basicKey" style="attribute" usage="optional"/>
59.167 + </mapping>
59.168 + <mapping name="uiComponent" class="org.jdesktop.synthdesigner.synthmodel.UIComponent"
59.169 + extends="org.jdesktop.synthdesigner.synthmodel.UIRegion">
59.170 + <value name="opaque" field="opaque" style="attribute"/>
59.171 + <value name="componentName" field="componentName" style="attribute" usage="optional"/>
59.172 + <value name="type" field="type" style="attribute"/>
59.173 + <collection name="stateTypes" field="stateTypes" create-type="java.util.ArrayList"/>
59.174 + <structure map-as="region"/>
59.175 + </mapping>
59.176 + <!-- == BASE MODEL =========================================================================================== -->
59.177 + <mapping name="synthModel" class="org.jdesktop.synthdesigner.synthmodel.SynthModel" pre-set="preSet">
59.178 + <collection name="insets" field="insets" create-type="java.util.ArrayList"/>
59.179 + <collection name="colors" field="colors" create-type="java.util.ArrayList"/>
59.180 + <collection name="fonts" field="fonts" create-type="java.util.ArrayList"/>
59.181 + <structure name="style" field="globalStyle"/>
59.182 + <collection name="components" field="components" create-type="java.util.ArrayList"/>
59.183 + </mapping>
59.184 +</binding>
60.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
60.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIBorder.java Wed Apr 29 00:27:46 2009 -0700
60.3 @@ -0,0 +1,53 @@
60.4 +/*
60.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
60.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
60.7 + *
60.8 + * This code is free software; you can redistribute it and/or modify it
60.9 + * under the terms of the GNU General Public License version 2 only, as
60.10 + * published by the Free Software Foundation. Sun designates this
60.11 + * particular file as subject to the "Classpath" exception as provided
60.12 + * by Sun in the LICENSE file that accompanied this code.
60.13 + *
60.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
60.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
60.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
60.17 + * version 2 for more details (a copy is included in the LICENSE file that
60.18 + * accompanied this code).
60.19 + *
60.20 + * You should have received a copy of the GNU General Public License version
60.21 + * 2 along with this work; if not, write to the Free Software Foundation,
60.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
60.23 + *
60.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
60.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
60.26 + * have any questions.
60.27 + */
60.28 +package org.jdesktop.synthdesigner.synthmodel;
60.29 +
60.30 +import javax.swing.border.Border;
60.31 +
60.32 +/**
60.33 + * UIBorder
60.34 + *
60.35 + * @author Richard Bair
60.36 + * @author Jasper Potts
60.37 + */
60.38 +public class UIBorder extends UIDefault<Border> {
60.39 +
60.40 + public UIBorder() {
60.41 + }
60.42 +
60.43 + public UIBorder(String id, Border b) {
60.44 + super(id, b);
60.45 + }
60.46 +
60.47 + public Border getBorder() {
60.48 + return super.getValue();
60.49 + }
60.50 +
60.51 + public void setBorder(Border b) {
60.52 + Border old = getBorder();
60.53 + super.setValue(b);
60.54 + firePropertyChange("border", old, b);
60.55 + }
60.56 +}
61.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
61.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIColor.java Wed Apr 29 00:27:46 2009 -0700
61.3 @@ -0,0 +1,58 @@
61.4 +/*
61.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
61.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
61.7 + *
61.8 + * This code is free software; you can redistribute it and/or modify it
61.9 + * under the terms of the GNU General Public License version 2 only, as
61.10 + * published by the Free Software Foundation. Sun designates this
61.11 + * particular file as subject to the "Classpath" exception as provided
61.12 + * by Sun in the LICENSE file that accompanied this code.
61.13 + *
61.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
61.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
61.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
61.17 + * version 2 for more details (a copy is included in the LICENSE file that
61.18 + * accompanied this code).
61.19 + *
61.20 + * You should have received a copy of the GNU General Public License version
61.21 + * 2 along with this work; if not, write to the Free Software Foundation,
61.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
61.23 + *
61.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
61.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
61.26 + * have any questions.
61.27 + */
61.28 +package org.jdesktop.synthdesigner.synthmodel;
61.29 +
61.30 +import org.jdesktop.swingx.designer.paint.Matte;
61.31 +
61.32 +import javax.swing.UIDefaults;
61.33 +import java.awt.Color;
61.34 +
61.35 +/**
61.36 + * UIColor
61.37 + *
61.38 + * @author Richard Bair
61.39 + * @author Jasper Potts
61.40 + */
61.41 +public class UIColor extends UIPaint {
61.42 +
61.43 + public UIColor() {
61.44 + }
61.45 +
61.46 + public UIColor(String id, Matte value) {
61.47 + super(id, value);
61.48 + }
61.49 +
61.50 + public UIColor(String id, Color color, UIDefaults modelDefaults) {
61.51 + this(id, new Matte(color, modelDefaults));
61.52 + }
61.53 +
61.54 + public Matte getPaint() {
61.55 + return (Matte) super.getPaint();
61.56 + }
61.57 +
61.58 + public void setPaint(Matte c) {
61.59 + super.setPaint(c);
61.60 + }
61.61 +}
62.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
62.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIComponent.java Wed Apr 29 00:27:46 2009 -0700
62.3 @@ -0,0 +1,138 @@
62.4 +/*
62.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
62.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
62.7 + *
62.8 + * This code is free software; you can redistribute it and/or modify it
62.9 + * under the terms of the GNU General Public License version 2 only, as
62.10 + * published by the Free Software Foundation. Sun designates this
62.11 + * particular file as subject to the "Classpath" exception as provided
62.12 + * by Sun in the LICENSE file that accompanied this code.
62.13 + *
62.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
62.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
62.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
62.17 + * version 2 for more details (a copy is included in the LICENSE file that
62.18 + * accompanied this code).
62.19 + *
62.20 + * You should have received a copy of the GNU General Public License version
62.21 + * 2 along with this work; if not, write to the Free Software Foundation,
62.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
62.23 + *
62.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
62.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
62.26 + * have any questions.
62.27 + */
62.28 +package org.jdesktop.synthdesigner.synthmodel;
62.29 +
62.30 +import org.jdesktop.swingx.designer.utils.HasUIDefaults;
62.31 +
62.32 +import java.util.List;
62.33 +import java.util.ArrayList;
62.34 +
62.35 +/**
62.36 + * UIComponent - model node that represents the designs for a single swing component
62.37 + *
62.38 + * @author Richard Bair
62.39 + * @author Jasper Potts
62.40 + */
62.41 +public class UIComponent extends UIRegion implements HasUIDefaults {
62.42 +
62.43 + /** The classname of the swing component that this UIComponent represents */
62.44 + private String type;
62.45 + /** The name of the component if its a named component or null if its a generic component */
62.46 + private String componentName = null;
62.47 + /** If this components is opaque which means that when it is painted all of its bounds are filled */
62.48 + private boolean opaque = false;
62.49 + /**
62.50 + * A list of state types that are available to this region and sub regions of this component but not subcomponents
62.51 + * of this component. If this list is empty then the standard synth set of state types are assumed.
62.52 + */
62.53 + private List<UIStateType> stateTypes;
62.54 +
62.55 + // =================================================================================================================
62.56 + // Contructors
62.57 +
62.58 + /** no-args contructor for JIBX */
62.59 + protected UIComponent() {
62.60 + super();
62.61 + // create new observable list for state types so we get events for when the model changes
62.62 + stateTypes = new ArrayList<UIStateType>();
62.63 + }
62.64 +
62.65 + public UIComponent(String name, String type, String ui, UIRegion... subRegions) {
62.66 + super(name, ui, subRegions);
62.67 + this.type = type;
62.68 + for (UIRegion r : subRegions) {
62.69 + r.setRegion(this);
62.70 + }
62.71 + // create new observable list for state types so we get events for when the model changes
62.72 + stateTypes = new ArrayList<UIStateType>();
62.73 + }
62.74 +
62.75 + // =================================================================================================================
62.76 + // Bean Methods
62.77 +
62.78 + public String getComponentName() {
62.79 + return componentName;
62.80 + }
62.81 +
62.82 + public void setComponentName(String componentName) {
62.83 + String old = getComponentName();
62.84 + this.componentName = componentName;
62.85 + firePropertyChange("componentName", old, getComponentName());
62.86 + }
62.87 +
62.88 + public boolean isOpaque() {
62.89 + return opaque;
62.90 + }
62.91 +
62.92 + public void setOpaque(boolean opaque) {
62.93 + boolean old = isOpaque();
62.94 + this.opaque = opaque;
62.95 + firePropertyChange("opaque", old, isOpaque());
62.96 + }
62.97 +
62.98 + public String getType() {
62.99 + return type;
62.100 + }
62.101 +
62.102 + public void setType(String type) {
62.103 + String old = getType();
62.104 + this.type = type;
62.105 + firePropertyChange("type", old, getType());
62.106 + }
62.107 +
62.108 + /**
62.109 + * Get the list of state types that are available to this region and sub regions of this component but not
62.110 + * subcomponents of this component. If this list is empty then the standard synth set of state types are assumed.
62.111 + *
62.112 + * @return List of available state types
62.113 + */
62.114 + public List<UIStateType> getStateTypes() {
62.115 + return stateTypes;
62.116 + }
62.117 +
62.118 + @Override public String getKey() {
62.119 + if (key == null || "".equals(key)) {
62.120 + if (componentName == null || "".equals(componentName)) {
62.121 + return getName();
62.122 + } else {
62.123 + return "\"" + componentName + "\"";
62.124 + }
62.125 + } else {
62.126 + return key;
62.127 + }
62.128 + }
62.129 +
62.130 + @Override public String getTitle() {
62.131 + if (title == null || "".equals(title)) {
62.132 + if (componentName == null || "".equals(componentName)) {
62.133 + return getName();
62.134 + } else {
62.135 + return componentName;
62.136 + }
62.137 + } else {
62.138 + return title;
62.139 + }
62.140 + }
62.141 +}
63.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
63.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIDefault.java Wed Apr 29 00:27:46 2009 -0700
63.3 @@ -0,0 +1,116 @@
63.4 +/*
63.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
63.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
63.7 + *
63.8 + * This code is free software; you can redistribute it and/or modify it
63.9 + * under the terms of the GNU General Public License version 2 only, as
63.10 + * published by the Free Software Foundation. Sun designates this
63.11 + * particular file as subject to the "Classpath" exception as provided
63.12 + * by Sun in the LICENSE file that accompanied this code.
63.13 + *
63.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
63.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
63.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
63.17 + * version 2 for more details (a copy is included in the LICENSE file that
63.18 + * accompanied this code).
63.19 + *
63.20 + * You should have received a copy of the GNU General Public License version
63.21 + * 2 along with this work; if not, write to the Free Software Foundation,
63.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
63.23 + *
63.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
63.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
63.26 + * have any questions.
63.27 + */
63.28 +package org.jdesktop.synthdesigner.synthmodel;
63.29 +
63.30 +import org.jdesktop.beans.AbstractBean;
63.31 +import org.jdesktop.swingx.designer.utils.HasUIDefaults;
63.32 +import org.jibx.runtime.IUnmarshallingContext;
63.33 +
63.34 +import javax.swing.UIDefaults;
63.35 +
63.36 +/**
63.37 + * Represents an entry in the UI defaults table.
63.38 + *
63.39 + * @author Richard Bair
63.40 + * @author Jasper Potts
63.41 + */
63.42 +public class UIDefault<T> extends AbstractBean implements HasUIDefaults {
63.43 + private String name;
63.44 + private T value;
63.45 + /**
63.46 + * This is a local UIDefaults that contains all the UIDefaults in the synth model. It is kept uptodate by the
63.47 + * indervidual UIDefaults nodes
63.48 + */
63.49 + private transient UIDefaults modelDefaults = null;
63.50 +
63.51 + public UIDefault() {
63.52 + }
63.53 +
63.54 + public UIDefault(String name, T value) {
63.55 + this.name = name;
63.56 + this.value = value;
63.57 + }
63.58 +
63.59 + public UIDefault(String name, T value, UIDefaults modelDefaults) {
63.60 + this.name = name;
63.61 + this.value = value;
63.62 + this.modelDefaults = modelDefaults;
63.63 + }
63.64 +
63.65 + // =================================================================================================================
63.66 + // JIBX Methods
63.67 +
63.68 + /**
63.69 + * Called by JIBX after all fields have been set
63.70 + *
63.71 + * @param context The JIBX Unmarshalling Context
63.72 + */
63.73 + private void postSet(IUnmarshallingContext context) {
63.74 + // walk up till we get synth model
63.75 + for (int i = 0; i < context.getStackDepth(); i++) {
63.76 + if (context.getStackObject(i) instanceof HasUIDefaults) {
63.77 + modelDefaults = ((HasUIDefaults) context.getStackObject(i)).getUiDefaults();
63.78 + if (modelDefaults != null) break;
63.79 + }
63.80 + }
63.81 + }
63.82 +
63.83 + // =================================================================================================================
63.84 + // Bean Methods
63.85 +
63.86 + /**
63.87 + * Get the local UIDefaults that contains all the UIDefaults in the synth model. It is kept uptodate by the
63.88 + * indervidual UIDefaults nodes
63.89 + *
63.90 + * @return The UIDefaults for the synth model
63.91 + */
63.92 + public UIDefaults getUiDefaults() {
63.93 + return modelDefaults;
63.94 + }
63.95 +
63.96 + public void setValue(T t) {
63.97 + T old = this.value;
63.98 + this.value = t;
63.99 + firePropertyChange("value", old, getValue());
63.100 + }
63.101 +
63.102 + public T getValue() {
63.103 + return value;
63.104 + }
63.105 +
63.106 + public final String getName() {
63.107 + return name;
63.108 + }
63.109 +
63.110 + public void setName(String name) {
63.111 + String old = this.name;
63.112 + firePropertyChange("name", old, name);
63.113 + this.name = name;
63.114 + // update model defaults
63.115 + if (old != null) modelDefaults.remove(old);
63.116 + modelDefaults.put(getName(), getValue());
63.117 + }
63.118 +
63.119 +}
64.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
64.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIDimension.java Wed Apr 29 00:27:46 2009 -0700
64.3 @@ -0,0 +1,48 @@
64.4 +/*
64.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
64.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
64.7 + *
64.8 + * This code is free software; you can redistribute it and/or modify it
64.9 + * under the terms of the GNU General Public License version 2 only, as
64.10 + * published by the Free Software Foundation. Sun designates this
64.11 + * particular file as subject to the "Classpath" exception as provided
64.12 + * by Sun in the LICENSE file that accompanied this code.
64.13 + *
64.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
64.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
64.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
64.17 + * version 2 for more details (a copy is included in the LICENSE file that
64.18 + * accompanied this code).
64.19 + *
64.20 + * You should have received a copy of the GNU General Public License version
64.21 + * 2 along with this work; if not, write to the Free Software Foundation,
64.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
64.23 + *
64.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
64.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
64.26 + * have any questions.
64.27 + */
64.28 +package org.jdesktop.synthdesigner.synthmodel;
64.29 +
64.30 +import java.awt.Dimension;
64.31 +
64.32 +/**
64.33 + * UIDimension
64.34 + *
64.35 + * @author Richard Bair
64.36 + * @author Jasper Potts
64.37 + */
64.38 +public class UIDimension extends UIDefault<Dimension> {
64.39 + public UIDimension() {
64.40 + }
64.41 +
64.42 + public Dimension getDimension() {
64.43 + return super.getValue();
64.44 + }
64.45 +
64.46 + public void setDimension(Dimension d) {
64.47 + Dimension old = getDimension();
64.48 + super.setValue(d);
64.49 + firePropertyChange("dimension", old, d);
64.50 + }
64.51 +}
65.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
65.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIFont.java Wed Apr 29 00:27:46 2009 -0700
65.3 @@ -0,0 +1,79 @@
65.4 +/*
65.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
65.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
65.7 + *
65.8 + * This code is free software; you can redistribute it and/or modify it
65.9 + * under the terms of the GNU General Public License version 2 only, as
65.10 + * published by the Free Software Foundation. Sun designates this
65.11 + * particular file as subject to the "Classpath" exception as provided
65.12 + * by Sun in the LICENSE file that accompanied this code.
65.13 + *
65.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
65.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
65.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
65.17 + * version 2 for more details (a copy is included in the LICENSE file that
65.18 + * accompanied this code).
65.19 + *
65.20 + * You should have received a copy of the GNU General Public License version
65.21 + * 2 along with this work; if not, write to the Free Software Foundation,
65.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
65.23 + *
65.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
65.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
65.26 + * have any questions.
65.27 + */
65.28 +package org.jdesktop.synthdesigner.synthmodel;
65.29 +
65.30 +import java.awt.Font;
65.31 +import org.jdesktop.swingx.designer.font.Typeface;
65.32 +import java.util.Arrays;
65.33 +import java.util.List;
65.34 +import java.util.ArrayList;
65.35 +import javax.swing.UIDefaults;
65.36 +
65.37 +/**
65.38 + * Represents a single font entry in the UIDefaults table. Each UIFont takes a
65.39 + * list of Typefaces. These typefaces are listed by order of preference. Thus,
65.40 + * when putting a font into UIDefaults, the code can check whether each font
65.41 + * exists, and when it finds the first font that does, insert it.
65.42 + *
65.43 + * @author Richard Bair
65.44 + * @author Jasper Potts
65.45 + */
65.46 +public class UIFont extends UIDefault<List<Typeface>> implements Cloneable {
65.47 +
65.48 + private void updateUIDefaults() {
65.49 + if (getUiDefaults() != null) {
65.50 + for (Typeface t : getFonts()) {
65.51 + if (t.isFontSupported()) {
65.52 + getUiDefaults().put(getName(), t.getFont());
65.53 + return;
65.54 + }
65.55 + }
65.56 + }
65.57 +
65.58 + //TODO must not have found any. Default to the Default platform font
65.59 + getUiDefaults().put(getName(), new Font("Arial", Font.PLAIN, 12));
65.60 + }
65.61 +
65.62 + public UIFont() {
65.63 + setValue(new ArrayList<Typeface>());
65.64 + }
65.65 +
65.66 + public UIFont(String id, List<Typeface> values, UIDefaults defaults) {
65.67 + super(id, values, defaults);
65.68 + updateUIDefaults();
65.69 + }
65.70 +
65.71 + public UIFont(String id, Font font, UIDefaults modelDefaults) {
65.72 + this(id, Arrays.asList(new Typeface(font, modelDefaults)), modelDefaults);
65.73 + }
65.74 +
65.75 + public List<Typeface> getFonts() {
65.76 + return super.getValue();
65.77 + }
65.78 +
65.79 + private void setFonts(List<Typeface> values) {
65.80 + super.setValue(values);
65.81 + }
65.82 +}
66.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
66.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIIcon.java Wed Apr 29 00:27:46 2009 -0700
66.3 @@ -0,0 +1,49 @@
66.4 +/*
66.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
66.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
66.7 + *
66.8 + * This code is free software; you can redistribute it and/or modify it
66.9 + * under the terms of the GNU General Public License version 2 only, as
66.10 + * published by the Free Software Foundation. Sun designates this
66.11 + * particular file as subject to the "Classpath" exception as provided
66.12 + * by Sun in the LICENSE file that accompanied this code.
66.13 + *
66.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
66.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
66.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
66.17 + * version 2 for more details (a copy is included in the LICENSE file that
66.18 + * accompanied this code).
66.19 + *
66.20 + * You should have received a copy of the GNU General Public License version
66.21 + * 2 along with this work; if not, write to the Free Software Foundation,
66.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
66.23 + *
66.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
66.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
66.26 + * have any questions.
66.27 + */
66.28 +package org.jdesktop.synthdesigner.synthmodel;
66.29 +
66.30 +import javax.swing.Icon;
66.31 +
66.32 +/**
66.33 + * UIIcon
66.34 + *
66.35 + * @author Richard Bair
66.36 + * @author Jasper Potts
66.37 + */
66.38 +public class UIIcon extends UIDefault<Icon> {
66.39 +
66.40 + public UIIcon() {
66.41 + }
66.42 +
66.43 + public Icon getIcon() {
66.44 + return super.getValue();
66.45 + }
66.46 +
66.47 + public void setIcon(Icon i) {
66.48 + Icon old = getIcon();
66.49 + super.setValue(i);
66.50 + firePropertyChange("icon", old, i);
66.51 + }
66.52 +}
67.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
67.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIIconRegion.java Wed Apr 29 00:27:46 2009 -0700
67.3 @@ -0,0 +1,55 @@
67.4 +/*
67.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
67.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
67.7 + *
67.8 + * This code is free software; you can redistribute it and/or modify it
67.9 + * under the terms of the GNU General Public License version 2 only, as
67.10 + * published by the Free Software Foundation. Sun designates this
67.11 + * particular file as subject to the "Classpath" exception as provided
67.12 + * by Sun in the LICENSE file that accompanied this code.
67.13 + *
67.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
67.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
67.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
67.17 + * version 2 for more details (a copy is included in the LICENSE file that
67.18 + * accompanied this code).
67.19 + *
67.20 + * You should have received a copy of the GNU General Public License version
67.21 + * 2 along with this work; if not, write to the Free Software Foundation,
67.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
67.23 + *
67.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
67.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
67.26 + * have any questions.
67.27 + */
67.28 +package org.jdesktop.synthdesigner.synthmodel;
67.29 +
67.30 +/**
67.31 + * A UIRegion subclass which is used for generating icons. For example, JRadioButton and JCheckBox represent themselves
67.32 + * mainly via their icons. However, from the designers perspective, the main design isn't an "icon", but just a region
67.33 + * on the button.
67.34 + * <p/>
67.35 + * That type of region is represented by a UIIconRegion. UIIconRegion contains a string which references the UIDefault
67.36 + * value associated with this icon. For example, RadioButton.icon.
67.37 + *
67.38 + * @author Richard Bair
67.39 + * @author Jasper Potts
67.40 + */
67.41 +public class UIIconRegion extends UIRegion {
67.42 + /** The UiDefaults key which this icon should be stored for basic LaF to find it. This is absolute */
67.43 + private String basicKey = null;
67.44 +
67.45 + public UIIconRegion() {
67.46 + super();
67.47 + }
67.48 +
67.49 + public String getBasicKey() {
67.50 + return basicKey;
67.51 + }
67.52 +
67.53 + public void setBasicKey(String basicKey) {
67.54 + String old = getBasicKey();
67.55 + this.basicKey = basicKey;
67.56 + firePropertyChange("basicKey",old,getBasicKey());
67.57 + }
67.58 +}
68.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
68.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIInsets.java Wed Apr 29 00:27:46 2009 -0700
68.3 @@ -0,0 +1,62 @@
68.4 +/*
68.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
68.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
68.7 + *
68.8 + * This code is free software; you can redistribute it and/or modify it
68.9 + * under the terms of the GNU General Public License version 2 only, as
68.10 + * published by the Free Software Foundation. Sun designates this
68.11 + * particular file as subject to the "Classpath" exception as provided
68.12 + * by Sun in the LICENSE file that accompanied this code.
68.13 + *
68.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
68.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
68.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
68.17 + * version 2 for more details (a copy is included in the LICENSE file that
68.18 + * accompanied this code).
68.19 + *
68.20 + * You should have received a copy of the GNU General Public License version
68.21 + * 2 along with this work; if not, write to the Free Software Foundation,
68.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
68.23 + *
68.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
68.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
68.26 + * have any questions.
68.27 + */
68.28 +package org.jdesktop.synthdesigner.synthmodel;
68.29 +
68.30 +import java.awt.Insets;
68.31 +
68.32 +/**
68.33 + * UIInsets
68.34 + *
68.35 + * @author Richard Bair
68.36 + * @author Jasper Potts
68.37 + */
68.38 +public class UIInsets extends UIDefault<Insets> {
68.39 +
68.40 + public UIInsets() {
68.41 + }
68.42 +
68.43 + public UIInsets(String id, Insets value) {
68.44 + super(id, value);
68.45 + }
68.46 +
68.47 + public Insets getInsets() {
68.48 + return super.getValue();
68.49 + }
68.50 +
68.51 + public void setInsets(Insets i) {
68.52 + Insets old = getInsets();
68.53 + super.setValue(i);
68.54 + firePropertyChange("insets", old, i);
68.55 + // update model defaults
68.56 + getUiDefaults().put(getName(), i);
68.57 + }
68.58 +
68.59 +
68.60 + public String toString() {
68.61 + return "UiInset(" + getName() + ")" +
68.62 + ((getInsets() == null) ? " NONE" : "(" + getInsets().top + "," + getInsets().left + "," +
68.63 + getInsets().bottom + "," + getInsets().right + ")");
68.64 + }
68.65 +}
69.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
69.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIPaint.java Wed Apr 29 00:27:46 2009 -0700
69.3 @@ -0,0 +1,84 @@
69.4 +/*
69.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
69.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
69.7 + *
69.8 + * This code is free software; you can redistribute it and/or modify it
69.9 + * under the terms of the GNU General Public License version 2 only, as
69.10 + * published by the Free Software Foundation. Sun designates this
69.11 + * particular file as subject to the "Classpath" exception as provided
69.12 + * by Sun in the LICENSE file that accompanied this code.
69.13 + *
69.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
69.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
69.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
69.17 + * version 2 for more details (a copy is included in the LICENSE file that
69.18 + * accompanied this code).
69.19 + *
69.20 + * You should have received a copy of the GNU General Public License version
69.21 + * 2 along with this work; if not, write to the Free Software Foundation,
69.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
69.23 + *
69.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
69.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
69.26 + * have any questions.
69.27 + */
69.28 +package org.jdesktop.synthdesigner.synthmodel;
69.29 +
69.30 +import org.jdesktop.swingx.designer.paint.Matte;
69.31 +import org.jdesktop.swingx.designer.paint.PaintModel;
69.32 +
69.33 +import java.beans.PropertyChangeEvent;
69.34 +import java.beans.PropertyChangeListener;
69.35 +
69.36 +/**
69.37 + * UIPaint
69.38 + *
69.39 + * @author Richard Bair
69.40 + * @author Jasper Potts
69.41 + */
69.42 +public class UIPaint extends UIDefault<PaintModel> {
69.43 +
69.44 + /** Listener to keep model UiDefaults up to date for this UiPaint */
69.45 + private PropertyChangeListener matteListener = new PropertyChangeListener() {
69.46 + public void propertyChange(PropertyChangeEvent evt) {
69.47 + PaintModel paintModel = getValue();
69.48 + if (paintModel instanceof Matte) {
69.49 + getUiDefaults().put(getName(), ((Matte) paintModel).getColor());
69.50 + }
69.51 + // propogate the paint change up as PaintModel is a mutable object
69.52 + if (evt.getPropertyName().equals("paint")) {
69.53 + firePropertyChange("paint", null, getPaint());
69.54 + firePropertyChange("value", null, getPaint());
69.55 + }
69.56 + }
69.57 + };
69.58 +
69.59 + public UIPaint() {}
69.60 +
69.61 + public UIPaint(String id, PaintModel value) {
69.62 + super(id, value, (value instanceof Matte) ? ((Matte) value).getUiDefaults() : null);
69.63 + // update model defaults
69.64 + if (value instanceof Matte) {
69.65 + Matte matte = (Matte) value;
69.66 + if (getUiDefaults() != null) getUiDefaults().put(getName(), matte.getColor());
69.67 + matte.addPropertyChangeListener(matteListener);
69.68 + }
69.69 + }
69.70 +
69.71 + public PaintModel getPaint() {
69.72 + return super.getValue();
69.73 + }
69.74 +
69.75 + public void setPaint(PaintModel c) {
69.76 + PaintModel old = getPaint();
69.77 + if (old instanceof Matte) old.removePropertyChangeListener(matteListener);
69.78 + super.setValue(c);
69.79 + firePropertyChange("paint", old, c);
69.80 + // update model defaults
69.81 + if (c instanceof Matte) {
69.82 + Matte matte = (Matte) c;
69.83 + getUiDefaults().put(getName(), matte.getColor());
69.84 + matte.addPropertyChangeListener(matteListener);
69.85 + }
69.86 + }
69.87 +}
70.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
70.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIProperty.java Wed Apr 29 00:27:46 2009 -0700
70.3 @@ -0,0 +1,85 @@
70.4 +/*
70.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
70.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
70.7 + *
70.8 + * This code is free software; you can redistribute it and/or modify it
70.9 + * under the terms of the GNU General Public License version 2 only, as
70.10 + * published by the Free Software Foundation. Sun designates this
70.11 + * particular file as subject to the "Classpath" exception as provided
70.12 + * by Sun in the LICENSE file that accompanied this code.
70.13 + *
70.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
70.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
70.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
70.17 + * version 2 for more details (a copy is included in the LICENSE file that
70.18 + * accompanied this code).
70.19 + *
70.20 + * You should have received a copy of the GNU General Public License version
70.21 + * 2 along with this work; if not, write to the Free Software Foundation,
70.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
70.23 + *
70.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
70.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
70.26 + * have any questions.
70.27 + */
70.28 +package org.jdesktop.synthdesigner.synthmodel;
70.29 +
70.30 +import org.jdesktop.beans.AbstractBean;
70.31 +
70.32 +/**
70.33 + * UIProperty
70.34 + *
70.35 + * @author Richard Bair
70.36 + * @author Jasper Potts
70.37 + */
70.38 +public class UIProperty extends AbstractBean {
70.39 + public static enum PropertyType {
70.40 + BOOLEAN, INT, FLOAT, DOUBLE, STRING, FONT, COLOR, INSETS, DIMENSION, BORDER
70.41 + }
70.42 +
70.43 + private String name;
70.44 + private PropertyType type;
70.45 + private Object value;
70.46 +
70.47 + protected UIProperty() {
70.48 + }
70.49 +
70.50 + public UIProperty(String name, PropertyType type, Object value) {
70.51 + this.name = name;
70.52 + this.type = type;
70.53 + this.value = value;
70.54 + }
70.55 +
70.56 + // =================================================================================================================
70.57 + // Bean Methods
70.58 +
70.59 + public String getName() {
70.60 + return name;
70.61 + }
70.62 +
70.63 + public void setName(String name) {
70.64 + String old = getName();
70.65 + this.name = name;
70.66 + firePropertyChange("name", old, getName());
70.67 + }
70.68 +
70.69 + public PropertyType getType() {
70.70 + return type;
70.71 + }
70.72 +
70.73 + public void setType(PropertyType type) {
70.74 + PropertyType old = getType();
70.75 + this.type = type;
70.76 + firePropertyChange("type", old, getType());
70.77 + }
70.78 +
70.79 + public Object getValue() {
70.80 + return value;
70.81 + }
70.82 +
70.83 + public void setValue(Object value) {
70.84 + Object old = getValue();
70.85 + this.value = value;
70.86 + firePropertyChange("value", old, getValue());
70.87 + }
70.88 +}
71.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
71.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIRegion.java Wed Apr 29 00:27:46 2009 -0700
71.3 @@ -0,0 +1,253 @@
71.4 +/*
71.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
71.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
71.7 + *
71.8 + * This code is free software; you can redistribute it and/or modify it
71.9 + * under the terms of the GNU General Public License version 2 only, as
71.10 + * published by the Free Software Foundation. Sun designates this
71.11 + * particular file as subject to the "Classpath" exception as provided
71.12 + * by Sun in the LICENSE file that accompanied this code.
71.13 + *
71.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
71.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
71.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
71.17 + * version 2 for more details (a copy is included in the LICENSE file that
71.18 + * accompanied this code).
71.19 + *
71.20 + * You should have received a copy of the GNU General Public License version
71.21 + * 2 along with this work; if not, write to the Free Software Foundation,
71.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
71.23 + *
71.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
71.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
71.26 + * have any questions.
71.27 + */
71.28 +package org.jdesktop.synthdesigner.synthmodel;
71.29 +
71.30 +import org.jdesktop.beans.AbstractBean;
71.31 +import org.jdesktop.swingx.designer.utils.HasUIDefaults;
71.32 +import org.jibx.runtime.IUnmarshallingContext;
71.33 +
71.34 +import javax.swing.UIDefaults;
71.35 +import java.awt.Insets;
71.36 +import java.beans.PropertyChangeEvent;
71.37 +import java.beans.PropertyChangeListener;
71.38 +import java.util.List;
71.39 +import java.util.ArrayList;
71.40 +
71.41 +/**
71.42 + * Represents a "Region" in synth, which also includes entire components.
71.43 + *
71.44 + * @author Richard Bair
71.45 + * @author Jasper Potts
71.46 + */
71.47 +public class UIRegion extends AbstractBean implements HasUIDefaults, HasUIStyle {
71.48 + private String name;//the code-wise name of the region
71.49 + protected String key; //the UIdefaults key for this region
71.50 + protected String title; //the user friendly name/title of this region
71.51 + /** List of background states */
71.52 + private List<UIState> backgroundStates;
71.53 + /** List of foreground states */
71.54 + private List<UIState> foregroundStates;
71.55 + /** List of border states */
71.56 + private List<UIState> borderStates;
71.57 + private UIStyle style = new UIStyle();
71.58 + protected Insets contentMargins = new Insets(0, 0, 0, 0);
71.59 + /** Sub regions, if any */
71.60 + private List<UIRegion> subRegions;
71.61 +
71.62 + //together with name, these two fields allow me to reconstruct, in
71.63 + //code, a synth Region, including a custom Region, if you make one.
71.64 + private String ui;
71.65 + private boolean subregion;
71.66 + /**
71.67 + * This is a local UIDefaults that contains all the UIDefaults in the synth model. It is kept uptodate by the
71.68 + * indervidual UIDefaults nodes
71.69 + */
71.70 + private transient UIDefaults modelDefaults = null;
71.71 +
71.72 + private UIRegion region; //the region that this region belongs to
71.73 +
71.74 + // =================================================================================================================
71.75 + // Constructors
71.76 +
71.77 + /** no-args contructor for JIBX */
71.78 + protected UIRegion() {
71.79 + subRegions = new ArrayList<UIRegion>();
71.80 + backgroundStates = new ArrayList<UIState>();
71.81 + foregroundStates = new ArrayList<UIState>();
71.82 + borderStates = new ArrayList<UIState>();
71.83 + style.addPropertyChangeListener(new PropertyChangeListener() {
71.84 + public void propertyChange(PropertyChangeEvent evt) {
71.85 + firePropertyChange("style." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
71.86 + }
71.87 + });
71.88 + }
71.89 +
71.90 + public UIRegion(String name, UIRegion... subRegions) {
71.91 + this(name, null, true, subRegions);
71.92 + }
71.93 +
71.94 + public UIRegion(String name, String ui, UIRegion... subRegions) {
71.95 + this(name, ui, false, subRegions);
71.96 + }
71.97 +
71.98 + public UIRegion(String name, String ui, boolean subregion, UIRegion... subRegions) {
71.99 + this();
71.100 + this.name = name;
71.101 + this.ui = ui;
71.102 + this.subregion = subregion;
71.103 + if (subRegions != null) {
71.104 + for (UIRegion r : subRegions) {
71.105 + if (r != null) {
71.106 + this.subRegions.add(r);
71.107 + r.getStyle().setParentStyle(getStyle());
71.108 + }
71.109 + }
71.110 + }
71.111 + }
71.112 +
71.113 + // =================================================================================================================
71.114 + // JIBX Methods
71.115 +
71.116 + /**
71.117 + * Called by JIBX after all fields have been set
71.118 + *
71.119 + * @param context The JIBX Unmarshalling Context
71.120 + */
71.121 + private void preSet(IUnmarshallingContext context) {
71.122 + // walk up till we get synth model
71.123 + for (int i = 0; i < context.getStackDepth(); i++) {
71.124 + if (context.getStackObject(i) instanceof HasUIDefaults) {
71.125 + modelDefaults = ((HasUIDefaults) context.getStackObject(i)).getUiDefaults();
71.126 + if (modelDefaults != null) break;
71.127 + }
71.128 + }
71.129 + for (int i = 0; i < context.getStackDepth(); i++) {
71.130 + if (context.getStackObject(i) instanceof UIRegion && context.getStackObject(i) != this) {
71.131 + region = (UIRegion) context.getStackObject(i);
71.132 + break;
71.133 + }
71.134 + }
71.135 + }
71.136 +
71.137 + // =================================================================================================================
71.138 + // Bean Methods
71.139 +
71.140 + public Insets getContentMargins() {
71.141 + return contentMargins;
71.142 + }
71.143 +
71.144 + public void setContentMargins(Insets contentMargins) {
71.145 + Insets old = getContentMargins();
71.146 + this.contentMargins = contentMargins;
71.147 + firePropertyChange("contentMargins", old, getContentMargins());
71.148 + }
71.149 +
71.150 + void setRegion(UIRegion r) {
71.151 + this.region = r;
71.152 + }
71.153 +
71.154 + public UIRegion getRegion() {
71.155 + return region;
71.156 + }
71.157 +
71.158 + /**
71.159 + * Get the local UIDefaults that contains all the UIDefaults in the synth model. It is kept uptodate by the
71.160 + * indervidual UIDefaults nodes
71.161 + *
71.162 + * @return The UIDefaults for the synth model
71.163 + */
71.164 + public UIDefaults getUiDefaults() {
71.165 + return modelDefaults;
71.166 + }
71.167 +
71.168 + public String getName() {
71.169 + return name;
71.170 + }
71.171 +
71.172 + public final UIRegion[] getSubRegions() {
71.173 + return subRegions.toArray(new UIRegion[0]);
71.174 + }
71.175 +
71.176 + public final UIState[] getBackgroundStates() {
71.177 + return backgroundStates.toArray(new UIState[0]);
71.178 + }
71.179 +
71.180 + public final UIState[] getForegroundStates() {
71.181 + return foregroundStates.toArray(new UIState[0]);
71.182 + }
71.183 +
71.184 + public final UIState[] getBorderStates() {
71.185 + return borderStates.toArray(new UIState[0]);
71.186 + }
71.187 +
71.188 + public UIStyle getStyle() {
71.189 + return style;
71.190 + }
71.191 +
71.192 + public final boolean isSubRegion() {
71.193 + return subregion;
71.194 + }
71.195 +
71.196 + public final String getUi() {
71.197 + return ui;
71.198 + }
71.199 +
71.200 + public void addBackgroundState(UIState state) {
71.201 + // check if we already have that state
71.202 + for (UIState uiState : backgroundStates) {
71.203 + if (uiState.getName().equals(state.getName())) return;
71.204 + }
71.205 + backgroundStates.add(state);
71.206 + state.setRegion(this);
71.207 + firePropertyChange("backgroundStates", null, backgroundStates);
71.208 + }
71.209 +
71.210 + public void removeBackgroundState(UIState state) {
71.211 + if (backgroundStates.remove(state)) {
71.212 + firePropertyChange("backgroundStates", null, backgroundStates);
71.213 + }
71.214 + }
71.215 +
71.216 + public void addForegroundState(UIState state) {
71.217 + // check if we already have that state
71.218 + for (UIState uiState : foregroundStates) {
71.219 + if (uiState.getName().equals(state.getName())) return;
71.220 + }
71.221 + foregroundStates.add(state);
71.222 + state.setRegion(this);
71.223 + firePropertyChange("foregroundStates", null, foregroundStates);
71.224 + }
71.225 +
71.226 + public void removeForegroundState(UIState state) {
71.227 + if (foregroundStates.remove(state)) {
71.228 + firePropertyChange("foregroundStates", null, foregroundStates);
71.229 + }
71.230 + }
71.231 +
71.232 + public void addBorderState(UIState state) {
71.233 + // check if we already have that state
71.234 + for (UIState uiState : borderStates) {
71.235 + if (uiState.getName().equals(state.getName())) return;
71.236 + }
71.237 + borderStates.add(state);
71.238 + state.setRegion(this);
71.239 + firePropertyChange("borderStates", null, borderStates);
71.240 + }
71.241 +
71.242 + public void removeBorderState(UIState state) {
71.243 + if (borderStates.remove(state)) {
71.244 + firePropertyChange("borderStates", null, borderStates);
71.245 + }
71.246 + }
71.247 +
71.248 +
71.249 + public String getKey() {
71.250 + return key == null || "".equals(key) ? name : key;
71.251 + }
71.252 +
71.253 + public String getTitle() {
71.254 + return title == null || "".equals(title) ? name : title;
71.255 + }
71.256 +}
72.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
72.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIState.java Wed Apr 29 00:27:46 2009 -0700
72.3 @@ -0,0 +1,298 @@
72.4 +/*
72.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
72.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
72.7 + *
72.8 + * This code is free software; you can redistribute it and/or modify it
72.9 + * under the terms of the GNU General Public License version 2 only, as
72.10 + * published by the Free Software Foundation. Sun designates this
72.11 + * particular file as subject to the "Classpath" exception as provided
72.12 + * by Sun in the LICENSE file that accompanied this code.
72.13 + *
72.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
72.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
72.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
72.17 + * version 2 for more details (a copy is included in the LICENSE file that
72.18 + * accompanied this code).
72.19 + *
72.20 + * You should have received a copy of the GNU General Public License version
72.21 + * 2 along with this work; if not, write to the Free Software Foundation,
72.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
72.23 + *
72.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
72.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
72.26 + * have any questions.
72.27 + */
72.28 +package org.jdesktop.synthdesigner.synthmodel;
72.29 +
72.30 +import org.jdesktop.beans.AbstractBean;
72.31 +import org.jdesktop.swingx.designer.Canvas;
72.32 +import org.jdesktop.swingx.designer.utils.HasPath;
72.33 +import org.jdesktop.swingx.designer.utils.HasUIDefaults;
72.34 +import org.jibx.runtime.IUnmarshallingContext;
72.35 +
72.36 +import javax.swing.UIDefaults;
72.37 +import java.beans.PropertyChangeEvent;
72.38 +import java.beans.PropertyChangeListener;
72.39 +import java.io.File;
72.40 +import java.util.ArrayList;
72.41 +import java.util.Arrays;
72.42 +import java.util.Collections;
72.43 +import java.util.Iterator;
72.44 +import java.util.List;
72.45 +
72.46 +/**
72.47 + * Represents a State in the Synth LAF.
72.48 + *
72.49 + * @author Richard Bair
72.50 + * @author Jasper Potts
72.51 + */
72.52 +public class UIState extends AbstractBean implements HasUIStyle, HasPath {
72.53 +
72.54 + private List<String> stateKeys;
72.55 + private boolean inverted; //indicates whether to invert the meaning of the 9-square stretching insets
72.56 + /** A cached string representing the list of stateKeys deliminated with "+" */
72.57 + private String cachedName = null;
72.58 + private Canvas canvas;
72.59 + private UIStyle style;
72.60 + /** the region that this state belongs to */
72.61 + private UIRegion region;
72.62 + /**
72.63 + * This is a local UIDefaults that contains all the UIDefaults in the synth model. It is kept uptodate by the
72.64 + * indervidual UIDefaults nodes
72.65 + */
72.66 + private transient UIDefaults modelDefaults = null;
72.67 +
72.68 + // =================================================================================================================
72.69 + // Contructors
72.70 +
72.71 + public UIState() {
72.72 + // Create state keys as event list so model changes are propogated
72.73 + stateKeys = new ArrayList<String>();
72.74 + }
72.75 +
72.76 + public UIState(SynthModel model, UIRegion parentRegion, String... stateTypeKeys) {
72.77 + // Create state keys as event list so model changes are propogated
72.78 + stateKeys = new ArrayList<String>();
72.79 + this.stateKeys.addAll(Arrays.asList(stateTypeKeys));
72.80 + //
72.81 + modelDefaults = model.getUiDefaults();
72.82 + region = parentRegion;
72.83 + // create new canvas
72.84 + canvas = new Canvas(100, 30);
72.85 + canvas.setUiDefaults(modelDefaults);
72.86 + String canvasPath = getPath();
72.87 + canvas.setResourcesDir(new File(model.getResourcesDir(), canvasPath));
72.88 + canvas.setTemplatesDir(new File(model.getTemplatesDir(), canvasPath));
72.89 + canvas.setImagesDir(new File(model.getImagesDir(), canvasPath));
72.90 + canvas.addPropertyChangeListener(new PropertyChangeListener() {
72.91 + public void propertyChange(PropertyChangeEvent evt) {
72.92 + firePropertyChange("canvas." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
72.93 + }
72.94 + });
72.95 + // create new style
72.96 + style = new UIStyle();
72.97 + style.setParentStyle(region.getStyle());
72.98 + style.addPropertyChangeListener(new PropertyChangeListener() {
72.99 + public void propertyChange(PropertyChangeEvent evt) {
72.100 + firePropertyChange("style." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
72.101 + }
72.102 + });
72.103 + }
72.104 +
72.105 + // =================================================================================================================
72.106 + // JIBX Methods
72.107 +
72.108 + /**
72.109 + * JIBX needs this
72.110 + *
72.111 + * @param stateKeys The new list of states
72.112 + */
72.113 + private void setStateKeys(List<String> stateKeys) {
72.114 + if (stateKeys != this.stateKeys) {
72.115 + this.stateKeys.clear();
72.116 + this.stateKeys.addAll(stateKeys);
72.117 + }
72.118 + }
72.119 +
72.120 + /**
72.121 + * Called by JIBX after all fields have been set
72.122 + *
72.123 + * @param context The JIBX Unmarshalling Context
72.124 + */
72.125 + private void preSet(IUnmarshallingContext context) {
72.126 + // walk up till we get synth model
72.127 + for (int i = 0; i < context.getStackDepth(); i++) {
72.128 + if (context.getStackObject(i) instanceof HasUIDefaults) {
72.129 + modelDefaults = ((HasUIDefaults) context.getStackObject(i)).getUiDefaults();
72.130 + if (modelDefaults != null) break;
72.131 + }
72.132 + }
72.133 + for (int i = 0; i < context.getStackDepth(); i++) {
72.134 + if (context.getStackObject(i) instanceof UIRegion) {
72.135 + region = (UIRegion) context.getStackObject(i);
72.136 + break;
72.137 + }
72.138 + }
72.139 + }
72.140 +
72.141 + /**
72.142 + * Called by JIBX after all fields have been set
72.143 + *
72.144 + * @param context The JIBX Unmarshalling Context
72.145 + */
72.146 + private void postSet(IUnmarshallingContext context) {
72.147 + // add listeners to pass canvas and style events up tree
72.148 + canvas.addPropertyChangeListener(new PropertyChangeListener() {
72.149 + public void propertyChange(PropertyChangeEvent evt) {
72.150 + firePropertyChange("canvas." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
72.151 + }
72.152 + });
72.153 + style.addPropertyChangeListener(new PropertyChangeListener() {
72.154 + public void propertyChange(PropertyChangeEvent evt) {
72.155 + firePropertyChange("style." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
72.156 + }
72.157 + });
72.158 + }
72.159 +
72.160 + // =================================================================================================================
72.161 + // Bean Methods
72.162 +
72.163 + /**
72.164 + * Get path to this UI State of the form /RegionA/RegionB/StateName
72.165 + *
72.166 + * @return Path to this state
72.167 + */
72.168 + public String getPath() {
72.169 + StringBuilder buf = new StringBuilder(getName());
72.170 + UIRegion region = getRegion();
72.171 + // check if we are foreground background or border
72.172 + boolean found = false;
72.173 + for (UIState state : region.getBackgroundStates()) {
72.174 + if (state == this) {
72.175 + buf.insert(0, "Background/");
72.176 + found = true;
72.177 + break;
72.178 + }
72.179 + }
72.180 + if (!found) {
72.181 + for (UIState state : region.getForegroundStates()) {
72.182 + if (state == this) {
72.183 + buf.insert(0, "Foreground/");
72.184 + found = true;
72.185 + break;
72.186 + }
72.187 + }
72.188 + }
72.189 + if (!found) {
72.190 + for (UIState state : region.getBorderStates()) {
72.191 + if (state == this) {
72.192 + buf.insert(0, "Border/");
72.193 + found = true;
72.194 + break;
72.195 + }
72.196 + }
72.197 + }
72.198 + // add parent regions
72.199 + while (region != null) {
72.200 + buf.insert(0, '/');
72.201 + if (region instanceof UIComponent && ((UIComponent) region).getComponentName() != null) {
72.202 + buf.insert(0, ((UIComponent) region).getComponentName());
72.203 + } else {
72.204 + buf.insert(0, region.getName());
72.205 + }
72.206 + region = region.getRegion();
72.207 + }
72.208 + return buf.toString();
72.209 + }
72.210 +
72.211 + void setRegion(UIRegion r) {
72.212 + this.region = r;
72.213 + this.style.setParentStyle(r.getStyle());
72.214 + }
72.215 +
72.216 + public UIRegion getRegion() {
72.217 + return region;
72.218 + }
72.219 +
72.220 + /**
72.221 + * Get the local UIDefaults that contains all the UIDefaults in the synth model. It is kept uptodate by the
72.222 + * indervidual UIDefaults nodes
72.223 + *
72.224 + * @return The UIDefaults for the synth model
72.225 + */
72.226 + public UIDefaults getUIDefaults() {
72.227 + return modelDefaults;
72.228 + }
72.229 +
72.230 +
72.231 + /**
72.232 + * Get the list of state type keys for this state. This state is applied when the current component state matches as
72.233 + * many as possible of these state types.
72.234 + *
72.235 + * @return List of state types that need to be true for this state. This is direct access to the data and changes to
72.236 + * the returned list will effect this UiState.
72.237 + */
72.238 + public List<String> getStateKeys() {
72.239 + return stateKeys;
72.240 + }
72.241 +
72.242 + public void setInverted(boolean b) {
72.243 + boolean old = inverted;
72.244 + inverted = b;
72.245 + firePropertyChange("invert", old, b);
72.246 + }
72.247 +
72.248 + public final boolean isInverted() {
72.249 + return inverted;
72.250 + }
72.251 +
72.252 + /**
72.253 + * Get the name of this state
72.254 + *
72.255 + * @return
72.256 + */
72.257 + public String getName() {
72.258 + if (cachedName == null) {
72.259 + StringBuilder buf = new StringBuilder();
72.260 + List<String> keys = new ArrayList<String>(stateKeys);
72.261 + Collections.sort(keys);
72.262 + for (Iterator<String> iter = keys.iterator(); iter.hasNext();) {
72.263 + buf.append(iter.next());
72.264 + if (iter.hasNext()) buf.append('+');
72.265 + }
72.266 + cachedName = buf.toString();
72.267 + }
72.268 + return cachedName;
72.269 + }
72.270 +
72.271 + public final Canvas getCanvas() {
72.272 + return canvas;
72.273 + }
72.274 +
72.275 + public void setCanvas(Canvas c) {
72.276 + Canvas old = canvas;
72.277 + canvas = c;
72.278 + firePropertyChange("canvas", old, c);
72.279 + }
72.280 +
72.281 + public UIStyle getStyle() {
72.282 + return style;
72.283 + }
72.284 +
72.285 + // =================================================================================================================
72.286 + // JIBX Helper Methods
72.287 +
72.288 + public static String keysToString(List<String> keys) {
72.289 + StringBuilder buf = new StringBuilder();
72.290 + for (Iterator<String> iter = keys.iterator(); iter.hasNext();) {
72.291 + buf.append(iter.next());
72.292 + if (iter.hasNext()) buf.append('+');
72.293 + }
72.294 + return buf.toString();
72.295 + }
72.296 +
72.297 + public static List<String> stringToKeys(String keysString) {
72.298 + return Arrays.asList(keysString.split("\\+"));
72.299 + }
72.300 +
72.301 +}
73.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
73.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIStateType.java Wed Apr 29 00:27:46 2009 -0700
73.3 @@ -0,0 +1,129 @@
73.4 +/*
73.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
73.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
73.7 + *
73.8 + * This code is free software; you can redistribute it and/or modify it
73.9 + * under the terms of the GNU General Public License version 2 only, as
73.10 + * published by the Free Software Foundation. Sun designates this
73.11 + * particular file as subject to the "Classpath" exception as provided
73.12 + * by Sun in the LICENSE file that accompanied this code.
73.13 + *
73.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
73.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
73.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
73.17 + * version 2 for more details (a copy is included in the LICENSE file that
73.18 + * accompanied this code).
73.19 + *
73.20 + * You should have received a copy of the GNU General Public License version
73.21 + * 2 along with this work; if not, write to the Free Software Foundation,
73.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
73.23 + *
73.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
73.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
73.26 + * have any questions.
73.27 + */
73.28 +package org.jdesktop.synthdesigner.synthmodel;
73.29 +
73.30 +import org.jdesktop.beans.AbstractBean;
73.31 +
73.32 +/**
73.33 + * UIStateType - A UIComponents has a collection of these which constitute the avilables states which can be chosen in
73.34 + * the components regions. A UIStateType can be either a custom state or one of the predefined standard states.
73.35 + *
73.36 + * @author Richard Bair
73.37 + * @author Jasper Potts
73.38 + */
73.39 +public class UIStateType extends AbstractBean {
73.40 + /* Keys for standard synth states */
73.41 + public static final String ENABLED_KEY = "Enabled";
73.42 + public static final String MOUSE_OVER_KEY = "MouseOver";
73.43 + public static final String PRESSED_KEY = "Pressed";
73.44 + public static final String DISABLED_KEY = "Disabled";
73.45 + public static final String FOCUSED_KEY = "Focused";
73.46 + public static final String SELECTED_KEY = "Selected";
73.47 + public static final String DEFAULT_KEY = "Default";
73.48 + public static final String[] STANDARD_SYNTH_STATE_KEYS = new String[]{
73.49 + ENABLED_KEY, MOUSE_OVER_KEY, PRESSED_KEY, DISABLED_KEY, FOCUSED_KEY, SELECTED_KEY, DEFAULT_KEY
73.50 + };
73.51 + public static final UIStateType[] STANDARD_SYNTH_STATES = new UIStateType[]{
73.52 + new UIStateType(ENABLED_KEY),
73.53 + new UIStateType(MOUSE_OVER_KEY),
73.54 + new UIStateType(PRESSED_KEY),
73.55 + new UIStateType(DISABLED_KEY),
73.56 + new UIStateType(FOCUSED_KEY),
73.57 + new UIStateType(SELECTED_KEY),
73.58 + new UIStateType(DEFAULT_KEY)
73.59 + };
73.60 +
73.61 + /** Unique string for the ui key for this state, must be unique within a components set of UiStateTypes */
73.62 + private String key;
73.63 + /**
73.64 + * Snippet of java code that defines calculates the value of this state for a particular component. The varaiable
73.65 + * <code>c</code> is the component. You end with a return statement returning boolean true/false for the current
73.66 + * value of this state for this component. This can be null if the key is one of that standard synth states defined
73.67 + * in constants in this class.
73.68 + */
73.69 + private String codeSnippet;
73.70 +
73.71 + /** JIBX no-args contructor */
73.72 + private UIStateType() {}
73.73 +
73.74 + private UIStateType(String key) {
73.75 + this.key = key;
73.76 + this.codeSnippet = null;
73.77 + }
73.78 +
73.79 + public UIStateType(String key, String codeSnippet) {
73.80 + this.key = key;
73.81 + this.codeSnippet = codeSnippet;
73.82 + }
73.83 +
73.84 + // =================================================================================================================
73.85 + // Bean Methods
73.86 +
73.87 + /**
73.88 + * Get the ui defaults key for this state type. Unique string for the ui key for this state, must be unique within a
73.89 + * components set of UiStateTypes.
73.90 + *
73.91 + * @return Unique ui default key
73.92 + */
73.93 + public String getKey() {
73.94 + return key;
73.95 + }
73.96 +
73.97 + /**
73.98 + * Get the snippet of java code that defines calculates the value of this state for a particular component. The
73.99 + * varaiable <code>c</code> is the component. You end with a return statement returning boolean true/false for the
73.100 + * current value of this state for this component. This can be null if the key is one of that standard synth states
73.101 + * defined in constants in this class.
73.102 + *
73.103 + * @return Snippet of java code or null if this is a synth standard state
73.104 + */
73.105 + public String getCodeSnippet() {
73.106 + return codeSnippet;
73.107 + }
73.108 +
73.109 + /**
73.110 + * Set the snippet of java code that defines calculates the value of this state for a particular component. The
73.111 + * varaiable <code>c</code> is the component. You end with a return statement returning boolean true/false for the
73.112 + * current value of this state for this component. This can be null if the key is one of that standard synth states
73.113 + * defined in constants in this class.
73.114 + *
73.115 + * @param codeSnippet Snippet of java code or null if this is a synth standard state
73.116 + */
73.117 + public void setCodeSnippet(String codeSnippet) {
73.118 + this.codeSnippet = codeSnippet;
73.119 + }
73.120 +
73.121 + /**
73.122 + * Returns if this state type is a standard synth type and has no code snippet or a custom type that has a code
73.123 + * snippet. It is used by JIBX to determin if the code snippet should be written to XML.
73.124 + *
73.125 + * @return <code>true</code> if codeSnippet is non null
73.126 + */
73.127 + public boolean hasCodeSnippet() {
73.128 + return codeSnippet != null;
73.129 + }
73.130 +
73.131 +
73.132 +}
74.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
74.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIStyle.java Wed Apr 29 00:27:46 2009 -0700
74.3 @@ -0,0 +1,467 @@
74.4 +/*
74.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
74.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
74.7 + *
74.8 + * This code is free software; you can redistribute it and/or modify it
74.9 + * under the terms of the GNU General Public License version 2 only, as
74.10 + * published by the Free Software Foundation. Sun designates this
74.11 + * particular file as subject to the "Classpath" exception as provided
74.12 + * by Sun in the LICENSE file that accompanied this code.
74.13 + *
74.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
74.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
74.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
74.17 + * version 2 for more details (a copy is included in the LICENSE file that
74.18 + * accompanied this code).
74.19 + *
74.20 + * You should have received a copy of the GNU General Public License version
74.21 + * 2 along with this work; if not, write to the Free Software Foundation,
74.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
74.23 + *
74.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
74.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
74.26 + * have any questions.
74.27 + */
74.28 +package org.jdesktop.synthdesigner.synthmodel;
74.29 +
74.30 +import org.jdesktop.beans.AbstractBean;
74.31 +import org.jdesktop.swingx.designer.font.Typeface;
74.32 +import org.jdesktop.swingx.designer.paint.Matte;
74.33 +import org.jibx.runtime.IUnmarshallingContext;
74.34 +
74.35 +import java.beans.PropertyChangeEvent;
74.36 +import java.beans.PropertyChangeListener;
74.37 +import java.util.List;
74.38 +import java.util.ArrayList;
74.39 +
74.40 +/**
74.41 + * UIStyle
74.42 + *
74.43 + * @author Richard Bair
74.44 + * @author Jasper Potts
74.45 + */
74.46 +public class UIStyle extends AbstractBean {
74.47 + public static enum CacheMode {NO_CACHING,FIXED_SIZES,NINE_SQUARE_SCALE}
74.48 + public static enum HintAlphaInterpolation {
74.49 + DEFAULT, QUALITY, SPEED
74.50 + }
74.51 +
74.52 + public static enum HintAntialiasing {
74.53 + DEFAULT, ON, OFF
74.54 + }
74.55 +
74.56 + public static enum HintColorRendering {
74.57 + DEFAULT, QUALITY, SPEED
74.58 + }
74.59 +
74.60 + public static enum HintDithering {
74.61 + DEFAULT, DISABLE, ENABLE
74.62 + }
74.63 +
74.64 + public static enum HintFractionalMetrics {
74.65 + DEFAULT, ON, OFF
74.66 + }
74.67 +
74.68 + public static enum HintInterpolation {
74.69 + NEAREST_NEIGHBOR, BILINEAR, BICUBIC
74.70 + }
74.71 +
74.72 + public static enum HintRendering {
74.73 + DEFAULT, QUALITY, SPEED
74.74 + }
74.75 +
74.76 + public static enum HintStrokeControl {
74.77 + DEFAULT, NORMALIZE, PURE
74.78 + }
74.79 +
74.80 + public static enum HintTextAntialiasing {
74.81 + DEFAULT, ON, OFF, GASP, LCD_HBGR, LCD_HRGB, LCD_VBGR, LCD_VRGB
74.82 + }
74.83 +
74.84 + private Typeface font = null;
74.85 + private boolean fontInherited = true;
74.86 + private Matte textForeground = null;
74.87 + private boolean textForegroundInherited = true;
74.88 + private Matte textBackground = null;
74.89 + private boolean textBackgroundInherited = true;
74.90 + private Matte background = null;
74.91 + private boolean backgroundInherited = true;
74.92 +
74.93 + private boolean cacheSettingsInherited = true;
74.94 + private CacheMode cacheMode = CacheMode.FIXED_SIZES;
74.95 + private double maxHozCachedImgScaling = 1;
74.96 + private double maxVertCachedImgScaling = 1;
74.97 +
74.98 + private HintAlphaInterpolation hintAlphaInterpolation = null;
74.99 + private HintAntialiasing hintAntialiasing = null;
74.100 + private HintColorRendering hintColorRendering = null;
74.101 + private HintDithering hintDithering = null;
74.102 + private HintFractionalMetrics hintFractionalMetrics = null;
74.103 + private HintInterpolation hintInterpolation = null;
74.104 + private HintRendering hintRendering = null;
74.105 + private HintStrokeControl hintStrokeControl = null;
74.106 + private HintTextAntialiasing hintTextAntialiasing = null;
74.107 + private List<UIProperty> uiProperties;
74.108 + private UIStyle parentStyle = null;
74.109 +
74.110 + private PropertyChangeListener textForegoundListener = new PropertyChangeListener() {
74.111 + public void propertyChange(PropertyChangeEvent evt) {
74.112 + firePropertyChange("textForeground." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
74.113 + }
74.114 + };
74.115 + private PropertyChangeListener textBackgroundListener = new PropertyChangeListener() {
74.116 + public void propertyChange(PropertyChangeEvent evt) {
74.117 + firePropertyChange("textBackground." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
74.118 + }
74.119 + };
74.120 + private PropertyChangeListener backgroundListener = new PropertyChangeListener() {
74.121 + public void propertyChange(PropertyChangeEvent evt) {
74.122 + firePropertyChange("background." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
74.123 + }
74.124 + };
74.125 +
74.126 + // =================================================================================================================
74.127 + // Constructors
74.128 +
74.129 + public UIStyle() {
74.130 + uiProperties = new ArrayList<UIProperty>();
74.131 + }
74.132 +
74.133 + // =================================================================================================================
74.134 + // JIBX Methods
74.135 +
74.136 + /**
74.137 + * Called by JIBX after all fields have been set
74.138 + *
74.139 + * @param context The JIBX Unmarshalling Context
74.140 + */
74.141 + private void postSet(IUnmarshallingContext context) {
74.142 + // walk up till we get a parent style
74.143 + for (int i = 0; i < context.getStackDepth(); i++) {
74.144 + if (context.getStackObject(i) instanceof HasUIStyle) {
74.145 + HasUIStyle hasStyle = (HasUIStyle) context.getStackObject(i);
74.146 + if (hasStyle.getStyle() != this) {
74.147 + parentStyle = hasStyle.getStyle();
74.148 + if (parentStyle != null) break;
74.149 + }
74.150 + }
74.151 + }
74.152 + }
74.153 +
74.154 + // =================================================================================================================
74.155 + // Bean Methods
74.156 +
74.157 + public UIStyle getParentStyle() {
74.158 + return parentStyle;
74.159 + }
74.160 +
74.161 + public void setParentStyle(UIStyle parentStyle) {
74.162 + UIStyle old = getParentStyle();
74.163 + this.parentStyle = parentStyle;
74.164 + firePropertyChange("parentStyle", old, getParentStyle());
74.165 + }
74.166 +
74.167 + public List<UIProperty> getUiProperties() {
74.168 + return uiProperties;
74.169 + }
74.170 +
74.171 + public void addUiProperty(UIProperty uiProperty) {
74.172 + uiProperties.add(uiProperty);
74.173 + // todo not quite sure what events we want here
74.174 + fireIndexedPropertyChange("uiProperties", uiProperties.size(), null, uiProperty);
74.175 +// firePropertyChange("uiProperties", null, uiProperties);
74.176 + }
74.177 +
74.178 + public void removeUiProperty(UIProperty uiProperty) {
74.179 + int index = uiProperties.indexOf(uiProperty);
74.180 + if (index != -1) {
74.181 + uiProperties.remove(uiProperty);
74.182 + // todo not quite sure what events we want here
74.183 + fireIndexedPropertyChange("uiProperties", index, null, uiProperty);
74.184 +// firePropertyChange("uiProperties", null, uiProperties);
74.185 + }
74.186 + }
74.187 +
74.188 + public Typeface getFont() {
74.189 + if (isFontInherited()) {
74.190 + return parentStyle == null ? font : parentStyle.getFont();
74.191 + } else {
74.192 + return font;
74.193 + }
74.194 + }
74.195 +
74.196 + public void setFont(Typeface font) {
74.197 + Typeface old = getFont();
74.198 + this.font = font;
74.199 + firePropertyChange("font", old, font);
74.200 + }
74.201 +
74.202 + public boolean isFontInherited() {
74.203 + return fontInherited;
74.204 + }
74.205 +
74.206 + public void setFontInherited(boolean b) {
74.207 + boolean old = isFontInherited();
74.208 + fontInherited = b;
74.209 + firePropertyChange("fontInherited", old, b);
74.210 +
74.211 + if (!fontInherited && font == null && parentStyle != null && parentStyle.getFont() != null) {
74.212 + font = parentStyle.getFont().clone();
74.213 + firePropertyChange("font", null, font);
74.214 + }
74.215 + }
74.216 +
74.217 + public Matte getTextForeground() {
74.218 + if (isTextForegroundInherited()) {
74.219 + return parentStyle == null ? null : parentStyle.getTextForeground();
74.220 + } else {
74.221 + return textForeground;
74.222 + }
74.223 + }
74.224 +
74.225 + public boolean isTextForegroundInherited() {
74.226 + return textForegroundInherited;
74.227 + }
74.228 +
74.229 + public void setTextForegroundInherited(boolean b) {
74.230 + boolean old = isTextForegroundInherited();
74.231 + textForegroundInherited = b;
74.232 + firePropertyChange("foregroundInherited", old, b);
74.233 +
74.234 + if (!textForegroundInherited && textForeground == null && parentStyle != null &&
74.235 + parentStyle.getTextForeground() != null) {
74.236 + textForeground = parentStyle.getTextForeground().clone();
74.237 + firePropertyChange("textForeground", null, textForeground);
74.238 + }
74.239 + }
74.240 +
74.241 + public void setTextForeground(Matte textForeground) {
74.242 + Matte old = this.textForeground;
74.243 + if (old != null) old.removePropertyChangeListener(textForegoundListener);
74.244 + this.textForeground = textForeground;
74.245 + if (this.textForeground != null) this.textForeground.addPropertyChangeListener(textForegoundListener);
74.246 + firePropertyChange("textForeground", old, this.textForeground);
74.247 + }
74.248 +
74.249 + public Matte getTextBackground() {
74.250 + if (isTextBackgroundInherited()) {
74.251 + return parentStyle == null ? null : parentStyle.getBackground();
74.252 + } else {
74.253 + return textBackground;
74.254 + }
74.255 + }
74.256 +
74.257 + public boolean isTextBackgroundInherited() {
74.258 + return textBackgroundInherited;
74.259 + }
74.260 +
74.261 + public void setTextBackgroundInherited(boolean b) {
74.262 + boolean old = isBackgroundInherited();
74.263 + textBackgroundInherited = b;
74.264 + firePropertyChange("textBackgroundInherited", old, b);
74.265 +
74.266 + if (!textBackgroundInherited && textBackground == null && parentStyle != null &&
74.267 + parentStyle.getTextBackground() != null) {
74.268 + textBackground = parentStyle.getTextBackground().clone();
74.269 + firePropertyChange("textBackground", null, textBackground);
74.270 + }
74.271 + }
74.272 +
74.273 + public void setTextBackground(Matte textBackground) {
74.274 + Matte old = this.textBackground;
74.275 + if (old != null) old.removePropertyChangeListener(textBackgroundListener);
74.276 + this.textBackground = textBackground;
74.277 + if (this.textBackground != null) this.textBackground.addPropertyChangeListener(textBackgroundListener);
74.278 + firePropertyChange("textBackground", old, this.textBackground);
74.279 + }
74.280 +
74.281 + public Matte getBackground() {
74.282 + if (isBackgroundInherited()) {
74.283 + return parentStyle == null ? null : parentStyle.getBackground();
74.284 + } else {
74.285 + return background;
74.286 + }
74.287 + }
74.288 +
74.289 + public boolean isBackgroundInherited() {
74.290 + return backgroundInherited;
74.291 + }
74.292 +
74.293 + public void setBackgroundInherited(boolean b) {
74.294 + boolean old = isBackgroundInherited();
74.295 + backgroundInherited = b;
74.296 + firePropertyChange("backgroundInherited", old, b);
74.297 +
74.298 + if (!backgroundInherited && background == null && parentStyle != null && parentStyle.getBackground() != null) {
74.299 + background = parentStyle.getBackground().clone();
74.300 + firePropertyChange("background", null, background);
74.301 + }
74.302 + }
74.303 +
74.304 + public void setBackground(Matte background) {
74.305 + Matte old = this.background;
74.306 + if (old != null) old.removePropertyChangeListener(backgroundListener);
74.307 + this.background = background;
74.308 + if (this.background != null) this.background.addPropertyChangeListener(backgroundListener);
74.309 + firePropertyChange("background", old, this.background);
74.310 + }
74.311 +
74.312 + public HintAlphaInterpolation getHintAlphaInterpolation() {
74.313 + return hintAlphaInterpolation;
74.314 + }
74.315 +
74.316 + public void setHintAlphaInterpolation(HintAlphaInterpolation hintAlphaInterpolation) {
74.317 + HintAlphaInterpolation old = getHintAlphaInterpolation();
74.318 + this.hintAlphaInterpolation = hintAlphaInterpolation;
74.319 + firePropertyChange("hintAlphaInterpolation", old, getHintAlphaInterpolation());
74.320 + }
74.321 +
74.322 + public HintAntialiasing getHintAntialiasing() {
74.323 + return hintAntialiasing;
74.324 + }
74.325 +
74.326 + public void setHintAntialiasing(HintAntialiasing hintAntialiasing) {
74.327 + HintAntialiasing old = getHintAntialiasing();
74.328 + this.hintAntialiasing = hintAntialiasing;
74.329 + firePropertyChange("hintAntialiasing", old, getHintAntialiasing());
74.330 + }
74.331 +
74.332 + public HintColorRendering getHintColorRendering() {
74.333 + return hintColorRendering;
74.334 + }
74.335 +
74.336 + public void setHintColorRendering(HintColorRendering hintColorRendering) {
74.337 + HintColorRendering old = getHintColorRendering();
74.338 + this.hintColorRendering = hintColorRendering;
74.339 + firePropertyChange("hintColorRendering", old, getHintColorRendering());
74.340 + }
74.341 +
74.342 + public HintDithering getHintDithering() {
74.343 + return hintDithering;
74.344 + }
74.345 +
74.346 + public void setHintDithering(HintDithering hintDithering) {
74.347 + HintDithering old = getHintDithering();
74.348 + this.hintDithering = hintDithering;
74.349 + firePropertyChange("hintDithering", old, getHintDithering());
74.350 + }
74.351 +
74.352 + public HintFractionalMetrics getHintFractionalMetrics() {
74.353 + return hintFractionalMetrics;
74.354 + }
74.355 +
74.356 + public void setHintFractionalMetrics(HintFractionalMetrics hintFractionalMetrics) {
74.357 + HintFractionalMetrics old = getHintFractionalMetrics();
74.358 + this.hintFractionalMetrics = hintFractionalMetrics;
74.359 + firePropertyChange("hintFractionalMetrics", old, getHintFractionalMetrics());
74.360 + }
74.361 +
74.362 + public HintInterpolation getHintInterpolation() {
74.363 + return hintInterpolation;
74.364 + }
74.365 +
74.366 + public void setHintInterpolation(HintInterpolation hintInterpolation) {
74.367 + HintInterpolation old = getHintInterpolation();
74.368 + this.hintInterpolation = hintInterpolation;
74.369 + firePropertyChange("hintInterpolation", old, getHintInterpolation());
74.370 + }
74.371 +
74.372 + public HintRendering getHintRendering() {
74.373 + return hintRendering;
74.374 + }
74.375 +
74.376 + public void setHintRendering(HintRendering hintRendering) {
74.377 + HintRendering old = getHintRendering();
74.378 + this.hintRendering = hintRendering;
74.379 + firePropertyChange("hintRendering", old, getHintRendering());
74.380 + }
74.381 +
74.382 + public HintStrokeControl getHintStrokeControl() {
74.383 + return hintStrokeControl;
74.384 + }
74.385 +
74.386 + public void setHintStrokeControl(HintStrokeControl hintStrokeControl) {
74.387 + HintStrokeControl old = getHintStrokeControl();
74.388 + this.hintStrokeControl = hintStrokeControl;
74.389 + firePropertyChange("hintStrokeControl", old, getHintStrokeControl());
74.390 + }
74.391 +
74.392 + public HintTextAntialiasing getHintTextAntialiasing() {
74.393 + return hintTextAntialiasing;
74.394 + }
74.395 +
74.396 + public void setHintTextAntialiasing(HintTextAntialiasing hintTextAntialiasing) {
74.397 + HintTextAntialiasing old = getHintTextAntialiasing();
74.398 + this.hintTextAntialiasing = hintTextAntialiasing;
74.399 + firePropertyChange("hintTextAntialiasing", old, getHintTextAntialiasing());
74.400 + }
74.401 +
74.402 + public boolean isCacheSettingsInherited() {
74.403 + return cacheSettingsInherited;
74.404 + }
74.405 +
74.406 + public void setCacheSettingsInherited(boolean cacheSettingsInherited) {
74.407 + boolean old = isCacheSettingsInherited();
74.408 + this.cacheSettingsInherited = cacheSettingsInherited;
74.409 + firePropertyChange("cacheSettingsInherited", old, isCacheSettingsInherited());
74.410 + }
74.411 +
74.412 + public CacheMode getCacheMode() {
74.413 + if (isCacheSettingsInherited()) {
74.414 + return (parentStyle == null)?CacheMode.FIXED_SIZES : parentStyle.getCacheMode();
74.415 + } else {
74.416 + return cacheMode;
74.417 + }
74.418 + }
74.419 +
74.420 + public void setCacheMode(CacheMode cacheMode) {
74.421 + CacheMode old = this.cacheMode;
74.422 + this.cacheMode = cacheMode;
74.423 + if (isCacheSettingsInherited()) {
74.424 + setCacheSettingsInherited(false);
74.425 + UIStyle parent = getParentStyle();
74.426 + setMaxHozCachedImgScaling(parent == null ? 1 : parent.getMaxHozCachedImgScaling());
74.427 + setMaxVertCachedImgScaling(parent == null ? 1 : parent.getMaxVertCachedImgScaling());
74.428 + }
74.429 + firePropertyChange("cacheMode",old,cacheMode);
74.430 + }
74.431 +
74.432 + public double getMaxHozCachedImgScaling() {
74.433 + if (isCacheSettingsInherited()) {
74.434 + return parentStyle == null ? 1 : parentStyle.getMaxHozCachedImgScaling();
74.435 + } else {
74.436 + return maxHozCachedImgScaling;
74.437 + }
74.438 + }
74.439 +
74.440 + public void setMaxHozCachedImgScaling(double maxHozCachedImgScaling) {
74.441 + double old = getMaxHozCachedImgScaling();
74.442 + this.maxHozCachedImgScaling = maxHozCachedImgScaling;
74.443 + if (isCacheSettingsInherited()) {
74.444 + setCacheSettingsInherited(false);
74.445 + setCacheMode((parentStyle == null)?CacheMode.FIXED_SIZES : parentStyle.getCacheMode());
74.446 + setMaxVertCachedImgScaling(parentStyle == null ? 1 : parentStyle.getMaxVertCachedImgScaling());
74.447 + }
74.448 + firePropertyChange("maxHozCachedImgScaling", old, getMaxHozCachedImgScaling());
74.449 + }
74.450 +
74.451 + public double getMaxVertCachedImgScaling() {
74.452 + if (isCacheSettingsInherited()) {
74.453 + return parentStyle == null ? 1 : parentStyle.getMaxVertCachedImgScaling();
74.454 + } else {
74.455 + return maxVertCachedImgScaling;
74.456 + }
74.457 + }
74.458 +
74.459 + public void setMaxVertCachedImgScaling(double maxVertCachedImgScaling) {
74.460 + double old = getMaxVertCachedImgScaling();
74.461 + this.maxVertCachedImgScaling = maxVertCachedImgScaling;
74.462 + if (isCacheSettingsInherited()) {
74.463 + setCacheSettingsInherited(false);
74.464 + setCacheMode((parentStyle == null)?CacheMode.FIXED_SIZES : parentStyle.getCacheMode());
74.465 + setMaxHozCachedImgScaling(parentStyle == null ? 1 : parentStyle.getMaxHozCachedImgScaling());
74.466 + }
74.467 + firePropertyChange("maxVertCachedImgScaling", old, getMaxVertCachedImgScaling());
74.468 + }
74.469 +}
74.470 +
75.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
75.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/BorderMapper.java Wed Apr 29 00:27:46 2009 -0700
75.3 @@ -0,0 +1,285 @@
75.4 +/*
75.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
75.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
75.7 + *
75.8 + * This code is free software; you can redistribute it and/or modify it
75.9 + * under the terms of the GNU General Public License version 2 only, as
75.10 + * published by the Free Software Foundation. Sun designates this
75.11 + * particular file as subject to the "Classpath" exception as provided
75.12 + * by Sun in the LICENSE file that accompanied this code.
75.13 + *
75.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
75.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
75.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
75.17 + * version 2 for more details (a copy is included in the LICENSE file that
75.18 + * accompanied this code).
75.19 + *
75.20 + * You should have received a copy of the GNU General Public License version
75.21 + * 2 along with this work; if not, write to the Free Software Foundation,
75.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
75.23 + *
75.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
75.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
75.26 + * have any questions.
75.27 + */
75.28 +package org.jdesktop.synthdesigner.synthmodel.jibxhelpers;
75.29 +
75.30 +import org.jibx.runtime.IMarshaller;
75.31 +import org.jibx.runtime.IUnmarshaller;
75.32 +import org.jibx.runtime.IAliasable;
75.33 +import org.jibx.runtime.IUnmarshallingContext;
75.34 +import org.jibx.runtime.JiBXException;
75.35 +import org.jibx.runtime.IMarshallingContext;
75.36 +import org.jibx.runtime.impl.MarshallingContext;
75.37 +import org.jibx.runtime.impl.UnmarshallingContext;
75.38 +import org.jdesktop.swingx.designer.jibxhelpers.ColorMapper;
75.39 +
75.40 +import javax.swing.border.LineBorder;
75.41 +import javax.swing.border.EmptyBorder;
75.42 +import javax.swing.border.EtchedBorder;
75.43 +import javax.swing.border.BevelBorder;
75.44 +import javax.swing.border.MatteBorder;
75.45 +import javax.swing.border.CompoundBorder;
75.46 +import javax.swing.border.Border;
75.47 +import javax.swing.BorderFactory;
75.48 +import java.awt.Insets;
75.49 +import java.awt.Color;
75.50 +import org.jdesktop.synthdesigner.synthmodel.PainterBorder;
75.51 +
75.52 +/**
75.53 + * BorderMapper - JIBX xml mapper for swing standard borders
75.54 + *
75.55 + * @author Jasper Potts
75.56 + */
75.57 +public class BorderMapper implements IMarshaller, IUnmarshaller, IAliasable {
75.58 + private static enum BorderType {
75.59 + empty, line, etched, bevel, matte, compound, painter
75.60 + }
75.61 + private static enum SubType {
75.62 + raised(EtchedBorder.RAISED), lowered(EtchedBorder.LOWERED);
75.63 + private int subtype;
75.64 +
75.65 + SubType(int type) {
75.66 + this.subtype = type;
75.67 + }
75.68 +
75.69 + public int getSubType() {
75.70 + return subtype;
75.71 + }
75.72 + }
75.73 + private static final String ELEMENT_NAME = "border";
75.74 + private static final String TYPE_NAME = "type";
75.75 + private static final String SUB_TYPE_NAME = "subtype";
75.76 + private static final String TOP_NAME = "top";
75.77 + private static final String BOTTOM_NAME = "bottom";
75.78 + private static final String LEFT_NAME = "left";
75.79 + private static final String RIGHT_NAME = "right";
75.80 + private static final String THICKNESS_NAME = "thickness";
75.81 + private static final String INSIDE_NAME = "inside";
75.82 + private static final String OUTSIDE_NAME = "outside";
75.83 + private static final String PAINTER_NAME = "painter";
75.84 +
75.85 + private String uri;
75.86 + private int index;
75.87 + private String name;
75.88 +
75.89 + public BorderMapper() {
75.90 + uri = null;
75.91 + index = 0;
75.92 + name = ELEMENT_NAME;
75.93 + }
75.94 +
75.95 + public BorderMapper(String uri, int index, String name) {
75.96 + this.uri = uri;
75.97 + this.index = index;
75.98 + this.name = name;
75.99 + }
75.100 +
75.101 + public boolean isExtension(int i) {
75.102 + return false;
75.103 + }
75.104 +
75.105 + public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws
75.106 + JiBXException {
75.107 + return iUnmarshallingContext.isAt(uri, ELEMENT_NAME);
75.108 + }
75.109 +
75.110 + public void marshal(Object object, IMarshallingContext iMarshallingContext)
75.111 + throws JiBXException {
75.112 + if (!(iMarshallingContext instanceof MarshallingContext)) {
75.113 + throw new JiBXException("Invalid object type for marshaller");
75.114 + } else {
75.115 + MarshallingContext ctx = (MarshallingContext) iMarshallingContext;
75.116 + if (object instanceof PainterBorder) {
75.117 + PainterBorder border = (PainterBorder) object;
75.118 + Insets insets = border.getBorderInsets();
75.119 + ctx.startTagAttributes(index, name)
75.120 + .attribute(index, TYPE_NAME, BorderType.painter.toString())
75.121 + .attribute(index, PAINTER_NAME, border.getPainterName())
75.122 + .attribute(index, TOP_NAME, insets.top)
75.123 + .attribute(index, BOTTOM_NAME, insets.bottom)
75.124 + .attribute(index, LEFT_NAME, insets.left)
75.125 + .attribute(index, RIGHT_NAME, insets.right)
75.126 + .closeStartContent();
75.127 + ctx.endTag(index, name);
75.128 + } else if (object instanceof EmptyBorder) {
75.129 + Insets insets = ((EmptyBorder) object).getBorderInsets();
75.130 + ctx.startTagAttributes(index, name)
75.131 + .attribute(index, TYPE_NAME,
75.132 + BorderType.empty.toString())
75.133 + .attribute(index, TOP_NAME, insets.top)
75.134 + .attribute(index, BOTTOM_NAME, insets.bottom)
75.135 + .attribute(index, LEFT_NAME, insets.left)
75.136 + .attribute(index, RIGHT_NAME, insets.right)
75.137 + .closeStartEmpty();
75.138 + } else if (object instanceof LineBorder) {
75.139 + LineBorder border = (LineBorder) object;
75.140 + ctx.startTagAttributes(index, name).
75.141 + attribute(index, TYPE_NAME, BorderType.line.toString()).
75.142 + attribute(index, THICKNESS_NAME, border.getThickness()).
75.143 + closeStartContent();
75.144 + new ColorMapper().marshal(border.getLineColor(), ctx);
75.145 + ctx.endTag(index, name);
75.146 + } else if (object instanceof EtchedBorder) {
75.147 + EtchedBorder border = (EtchedBorder) object;
75.148 + ctx.startTagAttributes(index, name).
75.149 + attribute(index, TYPE_NAME,
75.150 + BorderType.etched.toString()).
75.151 + attribute(index, SUB_TYPE_NAME,
75.152 + border.getEtchType()==EtchedBorder.RAISED?
75.153 + SubType.raised.toString():
75.154 + SubType.lowered.toString()).
75.155 + closeStartContent();
75.156 + new ColorMapper().marshal(border.getHighlightColor(), ctx);
75.157 + new ColorMapper().marshal(border.getShadowColor(), ctx);
75.158 + ctx.endTag(index, name);
75.159 + } else if (object instanceof BevelBorder) {
75.160 + BevelBorder border = (BevelBorder) object;
75.161 + ctx.startTagAttributes(index, name).
75.162 + attribute(index, TYPE_NAME,
75.163 + BorderType.bevel.toString()).
75.164 + attribute(index, SUB_TYPE_NAME,
75.165 + border.getBevelType()==BevelBorder.RAISED?
75.166 + SubType.raised.toString():
75.167 + SubType.lowered.toString()).
75.168 + closeStartContent();
75.169 + new ColorMapper().marshal(border.getHighlightInnerColor(), ctx);
75.170 + new ColorMapper().marshal(border.getHighlightOuterColor(), ctx);
75.171 + new ColorMapper().marshal(border.getShadowInnerColor(), ctx);
75.172 + new ColorMapper().marshal(border.getHighlightOuterColor(), ctx);
75.173 + ctx.endTag(index, name);
75.174 + } else if (object instanceof MatteBorder) {
75.175 + MatteBorder border = (MatteBorder) object;
75.176 + Insets insets = ((EmptyBorder) object).getBorderInsets();
75.177 + ctx.startTagAttributes(index, name)
75.178 + .attribute(index, TYPE_NAME,
75.179 + BorderType.matte.toString())
75.180 + .attribute(index, TOP_NAME, insets.top)
75.181 + .attribute(index, BOTTOM_NAME, insets.bottom)
75.182 + .attribute(index, LEFT_NAME, insets.left)
75.183 + .attribute(index, RIGHT_NAME, insets.right)
75.184 + .closeStartContent();
75.185 + new ColorMapper().marshal(border.getMatteColor(), ctx);
75.186 + // todo: we should support tiled icons here to be 100% complete
75.187 + ctx.endTag(index, name);
75.188 + } else if (object instanceof CompoundBorder) {
75.189 + CompoundBorder border = (CompoundBorder) object;
75.190 + ctx.startTagAttributes(index, name)
75.191 + .attribute(index, TYPE_NAME,
75.192 + BorderType.compound.toString())
75.193 + .closeStartContent();
75.194 + new BorderMapper(null,0, INSIDE_NAME).marshal(border.getInsideBorder(),ctx);
75.195 + new BorderMapper(null,0, OUTSIDE_NAME).marshal(border.getOutsideBorder(),ctx);
75.196 + ctx.endTag(index, name);
75.197 + } else {
75.198 + throw new JiBXException("Invalid object type for marshaller");
75.199 + }
75.200 + }
75.201 + }
75.202 +
75.203 + public Object unmarshal(Object object,
75.204 + IUnmarshallingContext iUnmarshallingContext)
75.205 + throws JiBXException {
75.206 + Border border = null;
75.207 + // make sure we're at the appropriate start tag
75.208 + UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext;
75.209 + if (!ctx.isAt(uri, name)) {
75.210 + ctx.throwStartTagNameError(uri, name);
75.211 + }
75.212 + // get type
75.213 + BorderType type = BorderType.valueOf(ctx.attributeText(uri, TYPE_NAME)
75.214 + .toLowerCase());
75.215 + int top,bottom,left,right;
75.216 + Color color;
75.217 + switch(type){
75.218 + case empty:
75.219 + top = ctx.attributeInt(uri, TOP_NAME, index);
75.220 + bottom = ctx.attributeInt(uri, BOTTOM_NAME, index);
75.221 + left = ctx.attributeInt(uri, LEFT_NAME, index);
75.222 + right = ctx.attributeInt(uri, RIGHT_NAME, index);
75.223 + border = BorderFactory.createEmptyBorder(top,left,bottom,right);
75.224 + break;
75.225 + case line:
75.226 + int thickness = ctx.attributeInt(uri, THICKNESS_NAME, index);
75.227 + ctx.parsePastStartTag(uri,name);
75.228 + color = (Color)new ColorMapper().unmarshal(null,ctx);
75.229 + border = BorderFactory.createLineBorder(color,thickness);
75.230 + break;
75.231 + case etched:
75.232 + SubType etchedType = SubType.valueOf(
75.233 + ctx.attributeText(uri, SUB_TYPE_NAME).toLowerCase());
75.234 + ctx.parsePastStartTag(uri,name);
75.235 + Color highColor = (Color)new ColorMapper()
75.236 + .unmarshal(null,ctx);
75.237 + Color shadowColor = (Color)new ColorMapper()
75.238 + .unmarshal(null,ctx);
75.239 + border = BorderFactory.createEtchedBorder(
75.240 + etchedType.getSubType(),highColor,shadowColor);
75.241 + break;
75.242 + case bevel:
75.243 + SubType bevelType = SubType.valueOf(
75.244 + ctx.attributeText(uri, SUB_TYPE_NAME).toLowerCase());
75.245 + ctx.parsePastStartTag(uri,name);
75.246 + Color innerHighColor = (Color)new ColorMapper()
75.247 + .unmarshal(null,ctx);
75.248 + Color outerHighColor = (Color)new ColorMapper()
75.249 + .unmarshal(null,ctx);
75.250 + Color innerShadowColor = (Color)new ColorMapper()
75.251 + .unmarshal(null,ctx);
75.252 + Color outerShadowColor = (Color)new ColorMapper()
75.253 + .unmarshal(null,ctx);
75.254 + border = BorderFactory.createBevelBorder(
75.255 + bevelType.getSubType(),outerHighColor,innerHighColor,
75.256 + outerShadowColor,innerShadowColor);
75.257 + break;
75.258 + case matte:
75.259 + top = ctx.attributeInt(uri, TOP_NAME, index);
75.260 + bottom = ctx.attributeInt(uri, BOTTOM_NAME, index);
75.261 + left = ctx.attributeInt(uri, LEFT_NAME, index);
75.262 + right = ctx.attributeInt(uri, RIGHT_NAME, index);
75.263 + ctx.parsePastStartTag(uri,name);
75.264 + color = (Color)new ColorMapper().unmarshal(null,ctx);
75.265 + border = BorderFactory.createMatteBorder(top,left,bottom,right,
75.266 + color);
75.267 + break;
75.268 + case compound:
75.269 + ctx.parsePastStartTag(uri,name);
75.270 + Border inside = (Border) new BorderMapper(null,0, INSIDE_NAME)
75.271 + .unmarshal(null,ctx);
75.272 + Border outside = (Border) new BorderMapper(null,0, OUTSIDE_NAME)
75.273 + .unmarshal(null,ctx);
75.274 + border = BorderFactory.createCompoundBorder(outside, inside);
75.275 + break;
75.276 + case painter:
75.277 + String painterName = ctx.attributeText(uri, PAINTER_NAME);
75.278 + top = ctx.attributeInt(uri, TOP_NAME, index);
75.279 + bottom = ctx.attributeInt(uri, BOTTOM_NAME, index);
75.280 + left = ctx.attributeInt(uri, LEFT_NAME, index);
75.281 + right = ctx.attributeInt(uri, RIGHT_NAME, index);
75.282 + border = new PainterBorder(painterName, top, left, bottom, right);
75.283 + }
75.284 + ctx.parsePastEndTag(uri, name);
75.285 + return border;
75.286 + }
75.287 +}
75.288 +
76.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
76.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/ClassConverter.java Wed Apr 29 00:27:46 2009 -0700
76.3 @@ -0,0 +1,53 @@
76.4 +/*
76.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
76.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
76.7 + *
76.8 + * This code is free software; you can redistribute it and/or modify it
76.9 + * under the terms of the GNU General Public License version 2 only, as
76.10 + * published by the Free Software Foundation. Sun designates this
76.11 + * particular file as subject to the "Classpath" exception as provided
76.12 + * by Sun in the LICENSE file that accompanied this code.
76.13 + *
76.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
76.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
76.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
76.17 + * version 2 for more details (a copy is included in the LICENSE file that
76.18 + * accompanied this code).
76.19 + *
76.20 + * You should have received a copy of the GNU General Public License version
76.21 + * 2 along with this work; if not, write to the Free Software Foundation,
76.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
76.23 + *
76.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
76.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
76.26 + * have any questions.
76.27 + */
76.28 +package org.jdesktop.synthdesigner.synthmodel.jibxhelpers;
76.29 +
76.30 +/**
76.31 + * ClassConverter
76.32 + *
76.33 + * @author Created by Jasper Potts (Jul 16, 2007)
76.34 + */
76.35 +public class ClassConverter {
76.36 +
76.37 + public static String classToString(Class c) {
76.38 + return c == null ? "" : c.getName();
76.39 + }
76.40 +
76.41 + public static Class stringToClass(String className) {
76.42 + if (className == null || className.length() == 0) {
76.43 + return null;
76.44 + }
76.45 + try {
76.46 + ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
76.47 + if (classLoader == null) classLoader = ClassConverter.class.getClassLoader();
76.48 + return classLoader.loadClass(className);
76.49 + } catch (ClassNotFoundException e) {
76.50 + System.err.println("Failed to find class with name [" + className + "] in ClassConverter");
76.51 + e.printStackTrace();
76.52 + return null;
76.53 + }
76.54 + }
76.55 +
76.56 +}
77.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
77.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/ClassMapper.java Wed Apr 29 00:27:46 2009 -0700
77.3 @@ -0,0 +1,78 @@
77.4 +/*
77.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
77.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
77.7 + *
77.8 + * This code is free software; you can redistribute it and/or modify it
77.9 + * under the terms of the GNU General Public License version 2 only, as
77.10 + * published by the Free Software Foundation. Sun designates this
77.11 + * particular file as subject to the "Classpath" exception as provided
77.12 + * by Sun in the LICENSE file that accompanied this code.
77.13 + *
77.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
77.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
77.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
77.17 + * version 2 for more details (a copy is included in the LICENSE file that
77.18 + * accompanied this code).
77.19 + *
77.20 + * You should have received a copy of the GNU General Public License version
77.21 + * 2 along with this work; if not, write to the Free Software Foundation,
77.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
77.23 + *
77.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
77.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
77.26 + * have any questions.
77.27 + */
77.28 +package org.jdesktop.synthdesigner.synthmodel.jibxhelpers;
77.29 +
77.30 +import org.jibx.runtime.IMarshaller;
77.31 +import org.jibx.runtime.IMarshallingContext;
77.32 +import org.jibx.runtime.IUnmarshaller;
77.33 +import org.jibx.runtime.IUnmarshallingContext;
77.34 +import org.jibx.runtime.JiBXException;
77.35 +import org.jibx.runtime.impl.MarshallingContext;
77.36 +import org.jibx.runtime.impl.UnmarshallingContext;
77.37 +
77.38 +
77.39 +public class ClassMapper implements IMarshaller, IUnmarshaller {
77.40 + private static final String ELEMENT_NAME = "type";
77.41 +
77.42 + public boolean isExtension(int i) {
77.43 + return false;
77.44 + }
77.45 +
77.46 + public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
77.47 + return iUnmarshallingContext.isAt(null, ELEMENT_NAME);
77.48 + }
77.49 +
77.50 + public void marshal(Object object, IMarshallingContext iMarshallingContext) throws JiBXException {
77.51 + if (!(object instanceof Class)) {
77.52 + throw new JiBXException("Invalid object type for marshaller");
77.53 + } else if (!(iMarshallingContext instanceof MarshallingContext)) {
77.54 + throw new JiBXException("Invalid object type for marshaller");
77.55 + } else {
77.56 + MarshallingContext ctx = (MarshallingContext) iMarshallingContext;
77.57 + Class clazz = (Class) object;
77.58 + ctx.startTagAttributes(0, ELEMENT_NAME).
77.59 + attribute(0, "value", clazz.getName()).
77.60 + closeStartEmpty();
77.61 + }
77.62 + }
77.63 +
77.64 + public Object unmarshal(Object object, IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
77.65 + // make sure we're at the appropriate start tag
77.66 + UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext;
77.67 + if (!ctx.isAt(null, ELEMENT_NAME)) {
77.68 + ctx.throwStartTagNameError(null, ELEMENT_NAME);
77.69 + }
77.70 + // get values
77.71 + String value = ctx.attributeText(null, "value", null);
77.72 + ctx.parsePastEndTag(null, ELEMENT_NAME);
77.73 + // create
77.74 + try {
77.75 + return Class.forName(value);
77.76 + } catch (Exception e) {
77.77 + e.printStackTrace();
77.78 + }
77.79 + return null;
77.80 + }
77.81 +}
78.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
78.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/FontMapper.java Wed Apr 29 00:27:46 2009 -0700
78.3 @@ -0,0 +1,86 @@
78.4 +/*
78.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
78.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
78.7 + *
78.8 + * This code is free software; you can redistribute it and/or modify it
78.9 + * under the terms of the GNU General Public License version 2 only, as
78.10 + * published by the Free Software Foundation. Sun designates this
78.11 + * particular file as subject to the "Classpath" exception as provided
78.12 + * by Sun in the LICENSE file that accompanied this code.
78.13 + *
78.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
78.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
78.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
78.17 + * version 2 for more details (a copy is included in the LICENSE file that
78.18 + * accompanied this code).
78.19 + *
78.20 + * You should have received a copy of the GNU General Public License version
78.21 + * 2 along with this work; if not, write to the Free Software Foundation,
78.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
78.23 + *
78.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
78.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
78.26 + * have any questions.
78.27 + */
78.28 +package org.jdesktop.synthdesigner.synthmodel.jibxhelpers;
78.29 +
78.30 +import org.jibx.runtime.IMarshaller;
78.31 +import org.jibx.runtime.IMarshallingContext;
78.32 +import org.jibx.runtime.IUnmarshaller;
78.33 +import org.jibx.runtime.IUnmarshallingContext;
78.34 +import org.jibx.runtime.JiBXException;
78.35 +import org.jibx.runtime.impl.MarshallingContext;
78.36 +import org.jibx.runtime.impl.UnmarshallingContext;
78.37 +
78.38 +import java.awt.Font;
78.39 +
78.40 +/**
78.41 + * FontMapper
78.42 + *
78.43 + * @author Created by Jasper Potts (Jun 8, 2007)
78.44 + */
78.45 +public class FontMapper implements IMarshaller, IUnmarshaller {
78.46 + private static final String ELEMENT_NAME = "font";
78.47 + private static final String FAMILY_NAME = "family";
78.48 + private static final String STYLE_NAME = "style";
78.49 + private static final String SIZE_NAME = "size";
78.50 +
78.51 + public boolean isExtension(int i) {
78.52 + return false;
78.53 + }
78.54 +
78.55 + public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
78.56 + return iUnmarshallingContext.isAt(null, ELEMENT_NAME);
78.57 + }
78.58 +
78.59 + public void marshal(Object object, IMarshallingContext iMarshallingContext) throws JiBXException {
78.60 + if (!(object instanceof Font)) {
78.61 + throw new JiBXException("Invalid object type for marshaller");
78.62 + } else if (!(iMarshallingContext instanceof MarshallingContext)) {
78.63 + throw new JiBXException("Invalid object type for marshaller");
78.64 + } else {
78.65 + MarshallingContext ctx = (MarshallingContext) iMarshallingContext;
78.66 + Font font = (Font) object;
78.67 + ctx.startTagAttributes(0, ELEMENT_NAME).
78.68 + attribute(0, FAMILY_NAME, font.getFamily()).
78.69 + attribute(0, STYLE_NAME, font.getStyle()).
78.70 + attribute(0, SIZE_NAME, font.getSize()).
78.71 + closeStartEmpty();
78.72 + }
78.73 + }
78.74 +
78.75 + public Object unmarshal(Object object, IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
78.76 + // make sure we're at the appropriate start tag
78.77 + UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext;
78.78 + if (!ctx.isAt(null, ELEMENT_NAME)) {
78.79 + ctx.throwStartTagNameError(null, ELEMENT_NAME);
78.80 + }
78.81 + // get values
78.82 + String name = ctx.attributeText(null, FAMILY_NAME, null);
78.83 + int style = ctx.attributeInt(null, STYLE_NAME, 0);
78.84 + int size = ctx.attributeInt(null, SIZE_NAME, 0);
78.85 + ctx.parsePastEndTag(null, ELEMENT_NAME);
78.86 + // create
78.87 + return new Font(name, style, size);
78.88 + }
78.89 +}
79.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
79.2 +++ b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/UIPropertyMapper.java Wed Apr 29 00:27:46 2009 -0700
79.3 @@ -0,0 +1,155 @@
79.4 +/*
79.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
79.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
79.7 + *
79.8 + * This code is free software; you can redistribute it and/or modify it
79.9 + * under the terms of the GNU General Public License version 2 only, as
79.10 + * published by the Free Software Foundation. Sun designates this
79.11 + * particular file as subject to the "Classpath" exception as provided
79.12 + * by Sun in the LICENSE file that accompanied this code.
79.13 + *
79.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
79.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
79.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
79.17 + * version 2 for more details (a copy is included in the LICENSE file that
79.18 + * accompanied this code).
79.19 + *
79.20 + * You should have received a copy of the GNU General Public License version
79.21 + * 2 along with this work; if not, write to the Free Software Foundation,
79.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
79.23 + *
79.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
79.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
79.26 + * have any questions.
79.27 + */
79.28 +package org.jdesktop.synthdesigner.synthmodel.jibxhelpers;
79.29 +
79.30 +import org.jdesktop.swingx.designer.jibxhelpers.DimensionMapper;
79.31 +import org.jdesktop.swingx.designer.jibxhelpers.InsetsMapper;
79.32 +import org.jdesktop.synthdesigner.synthmodel.UIProperty;
79.33 +import org.jibx.runtime.IMarshallable;
79.34 +import org.jibx.runtime.IMarshaller;
79.35 +import org.jibx.runtime.IMarshallingContext;
79.36 +import org.jibx.runtime.IUnmarshaller;
79.37 +import org.jibx.runtime.IUnmarshallingContext;
79.38 +import org.jibx.runtime.JiBXException;
79.39 +import org.jibx.runtime.impl.MarshallingContext;
79.40 +import org.jibx.runtime.impl.UnmarshallingContext;
79.41 +
79.42 +/**
79.43 + * UIPropertyMapper
79.44 + *
79.45 + * @author Created by Jasper Potts (Jul 10, 2007)
79.46 + */
79.47 +public class UIPropertyMapper implements IMarshaller, IUnmarshaller {
79.48 + private static final String ELEMENT_NAME = "uiProperty";
79.49 + private static final String NAME_NAME = "name";
79.50 + private static final String TYPE_NAME = "type";
79.51 + private static final String VALUE_NAME = "value";
79.52 +
79.53 + public boolean isExtension(int i) {
79.54 + return false;
79.55 + }
79.56 +
79.57 + public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
79.58 + return iUnmarshallingContext.isAt(null, ELEMENT_NAME);
79.59 + }
79.60 +
79.61 + public void marshal(Object object, IMarshallingContext iMarshallingContext) throws JiBXException {
79.62 + if (!(object instanceof UIProperty)) {
79.63 + throw new JiBXException("Invalid object type for marshaller");
79.64 + } else if (!(iMarshallingContext instanceof MarshallingContext)) {
79.65 + throw new JiBXException("Invalid object type for marshaller");
79.66 + } else {
79.67 + MarshallingContext ctx = (MarshallingContext) iMarshallingContext;
79.68 + UIProperty property = (UIProperty) object;
79.69 + ctx.startTagAttributes(0, ELEMENT_NAME);
79.70 + ctx.attribute(0, NAME_NAME, property.getName());
79.71 + ctx.attribute(0, TYPE_NAME, property.getType().toString());
79.72 + switch (property.getType()) {
79.73 + case BOOLEAN:
79.74 + case DOUBLE:
79.75 + case INT:
79.76 + case FLOAT:
79.77 + case STRING:
79.78 + ctx.attribute(0, VALUE_NAME, property.getValue().toString());
79.79 + ctx.closeStartEmpty();
79.80 + break;
79.81 + case INSETS:
79.82 + ctx.closeStartContent();
79.83 + new InsetsMapper().marshal(property.getValue(), ctx);
79.84 + ctx.endTag(0, ELEMENT_NAME);
79.85 + break;
79.86 + case COLOR:
79.87 + case FONT:
79.88 + ctx.closeStartContent();
79.89 + if (property.getValue() instanceof IMarshallable) {
79.90 + ((IMarshallable) property.getValue()).marshal(ctx);
79.91 + } else {
79.92 + throw new JiBXException("Mapped value is not marshallable");
79.93 + }
79.94 + ctx.endTag(0, ELEMENT_NAME);
79.95 + break;
79.96 + case DIMENSION:
79.97 + ctx.closeStartContent();
79.98 + new DimensionMapper().marshal(property.getValue(), ctx);
79.99 + ctx.endTag(0, ELEMENT_NAME);
79.100 + break;
79.101 + case BORDER:
79.102 + ctx.closeStartContent();
79.103 + new BorderMapper().marshal(property.getValue(), ctx);
79.104 + ctx.endTag(0, ELEMENT_NAME);
79.105 + break;
79.106 + }
79.107 + }
79.108 + }
79.109 +
79.110 + public Object unmarshal(Object object, IUnmarshallingContext iUnmarshallingContext) throws JiBXException {
79.111 + // make sure we're at the appropriate start tag
79.112 + UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext;
79.113 + if (!ctx.isAt(null, ELEMENT_NAME)) {
79.114 + ctx.throwStartTagNameError(null, ELEMENT_NAME);
79.115 + }
79.116 + // get values
79.117 + Object value = null;
79.118 + String name = ctx.attributeText(null, NAME_NAME, null);
79.119 + UIProperty.PropertyType type = UIProperty.PropertyType.valueOf(ctx.attributeText(null, TYPE_NAME, null));
79.120 + switch (type) {
79.121 + case BOOLEAN:
79.122 + value = Boolean.parseBoolean(ctx.attributeText(null, VALUE_NAME, null));
79.123 + break;
79.124 + case DOUBLE:
79.125 + value = Double.parseDouble(ctx.attributeText(null, VALUE_NAME, null));
79.126 + break;
79.127 + case INT:
79.128 + value = Integer.parseInt(ctx.attributeText(null, VALUE_NAME, null));
79.129 + break;
79.130 + case FLOAT:
79.131 + value = Float.parseFloat(ctx.attributeText(null, VALUE_NAME, null));
79.132 + break;
79.133 + case STRING:
79.134 + value = ctx.attributeText(null, VALUE_NAME, null);
79.135 + break;
79.136 + case INSETS:
79.137 + ctx.parsePastStartTag(null, ELEMENT_NAME);
79.138 + value = new InsetsMapper().unmarshal(value, ctx);
79.139 + break;
79.140 + case COLOR:
79.141 + case FONT:
79.142 + ctx.parsePastStartTag(null, ELEMENT_NAME);
79.143 + value = ctx.unmarshalElement();
79.144 + break;
79.145 + case DIMENSION:
79.146 + ctx.parsePastStartTag(null, ELEMENT_NAME);
79.147 + value = new DimensionMapper().unmarshal(value, ctx);
79.148 + break;
79.149 + case BORDER:
79.150 + ctx.parsePastStartTag(null, ELEMENT_NAME);
79.151 + value = new BorderMapper().unmarshal(value, ctx);
79.152 + break;
79.153 + }
79.154 + ctx.parsePastEndTag(null, ELEMENT_NAME);
79.155 + // create
79.156 + return new UIProperty(name, type, value);
79.157 + }
79.158 +}
80.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
80.2 +++ b/src/share/classes/com/sun/java/swing/Painter.java Wed Apr 29 00:27:46 2009 -0700
80.3 @@ -0,0 +1,33 @@
80.4 +/*
80.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
80.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
80.7 + *
80.8 + * This code is free software; you can redistribute it and/or modify it
80.9 + * under the terms of the GNU General Public License version 2 only, as
80.10 + * published by the Free Software Foundation. Sun designates this
80.11 + * particular file as subject to the "Classpath" exception as provided
80.12 + * by Sun in the LICENSE file that accompanied this code.
80.13 + *
80.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
80.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
80.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
80.17 + * version 2 for more details (a copy is included in the LICENSE file that
80.18 + * accompanied this code).
80.19 + *
80.20 + * You should have received a copy of the GNU General Public License version
80.21 + * 2 along with this work; if not, write to the Free Software Foundation,
80.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
80.23 + *
80.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
80.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
80.26 + * have any questions.
80.27 + */
80.28 +package com.sun.java.swing;
80.29 +
80.30 +/**
80.31 + * This class is preserved for backward compatibility with JDK 6.
80.32 + *
80.33 + * @deprecated Use {@link javax.swing.Painter} instead.
80.34 + */
80.35 +public interface Painter<T> extends javax.swing.Painter {
80.36 +}
81.1 --- a/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java Tue Apr 28 14:43:44 2009 -0700
81.2 +++ b/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java Wed Apr 29 00:27:46 2009 -0700
81.3 @@ -134,6 +134,15 @@
81.4 super(filechooser);
81.5 }
81.6
81.7 + protected ActionMap createActionMap() {
81.8 + ActionMap map = new ActionMapUIResource();
81.9 + map.put("approveSelection", getApproveSelectionAction());
81.10 + map.put("cancelSelection", getCancelSelectionAction());
81.11 + map.put("Go Up", getChangeToParentDirectoryAction());
81.12 + map.put("fileNameCompletion", getFileNameCompletionAction());
81.13 + return map;
81.14 + }
81.15 +
81.16 public String getFileName() {
81.17 JFileChooser fc = getFileChooser();
81.18 String typedInName = fileNameTextField != null ?
82.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
82.2 +++ b/src/share/classes/com/sun/java/swing/plaf/nimbus/AbstractRegionPainter.java Wed Apr 29 00:27:46 2009 -0700
82.3 @@ -0,0 +1,33 @@
82.4 +/*
82.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
82.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
82.7 + *
82.8 + * This code is free software; you can redistribute it and/or modify it
82.9 + * under the terms of the GNU General Public License version 2 only, as
82.10 + * published by the Free Software Foundation. Sun designates this
82.11 + * particular file as subject to the "Classpath" exception as provided
82.12 + * by Sun in the LICENSE file that accompanied this code.
82.13 + *
82.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
82.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
82.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
82.17 + * version 2 for more details (a copy is included in the LICENSE file that
82.18 + * accompanied this code).
82.19 + *
82.20 + * You should have received a copy of the GNU General Public License version
82.21 + * 2 along with this work; if not, write to the Free Software Foundation,
82.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
82.23 + *
82.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
82.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
82.26 + * have any questions.
82.27 + */
82.28 +package com.sun.java.swing.plaf.nimbus;
82.29 +
82.30 +/**
82.31 + * This class is preserved for backward compatibility with JDK 6.
82.32 + *
82.33 + * @deprecated Use {@link javax.swing.plaf.nimbus.AbstractRegionPainter} instead.
82.34 + */
82.35 +public abstract class AbstractRegionPainter extends javax.swing.plaf.nimbus.AbstractRegionPainter {
82.36 +}
83.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
83.2 +++ b/src/share/classes/com/sun/java/swing/plaf/nimbus/NimbusLookAndFeel.java Wed Apr 29 00:27:46 2009 -0700
83.3 @@ -0,0 +1,33 @@
83.4 +/*
83.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
83.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
83.7 + *
83.8 + * This code is free software; you can redistribute it and/or modify it
83.9 + * under the terms of the GNU General Public License version 2 only, as
83.10 + * published by the Free Software Foundation. Sun designates this
83.11 + * particular file as subject to the "Classpath" exception as provided
83.12 + * by Sun in the LICENSE file that accompanied this code.
83.13 + *
83.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
83.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
83.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
83.17 + * version 2 for more details (a copy is included in the LICENSE file that
83.18 + * accompanied this code).
83.19 + *
83.20 + * You should have received a copy of the GNU General Public License version
83.21 + * 2 along with this work; if not, write to the Free Software Foundation,
83.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
83.23 + *
83.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
83.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
83.26 + * have any questions.
83.27 + */
83.28 +package com.sun.java.swing.plaf.nimbus;
83.29 +
83.30 +/**
83.31 + * This class is preserved for backward compatibility with JDK 6.
83.32 + *
83.33 + * @deprecated Use {@link javax.swing.plaf.nimbus.NimbusLookAndFeel} instead.
83.34 + */
83.35 +public class NimbusLookAndFeel extends javax.swing.plaf.nimbus.NimbusLookAndFeel {
83.36 +}
84.1 --- a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java Tue Apr 28 14:43:44 2009 -0700
84.2 +++ b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java Wed Apr 29 00:27:46 2009 -0700
84.3 @@ -1009,6 +1009,7 @@
84.4 "PopupMenu.background", MenuBackgroundColor,
84.5 "PopupMenu.foreground", MenuTextColor,
84.6 "PopupMenu.popupSound", "win.sound.menuPopup",
84.7 + "PopupMenu.consumeEventOnClose", Boolean.TRUE,
84.8
84.9 // Menus
84.10 "Menu.font", MenuFont,
85.1 --- a/src/share/classes/com/sun/media/sound/SoftAudioPusher.java Tue Apr 28 14:43:44 2009 -0700
85.2 +++ b/src/share/classes/com/sun/media/sound/SoftAudioPusher.java Wed Apr 29 00:27:46 2009 -0700
85.3 @@ -54,6 +54,7 @@
85.4 return;
85.5 active = true;
85.6 audiothread = new Thread(this);
85.7 + audiothread.setDaemon(true);
85.8 audiothread.setPriority(Thread.MAX_PRIORITY);
85.9 audiothread.start();
85.10 }
86.1 --- a/src/share/classes/com/sun/media/sound/SoftChannel.java Tue Apr 28 14:43:44 2009 -0700
86.2 +++ b/src/share/classes/com/sun/media/sound/SoftChannel.java Wed Apr 29 00:27:46 2009 -0700
86.3 @@ -93,7 +93,6 @@
86.4 protected double portamento_time = 1; // keyschanges per control buffer time
86.5 protected int[] portamento_lastnote = new int[128];
86.6 protected int portamento_lastnote_ix = 0;
86.7 - private int portamento_control_note = -1;
86.8 private boolean portamento = false;
86.9 private boolean mono = false;
86.10 private boolean mute = false;
86.11 @@ -369,12 +368,12 @@
86.12 voice.setSoloMute(solomute);
86.13 if (releaseTriggered)
86.14 return;
86.15 - if (portamento_control_note != -1) {
86.16 + if (controller[84] != 0) {
86.17 voice.co_noteon_keynumber[0]
86.18 - = (tuning.getTuning(portamento_control_note) / 100.0)
86.19 + = (tuning.getTuning(controller[84]) / 100.0)
86.20 * (1f / 128f);
86.21 voice.portamento = true;
86.22 - portamento_control_note = -1;
86.23 + controlChange(84, 0);
86.24 } else if (portamento) {
86.25 if (mono) {
86.26 if (portamento_lastnote[0] != -1) {
86.27 @@ -382,7 +381,7 @@
86.28 = (tuning.getTuning(portamento_lastnote[0]) / 100.0)
86.29 * (1f / 128f);
86.30 voice.portamento = true;
86.31 - portamento_control_note = -1;
86.32 + controlChange(84, 0);
86.33 }
86.34 portamento_lastnote[0] = noteNumber;
86.35 } else {
86.36 @@ -449,19 +448,19 @@
86.37 }
86.38 }
86.39
86.40 - if (portamento_control_note != -1) {
86.41 + if (controller[84] != 0) {
86.42 boolean n_found = false;
86.43 for (int i = 0; i < voices.length; i++) {
86.44 if (voices[i].on && voices[i].channel == channel
86.45 && voices[i].active
86.46 - && voices[i].note == portamento_control_note
86.47 + && voices[i].note == controller[84]
86.48 && voices[i].releaseTriggered == false) {
86.49 voices[i].portamento = true;
86.50 voices[i].setNote(noteNumber);
86.51 n_found = true;
86.52 }
86.53 }
86.54 - portamento_control_note = -1;
86.55 + controlChange(84, 0);
86.56 if (n_found)
86.57 return;
86.58 }
86.59 @@ -556,6 +555,18 @@
86.60 && voices[i].releaseTriggered == false) {
86.61 voices[i].noteOff(velocity);
86.62 }
86.63 + // We must also check stolen voices
86.64 + if (voices[i].stealer_channel == this && voices[i].stealer_noteNumber == noteNumber) {
86.65 + SoftVoice v = voices[i];
86.66 + v.stealer_releaseTriggered = false;
86.67 + v.stealer_channel = null;
86.68 + v.stealer_performer = null;
86.69 + v.stealer_voiceID = -1;
86.70 + v.stealer_noteNumber = 0;
86.71 + v.stealer_velocity = 0;
86.72 + v.stealer_extendedConnectionBlocks = null;
86.73 + v.stealer_channelmixer = null;
86.74 + }
86.75 }
86.76
86.77 // Try play back note-off triggered voices,
86.78 @@ -1141,9 +1152,6 @@
86.79 }
86.80 }
86.81 break;
86.82 - case 84:
86.83 - portamento_control_note = value;
86.84 - break;
86.85 case 98:
86.86 nrpn_control = (nrpn_control & (127 << 7)) + value;
86.87 rpn_control = RPN_NULL_VALUE;
87.1 --- a/src/share/classes/com/sun/media/sound/SoftChorus.java Tue Apr 28 14:43:44 2009 -0700
87.2 +++ b/src/share/classes/com/sun/media/sound/SoftChorus.java Wed Apr 29 00:27:46 2009 -0700
87.3 @@ -38,11 +38,11 @@
87.4
87.5 private float[] delaybuffer;
87.6 private int rovepos = 0;
87.7 - private volatile float gain = 1;
87.8 - private volatile float rgain = 0;
87.9 - private volatile float delay = 0;
87.10 + private float gain = 1;
87.11 + private float rgain = 0;
87.12 + private float delay = 0;
87.13 private float lastdelay = 0;
87.14 - private volatile float feedback = 0;
87.15 + private float feedback = 0;
87.16
87.17 public VariableDelay(int maxbuffersize) {
87.18 delaybuffer = new float[maxbuffersize];
87.19 @@ -115,10 +115,8 @@
87.20
87.21 private static class LFODelay {
87.22
87.23 - private volatile double c_cos_delta;
87.24 - private volatile double c_sin_delta;
87.25 - private double c_cos = 1;
87.26 - private double c_sin = 0;
87.27 + private double phase = 1;
87.28 + private double phase_step = 0;
87.29 private double depth = 0;
87.30 private VariableDelay vdelay;
87.31 private double samplerate;
87.32 @@ -139,13 +137,11 @@
87.33
87.34 public void setRate(double rate) {
87.35 double g = (Math.PI * 2) * (rate / controlrate);
87.36 - c_cos_delta = Math.cos(g);
87.37 - c_sin_delta = Math.sin(g);
87.38 + phase_step = g;
87.39 }
87.40
87.41 public void setPhase(double phase) {
87.42 - c_cos = Math.cos(phase);
87.43 - c_sin = Math.sin(phase);
87.44 + this.phase = phase;
87.45 }
87.46
87.47 public void setFeedBack(float feedback) {
87.48 @@ -161,16 +157,16 @@
87.49 }
87.50
87.51 public void processMix(float[] in, float[] out, float[] rout) {
87.52 - c_cos = c_cos * c_cos_delta - c_sin * c_sin_delta;
87.53 - c_sin = c_cos * c_sin_delta + c_sin * c_cos_delta;
87.54 - vdelay.setDelay((float) (depth * 0.5 * (c_cos + 2)));
87.55 + phase += phase_step;
87.56 + while(phase > (Math.PI * 2)) phase -= (Math.PI * 2);
87.57 + vdelay.setDelay((float) (depth * 0.5 * (Math.cos(phase) + 2)));
87.58 vdelay.processMix(in, out, rout);
87.59 }
87.60
87.61 public void processReplace(float[] in, float[] out, float[] rout) {
87.62 - c_cos = c_cos * c_cos_delta - c_sin * c_sin_delta;
87.63 - c_sin = c_cos * c_sin_delta + c_sin * c_cos_delta;
87.64 - vdelay.setDelay((float) (depth * 0.5 * (c_cos + 2)));
87.65 + phase += phase_step;
87.66 + while(phase > (Math.PI * 2)) phase -= (Math.PI * 2);
87.67 + vdelay.setDelay((float) (depth * 0.5 * (Math.cos(phase) + 2)));
87.68 vdelay.processReplace(in, out, rout);
87.69
87.70 }
88.1 --- a/src/share/classes/com/sun/media/sound/SoftFilter.java Tue Apr 28 14:43:44 2009 -0700
88.2 +++ b/src/share/classes/com/sun/media/sound/SoftFilter.java Wed Apr 29 00:27:46 2009 -0700
88.3 @@ -543,8 +543,6 @@
88.4
88.5 public void filter1(SoftAudioBuffer sbuffer) {
88.6
88.7 - float[] buffer = sbuffer.array();
88.8 -
88.9 if (dirty) {
88.10 filter1calc();
88.11 dirty = false;
88.12 @@ -559,6 +557,7 @@
88.13
88.14 if (wet > 0 || last_wet > 0) {
88.15
88.16 + float[] buffer = sbuffer.array();
88.17 int len = buffer.length;
88.18 float a0 = this.last_a0;
88.19 float q = this.last_q;
88.20 @@ -577,14 +576,16 @@
88.21 q += q_delta;
88.22 gain += gain_delta;
88.23 wet += wet_delta;
88.24 - y1 = (1 - q * a0) * y1 - (a0) * y2 + (a0) * buffer[i];
88.25 - y2 = (1 - q * a0) * y2 + (a0) * y1;
88.26 + float ga0 = (1 - q * a0);
88.27 + y1 = ga0 * y1 + (a0) * (buffer[i] - y2);
88.28 + y2 = ga0 * y2 + (a0) * y1;
88.29 buffer[i] = y2 * gain * wet + buffer[i] * (1 - wet);
88.30 }
88.31 } else if (a0_delta == 0 && q_delta == 0) {
88.32 + float ga0 = (1 - q * a0);
88.33 for (int i = 0; i < len; i++) {
88.34 - y1 = (1 - q * a0) * y1 - (a0) * y2 + (a0) * buffer[i];
88.35 - y2 = (1 - q * a0) * y2 + (a0) * y1;
88.36 + y1 = ga0 * y1 + (a0) * (buffer[i] - y2);
88.37 + y2 = ga0 * y2 + (a0) * y1;
88.38 buffer[i] = y2 * gain;
88.39 }
88.40 } else {
88.41 @@ -592,8 +593,9 @@
88.42 a0 += a0_delta;
88.43 q += q_delta;
88.44 gain += gain_delta;
88.45 - y1 = (1 - q * a0) * y1 - (a0) * y2 + (a0) * buffer[i];
88.46 - y2 = (1 - q * a0) * y2 + (a0) * y1;
88.47 + float ga0 = (1 - q * a0);
88.48 + y1 = ga0 * y1 + (a0) * (buffer[i] - y2);
88.49 + y2 = ga0 * y2 + (a0) * y1;
88.50 buffer[i] = y2 * gain;
88.51 }
88.52 }
89.1 --- a/src/share/classes/com/sun/media/sound/SoftJitterCorrector.java Tue Apr 28 14:43:44 2009 -0700
89.2 +++ b/src/share/classes/com/sun/media/sound/SoftJitterCorrector.java Wed Apr 29 00:27:46 2009 -0700
89.3 @@ -216,6 +216,7 @@
89.4 };
89.5
89.6 thread = new Thread(runnable);
89.7 + thread.setDaemon(true);
89.8 thread.setPriority(Thread.MAX_PRIORITY);
89.9 thread.start();
89.10 }
90.1 --- a/src/share/classes/com/sun/media/sound/SoftLowFrequencyOscillator.java Tue Apr 28 14:43:44 2009 -0700
90.2 +++ b/src/share/classes/com/sun/media/sound/SoftLowFrequencyOscillator.java Wed Apr 29 00:27:46 2009 -0700
90.3 @@ -45,6 +45,13 @@
90.4 private double sin_factor = 0;
90.5 private static double PI2 = 2.0 * Math.PI;
90.6
90.7 + public SoftLowFrequencyOscillator() {
90.8 + // If sin_step is 0 then sin_stepfreq must be -INF
90.9 + for (int i = 0; i < sin_stepfreq.length; i++) {
90.10 + sin_stepfreq[i] = Double.NEGATIVE_INFINITY;
90.11 + }
90.12 + }
90.13 +
90.14 public void reset() {
90.15 for (int i = 0; i < used_count; i++) {
90.16 out[i][0] = 0;
90.17 @@ -53,7 +60,8 @@
90.18 freq[i][0] = 0;
90.19 delay_counter[i] = 0;
90.20 sin_phase[i] = 0;
90.21 - sin_stepfreq[i] = 0;
90.22 + // If sin_step is 0 then sin_stepfreq must be -INF
90.23 + sin_stepfreq[i] = Double.NEGATIVE_INFINITY;
90.24 sin_step[i] = 0;
90.25 }
90.26 used_count = 0;
91.1 --- a/src/share/classes/com/sun/media/sound/SoftMainMixer.java Tue Apr 28 14:43:44 2009 -0700
91.2 +++ b/src/share/classes/com/sun/media/sound/SoftMainMixer.java Wed Apr 29 00:27:46 2009 -0700
91.3 @@ -48,16 +48,18 @@
91.4
91.5 public final static int CHANNEL_LEFT = 0;
91.6 public final static int CHANNEL_RIGHT = 1;
91.7 - public final static int CHANNEL_EFFECT1 = 2;
91.8 - public final static int CHANNEL_EFFECT2 = 3;
91.9 - public final static int CHANNEL_EFFECT3 = 4;
91.10 - public final static int CHANNEL_EFFECT4 = 5;
91.11 + public final static int CHANNEL_MONO = 2;
91.12 + public final static int CHANNEL_EFFECT1 = 3;
91.13 + public final static int CHANNEL_EFFECT2 = 4;
91.14 + public final static int CHANNEL_EFFECT3 = 5;
91.15 + public final static int CHANNEL_EFFECT4 = 6;
91.16 public final static int CHANNEL_LEFT_DRY = 10;
91.17 public final static int CHANNEL_RIGHT_DRY = 11;
91.18 public final static int CHANNEL_SCRATCH1 = 12;
91.19 public final static int CHANNEL_SCRATCH2 = 13;
91.20 public final static int CHANNEL_CHANNELMIXER_LEFT = 14;
91.21 public final static int CHANNEL_CHANNELMIXER_RIGHT = 15;
91.22 + public final static int CHANNEL_CHANNELMIXER_MONO = 16;
91.23 protected boolean active_sensing_on = false;
91.24 private long msec_last_activity = -1;
91.25 private boolean pusher_silent = false;
91.26 @@ -485,8 +487,10 @@
91.27 // to channelmixer left,right input/output
91.28 SoftAudioBuffer leftbak = buffers[CHANNEL_LEFT];
91.29 SoftAudioBuffer rightbak = buffers[CHANNEL_RIGHT];
91.30 + SoftAudioBuffer monobak = buffers[CHANNEL_MONO];
91.31 buffers[CHANNEL_LEFT] = buffers[CHANNEL_CHANNELMIXER_LEFT];
91.32 - buffers[CHANNEL_RIGHT] = buffers[CHANNEL_CHANNELMIXER_LEFT];
91.33 + buffers[CHANNEL_RIGHT] = buffers[CHANNEL_CHANNELMIXER_RIGHT];
91.34 + buffers[CHANNEL_MONO] = buffers[CHANNEL_CHANNELMIXER_MONO];
91.35
91.36 int bufferlen = buffers[CHANNEL_LEFT].getSize();
91.37
91.38 @@ -503,6 +507,7 @@
91.39 for (ModelChannelMixer cmixer : act_registeredMixers) {
91.40 for (int i = 0; i < cbuffer.length; i++)
91.41 Arrays.fill(cbuffer[i], 0);
91.42 + buffers[CHANNEL_MONO].clear();
91.43 boolean hasactivevoices = false;
91.44 for (int i = 0; i < voicestatus.length; i++)
91.45 if (voicestatus[i].active)
91.46 @@ -517,6 +522,26 @@
91.47 }
91.48 }
91.49
91.50 + if(!buffers[CHANNEL_MONO].isSilent())
91.51 + {
91.52 + float[] mono = buffers[CHANNEL_MONO].array();
91.53 + float[] left = buffers[CHANNEL_LEFT].array();
91.54 + if (nrofchannels != 1) {
91.55 + float[] right = buffers[CHANNEL_RIGHT].array();
91.56 + for (int i = 0; i < bufferlen; i++) {
91.57 + float v = mono[i];
91.58 + left[i] += v;
91.59 + right[i] += v;
91.60 + }
91.61 + }
91.62 + else
91.63 + {
91.64 + for (int i = 0; i < bufferlen; i++) {
91.65 + left[i] += mono[i];
91.66 + }
91.67 + }
91.68 + }
91.69 +
91.70 for (int i = 0; i < cbuffer.length; i++) {
91.71 float[] cbuff = cbuffer[i];
91.72 float[] obuff = obuffer[i];
91.73 @@ -539,6 +564,7 @@
91.74
91.75 buffers[CHANNEL_LEFT] = leftbak;
91.76 buffers[CHANNEL_RIGHT] = rightbak;
91.77 + buffers[CHANNEL_MONO] = monobak;
91.78
91.79 }
91.80
91.81 @@ -547,6 +573,27 @@
91.82 if (voicestatus[i].channelmixer == null)
91.83 voicestatus[i].processAudioLogic(buffers);
91.84
91.85 + if(!buffers[CHANNEL_MONO].isSilent())
91.86 + {
91.87 + float[] mono = buffers[CHANNEL_MONO].array();
91.88 + float[] left = buffers[CHANNEL_LEFT].array();
91.89 + int bufferlen = buffers[CHANNEL_LEFT].getSize();
91.90 + if (nrofchannels != 1) {
91.91 + float[] right = buffers[CHANNEL_RIGHT].array();
91.92 + for (int i = 0; i < bufferlen; i++) {
91.93 + float v = mono[i];
91.94 + left[i] += v;
91.95 + right[i] += v;
91.96 + }
91.97 + }
91.98 + else
91.99 + {
91.100 + for (int i = 0; i < bufferlen; i++) {
91.101 + left[i] += mono[i];
91.102 + }
91.103 + }
91.104 + }
91.105 +
91.106 // Run effects
91.107 if (synth.chorus_on)
91.108 chorus.processAudio();
91.109 @@ -665,7 +712,7 @@
91.110 / synth.getControlRate());
91.111
91.112 control_mutex = synth.control_mutex;
91.113 - buffers = new SoftAudioBuffer[16];
91.114 + buffers = new SoftAudioBuffer[17];
91.115 for (int i = 0; i < buffers.length; i++) {
91.116 buffers[i] = new SoftAudioBuffer(buffersize, synth.getFormat());
91.117 }
92.1 --- a/src/share/classes/com/sun/media/sound/SoftSynthesizer.java Tue Apr 28 14:43:44 2009 -0700
92.2 +++ b/src/share/classes/com/sun/media/sound/SoftSynthesizer.java Wed Apr 29 00:27:46 2009 -0700
92.3 @@ -889,9 +889,12 @@
92.4 return;
92.5 }
92.6 synchronized (control_mutex) {
92.7 + Throwable causeException = null;
92.8 try {
92.9 - if (line != null)
92.10 + if (line != null) {
92.11 + // can throw IllegalArgumentException
92.12 setFormat(line.getFormat());
92.13 + }
92.14
92.15 AudioInputStream ais = openStream(getFormat(), info);
92.16
92.17 @@ -900,10 +903,13 @@
92.18
92.19 if (line == null)
92.20 {
92.21 - if(testline != null)
92.22 + if (testline != null) {
92.23 line = testline;
92.24 - else
92.25 + } else {
92.26 + // can throw LineUnavailableException,
92.27 + // IllegalArgumentException, SecurityException
92.28 line = AudioSystem.getSourceDataLine(getFormat());
92.29 + }
92.30 }
92.31
92.32 double latency = this.latency;
92.33 @@ -911,6 +917,8 @@
92.34 if (!line.isOpen()) {
92.35 int bufferSize = getFormat().getFrameSize()
92.36 * (int)(getFormat().getFrameRate() * (latency/1000000f));
92.37 + // can throw LineUnavailableException,
92.38 + // IllegalArgumentException, SecurityException
92.39 line.open(getFormat(), bufferSize);
92.40
92.41 // Remember that we opened that line
92.42 @@ -954,13 +962,22 @@
92.43 weakstream.sourceDataLine = sourceDataLine;
92.44 }
92.45
92.46 + } catch (LineUnavailableException e) {
92.47 + causeException = e;
92.48 + } catch (IllegalArgumentException e) {
92.49 + causeException = e;
92.50 + } catch (SecurityException e) {
92.51 + causeException = e;
92.52 + }
92.53
92.54 -
92.55 - } catch (LineUnavailableException e) {
92.56 + if (causeException != null) {
92.57 if (isOpen())
92.58 close();
92.59 // am: need MidiUnavailableException(Throwable) ctor!
92.60 - throw new MidiUnavailableException(e.toString());
92.61 + MidiUnavailableException ex = new MidiUnavailableException(
92.62 + "Can not open line");
92.63 + ex.initCause(causeException);
92.64 + throw ex;
92.65 }
92.66
92.67 }
93.1 --- a/src/share/classes/com/sun/media/sound/SoftVoice.java Tue Apr 28 14:43:44 2009 -0700
93.2 +++ b/src/share/classes/com/sun/media/sound/SoftVoice.java Wed Apr 29 00:27:46 2009 -0700
93.3 @@ -782,6 +782,7 @@
93.4
93.5 SoftAudioBuffer left = buffer[SoftMainMixer.CHANNEL_LEFT];
93.6 SoftAudioBuffer right = buffer[SoftMainMixer.CHANNEL_RIGHT];
93.7 + SoftAudioBuffer mono = buffer[SoftMainMixer.CHANNEL_MONO];
93.8 SoftAudioBuffer eff1 = buffer[SoftMainMixer.CHANNEL_EFFECT1];
93.9 SoftAudioBuffer eff2 = buffer[SoftMainMixer.CHANNEL_EFFECT2];
93.10 SoftAudioBuffer leftdry = buffer[SoftMainMixer.CHANNEL_LEFT_DRY];
93.11 @@ -803,13 +804,22 @@
93.12 mixAudioStream(rightdry, left, last_out_mixer_left,
93.13 out_mixer_left);
93.14 } else {
93.15 - mixAudioStream(leftdry, left, last_out_mixer_left, out_mixer_left);
93.16 - if (rightdry != null)
93.17 - mixAudioStream(rightdry, right, last_out_mixer_right,
93.18 + if(rightdry == null &&
93.19 + last_out_mixer_left == last_out_mixer_right &&
93.20 + out_mixer_left == out_mixer_right)
93.21 + {
93.22 + mixAudioStream(leftdry, mono, last_out_mixer_left, out_mixer_left);
93.23 + }
93.24 + else
93.25 + {
93.26 + mixAudioStream(leftdry, left, last_out_mixer_left, out_mixer_left);
93.27 + if (rightdry != null)
93.28 + mixAudioStream(rightdry, right, last_out_mixer_right,
93.29 out_mixer_right);
93.30 - else
93.31 - mixAudioStream(leftdry, right, last_out_mixer_right,
93.32 + else
93.33 + mixAudioStream(leftdry, right, last_out_mixer_right,
93.34 out_mixer_right);
93.35 + }
93.36 }
93.37
93.38 if (rightdry == null) {
94.1 --- a/src/share/classes/java/awt/Color.java Tue Apr 28 14:43:44 2009 -0700
94.2 +++ b/src/share/classes/java/awt/Color.java Wed Apr 29 00:27:46 2009 -0700
94.3 @@ -687,7 +687,7 @@
94.4 * @since JDK1.0
94.5 */
94.6 public boolean equals(Object obj) {
94.7 - return obj instanceof Color && ((Color)obj).value == this.value;
94.8 + return obj instanceof Color && ((Color)obj).getRGB() == this.getRGB();
94.9 }
94.10
94.11 /**
95.1 --- a/src/share/classes/java/awt/Component.java Tue Apr 28 14:43:44 2009 -0700
95.2 +++ b/src/share/classes/java/awt/Component.java Wed Apr 29 00:27:46 2009 -0700
95.3 @@ -6666,7 +6666,7 @@
95.4
95.5
95.6 // Update stacking order
95.7 - peer.setZOrder(getHWPeerAboveMe());
95.8 + updateZOrder();
95.9
95.10 if (!isAddNotifyComplete) {
95.11 mixOnShowing();
95.12 @@ -9838,4 +9838,11 @@
95.13
95.14 return doesClassImplement(obj.getClass(), interfaceName);
95.15 }
95.16 +
95.17 + // Note that the method is overriden in the Window class,
95.18 + // a window doesn't need to be updated in the Z-order.
95.19 + void updateZOrder() {
95.20 + peer.setZOrder(getHWPeerAboveMe());
95.21 + }
95.22 +
95.23 }
96.1 --- a/src/share/classes/java/awt/Container.java Tue Apr 28 14:43:44 2009 -0700
96.2 +++ b/src/share/classes/java/awt/Container.java Wed Apr 29 00:27:46 2009 -0700
96.3 @@ -840,7 +840,7 @@
96.4 // Native container changed - need to reparent native widgets
96.5 newNativeContainer.reparentChild(comp);
96.6 }
96.7 - comp.peer.setZOrder(comp.getHWPeerAboveMe());
96.8 + comp.updateZOrder();
96.9
96.10 if (!comp.isLightweight() && isLightweight()) {
96.11 // If component is heavyweight and one of the containers is lightweight
96.12 @@ -3977,10 +3977,8 @@
96.13 Component comp = getComponent(index);
96.14 if (!comp.isLightweight()) {
96.15 comp.applyCurrentShape();
96.16 - if (comp instanceof Container && ((Container)comp).getLayout() == null) {
96.17 - ((Container)comp).recursiveApplyCurrentShape();
96.18 - }
96.19 - } else if (comp instanceof Container &&
96.20 + }
96.21 + if (comp instanceof Container &&
96.22 ((Container)comp).hasHeavyweightDescendants()) {
96.23 ((Container)comp).recursiveApplyCurrentShape();
96.24 }
97.1 --- a/src/share/classes/java/awt/GraphicsConfiguration.java Tue Apr 28 14:43:44 2009 -0700
97.2 +++ b/src/share/classes/java/awt/GraphicsConfiguration.java Wed Apr 29 00:27:46 2009 -0700
97.3 @@ -440,13 +440,14 @@
97.4 * the {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
97.5 * PERPIXEL_TRANSLUCENT} kind of translucency.
97.6 *
97.7 - * @param gc GraphicsConfiguration
97.8 - * @throws NullPointerException if the gc argument is null
97.9 * @return whether the given GraphicsConfiguration supports
97.10 * the translucency effects.
97.11 + *
97.12 * @see Window#setBackground(Color)
97.13 + *
97.14 + * @since 1.7
97.15 */
97.16 - /*public */boolean isTranslucencyCapable() {
97.17 + public boolean isTranslucencyCapable() {
97.18 // Overridden in subclasses
97.19 return false;
97.20 }
98.1 --- a/src/share/classes/java/awt/GraphicsDevice.java Tue Apr 28 14:43:44 2009 -0700
98.2 +++ b/src/share/classes/java/awt/GraphicsDevice.java Wed Apr 29 00:27:46 2009 -0700
98.3 @@ -112,10 +112,14 @@
98.4 */
98.5 public final static int TYPE_IMAGE_BUFFER = 2;
98.6
98.7 - /** Kinds of translucency supported by the underlying system.
98.8 - * @see #isTranslucencySupported
98.9 + /**
98.10 + * Kinds of translucency supported by the underlying system.
98.11 + *
98.12 + * @see #isWindowTranslucencySupported
98.13 + *
98.14 + * @since 1.7
98.15 */
98.16 - /*public */static enum WindowTranslucency {
98.17 + public static enum WindowTranslucency {
98.18 /**
98.19 * Represents support in the underlying system for windows each pixel
98.20 * of which is guaranteed to be either completely opaque, with
98.21 @@ -246,38 +250,44 @@
98.22 * full-screen window is not visible, this method will make it visible.
98.23 * It will remain visible when returning to windowed mode.
98.24 * <p>
98.25 - * When returning to windowed mode from an exclusive full-screen window, any
98.26 - * display changes made by calling <code>setDisplayMode</code> are
98.27 + * When entering full-screen mode, all the translucency effects are reset for
98.28 + * the window. Its shape is set to {@code null}, the opacity value is set to
98.29 + * 1.0f, and the background color alpha is set to 255 (completely opaque).
98.30 + * These values are not restored when returning to windowed mode.
98.31 + * <p>
98.32 + * When returning to windowed mode from an exclusive full-screen window,
98.33 + * any display changes made by calling {@code setDisplayMode} are
98.34 * automatically restored to their original state.
98.35 *
98.36 - * @param w a window to use as the full-screen window; <code>null</code>
98.37 + * @param w a window to use as the full-screen window; {@code null}
98.38 * if returning to windowed mode. Some platforms expect the
98.39 * fullscreen window to be a top-level component (i.e., a Frame);
98.40 * therefore it is preferable to use a Frame here rather than a
98.41 * Window.
98.42 + *
98.43 * @see #isFullScreenSupported
98.44 * @see #getFullScreenWindow
98.45 * @see #setDisplayMode
98.46 * @see Component#enableInputMethods
98.47 * @see Component#setVisible
98.48 + *
98.49 * @since 1.4
98.50 */
98.51 public void setFullScreenWindow(Window w) {
98.52 if (w != null) {
98.53 - //XXX: The actions should be documented in some non-update release.
98.54 - /*
98.55 if (w.getShape() != null) {
98.56 - w.setShape(w, null);
98.57 - }
98.58 - if (!w.isOpaque()) {
98.59 - w.setOpaque(false);
98.60 + w.setShape(null);
98.61 }
98.62 if (w.getOpacity() < 1.0f) {
98.63 w.setOpacity(1.0f);
98.64 }
98.65 - */
98.66 + Color bgColor = w.getBackground();
98.67 + if (bgColor.getAlpha() < 255) {
98.68 + bgColor = new Color(bgColor.getRed(), bgColor.getGreen(),
98.69 + bgColor.getBlue(), 255);
98.70 + w.setBackground(bgColor);
98.71 + }
98.72 }
98.73 -
98.74 if (fullScreenWindow != null && windowedModeBounds != null) {
98.75 // if the window went into fs mode before it was realized it may
98.76 // have (0,0) dimensions
98.77 @@ -469,13 +479,15 @@
98.78 }
98.79
98.80 /**
98.81 - * Returns whether the given level of translucency is supported
98.82 + * Returns whether the given level of translucency is supported by
98.83 * this graphics device.
98.84 *
98.85 * @param translucencyKind a kind of translucency support
98.86 * @return whether the given translucency kind is supported
98.87 + *
98.88 + * @since 1.7
98.89 */
98.90 - /*public */boolean isWindowTranslucencySupported(WindowTranslucency translucencyKind) {
98.91 + public boolean isWindowTranslucencySupported(WindowTranslucency translucencyKind) {
98.92 switch (translucencyKind) {
98.93 case PERPIXEL_TRANSPARENT:
98.94 return isWindowShapingSupported();
99.1 --- a/src/share/classes/java/awt/Window.java Tue Apr 28 14:43:44 2009 -0700
99.2 +++ b/src/share/classes/java/awt/Window.java Wed Apr 29 00:27:46 2009 -0700
99.3 @@ -25,6 +25,7 @@
99.4 package java.awt;
99.5
99.6 import java.awt.event.*;
99.7 +import java.awt.geom.Path2D;
99.8 import java.awt.geom.Point2D;
99.9 import java.awt.im.InputContext;
99.10 import java.awt.image.BufferStrategy;
99.11 @@ -297,6 +298,7 @@
99.12 /*
99.13 * Opacity level of the window
99.14 *
99.15 + * @serial
99.16 * @see #setOpacity(float)
99.17 * @see #getOpacity()
99.18 * @since 1.7
99.19 @@ -307,6 +309,7 @@
99.20 * The shape assigned to this window. This field is set to null if
99.21 * no shape is set (rectangular window).
99.22 *
99.23 + * @serial
99.24 * @see #getShape()
99.25 * @see #setShape(Shape)
99.26 * @since 1.7
99.27 @@ -3340,32 +3343,78 @@
99.28 // ******************** SHAPES & TRANSPARENCY CODE ********************
99.29
99.30 /**
99.31 - * JavaDoc
99.32 + * Returns the opacity of the window.
99.33 + *
99.34 + * @return the opacity of the window
99.35 + *
99.36 + * @see Window#setOpacity
99.37 + * @see GraphicsDevice.WindowTranslucency
99.38 + *
99.39 + * @since 1.7
99.40 */
99.41 - /*public */float getOpacity() {
99.42 + public float getOpacity() {
99.43 synchronized (getTreeLock()) {
99.44 return opacity;
99.45 }
99.46 }
99.47
99.48 /**
99.49 - * JavaDoc
99.50 + * Sets the opacity of the window.
99.51 + * <p>
99.52 + * The opacity value is in the range [0..1]. Note that setting the opacity
99.53 + * level of 0 may or may not disable the mouse event handling on this
99.54 + * window. This is a platform-dependent behavior.
99.55 + * <p>
99.56 + * In order for this method to enable the translucency effect, the {@link
99.57 + * GraphicsDevice#isWindowTranslucencySupported()} method must indicate that
99.58 + * the {@link GraphicsDevice.WindowTranslucency#TRANSLUCENT TRANSLUCENT}
99.59 + * translucency is supported.
99.60 + * <p>
99.61 + * Also note that the window must not be in the full-screen mode when
99.62 + * setting the opacity value < 1.0f. Otherwise the {@code
99.63 + * IllegalComponentStateException} is thrown.
99.64 + * <p>
99.65 + * The translucency levels of individual pixels may also be effected by the
99.66 + * alpha component of their color (see {@link setBackground()}) and the
99.67 + * current shape of this window (see {@link setShape()}).
99.68 + *
99.69 + * @param opacity the opacity level to set to the window
99.70 + *
99.71 + * @throws IllegalArgumentException if the opacity is out of the range
99.72 + * [0..1]
99.73 + * @throws IllegalComponentStateException if the window is in full screen
99.74 + * mode, and the opacity is less than 1.0f
99.75 + * @throws UnsupportedOperationException if the {@code
99.76 + * GraphicsDevice.WindowTranslucency#TRANSLUCENT TRANSLUCENT}
99.77 + * translucency kind is not supported and the opacity is less than 1.0f
99.78 + *
99.79 + * @see Window#getOpacity
99.80 + * @see Window#setBackground()
99.81 + * @see Window#setShape()
99.82 + * @see GraphicsDevice.WindowTranslucency
99.83 + * @see GraphicsDevice#isWindowTranslucencySupported()
99.84 + *
99.85 + * @since 1.7
99.86 */
99.87 - /*public */void setOpacity(float opacity) {
99.88 + public void setOpacity(float opacity) {
99.89 synchronized (getTreeLock()) {
99.90 if (opacity < 0.0f || opacity > 1.0f) {
99.91 throw new IllegalArgumentException(
99.92 "The value of opacity should be in the range [0.0f .. 1.0f].");
99.93 }
99.94 - GraphicsConfiguration gc = getGraphicsConfiguration();
99.95 - GraphicsDevice gd = gc.getDevice();
99.96 - if (!gd.isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.TRANSLUCENT)) {
99.97 - throw new UnsupportedOperationException(
99.98 + if (opacity < 1.0f) {
99.99 + GraphicsConfiguration gc = getGraphicsConfiguration();
99.100 + GraphicsDevice gd = gc.getDevice();
99.101 + if (gc.getDevice().getFullScreenWindow() == this) {
99.102 + throw new IllegalComponentStateException(
99.103 + "Setting opacity for full-screen window is not supported.");
99.104 + }
99.105 + if (!gd.isWindowTranslucencySupported(
99.106 + GraphicsDevice.WindowTranslucency.TRANSLUCENT))
99.107 + {
99.108 + throw new UnsupportedOperationException(
99.109 "TRANSLUCENT translucency is not supported.");
99.110 - }
99.111 - if ((gc.getDevice().getFullScreenWindow() == this) && (opacity < 1.0f)) {
99.112 - throw new IllegalArgumentException(
99.113 - "Setting opacity for full-screen window is not supported.");
99.114 + }
99.115 }
99.116 this.opacity = opacity;
99.117 WindowPeer peer = (WindowPeer)getPeer();
99.118 @@ -3376,37 +3425,86 @@
99.119 }
99.120
99.121 /**
99.122 - * JavaDoc
99.123 + * Returns the shape of the window.
99.124 + *
99.125 + * The value returned by this method may not be the same as
99.126 + * previously set with {@code setShape(shape)}, but it is guaranteed
99.127 + * to represent the same shape.
99.128 + *
99.129 + * @return the shape of the window or {@code null} if no
99.130 + * shape is specified for the window
99.131 + *
99.132 + * @see Window#setShape
99.133 + * @see GraphicsDevice.WindowTranslucency
99.134 + *
99.135 + * @since 1.7
99.136 */
99.137 - /*public */Shape getShape() {
99.138 + public Shape getShape() {
99.139 synchronized (getTreeLock()) {
99.140 - return shape;
99.141 + return shape == null ? null : new Path2D.Float(shape);
99.142 }
99.143 }
99.144
99.145 /**
99.146 - * JavaDoc
99.147 + * Sets the shape of the window.
99.148 + * <p>
99.149 + * Setting a shape enables cutting off some parts of the window, leaving
99.150 + * visible and clickable only those parts belonging to the given shape
99.151 + * (see {@link Shape}). If the shape argument is null, this methods
99.152 + * restores the default shape (making the window rectangular on most
99.153 + * platforms.)
99.154 + * <p>
99.155 + * The following conditions must be met in order to set a non-null shape:
99.156 + * <ul>
99.157 + * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
99.158 + * PERPIXEL_TRANSPARENT} translucency kind must be supported by the
99.159 + * underlying system (see {@link })
99.160 + * <i>and</i>
99.161 + * <li>The window must not be in the full-screen mode (see
99.162 + * {@link GraphicsDevice#setFullScreenWindow()})
99.163 + * </ul>
99.164 + * If a certain condition is not met, either the {@code
99.165 + * UnsupportedOperationException} or {@code IllegalComponentStateException}
99.166 + * is thrown.
99.167 + * <p>
99.168 + * The tranlucency levels of individual pixels may also be effected by the
99.169 + * alpha component of their color (see {@link setBackground()}) and the
99.170 + * opacity value (see {@link setOpacity()}). See {@link
99.171 + * GraphicsDevice#WindowTranslucency} for more details.
99.172 *
99.173 - * @param window the window to set the shape to
99.174 * @param shape the shape to set to the window
99.175 - * @throws IllegalArgumentException if the window is in full screen mode,
99.176 - * and the shape is not null
99.177 + *
99.178 + * @throws IllegalComponentStateException if the shape is not {@code
99.179 + * null} and the window is in full-screen mode
99.180 + * @throws UnsupportedOperationException if the shape is not {@code
99.181 + * null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
99.182 + * PERPIXEL_TRANSPARENT} translucency is not supported
99.183 + *
99.184 + * @see Window#getShape()
99.185 + * @see Window#setBackgound()
99.186 + * @see Window#setOpacity()
99.187 + * @see GraphicsDevice.WindowTranslucency
99.188 + * @see GraphicsDevice#isWindowTranslucencySupported()
99.189 + *
99.190 + * @since 1.7
99.191 */
99.192 - /*public */void setShape(Shape shape) {
99.193 + public void setShape(Shape shape) {
99.194 synchronized (getTreeLock()) {
99.195 - GraphicsConfiguration gc = getGraphicsConfiguration();
99.196 - GraphicsDevice gd = gc.getDevice();
99.197 - if (!gd.isWindowTranslucencySupported(
99.198 - GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
99.199 - {
99.200 - throw new UnsupportedOperationException(
99.201 + if (shape != null) {
99.202 + GraphicsConfiguration gc = getGraphicsConfiguration();
99.203 + GraphicsDevice gd = gc.getDevice();
99.204 + if (gc.getDevice().getFullScreenWindow() == this) {
99.205 + throw new IllegalComponentStateException(
99.206 + "Setting shape for full-screen window is not supported.");
99.207 + }
99.208 + if (!gd.isWindowTranslucencySupported(
99.209 + GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
99.210 + {
99.211 + throw new UnsupportedOperationException(
99.212 "PERPIXEL_TRANSPARENT translucency is not supported.");
99.213 + }
99.214 }
99.215 - if ((gc.getDevice().getFullScreenWindow() == this) && (shape != null)) {
99.216 - throw new IllegalArgumentException(
99.217 - "Setting shape for full-screen window is not supported.");
99.218 - }
99.219 - this.shape = shape;
99.220 + this.shape = (shape == null) ? null : new Path2D.Float(shape);
99.221 WindowPeer peer = (WindowPeer)getPeer();
99.222 if (peer != null) {
99.223 peer.applyShape(shape == null ? null : Region.getInstance(shape, null));
99.224 @@ -3415,66 +3513,115 @@
99.225 }
99.226
99.227 /**
99.228 - * JavaDoc
99.229 + * Gets the background color of this window.
99.230 + * <p>
99.231 + * Note that the alpha component of the returned color indicates whether
99.232 + * the window is in the non-opaque (per-pixel translucent) mode.
99.233 + *
99.234 + * @return this component's background color
99.235 + *
99.236 + * @see Window#setBackground
99.237 + * @see GraphicsDevice.WindowTranslucency
99.238 */
99.239 -/*
99.240 + @Override
99.241 + public Color getBackground() {
99.242 + return super.getBackground();
99.243 + }
99.244 +
99.245 + /**
99.246 + * Sets the background color of this window.
99.247 + * <p>
99.248 + * If the windowing system supports the {@link
99.249 + * GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT PERPIXEL_TRANSLUCENT}
99.250 + * tranclucency, the alpha component of the given background color
99.251 + * may effect the mode of operation for this window: it indicates whether
99.252 + * this window must be opaque (alpha == 1.0f) or per-pixel translucent
99.253 + * (alpha < 1.0f). All the following conditions must be met in order
99.254 + * to be able to enable the per-pixel transparency mode for this window:
99.255 + * <ul>
99.256 + * <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
99.257 + * PERPIXEL_TRANSLUCENT} translucency must be supported
99.258 + * by the graphics device where this window is located <i>and</i>
99.259 + * <li>The window must not be in the full-screen mode (see {@link
99.260 + * GraphicsDevice#setFullScreenWindow()})
99.261 + * </ul>
99.262 + * If a certain condition is not met at the time of calling this method,
99.263 + * the alpha component of the given background color will not effect the
99.264 + * mode of operation for this window.
99.265 + * <p>
99.266 + * When the window is per-pixel translucent, the drawing sub-system
99.267 + * respects the alpha value of each individual pixel. If a pixel gets
99.268 + * painted with the alpha color component equal to zero, it becomes
99.269 + * visually transparent, if the alpha of the pixel is equal to 1.0f, the
99.270 + * pixel is fully opaque. Interim values of the alpha color component make
99.271 + * the pixel semi-transparent. In this mode the background of the window
99.272 + * gets painted with the alpha value of the given background color (meaning
99.273 + * that it is not painted at all if the alpha value of the argument of this
99.274 + * method is equal to zero.)
99.275 + * <p>
99.276 + * The actual level of translucency of a given pixel also depends on window
99.277 + * opacity (see {@link setOpacity()}), as well as the current shape of
99.278 + * this window (see {@link setShape()}).
99.279 + * <p>
99.280 + * Note that painting a pixel with the alpha value of 0 may or may not
99.281 + * disable the mouse event handling on this pixel. This is a
99.282 + * platform-dependent behavior. To make sure the mouse clicks do not get
99.283 + * dispatched to a particular pixel, the pixel must be excluded from the
99.284 + * shape of the window.
99.285 + * <p>
99.286 + * Enabling the per-pixel translucency mode may change the graphics
99.287 + * configuration of this window due to the native platform requirements.
99.288 + *
99.289 + * @param bgColor the color to become this window's background color.
99.290 + *
99.291 + * @throws IllegalComponentStateException if the alpha value of the given
99.292 + * background color is less than 1.0f and the window is in
99.293 + * full-screen mode
99.294 + * @throws UnsupportedOperationException if the alpha value of the given
99.295 + * background color is less than 1.0f and
99.296 + * {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
99.297 + * PERPIXEL_TRANSLUCENT} translucency is not supported
99.298 + *
99.299 + * @see Window#getBackground
99.300 + * @see Window#setOpacity()
99.301 + * @see Window#setShape()
99.302 + * @see GraphicsDevice.WindowTranslucency
99.303 + * @see GraphicsDevice#isWindowTranslucencySupported()
99.304 + * @see GraphicsConfiguration#isTranslucencyCapable()
99.305 + */
99.306 @Override
99.307 public void setBackground(Color bgColor) {
99.308 + Color oldBg = getBackground();
99.309 + if (oldBg != null && oldBg.equals(bgColor)) {
99.310 + return;
99.311 + }
99.312 + super.setBackground(bgColor);
99.313 + int oldAlpha = oldBg != null ? oldBg.getAlpha() : 255;
99.314 int alpha = bgColor.getAlpha();
99.315 - if (alpha < 255) { // non-opaque window
99.316 + if ((oldAlpha == 255) && (alpha < 255)) { // non-opaque window
99.317 GraphicsConfiguration gc = getGraphicsConfiguration();
99.318 GraphicsDevice gd = gc.getDevice();
99.319 if (gc.getDevice().getFullScreenWindow() == this) {
99.320 - throw new IllegalArgumentException(
99.321 + throw new IllegalComponentStateException(
99.322 "Making full-screen window non opaque is not supported.");
99.323 }
99.324 if (!gc.isTranslucencyCapable()) {
99.325 GraphicsConfiguration capableGC = gd.getTranslucencyCapableGC();
99.326 if (capableGC == null) {
99.327 - throw new IllegalArgumentException(
99.328 + throw new UnsupportedOperationException(
99.329 "PERPIXEL_TRANSLUCENT translucency is not supported");
99.330 }
99.331 - // TODO: change GC
99.332 + setGraphicsConfiguration(capableGC);
99.333 }
99.334 setLayersOpaque(this, false);
99.335 + } else if ((oldAlpha < 255) && (alpha == 255)) {
99.336 + setLayersOpaque(this, true);
99.337 }
99.338 -
99.339 - super.setBackground(bgColor);
99.340 -
99.341 WindowPeer peer = (WindowPeer)getPeer();
99.342 if (peer != null) {
99.343 peer.setOpaque(alpha == 255);
99.344 }
99.345 }
99.346 -*/
99.347 -
99.348 - private transient boolean opaque = true;
99.349 -
99.350 - void setOpaque(boolean opaque) {
99.351 - synchronized (getTreeLock()) {
99.352 - GraphicsConfiguration gc = getGraphicsConfiguration();
99.353 - if (!opaque && !com.sun.awt.AWTUtilities.isTranslucencyCapable(gc)) {
99.354 - throw new IllegalArgumentException(
99.355 - "The window must use a translucency-compatible graphics configuration");
99.356 - }
99.357 - if (!com.sun.awt.AWTUtilities.isTranslucencySupported(
99.358 - com.sun.awt.AWTUtilities.Translucency.PERPIXEL_TRANSLUCENT))
99.359 - {
99.360 - throw new UnsupportedOperationException(
99.361 - "PERPIXEL_TRANSLUCENT translucency is not supported.");
99.362 - }
99.363 - if ((gc.getDevice().getFullScreenWindow() == this) && !opaque) {
99.364 - throw new IllegalArgumentException(
99.365 - "Making full-screen window non opaque is not supported.");
99.366 - }
99.367 - setLayersOpaque(this, opaque);
99.368 - this.opaque = opaque;
99.369 - WindowPeer peer = (WindowPeer)getPeer();
99.370 - if (peer != null) {
99.371 - peer.setOpaque(opaque);
99.372 - }
99.373 - }
99.374 - }
99.375
99.376 private void updateWindow(BufferedImage backBuffer) {
99.377 synchronized (getTreeLock()) {
99.378 @@ -3505,10 +3652,10 @@
99.379 }
99.380 lp.setOpaque(isOpaque);
99.381 root.setOpaque(isOpaque);
99.382 - root.setDoubleBuffered(isOpaque); //XXX: the "white rect" workaround
99.383 + root.setDoubleBuffered(isOpaque);
99.384 if (content != null) {
99.385 content.setOpaque(isOpaque);
99.386 - content.setDoubleBuffered(isOpaque); //XXX: the "white rect" workaround
99.387 + content.setDoubleBuffered(isOpaque);
99.388
99.389 // Iterate down one level to see whether we have a JApplet
99.390 // (which is also a RootPaneContainer) which requires processing
99.391 @@ -3523,36 +3670,6 @@
99.392 }
99.393 }
99.394 }
99.395 -
99.396 - Color bg = component.getBackground();
99.397 - boolean hasTransparentBg = TRANSPARENT_BACKGROUND_COLOR.equals(bg);
99.398 -
99.399 - Container container = null;
99.400 - if (component instanceof Container) {
99.401 - container = (Container) component;
99.402 - }
99.403 -
99.404 - if (isOpaque) {
99.405 - if (hasTransparentBg) {
99.406 - // Note: we use the SystemColor.window color as the default.
99.407 - // This color is used in the WindowPeer implementations to
99.408 - // initialize the background color of the window if it is null.
99.409 - // (This might not be the right thing to do for other
99.410 - // RootPaneContainers we might be invoked with)
99.411 - Color newColor = null;
99.412 - if (container != null && container.preserveBackgroundColor != null) {
99.413 - newColor = container.preserveBackgroundColor;
99.414 - } else {
99.415 - newColor = SystemColor.window;
99.416 - }
99.417 - component.setBackground(newColor);
99.418 - }
99.419 - } else {
99.420 - if (!hasTransparentBg && container != null) {
99.421 - container.preserveBackgroundColor = bg;
99.422 - }
99.423 - component.setBackground(TRANSPARENT_BACKGROUND_COLOR);
99.424 - }
99.425 }
99.426
99.427
99.428 @@ -3620,20 +3737,16 @@
99.429 window.setShape(shape);
99.430 }
99.431 public boolean isOpaque(Window window) {
99.432 - /*
99.433 - return window.getBackground().getAlpha() < 255;
99.434 - */
99.435 - synchronized (window.getTreeLock()) {
99.436 - return window.opaque;
99.437 - }
99.438 + Color bg = window.getBackground();
99.439 + return (bg != null) ? bg.getAlpha() == 255 : true;
99.440 }
99.441 public void setOpaque(Window window, boolean opaque) {
99.442 - /*
99.443 Color bg = window.getBackground();
99.444 + if (bg == null) {
99.445 + bg = new Color(0, 0, 0, 0);
99.446 + }
99.447 window.setBackground(new Color(bg.getRed(), bg.getGreen(), bg.getBlue(),
99.448 opaque ? 255 : 0));
99.449 - */
99.450 - window.setOpaque(opaque);
99.451 }
99.452 public void updateWindow(Window window, BufferedImage backBuffer) {
99.453 window.updateWindow(backBuffer);
99.454 @@ -3674,6 +3787,10 @@
99.455 }); // WindowAccessor
99.456 } // static
99.457
99.458 + // a window doesn't need to be updated in the Z-order.
99.459 + @Override
99.460 + void updateZOrder() {}
99.461 +
99.462 } // class Window
99.463
99.464
100.1 --- a/src/share/classes/javax/sound/midi/MetaMessage.java Tue Apr 28 14:43:44 2009 -0700
100.2 +++ b/src/share/classes/javax/sound/midi/MetaMessage.java Wed Apr 29 00:27:46 2009 -0700
100.3 @@ -102,6 +102,29 @@
100.4 this(defaultMessage);
100.5 }
100.6
100.7 + /**
100.8 + * Constructs a new {@code MetaMessage} and sets the message parameters.
100.9 + * The contents of the message can be changed by using
100.10 + * the {@code setMessage} method.
100.11 + *
100.12 + * @param type meta-message type (must be less than 128)
100.13 + * @param data the data bytes in the MIDI message
100.14 + * @param length an amount of bytes in the {@code data} byte array;
100.15 + * it should be non-negative and less than or equal to
100.16 + * {@code data.length}
100.17 + * @throws InvalidMidiDataException if the parameter values do not specify
100.18 + * a valid MIDI meta message
100.19 + * @see #setMessage(int, byte[], int)
100.20 + * @see #getType()
100.21 + * @see #getData()
100.22 + * @since 1.7
100.23 + */
100.24 + public MetaMessage(int type, byte[] data, int length)
100.25 + throws InvalidMidiDataException {
100.26 + super(null);
100.27 + setMessage(type, data, length); // can throw InvalidMidiDataException
100.28 + }
100.29 +
100.30
100.31 /**
100.32 * Constructs a new <code>MetaMessage</code>.
101.1 --- a/src/share/classes/javax/sound/midi/ShortMessage.java Tue Apr 28 14:43:44 2009 -0700
101.2 +++ b/src/share/classes/javax/sound/midi/ShortMessage.java Wed Apr 29 00:27:46 2009 -0700
101.3 @@ -187,6 +187,83 @@
101.4 length = 3;
101.5 }
101.6
101.7 + /**
101.8 + * Constructs a new {@code ShortMessage} which represents a MIDI
101.9 + * message that takes no data bytes.
101.10 + * The contents of the message can be changed by using one of
101.11 + * the {@code setMessage} methods.
101.12 + *
101.13 + * @param status the MIDI status byte
101.14 + * @throws InvalidMidiDataException if {@code status} does not specify
101.15 + * a valid MIDI status byte for a message that requires no data bytes
101.16 + * @see #setMessage(int)
101.17 + * @see #setMessage(int, int, int)
101.18 + * @see #setMessage(int, int, int, int)
101.19 + * @see #getStatus()
101.20 + * @since 1.7
101.21 + */
101.22 + public ShortMessage(int status) throws InvalidMidiDataException {
101.23 + super(null);
101.24 + setMessage(status); // can throw InvalidMidiDataException
101.25 + }
101.26 +
101.27 + /**
101.28 + * Constructs a new {@code ShortMessage} which represents a MIDI message
101.29 + * that takes up to two data bytes. If the message only takes one data byte,
101.30 + * the second data byte is ignored. If the message does not take
101.31 + * any data bytes, both data bytes are ignored.
101.32 + * The contents of the message can be changed by using one of
101.33 + * the {@code setMessage} methods.
101.34 + *
101.35 + * @param status the MIDI status byte
101.36 + * @param data1 the first data byte
101.37 + * @param data2 the second data byte
101.38 + * @throws InvalidMidiDataException if the status byte or all data bytes
101.39 + * belonging to the message do not specify a valid MIDI message
101.40 + * @see #setMessage(int)
101.41 + * @see #setMessage(int, int, int)
101.42 + * @see #setMessage(int, int, int, int)
101.43 + * @see #getStatus()
101.44 + * @see #getData1()
101.45 + * @see #getData2()
101.46 + * @since 1.7
101.47 + */
101.48 + public ShortMessage(int status, int data1, int data2)
101.49 + throws InvalidMidiDataException {
101.50 + super(null);
101.51 + setMessage(status, data1, data2); // can throw InvalidMidiDataException
101.52 + }
101.53 +
101.54 + /**
101.55 + * Constructs a new {@code ShortMessage} which represents a channel
101.56 + * MIDI message that takes up to two data bytes. If the message only takes
101.57 + * one data byte, the second data byte is ignored. If the message does not
101.58 + * take any data bytes, both data bytes are ignored.
101.59 + * The contents of the message can be changed by using one of
101.60 + * the {@code setMessage} methods.
101.61 + *
101.62 + * @param command the MIDI command represented by this message
101.63 + * @param channel the channel associated with the message
101.64 + * @param data1 the first data byte
101.65 + * @param data2 the second data byte
101.66 + * @throws InvalidMidiDataException if the command value, channel value
101.67 + * or all data bytes belonging to the message do not specify
101.68 + * a valid MIDI message
101.69 + * @see #setMessage(int)
101.70 + * @see #setMessage(int, int, int)
101.71 + * @see #setMessage(int, int, int, int)
101.72 + * @see #getCommand()
101.73 + * @see #getChannel()
101.74 + * @see #getData1()
101.75 + * @see #getData2()
101.76 + * @since 1.7
101.77 + */
101.78 + public ShortMessage(int command, int channel, int data1, int data2)
101.79 + throws InvalidMidiDataException {
101.80 + super(null);
101.81 + setMessage(command, channel, data1, data2);
101.82 + }
101.83 +
101.84
101.85 /**
101.86 * Constructs a new <code>ShortMessage</code>.
102.1 --- a/src/share/classes/javax/sound/midi/SysexMessage.java Tue Apr 28 14:43:44 2009 -0700
102.2 +++ b/src/share/classes/javax/sound/midi/SysexMessage.java Wed Apr 29 00:27:46 2009 -0700
102.3 @@ -120,6 +120,54 @@
102.4 data[1] = (byte) (ShortMessage.END_OF_EXCLUSIVE & 0xFF);
102.5 }
102.6
102.7 + /**
102.8 + * Constructs a new {@code SysexMessage} and sets the data for
102.9 + * the message. The first byte of the data array must be a valid system
102.10 + * exclusive status byte (0xF0 or 0xF7).
102.11 + * The contents of the message can be changed by using one of
102.12 + * the {@code setMessage} methods.
102.13 + *
102.14 + * @param data the system exclusive message data including the status byte
102.15 + * @param length the length of the valid message data in the array,
102.16 + * including the status byte; it should be non-negative and less than
102.17 + * or equal to {@code data.length}
102.18 + * @throws InvalidMidiDataException if the parameter values
102.19 + * do not specify a valid MIDI meta message.
102.20 + * @see #setMessage(byte[], int)
102.21 + * @see #setMessage(int, byte[], int)
102.22 + * @see #getData()
102.23 + * @since 1.7
102.24 + */
102.25 + public SysexMessage(byte[] data, int length)
102.26 + throws InvalidMidiDataException {
102.27 + super(null);
102.28 + setMessage(data, length);
102.29 + }
102.30 +
102.31 + /**
102.32 + * Constructs a new {@code SysexMessage} and sets the data for the message.
102.33 + * The contents of the message can be changed by using one of
102.34 + * the {@code setMessage} methods.
102.35 + *
102.36 + * @param status the status byte for the message; it must be a valid system
102.37 + * exclusive status byte (0xF0 or 0xF7)
102.38 + * @param data the system exclusive message data (without the status byte)
102.39 + * @param length the length of the valid message data in the array;
102.40 + * it should be non-negative and less than or equal to
102.41 + * {@code data.length}
102.42 + * @throws InvalidMidiDataException if the parameter values
102.43 + * do not specify a valid MIDI meta message.
102.44 + * @see #setMessage(byte[], int)
102.45 + * @see #setMessage(int, byte[], int)
102.46 + * @see #getData()
102.47 + * @since 1.7
102.48 + */
102.49 + public SysexMessage(int status, byte[] data, int length)
102.50 + throws InvalidMidiDataException {
102.51 + super(null);
102.52 + setMessage(status, data, length);
102.53 + }
102.54 +
102.55
102.56 /**
102.57 * Constructs a new <code>SysexMessage</code>.
103.1 --- a/src/share/classes/javax/sound/sampled/FloatControl.java Tue Apr 28 14:43:44 2009 -0700
103.2 +++ b/src/share/classes/javax/sound/sampled/FloatControl.java Wed Apr 29 00:27:46 2009 -0700
103.3 @@ -131,13 +131,31 @@
103.4 * @param minLabel the label for the minimum value, such as "Left" or "Off"
103.5 * @param midLabel the label for the midpoint value, such as "Center" or "Default"
103.6 * @param maxLabel the label for the maximum value, such as "Right" or "Full"
103.7 + *
103.8 + * @throws IllegalArgumentException if {@code minimum} is greater
103.9 + * than {@code maximum} or {@code initialValue} does not fall
103.10 + * within the allowable range
103.11 */
103.12 protected FloatControl(Type type, float minimum, float maximum,
103.13 - float precision, int updatePeriod, float initialValue,
103.14 - String units, String minLabel, String midLabel, String maxLabel) {
103.15 + float precision, int updatePeriod, float initialValue,
103.16 + String units, String minLabel, String midLabel, String maxLabel) {
103.17
103.18 super(type);
103.19
103.20 + if (minimum > maximum) {
103.21 + throw new IllegalArgumentException("Minimum value " + minimum
103.22 + + " exceeds maximum value " + maximum + ".");
103.23 + }
103.24 + if (initialValue < minimum) {
103.25 + throw new IllegalArgumentException("Initial value " + initialValue
103.26 + + " smaller than allowable minimum value " + minimum + ".");
103.27 + }
103.28 + if (initialValue > maximum) {
103.29 + throw new IllegalArgumentException("Initial value " + initialValue
103.30 + + " exceeds allowable maximum value " + maximum + ".");
103.31 + }
103.32 +
103.33 +
103.34 this.minimum = minimum;
103.35 this.maximum = maximum;
103.36
103.37 @@ -167,10 +185,15 @@
103.38 * @param initialValue the value that the control starts with when constructed
103.39 * @param units the label for the units in which the control's values are expressed,
103.40 * such as "dB" or "frames per second"
103.41 + *
103.42 + * @throws IllegalArgumentException if {@code minimum} is greater
103.43 + * than {@code maximum} or {@code initialValue} does not fall
103.44 + * within the allowable range
103.45 */
103.46 protected FloatControl(Type type, float minimum, float maximum,
103.47 - float precision, int updatePeriod, float initialValue, String units) {
103.48 - this(type, minimum, maximum, precision, updatePeriod, initialValue, units, "", "", "");
103.49 + float precision, int updatePeriod, float initialValue, String units) {
103.50 + this(type, minimum, maximum, precision, updatePeriod,
103.51 + initialValue, units, "", "", "");
103.52 }
103.53
103.54
103.55 @@ -306,9 +329,21 @@
103.56 * @param to final value after the shift
103.57 * @param microseconds maximum duration of the shift in microseconds
103.58 *
103.59 + * @throws IllegalArgumentException if either {@code from} or {@code to}
103.60 + * value does not fall within the allowable range
103.61 + *
103.62 * @see #getUpdatePeriod
103.63 */
103.64 public void shift(float from, float to, int microseconds) {
103.65 + // test "from" value, "to" value will be tested by setValue()
103.66 + if (from < minimum) {
103.67 + throw new IllegalArgumentException("Requested value " + from
103.68 + + " smaller than allowable minimum value " + minimum + ".");
103.69 + }
103.70 + if (from > maximum) {
103.71 + throw new IllegalArgumentException("Requested value " + from
103.72 + + " exceeds allowable maximum value " + maximum + ".");
103.73 + }
103.74 setValue(to);
103.75 }
103.76
104.1 --- a/src/share/classes/javax/sound/sampled/spi/MixerProvider.java Tue Apr 28 14:43:44 2009 -0700
104.2 +++ b/src/share/classes/javax/sound/sampled/spi/MixerProvider.java Wed Apr 29 00:27:46 2009 -0700
104.3 @@ -42,9 +42,15 @@
104.4 /**
104.5 * Indicates whether the mixer provider supports the mixer represented by
104.6 * the specified mixer info object.
104.7 + * <p>
104.8 + * The full set of mixer info objects that represent the mixers supported
104.9 + * by this {@code MixerProvider} may be obtained
104.10 + * through the {@code getMixerInfo} method.
104.11 + *
104.12 * @param info an info object that describes the mixer for which support is queried
104.13 - * @return <code>true</code> if the specified mixer is supported,
104.14 - * otherwise <code>false</code>
104.15 + * @return {@code true} if the specified mixer is supported,
104.16 + * otherwise {@code false}
104.17 + * @see #getMixerInfo()
104.18 */
104.19 public boolean isMixerSupported(Mixer.Info info) {
104.20
104.21 @@ -62,17 +68,34 @@
104.22 /**
104.23 * Obtains the set of info objects representing the mixer
104.24 * or mixers provided by this MixerProvider.
104.25 - * @return set of mixer info objects
104.26 + * <p>
104.27 + * The {@code isMixerSupported} method returns {@code true}
104.28 + * for all the info objects returned by this method.
104.29 + * The corresponding mixer instances for the info objects
104.30 + * are returned by the {@code getMixer} method.
104.31 + *
104.32 + * @return a set of mixer info objects
104.33 + * @see #getMixer(javax.sound.sampled.Mixer.Info) getMixer(Mixer.Info)
104.34 + * @see #isMixerSupported(javax.sound.sampled.Mixer.Info) isMixerSupported(Mixer.Info)
104.35 */
104.36 public abstract Mixer.Info[] getMixerInfo();
104.37
104.38
104.39 /**
104.40 * Obtains an instance of the mixer represented by the info object.
104.41 + * <p>
104.42 + * The full set of the mixer info objects that represent the mixers
104.43 + * supported by this {@code MixerProvider} may be obtained
104.44 + * through the {@code getMixerInfo} method.
104.45 + * Use the {@code isMixerSupported} method to test whether
104.46 + * this {@code MixerProvider} supports a particular mixer.
104.47 + *
104.48 * @param info an info object that describes the desired mixer
104.49 * @return mixer instance
104.50 * @throws IllegalArgumentException if the info object specified does not
104.51 - * match the info object for a mixer supported by this MixerProvider.
104.52 + * match the info object for a mixer supported by this MixerProvider.
104.53 + * @see #getMixerInfo()
104.54 + * @see #isMixerSupported(javax.sound.sampled.Mixer.Info) isMixerSupported(Mixer.Info)
104.55 */
104.56 public abstract Mixer getMixer(Mixer.Info info);
104.57 }
105.1 --- a/src/share/classes/javax/swing/DefaultCellEditor.java Tue Apr 28 14:43:44 2009 -0700
105.2 +++ b/src/share/classes/javax/swing/DefaultCellEditor.java Wed Apr 29 00:27:46 2009 -0700
105.3 @@ -266,6 +266,26 @@
105.4 boolean isSelected,
105.5 int row, int column) {
105.6 delegate.setValue(value);
105.7 + if (editorComponent instanceof JCheckBox) {
105.8 + //in order to avoid a "flashing" effect when clicking a checkbox
105.9 + //in a table, it is important for the editor to have as a border
105.10 + //the same border that the renderer has, and have as the background
105.11 + //the same color as the renderer has. This is primarily only
105.12 + //needed for JCheckBox since this editor doesn't fill all the
105.13 + //visual space of the table cell, unlike a text field.
105.14 + TableCellRenderer renderer = table.getCellRenderer(row, column);
105.15 + Component c = renderer.getTableCellRendererComponent(table, value,
105.16 + isSelected, true, row, column);
105.17 + if (c != null) {
105.18 + editorComponent.setOpaque(true);
105.19 + editorComponent.setBackground(c.getBackground());
105.20 + if (c instanceof JComponent) {
105.21 + editorComponent.setBorder(((JComponent)c).getBorder());
105.22 + }
105.23 + } else {
105.24 + editorComponent.setOpaque(false);
105.25 + }
105.26 + }
105.27 return editorComponent;
105.28 }
105.29
106.1 --- a/src/share/classes/javax/swing/DefaultListCellRenderer.java Tue Apr 28 14:43:44 2009 -0700
106.2 +++ b/src/share/classes/javax/swing/DefaultListCellRenderer.java Wed Apr 29 00:27:46 2009 -0700
106.3 @@ -34,6 +34,7 @@
106.4 import java.awt.Rectangle;
106.5
106.6 import java.io.Serializable;
106.7 +import sun.swing.DefaultLookup;
106.8
106.9
106.10 /**
106.11 @@ -79,8 +80,9 @@
106.12 * <code>getListCellRendererComponent</code> method and set the border
106.13 * of the returned component directly.
106.14 */
106.15 - protected static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);
106.16 private static final Border SAFE_NO_FOCUS_BORDER = new EmptyBorder(1, 1, 1, 1);
106.17 + private static final Border DEFAULT_NO_FOCUS_BORDER = new EmptyBorder(1, 1, 1, 1);
106.18 + protected static Border noFocusBorder = DEFAULT_NO_FOCUS_BORDER;
106.19
106.20 /**
106.21 * Constructs a default renderer object for an item
106.22 @@ -90,14 +92,21 @@
106.23 super();
106.24 setOpaque(true);
106.25 setBorder(getNoFocusBorder());
106.26 + setName("List.cellRenderer");
106.27 }
106.28
106.29 -
106.30 - private static Border getNoFocusBorder() {
106.31 + private Border getNoFocusBorder() {
106.32 + Border border = DefaultLookup.getBorder(this, ui, "List.cellNoFocusBorder");
106.33 if (System.getSecurityManager() != null) {
106.34 + if (border != null) return border;
106.35 return SAFE_NO_FOCUS_BORDER;
106.36 } else {
106.37 - return UIManager.getBorder("List.noFocusBorder");
106.38 + if (border != null &&
106.39 + (noFocusBorder == null ||
106.40 + noFocusBorder == DEFAULT_NO_FOCUS_BORDER)) {
106.41 + return border;
106.42 + }
106.43 + return noFocusBorder;
106.44 }
106.45 }
106.46
106.47 @@ -118,8 +127,8 @@
106.48 && !dropLocation.isInsert()
106.49 && dropLocation.getIndex() == index) {
106.50
106.51 - bg = UIManager.getColor("List.dropCellBackground");
106.52 - fg = UIManager.getColor("List.dropCellForeground");
106.53 + bg = DefaultLookup.getColor(this, ui, "List.dropCellBackground");
106.54 + fg = DefaultLookup.getColor(this, ui, "List.dropCellForeground");
106.55
106.56 isSelected = true;
106.57 }
106.58 @@ -148,10 +157,10 @@
106.59 Border border = null;
106.60 if (cellHasFocus) {
106.61 if (isSelected) {
106.62 - border = UIManager.getBorder("List.focusSelectedCellHighlightBorder");
106.63 + border = DefaultLookup.getBorder(this, ui, "List.focusSelectedCellHighlightBorder");
106.64 }
106.65 if (border == null) {
106.66 - border = UIManager.getBorder("List.focusCellHighlightBorder");
106.67 + border = DefaultLookup.getBorder(this, ui, "List.focusCellHighlightBorder");
106.68 }
106.69 } else {
106.70 border = getNoFocusBorder();
106.71 @@ -161,7 +170,6 @@
106.72 return this;
106.73 }
106.74
106.75 -
106.76 /**
106.77 * Overridden for performance reasons.
106.78 * See the <a href="#override">Implementation Note</a>
106.79 @@ -172,6 +180,7 @@
106.80 * and differs from the JList's background;
106.81 * <code>false</code> otherwise
106.82 */
106.83 + @Override
106.84 public boolean isOpaque() {
106.85 Color back = getBackground();
106.86 Component p = getParent();
106.87 @@ -190,6 +199,7 @@
106.88 * See the <a href="#override">Implementation Note</a>
106.89 * for more information.
106.90 */
106.91 + @Override
106.92 public void validate() {}
106.93
106.94 /**
106.95 @@ -199,6 +209,7 @@
106.96 *
106.97 * @since 1.5
106.98 */
106.99 + @Override
106.100 public void invalidate() {}
106.101
106.102 /**
106.103 @@ -208,6 +219,7 @@
106.104 *
106.105 * @since 1.5
106.106 */
106.107 + @Override
106.108 public void repaint() {}
106.109
106.110 /**
106.111 @@ -215,12 +227,14 @@
106.112 * See the <a href="#override">Implementation Note</a>
106.113 * for more information.
106.114 */
106.115 + @Override
106.116 public void revalidate() {}
106.117 /**
106.118 * Overridden for performance reasons.
106.119 * See the <a href="#override">Implementation Note</a>
106.120 * for more information.
106.121 */
106.122 + @Override
106.123 public void repaint(long tm, int x, int y, int width, int height) {}
106.124
106.125 /**
106.126 @@ -228,6 +242,7 @@
106.127 * See the <a href="#override">Implementation Note</a>
106.128 * for more information.
106.129 */
106.130 + @Override
106.131 public void repaint(Rectangle r) {}
106.132
106.133 /**
106.134 @@ -235,6 +250,7 @@
106.135 * See the <a href="#override">Implementation Note</a>
106.136 * for more information.
106.137 */
106.138 + @Override
106.139 protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
106.140 // Strings get interned...
106.141 if (propertyName == "text"
106.142 @@ -251,6 +267,7 @@
106.143 * See the <a href="#override">Implementation Note</a>
106.144 * for more information.
106.145 */
106.146 + @Override
106.147 public void firePropertyChange(String propertyName, byte oldValue, byte newValue) {}
106.148
106.149 /**
106.150 @@ -258,6 +275,7 @@
106.151 * See the <a href="#override">Implementation Note</a>
106.152 * for more information.
106.153 */
106.154 + @Override
106.155 public void firePropertyChange(String propertyName, char oldValue, char newValue) {}
106.156
106.157 /**
106.158 @@ -265,6 +283,7 @@
106.159 * See the <a href="#override">Implementation Note</a>
106.160 * for more information.
106.161 */
106.162 + @Override
106.163 public void firePropertyChange(String propertyName, short oldValue, short newValue) {}
106.164
106.165 /**
106.166 @@ -272,6 +291,7 @@
106.167 * See the <a href="#override">Implementation Note</a>
106.168 * for more information.
106.169 */
106.170 + @Override
106.171 public void firePropertyChange(String propertyName, int oldValue, int newValue) {}
106.172
106.173 /**
106.174 @@ -279,6 +299,7 @@
106.175 * See the <a href="#override">Implementation Note</a>
106.176 * for more information.
106.177 */
106.178 + @Override
106.179 public void firePropertyChange(String propertyName, long oldValue, long newValue) {}
106.180
106.181 /**
106.182 @@ -286,6 +307,7 @@
106.183 * See the <a href="#override">Implementation Note</a>
106.184 * for more information.
106.185 */
106.186 + @Override
106.187 public void firePropertyChange(String propertyName, float oldValue, float newValue) {}
106.188
106.189 /**
106.190 @@ -293,6 +315,7 @@
106.191 * See the <a href="#override">Implementation Note</a>
106.192 * for more information.
106.193 */
106.194 + @Override
106.195 public void firePropertyChange(String propertyName, double oldValue, double newValue) {}
106.196
106.197 /**
106.198 @@ -300,6 +323,7 @@
106.199 * See the <a href="#override">Implementation Note</a>
106.200 * for more information.
106.201 */
106.202 + @Override
106.203 public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) {}
106.204
106.205 /**
106.206 @@ -321,5 +345,4 @@
106.207 implements javax.swing.plaf.UIResource
106.208 {
106.209 }
106.210 -
106.211 }
107.1 --- a/src/share/classes/javax/swing/JComboBox.java Tue Apr 28 14:43:44 2009 -0700
107.2 +++ b/src/share/classes/javax/swing/JComboBox.java Wed Apr 29 00:27:46 2009 -0700
107.3 @@ -34,12 +34,10 @@
107.4
107.5 import java.io.Serializable;
107.6 import java.io.ObjectOutputStream;
107.7 -import java.io.ObjectInputStream;
107.8 import java.io.IOException;
107.9
107.10 import javax.swing.event.*;
107.11 import javax.swing.plaf.*;
107.12 -import javax.swing.border.*;
107.13
107.14 import javax.accessibility.*;
107.15
107.16 @@ -227,7 +225,7 @@
107.17
107.18 private void init() {
107.19 installAncestorListener();
107.20 - setOpaque(true);
107.21 + setUIProperty("opaque",true);
107.22 updateUI();
107.23 }
107.24
108.1 --- a/src/share/classes/javax/swing/JScrollPane.java Tue Apr 28 14:43:44 2009 -0700
108.2 +++ b/src/share/classes/javax/swing/JScrollPane.java Wed Apr 29 00:27:46 2009 -0700
108.3 @@ -32,15 +32,12 @@
108.4
108.5 import java.awt.Component;
108.6 import java.awt.ComponentOrientation;
108.7 -import java.awt.Graphics;
108.8 import java.awt.Rectangle;
108.9 import java.awt.Insets;
108.10 -import java.awt.Color;
108.11 import java.awt.LayoutManager;
108.12 import java.awt.Point;
108.13
108.14 import java.io.ObjectOutputStream;
108.15 -import java.io.ObjectInputStream;
108.16 import java.io.IOException;
108.17
108.18 import java.beans.PropertyChangeEvent;
108.19 @@ -304,7 +301,7 @@
108.20 if (view != null) {
108.21 setViewportView(view);
108.22 }
108.23 - setOpaque(true);
108.24 + setUIProperty("opaque",true);
108.25 updateUI();
108.26
108.27 if (!this.getComponentOrientation().isLeftToRight()) {
109.1 --- a/src/share/classes/javax/swing/JSpinner.java Tue Apr 28 14:43:44 2009 -0700
109.2 +++ b/src/share/classes/javax/swing/JSpinner.java Wed Apr 29 00:27:46 2009 -0700
109.3 @@ -28,7 +28,6 @@
109.4 import java.awt.*;
109.5 import java.awt.event.*;
109.6
109.7 -import javax.swing.*;
109.8 import javax.swing.event.*;
109.9 import javax.swing.text.*;
109.10 import javax.swing.plaf.SpinnerUI;
109.11 @@ -154,7 +153,7 @@
109.12 }
109.13 this.model = model;
109.14 this.editor = createEditor(model);
109.15 - setOpaque(true);
109.16 + setUIProperty("opaque",true);
109.17 updateUI();
109.18 }
109.19
110.1 --- a/src/share/classes/javax/swing/JSplitPane.java Tue Apr 28 14:43:44 2009 -0700
110.2 +++ b/src/share/classes/javax/swing/JSplitPane.java Wed Apr 29 00:27:46 2009 -0700
110.3 @@ -246,7 +246,8 @@
110.4 * layout, using two buttons for the components.
110.5 */
110.6 public JSplitPane() {
110.7 - this(JSplitPane.HORIZONTAL_SPLIT, false,
110.8 + this(JSplitPane.HORIZONTAL_SPLIT,
110.9 + UIManager.getBoolean("SplitPane.continuousLayout"),
110.10 new JButton(UIManager.getString("SplitPane.leftButtonText")),
110.11 new JButton(UIManager.getString("SplitPane.rightButtonText")));
110.12 }
110.13 @@ -263,7 +264,8 @@
110.14 */
110.15 @ConstructorProperties({"orientation"})
110.16 public JSplitPane(int newOrientation) {
110.17 - this(newOrientation, false);
110.18 + this(newOrientation,
110.19 + UIManager.getBoolean("SplitPane.continuousLayout"));
110.20 }
110.21
110.22
110.23 @@ -307,7 +309,9 @@
110.24 public JSplitPane(int newOrientation,
110.25 Component newLeftComponent,
110.26 Component newRightComponent){
110.27 - this(newOrientation, false, newLeftComponent, newRightComponent);
110.28 + this(newOrientation,
110.29 + UIManager.getBoolean("SplitPane.continuousLayout"),
110.30 + newLeftComponent, newRightComponent);
110.31 }
110.32
110.33
111.1 --- a/src/share/classes/javax/swing/JTable.java Tue Apr 28 14:43:44 2009 -0700
111.2 +++ b/src/share/classes/javax/swing/JTable.java Wed Apr 29 00:27:46 2009 -0700
111.3 @@ -731,6 +731,37 @@
111.4 return;
111.5 }
111.6 scrollPane.setColumnHeaderView(getTableHeader());
111.7 + // configure the scrollpane for any LAF dependent settings
111.8 + configureEnclosingScrollPaneUI();
111.9 + }
111.10 + }
111.11 + }
111.12 +
111.13 + /**
111.14 + * This is a sub-part of configureEnclosingScrollPane() that configures
111.15 + * anything on the scrollpane that may change when the look and feel
111.16 + * changes. It needed to be split out from configureEnclosingScrollPane() so
111.17 + * that it can be called from updateUI() when the LAF changes without
111.18 + * causing the regression found in bug 6687962. This was because updateUI()
111.19 + * is called from the constructor which then caused
111.20 + * configureEnclosingScrollPane() to be called by the constructor which
111.21 + * changes its contract for any subclass that overrides it. So by splitting
111.22 + * it out in this way configureEnclosingScrollPaneUI() can be called both
111.23 + * from configureEnclosingScrollPane() and updateUI() in a safe manor.
111.24 + */
111.25 + private void configureEnclosingScrollPaneUI() {
111.26 + Container p = getParent();
111.27 + if (p instanceof JViewport) {
111.28 + Container gp = p.getParent();
111.29 + if (gp instanceof JScrollPane) {
111.30 + JScrollPane scrollPane = (JScrollPane)gp;
111.31 + // Make certain we are the viewPort's view and not, for
111.32 + // example, the rowHeaderView of the scrollPane -
111.33 + // an implementor of fixed columns might do this.
111.34 + JViewport viewport = scrollPane.getViewport();
111.35 + if (viewport == null || viewport.getView() != this) {
111.36 + return;
111.37 + }
111.38 // scrollPane.getViewport().setBackingStoreEnabled(true);
111.39 Border border = scrollPane.getBorder();
111.40 if (border == null || border instanceof UIResource) {
111.41 @@ -740,6 +771,24 @@
111.42 scrollPane.setBorder(scrollPaneBorder);
111.43 }
111.44 }
111.45 + // add JScrollBar corner component if available from LAF and not already set by the user
111.46 + Component corner =
111.47 + scrollPane.getCorner(JScrollPane.UPPER_TRAILING_CORNER);
111.48 + if (corner == null || corner instanceof UIResource){
111.49 + corner = null;
111.50 + Object componentClass = UIManager.get(
111.51 + "Table.scrollPaneCornerComponent");
111.52 + if (componentClass instanceof Class){
111.53 + try {
111.54 + corner = (Component)
111.55 + ((Class)componentClass).newInstance();
111.56 + } catch (Exception e) {
111.57 + // just ignore and don't set corner
111.58 + }
111.59 + }
111.60 + scrollPane.setCorner(JScrollPane.UPPER_TRAILING_CORNER,
111.61 + corner);
111.62 + }
111.63 }
111.64 }
111.65 }
111.66 @@ -783,6 +832,13 @@
111.67 return;
111.68 }
111.69 scrollPane.setColumnHeaderView(null);
111.70 + // remove ScrollPane corner if one was added by the LAF
111.71 + Component corner =
111.72 + scrollPane.getCorner(JScrollPane.UPPER_TRAILING_CORNER);
111.73 + if (corner instanceof UIResource){
111.74 + scrollPane.setCorner(JScrollPane.UPPER_TRAILING_CORNER,
111.75 + null);
111.76 + }
111.77 }
111.78 }
111.79 }
111.80 @@ -3592,6 +3648,9 @@
111.81 tableHeader.updateUI();
111.82 }
111.83
111.84 + // Update UI applied to parent ScrollPane
111.85 + configureEnclosingScrollPaneUI();
111.86 +
111.87 setUI((TableUI)UIManager.getUI(this));
111.88 }
111.89
112.1 --- a/src/share/classes/javax/swing/MultiUIDefaults.java Tue Apr 28 14:43:44 2009 -0700
112.2 +++ b/src/share/classes/javax/swing/MultiUIDefaults.java Wed Apr 29 00:27:46 2009 -0700
112.3 @@ -26,7 +26,10 @@
112.4 package javax.swing;
112.5
112.6 import java.util.Enumeration;
112.7 +import java.util.HashSet;
112.8 import java.util.Locale;
112.9 +import java.util.Map.Entry;
112.10 +import java.util.Set;
112.11
112.12
112.13
112.14 @@ -48,7 +51,7 @@
112.15 tables = new UIDefaults[0];
112.16 }
112.17
112.18 -
112.19 + @Override
112.20 public Object get(Object key)
112.21 {
112.22 Object value = super.get(key);
112.23 @@ -66,7 +69,7 @@
112.24 return null;
112.25 }
112.26
112.27 -
112.28 + @Override
112.29 public Object get(Object key, Locale l)
112.30 {
112.31 Object value = super.get(key,l);
112.32 @@ -84,7 +87,7 @@
112.33 return null;
112.34 }
112.35
112.36 -
112.37 + @Override
112.38 public int size() {
112.39 int n = super.size();
112.40 for (UIDefaults table : tables) {
112.41 @@ -93,12 +96,12 @@
112.42 return n;
112.43 }
112.44
112.45 -
112.46 + @Override
112.47 public boolean isEmpty() {
112.48 return size() == 0;
112.49 }
112.50
112.51 -
112.52 + @Override
112.53 public Enumeration<Object> keys()
112.54 {
112.55 Enumeration[] enums = new Enumeration[1 + tables.length];
112.56 @@ -112,7 +115,7 @@
112.57 return new MultiUIDefaultsEnumerator(enums);
112.58 }
112.59
112.60 -
112.61 + @Override
112.62 public Enumeration<Object> elements()
112.63 {
112.64 Enumeration[] enums = new Enumeration[1 + tables.length];
112.65 @@ -126,6 +129,19 @@
112.66 return new MultiUIDefaultsEnumerator(enums);
112.67 }
112.68
112.69 + @Override
112.70 + public Set<Entry<Object, Object>> entrySet() {
112.71 + Set<Entry<Object, Object>> set = new HashSet<Entry<Object, Object>>();
112.72 + if (tables == null) return set;
112.73 + for (UIDefaults table : tables) {
112.74 + if (table != null) {
112.75 + set.addAll(table.entrySet());
112.76 + }
112.77 + }
112.78 + return set;
112.79 + }
112.80 +
112.81 + @Override
112.82 protected void getUIError(String msg) {
112.83 if (tables.length > 0) {
112.84 tables[0].getUIError(msg);
112.85 @@ -164,7 +180,7 @@
112.86 }
112.87 }
112.88
112.89 -
112.90 + @Override
112.91 public Object remove(Object key)
112.92 {
112.93 Object value = super.remove(key);
112.94 @@ -182,7 +198,7 @@
112.95 return null;
112.96 }
112.97
112.98 -
112.99 + @Override
112.100 public void clear() {
112.101 super.clear();
112.102 for (UIDefaults table : tables) {
112.103 @@ -192,6 +208,7 @@
112.104 }
112.105 }
112.106
112.107 + @Override
112.108 public synchronized String toString() {
112.109 StringBuffer buf = new StringBuffer();
112.110 buf.append("{");
113.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
113.2 +++ b/src/share/classes/javax/swing/Painter.java Wed Apr 29 00:27:46 2009 -0700
113.3 @@ -0,0 +1,105 @@
113.4 +/*
113.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
113.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
113.7 + *
113.8 + * This code is free software; you can redistribute it and/or modify it
113.9 + * under the terms of the GNU General Public License version 2 only, as
113.10 + * published by the Free Software Foundation. Sun designates this
113.11 + * particular file as subject to the "Classpath" exception as provided
113.12 + * by Sun in the LICENSE file that accompanied this code.
113.13 + *
113.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
113.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
113.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
113.17 + * version 2 for more details (a copy is included in the LICENSE file that
113.18 + * accompanied this code).
113.19 + *
113.20 + * You should have received a copy of the GNU General Public License version
113.21 + * 2 along with this work; if not, write to the Free Software Foundation,
113.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
113.23 + *
113.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
113.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
113.26 + * have any questions.
113.27 + */
113.28 +package javax.swing;
113.29 +
113.30 +import java.awt.Graphics2D;
113.31 +
113.32 +/**
113.33 + * <p>A painting delegate. The Painter interface defines exactly one method,
113.34 + * <code>paint</code>. It is used in situations where the developer can change
113.35 + * the painting routine of a component without having to resort to subclassing
113.36 + * the component. It is also generically useful when doing any form of painting
113.37 + * delegation.</p>
113.38 + *
113.39 + * <p><code>Painter</code>s are simply encapsulations of Java2D code and make
113.40 + * it fairly trivial to reuse existing <code>Painter</code>s or to combine
113.41 + * them together. Implementations of this interface are also trivial to write,
113.42 + * such that if you can't find a <code>Painter</code> that does what you need,
113.43 + * you can write one with minimal effort. Writing a <code>Painter</code> requires
113.44 + * knowledge of Java2D.</p>
113.45 + *
113.46 + * <p>A <code>Painter</code> may be created with a type parameter. This type will be
113.47 + * expected in the <code>paint</code> method. For example, you may wish to write a
113.48 + * <code>Painter</code> that only works with subclasses of {@link java.awt.Component}.
113.49 + * In that case, when the <code>Painter</code> is declared, you may declare that
113.50 + * it requires a <code>Component</code>, allowing the paint method to be type safe. Ex:
113.51 + * <pre><code>
113.52 + * Painter<Component> p = new Painter<Component>() {
113.53 + * public void paint(Graphics2D g, Component c, int width, int height) {
113.54 + * g.setColor(c.getBackground());
113.55 + * //and so forth
113.56 + * }
113.57 + * }
113.58 + * </code></pre></p>
113.59 + *
113.60 + * <p>This interface makes no guarantees of threadsafety.</p>
113.61 + *
113.62 + * @author rbair
113.63 + */
113.64 +public interface Painter<T> {
113.65 + /**
113.66 + * <p>Renders to the given {@link java.awt.Graphics2D} object. Implementations
113.67 + * of this method <em>may</em> modify state on the <code>Graphics2D</code>, and are not
113.68 + * required to restore that state upon completion. In most cases, it is recommended
113.69 + * that the caller pass in a scratch graphics object. The <code>Graphics2D</code>
113.70 + * must never be null.</p>
113.71 + *
113.72 + * <p>State on the graphics object may be honored by the <code>paint</code> method,
113.73 + * but may not be. For instance, setting the antialiasing rendering hint on the
113.74 + * graphics may or may not be respected by the <code>Painter</code> implementation.</p>
113.75 + *
113.76 + * <p>The supplied object parameter acts as an optional configuration argument.
113.77 + * For example, it could be of type <code>Component</code>. A <code>Painter</code>
113.78 + * that expected it could then read state from that <code>Component</code> and
113.79 + * use the state for painting. For example, an implementation may read the
113.80 + * backgroundColor and use that.</p>
113.81 + *
113.82 + * <p>Generally, to enhance reusability, most standard <code>Painter</code>s ignore
113.83 + * this parameter. They can thus be reused in any context. The <code>object</code>
113.84 + * may be null. Implementations must not throw a NullPointerException if the object
113.85 + * parameter is null.</p>
113.86 + *
113.87 + * <p>Finally, the <code>width</code> and <code>height</code> arguments specify the
113.88 + * width and height that the <code>Painter</code> should paint into. More
113.89 + * specifically, the specified width and height instruct the painter that it should
113.90 + * paint fully within this width and height. Any specified clip on the
113.91 + * <code>g</code> param will further constrain the region.</p>
113.92 + *
113.93 + * <p>For example, suppose I have a <code>Painter</code> implementation that draws
113.94 + * a gradient. The gradient goes from white to black. It "stretches" to fill the
113.95 + * painted region. Thus, if I use this <code>Painter</code> to paint a 500 x 500
113.96 + * region, the far left would be black, the far right would be white, and a smooth
113.97 + * gradient would be painted between. I could then, without modification, reuse the
113.98 + * <code>Painter</code> to paint a region that is 20x20 in size. This region would
113.99 + * also be black on the left, white on the right, and a smooth gradient painted
113.100 + * between.</p>
113.101 + *
113.102 + * @param g The Graphics2D to render to. This must not be null.
113.103 + * @param object an optional configuration parameter. This may be null.
113.104 + * @param width width of the area to paint.
113.105 + * @param height height of the area to paint.
113.106 + */
113.107 + public void paint(Graphics2D g, T object, int width, int height);
113.108 +}
114.1 --- a/src/share/classes/javax/swing/UIManager.java Tue Apr 28 14:43:44 2009 -0700
114.2 +++ b/src/share/classes/javax/swing/UIManager.java Wed Apr 29 00:27:46 2009 -0700
114.3 @@ -383,6 +383,8 @@
114.4 ArrayList<LookAndFeelInfo> iLAFs = new ArrayList<LookAndFeelInfo>(4);
114.5 iLAFs.add(new LookAndFeelInfo(
114.6 "Metal", "javax.swing.plaf.metal.MetalLookAndFeel"));
114.7 + iLAFs.add(new LookAndFeelInfo(
114.8 + "Nimbus", "javax.swing.plaf.nimbus.NimbusLookAndFeel"));
114.9 iLAFs.add(new LookAndFeelInfo("CDE/Motif",
114.10 "com.sun.java.swing.plaf.motif.MotifLookAndFeel"));
114.11
115.1 --- a/src/share/classes/javax/swing/border/TitledBorder.java Tue Apr 28 14:43:44 2009 -0700
115.2 +++ b/src/share/classes/javax/swing/border/TitledBorder.java Wed Apr 29 00:27:46 2009 -0700
115.3 @@ -133,7 +133,7 @@
115.4 * @param title the title the border should display
115.5 */
115.6 public TitledBorder(String title) {
115.7 - this(null, title, LEADING, TOP, null, null);
115.8 + this(null, title, LEADING, DEFAULT_POSITION, null, null);
115.9 }
115.10
115.11 /**
115.12 @@ -143,7 +143,7 @@
115.13 * @param border the border
115.14 */
115.15 public TitledBorder(Border border) {
115.16 - this(border, "", LEADING, TOP, null, null);
115.17 + this(border, "", LEADING, DEFAULT_POSITION, null, null);
115.18 }
115.19
115.20 /**
115.21 @@ -154,7 +154,7 @@
115.22 * @param title the title the border should display
115.23 */
115.24 public TitledBorder(Border border, String title) {
115.25 - this(border, title, LEADING, TOP, null, null);
115.26 + this(border, title, LEADING, DEFAULT_POSITION, null, null);
115.27 }
115.28
115.29 /**
115.30 @@ -502,7 +502,33 @@
115.31 /**
115.32 * Returns the title-position of the titled border.
115.33 */
115.34 - public int getTitlePosition() { return titlePosition; }
115.35 + public int getTitlePosition() {
115.36 + if (titlePosition == DEFAULT_POSITION) {
115.37 + Object value = UIManager.get("TitledBorder.position");
115.38 + if (value instanceof String) {
115.39 + String s = (String)value;
115.40 + if ("ABOVE_TOP".equalsIgnoreCase(s)) {
115.41 + return ABOVE_TOP;
115.42 + } else if ("TOP".equalsIgnoreCase(s)) {
115.43 + return TOP;
115.44 + } else if ("BELOW_TOP".equalsIgnoreCase(s)) {
115.45 + return BELOW_TOP;
115.46 + } else if ("ABOVE_BOTTOM".equalsIgnoreCase(s)) {
115.47 + return ABOVE_BOTTOM;
115.48 + } else if ("BOTTOM".equalsIgnoreCase(s)) {
115.49 + return BOTTOM;
115.50 + } else if ("BELOW_BOTTOM".equalsIgnoreCase(s)) {
115.51 + return BELOW_BOTTOM;
115.52 + }
115.53 + } else if (value instanceof Integer) {
115.54 + int i = (Integer)value;
115.55 + if (i >= 0 && i <= 6) {
115.56 + return i;
115.57 + }
115.58 + }
115.59 + }
115.60 + return titlePosition;
115.61 + }
115.62
115.63 /**
115.64 * Returns the title-justification of the titled border.
115.65 @@ -613,7 +639,7 @@
115.66 Font font = getFont(c);
115.67 FontMetrics fm = c.getFontMetrics(font);
115.68 JComponent jc = (c instanceof JComponent) ? (JComponent)c : null;
115.69 - switch (titlePosition) {
115.70 + switch (getTitlePosition()) {
115.71 case ABOVE_TOP:
115.72 case BELOW_BOTTOM:
115.73 minSize.width = Math.max(SwingUtilities2.stringWidth(jc, fm,
116.1 --- a/src/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java Tue Apr 28 14:43:44 2009 -0700
116.2 +++ b/src/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java Wed Apr 29 00:27:46 2009 -0700
116.3 @@ -29,7 +29,6 @@
116.4 import java.awt.event.*;
116.5 import javax.swing.*;
116.6 import javax.accessibility.*;
116.7 -import javax.swing.FocusManager;
116.8 import javax.swing.plaf.*;
116.9 import javax.swing.border.*;
116.10 import javax.swing.text.*;
116.11 @@ -187,6 +186,23 @@
116.12 */
116.13 private boolean sameBaseline;
116.14
116.15 + /**
116.16 + * Indicates whether or not the combo box button should be square.
116.17 + * If square, then the width and height are equal, and are both set to
116.18 + * the height of the combo (minus appropriate insets).
116.19 + */
116.20 + private boolean squareButton = true;
116.21 +
116.22 + /**
116.23 + * Optional: if specified, these insets act as padding around the cell
116.24 + * renderer when laying out and painting the "selected" item in the
116.25 + * combo box. BasicComboBoxUI uses a single combo box renderer for rendering
116.26 + * both the main combo box item and also all the items in the dropdown
116.27 + * for the combo box. padding allows you to specify addition insets in
116.28 + * addition to those specified by the cell renderer.
116.29 + */
116.30 + private Insets padding;
116.31 +
116.32 // Used for calculating the default size.
116.33 private static ListCellRenderer getDefaultListCellRenderer() {
116.34 ListCellRenderer renderer = (ListCellRenderer)AppContext.
116.35 @@ -226,6 +242,7 @@
116.36 return new BasicComboBoxUI();
116.37 }
116.38
116.39 + @Override
116.40 public void installUI( JComponent c ) {
116.41 isMinimumSizeDirty = true;
116.42
116.43 @@ -265,6 +282,7 @@
116.44 comboBox.setKeySelectionManager(keySelectionManager);
116.45 }
116.46
116.47 + @Override
116.48 public void uninstallUI( JComponent c ) {
116.49 setPopupVisible( comboBox, false);
116.50 popup.uninstallingUI();
116.51 @@ -317,7 +335,13 @@
116.52 LookAndFeel.installProperty( comboBox, "opaque", Boolean.TRUE);
116.53
116.54 Long l = (Long)UIManager.get("ComboBox.timeFactor");
116.55 - timeFactor = (l!=null) ? l.longValue() : 1000L;
116.56 + timeFactor = l == null ? 1000L : l.longValue();
116.57 +
116.58 + //NOTE: this needs to default to true if not specified
116.59 + Boolean b = (Boolean)UIManager.get("ComboBox.squareButton");
116.60 + squareButton = b == null ? true : b;
116.61 +
116.62 + padding = UIManager.getInsets("ComboBox.padding");
116.63 }
116.64
116.65 /**
116.66 @@ -530,6 +554,7 @@
116.67 * <code>BasicComboBoxUI</code>.
116.68 */
116.69 public class KeyHandler extends KeyAdapter {
116.70 + @Override
116.71 public void keyPressed( KeyEvent e ) {
116.72 getHandler().keyPressed(e);
116.73 }
116.74 @@ -761,6 +786,8 @@
116.75 }
116.76
116.77 comboBox.configureEditor(comboBox.getEditor(),comboBox.getSelectedItem());
116.78 +
116.79 + editor.addPropertyChangeListener(propertyChangeListener);
116.80 }
116.81
116.82 /**
116.83 @@ -774,6 +801,7 @@
116.84 editor.removeFocusListener(focusListener);
116.85 }
116.86
116.87 + editor.removePropertyChangeListener(propertyChangeListener);
116.88 editor.removeFocusListener(getHandler());
116.89 comboBox.getEditor().removeActionListener(getHandler());
116.90 }
116.91 @@ -868,7 +896,7 @@
116.92
116.93 //=================================
116.94 // begin ComponentUI Implementation
116.95 -
116.96 + @Override
116.97 public void paint( Graphics g, JComponent c ) {
116.98 hasFocus = comboBox.hasFocus();
116.99 if ( !comboBox.isEditable() ) {
116.100 @@ -878,6 +906,7 @@
116.101 }
116.102 }
116.103
116.104 + @Override
116.105 public Dimension getPreferredSize( JComponent c ) {
116.106 return getMinimumSize(c);
116.107 }
116.108 @@ -885,15 +914,19 @@
116.109 /**
116.110 * The minumum size is the size of the display area plus insets plus the button.
116.111 */
116.112 + @Override
116.113 public Dimension getMinimumSize( JComponent c ) {
116.114 if ( !isMinimumSizeDirty ) {
116.115 return new Dimension(cachedMinimumSize);
116.116 }
116.117 Dimension size = getDisplaySize();
116.118 Insets insets = getInsets();
116.119 + //calculate the width and height of the button
116.120 + int buttonHeight = size.height;
116.121 + int buttonWidth = squareButton ? buttonHeight : arrowButton.getPreferredSize().width;
116.122 + //adjust the size based on the button width
116.123 size.height += insets.top + insets.bottom;
116.124 - int buttonSize = size.height - (insets.top + insets.bottom);
116.125 - size.width += insets.left + insets.right + buttonSize;
116.126 + size.width += insets.left + insets.right + buttonWidth;
116.127
116.128 cachedMinimumSize.setSize( size.width, size.height );
116.129 isMinimumSizeDirty = false;
116.130 @@ -901,6 +934,7 @@
116.131 return new Dimension(size);
116.132 }
116.133
116.134 + @Override
116.135 public Dimension getMaximumSize( JComponent c ) {
116.136 return new Dimension(Short.MAX_VALUE, Short.MAX_VALUE);
116.137 }
116.138 @@ -913,6 +947,7 @@
116.139 * @see javax.swing.JComponent#getBaseline(int, int)
116.140 * @since 1.6
116.141 */
116.142 + @Override
116.143 public int getBaseline(JComponent c, int width, int height) {
116.144 super.getBaseline(c, width, height);
116.145 int baseline = -1;
116.146 @@ -967,6 +1002,7 @@
116.147 * @see javax.swing.JComponent#getBaseline(int, int)
116.148 * @since 1.6
116.149 */
116.150 + @Override
116.151 public Component.BaselineResizeBehavior getBaselineResizeBehavior(
116.152 JComponent c) {
116.153 super.getBaselineResizeBehavior(c);
116.154 @@ -1001,6 +1037,7 @@
116.155 }
116.156
116.157 // This is currently hacky...
116.158 + @Override
116.159 public int getAccessibleChildrenCount(JComponent c) {
116.160 if ( comboBox.isEditable() ) {
116.161 return 2;
116.162 @@ -1011,6 +1048,7 @@
116.163 }
116.164
116.165 // This is currently hacky...
116.166 + @Override
116.167 public Accessible getAccessibleChild(JComponent c, int i) {
116.168 // 0 = the popup
116.169 // 1 = the editor
116.170 @@ -1204,8 +1242,15 @@
116.171 shouldValidate = true;
116.172 }
116.173
116.174 - currentValuePane.paintComponent(g,c,comboBox,bounds.x,bounds.y,
116.175 - bounds.width,bounds.height, shouldValidate);
116.176 + int x = bounds.x, y = bounds.y, w = bounds.width, h = bounds.height;
116.177 + if (padding != null) {
116.178 + x = bounds.x + padding.left;
116.179 + y = bounds.y + padding.top;
116.180 + w = bounds.width - (padding.left + padding.right);
116.181 + h = bounds.height - (padding.top + padding.bottom);
116.182 + }
116.183 +
116.184 + currentValuePane.paintComponent(g,c,comboBox,x,y,w,h,shouldValidate);
116.185 }
116.186
116.187 /**
116.188 @@ -1333,6 +1378,12 @@
116.189 result.height = Math.max(result.height,d.height);
116.190 }
116.191
116.192 + // calculate in the padding
116.193 + if (padding != null) {
116.194 + result.width += padding.left + padding.right;
116.195 + result.height += padding.top + padding.bottom;
116.196 + }
116.197 +
116.198 // Set the cached value
116.199 cachedDisplaySize.setSize(result.width, result.height);
116.200 isDisplaySizeDirty = false;
116.201 @@ -1591,91 +1642,99 @@
116.202 //
116.203 public void propertyChange(PropertyChangeEvent e) {
116.204 String propertyName = e.getPropertyName();
116.205 - JComboBox comboBox = (JComboBox)e.getSource();
116.206 + if (e.getSource() == editor){
116.207 + // If the border of the editor changes then this can effect
116.208 + // the size of the editor which can cause the combo's size to
116.209 + // become invalid so we need to clear size caches
116.210 + if ("border".equals(propertyName)){
116.211 + isMinimumSizeDirty = true;
116.212 + isDisplaySizeDirty = true;
116.213 + comboBox.revalidate();
116.214 + }
116.215 + } else {
116.216 + JComboBox comboBox = (JComboBox)e.getSource();
116.217 + if ( propertyName == "model" ) {
116.218 + ComboBoxModel newModel = (ComboBoxModel)e.getNewValue();
116.219 + ComboBoxModel oldModel = (ComboBoxModel)e.getOldValue();
116.220
116.221 - if ( propertyName == "model" ) {
116.222 - ComboBoxModel newModel = (ComboBoxModel)e.getNewValue();
116.223 - ComboBoxModel oldModel = (ComboBoxModel)e.getOldValue();
116.224 + if ( oldModel != null && listDataListener != null ) {
116.225 + oldModel.removeListDataListener( listDataListener );
116.226 + }
116.227
116.228 - if ( oldModel != null && listDataListener != null ) {
116.229 - oldModel.removeListDataListener( listDataListener );
116.230 + if ( newModel != null && listDataListener != null ) {
116.231 + newModel.addListDataListener( listDataListener );
116.232 + }
116.233 +
116.234 + if ( editor != null ) {
116.235 + comboBox.configureEditor( comboBox.getEditor(), comboBox.getSelectedItem() );
116.236 + }
116.237 + isMinimumSizeDirty = true;
116.238 + isDisplaySizeDirty = true;
116.239 + comboBox.revalidate();
116.240 + comboBox.repaint();
116.241 }
116.242 -
116.243 - if ( newModel != null && listDataListener != null ) {
116.244 - newModel.addListDataListener( listDataListener );
116.245 + else if ( propertyName == "editor" && comboBox.isEditable() ) {
116.246 + addEditor();
116.247 + comboBox.revalidate();
116.248 }
116.249 -
116.250 - if ( editor != null ) {
116.251 - comboBox.configureEditor( comboBox.getEditor(), comboBox.getSelectedItem() );
116.252 + else if ( propertyName == "editable" ) {
116.253 + if ( comboBox.isEditable() ) {
116.254 + comboBox.setRequestFocusEnabled( false );
116.255 + addEditor();
116.256 + } else {
116.257 + comboBox.setRequestFocusEnabled( true );
116.258 + removeEditor();
116.259 + }
116.260 + updateToolTipTextForChildren();
116.261 + comboBox.revalidate();
116.262 }
116.263 - isMinimumSizeDirty = true;
116.264 - isDisplaySizeDirty = true;
116.265 - comboBox.revalidate();
116.266 - comboBox.repaint();
116.267 - }
116.268 - else if ( propertyName == "editor" && comboBox.isEditable() ) {
116.269 - addEditor();
116.270 - comboBox.revalidate();
116.271 - }
116.272 - else if ( propertyName == "editable" ) {
116.273 - if ( comboBox.isEditable() ) {
116.274 - comboBox.setRequestFocusEnabled( false );
116.275 - addEditor();
116.276 - } else {
116.277 - comboBox.setRequestFocusEnabled( true );
116.278 - removeEditor();
116.279 + else if ( propertyName == "enabled" ) {
116.280 + boolean enabled = comboBox.isEnabled();
116.281 + if ( editor != null )
116.282 + editor.setEnabled(enabled);
116.283 + if ( arrowButton != null )
116.284 + arrowButton.setEnabled(enabled);
116.285 + comboBox.repaint();
116.286 }
116.287 -
116.288 - updateToolTipTextForChildren();
116.289 -
116.290 - comboBox.revalidate();
116.291 - }
116.292 - else if ( propertyName == "enabled" ) {
116.293 - boolean enabled = comboBox.isEnabled();
116.294 - if ( editor != null )
116.295 - editor.setEnabled(enabled);
116.296 - if ( arrowButton != null )
116.297 - arrowButton.setEnabled(enabled);
116.298 - comboBox.repaint();
116.299 - }
116.300 - else if ( propertyName == "focusable" ) {
116.301 - boolean focusable = comboBox.isFocusable();
116.302 - if ( editor != null )
116.303 - editor.setFocusable(focusable);
116.304 - if ( arrowButton != null )
116.305 - arrowButton.setFocusable(focusable);
116.306 - comboBox.repaint();
116.307 - }
116.308 - else if ( propertyName == "maximumRowCount" ) {
116.309 - if ( isPopupVisible( comboBox ) ) {
116.310 - setPopupVisible(comboBox, false);
116.311 - setPopupVisible(comboBox, true);
116.312 + else if ( propertyName == "focusable" ) {
116.313 + boolean focusable = comboBox.isFocusable();
116.314 + if ( editor != null )
116.315 + editor.setFocusable(focusable);
116.316 + if ( arrowButton != null )
116.317 + arrowButton.setFocusable(focusable);
116.318 + comboBox.repaint();
116.319 }
116.320 - }
116.321 - else if ( propertyName == "font" ) {
116.322 - listBox.setFont( comboBox.getFont() );
116.323 - if ( editor != null ) {
116.324 - editor.setFont( comboBox.getFont() );
116.325 + else if ( propertyName == "maximumRowCount" ) {
116.326 + if ( isPopupVisible( comboBox ) ) {
116.327 + setPopupVisible(comboBox, false);
116.328 + setPopupVisible(comboBox, true);
116.329 + }
116.330 }
116.331 - isMinimumSizeDirty = true;
116.332 - comboBox.validate();
116.333 - }
116.334 - else if ( propertyName == JComponent.TOOL_TIP_TEXT_KEY ) {
116.335 - updateToolTipTextForChildren();
116.336 - }
116.337 - else if ( propertyName == BasicComboBoxUI.IS_TABLE_CELL_EDITOR ) {
116.338 - Boolean inTable = (Boolean)e.getNewValue();
116.339 - isTableCellEditor = inTable.equals(Boolean.TRUE) ? true : false;
116.340 - }
116.341 - else if (propertyName == "prototypeDisplayValue") {
116.342 - isMinimumSizeDirty = true;
116.343 - isDisplaySizeDirty = true;
116.344 - comboBox.revalidate();
116.345 - }
116.346 - else if (propertyName == "renderer") {
116.347 - isMinimumSizeDirty = true;
116.348 - isDisplaySizeDirty = true;
116.349 - comboBox.revalidate();
116.350 + else if ( propertyName == "font" ) {
116.351 + listBox.setFont( comboBox.getFont() );
116.352 + if ( editor != null ) {
116.353 + editor.setFont( comboBox.getFont() );
116.354 + }
116.355 + isMinimumSizeDirty = true;
116.356 + comboBox.validate();
116.357 + }
116.358 + else if ( propertyName == JComponent.TOOL_TIP_TEXT_KEY ) {
116.359 + updateToolTipTextForChildren();
116.360 + }
116.361 + else if ( propertyName == BasicComboBoxUI.IS_TABLE_CELL_EDITOR ) {
116.362 + Boolean inTable = (Boolean)e.getNewValue();
116.363 + isTableCellEditor = inTable.equals(Boolean.TRUE) ? true : false;
116.364 + }
116.365 + else if (propertyName == "prototypeDisplayValue") {
116.366 + isMinimumSizeDirty = true;
116.367 + isDisplaySizeDirty = true;
116.368 + comboBox.revalidate();
116.369 + }
116.370 + else if (propertyName == "renderer") {
116.371 + isMinimumSizeDirty = true;
116.372 + isDisplaySizeDirty = true;
116.373 + comboBox.revalidate();
116.374 + }
116.375 }
116.376 }
116.377
116.378 @@ -1809,18 +1868,23 @@
116.379 int height = cb.getHeight();
116.380
116.381 Insets insets = getInsets();
116.382 - int buttonSize = height - (insets.top + insets.bottom);
116.383 + int buttonHeight = height - (insets.top + insets.bottom);
116.384 + int buttonWidth = buttonHeight;
116.385 + if (arrowButton != null) {
116.386 + Insets arrowInsets = arrowButton.getInsets();
116.387 + buttonWidth = squareButton ?
116.388 + buttonHeight :
116.389 + arrowButton.getPreferredSize().width + arrowInsets.left + arrowInsets.right;
116.390 + }
116.391 Rectangle cvb;
116.392
116.393 - if ( arrowButton != null ) {
116.394 - if(BasicGraphicsUtils.isLeftToRight(cb)) {
116.395 - arrowButton.setBounds( width - (insets.right + buttonSize),
116.396 - insets.top,
116.397 - buttonSize, buttonSize);
116.398 - }
116.399 - else {
116.400 - arrowButton.setBounds( insets.left, insets.top,
116.401 - buttonSize, buttonSize);
116.402 + if (arrowButton != null) {
116.403 + if (BasicGraphicsUtils.isLeftToRight(cb)) {
116.404 + arrowButton.setBounds(width - (insets.right + buttonWidth),
116.405 + insets.top, buttonWidth, buttonHeight);
116.406 + } else {
116.407 + arrowButton.setBounds(insets.left, insets.top,
116.408 + buttonWidth, buttonHeight);
116.409 }
116.410 }
116.411 if ( editor != null ) {
116.412 @@ -1829,7 +1893,6 @@
116.413 }
116.414 }
116.415
116.416 -
116.417 //
116.418 // ActionListener
116.419 //
117.1 --- a/src/share/classes/javax/swing/plaf/basic/BasicListUI.java Tue Apr 28 14:43:44 2009 -0700
117.2 +++ b/src/share/classes/javax/swing/plaf/basic/BasicListUI.java Wed Apr 29 00:27:46 2009 -0700
117.3 @@ -480,6 +480,12 @@
117.4 if (renderer == null) {
117.5 ListCellRenderer lcr = (ListCellRenderer)UIManager.get(
117.6 "List.cellRenderer");
117.7 +
117.8 + // fix for 6711072 some LAFs like Nimbus do not provide this
117.9 + // UIManager key and we should not through a NPE here because of it
117.10 + if (lcr == null) {
117.11 + lcr = new DefaultListCellRenderer();
117.12 + }
117.13 renderer = lcr.getListCellRendererComponent(
117.14 list, "a", -1, false, false);
117.15 lafDefaults.put(BASELINE_COMPONENT_KEY, renderer);
118.1 --- a/src/share/classes/javax/swing/plaf/basic/BasicMenuItemUI.java Tue Apr 28 14:43:44 2009 -0700
118.2 +++ b/src/share/classes/javax/swing/plaf/basic/BasicMenuItemUI.java Wed Apr 29 00:27:46 2009 -0700
118.3 @@ -111,6 +111,11 @@
118.4 String prefix = getPropertyPrefix();
118.5
118.6 acceleratorFont = UIManager.getFont("MenuItem.acceleratorFont");
118.7 + // use default if missing so that BasicMenuItemUI can be used in other
118.8 + // LAFs like Nimbus
118.9 + if (acceleratorFont == null) {
118.10 + acceleratorFont = UIManager.getFont("MenuItem.font");
118.11 + }
118.12
118.13 Object opaque = UIManager.get(getPropertyPrefix() + ".opaque");
118.14 if (opaque != null) {
118.15 @@ -130,7 +135,7 @@
118.16 LookAndFeel.installBorder(menuItem, prefix + ".border");
118.17 oldBorderPainted = menuItem.isBorderPainted();
118.18 LookAndFeel.installProperty(menuItem, "borderPainted",
118.19 - UIManager.get(prefix + ".borderPainted"));
118.20 + UIManager.getBoolean(prefix + ".borderPainted"));
118.21 LookAndFeel.installColorsAndFont(menuItem,
118.22 prefix + ".background",
118.23 prefix + ".foreground",
119.1 --- a/src/share/classes/javax/swing/plaf/basic/BasicProgressBarUI.java Tue Apr 28 14:43:44 2009 -0700
119.2 +++ b/src/share/classes/javax/swing/plaf/basic/BasicProgressBarUI.java Wed Apr 29 00:27:46 2009 -0700
119.3 @@ -158,6 +158,7 @@
119.4 "ProgressBar.foreground",
119.5 "ProgressBar.font");
119.6 cellLength = UIManager.getInt("ProgressBar.cellLength");
119.7 + if (cellLength == 0) cellLength = 1;
119.8 cellSpacing = UIManager.getInt("ProgressBar.cellSpacing");
119.9 selectionForeground = UIManager.getColor("ProgressBar.selectionForeground");
119.10 selectionBackground = UIManager.getColor("ProgressBar.selectionBackground");
120.1 --- a/src/share/classes/javax/swing/plaf/basic/BasicScrollBarUI.java Tue Apr 28 14:43:44 2009 -0700
120.2 +++ b/src/share/classes/javax/swing/plaf/basic/BasicScrollBarUI.java Wed Apr 29 00:27:46 2009 -0700
120.3 @@ -112,6 +112,24 @@
120.4 */
120.5 private int scrollBarValue;
120.6
120.7 + /**
120.8 + * Distance between the increment button and the track. This may be a negative
120.9 + * number. If negative, then an overlap between the button and track will occur,
120.10 + * which is useful for shaped buttons.
120.11 + *
120.12 + * TODO This should be made protected in a feature release
120.13 + */
120.14 + private int incrGap;
120.15 +
120.16 + /**
120.17 + * Distance between the decrement button and the track. This may be a negative
120.18 + * number. If negative, then an overlap between the button and track will occur,
120.19 + * which is useful for shaped buttons.
120.20 + *
120.21 + * TODO This should be made protected in a feature release
120.22 + */
120.23 + private int decrGap;
120.24 +
120.25 static void loadActionMap(LazyActionMap map) {
120.26 map.put(new Actions(Actions.POSITIVE_UNIT_INCREMENT));
120.27 map.put(new Actions(Actions.POSITIVE_BLOCK_INCREMENT));
120.28 @@ -186,6 +204,31 @@
120.29 LookAndFeel.installProperty(scrollbar, "opaque", Boolean.TRUE);
120.30
120.31 scrollBarValue = scrollbar.getValue();
120.32 +
120.33 + incrGap = UIManager.getInt("ScrollBar.incrementButtonGap");
120.34 + decrGap = UIManager.getInt("ScrollBar.decrementButtonGap");
120.35 +
120.36 + // TODO this can be removed when incrGap/decrGap become protected
120.37 + // handle scaling for sizeVarients for special case components. The
120.38 + // key "JComponent.sizeVariant" scales for large/small/mini
120.39 + // components are based on Apples LAF
120.40 + String scaleKey = (String)scrollbar.getClientProperty(
120.41 + "JComponent.sizeVariant");
120.42 + if (scaleKey != null){
120.43 + if ("large".equals(scaleKey)){
120.44 + scrollBarWidth *= 1.15;
120.45 + incrGap *= 1.15;
120.46 + decrGap *= 1.15;
120.47 + } else if ("small".equals(scaleKey)){
120.48 + scrollBarWidth *= 0.857;
120.49 + incrGap *= 0.857;
120.50 + decrGap *= 0.714;
120.51 + } else if ("mini".equals(scaleKey)){
120.52 + scrollBarWidth *= 0.714;
120.53 + incrGap *= 0.714;
120.54 + decrGap *= 0.714;
120.55 + }
120.56 + }
120.57 }
120.58
120.59
120.60 @@ -442,20 +485,23 @@
120.61 g.setColor(trackHighlightColor);
120.62
120.63 if (scrollbar.getOrientation() == JScrollBar.VERTICAL) {
120.64 + //paint the distance between the start of the track and top of the thumb
120.65 int x = insets.left;
120.66 - int y = decrButton.getY() + decrButton.getHeight();
120.67 + int y = trackRect.y;
120.68 int w = scrollbar.getWidth() - (insets.left + insets.right);
120.69 int h = thumbR.y - y;
120.70 g.fillRect(x, y, w, h);
120.71 - }
120.72 - else {
120.73 + } else {
120.74 + //if left-to-right, fill the area between the start of the track and
120.75 + //the left edge of the thumb. If right-to-left, fill the area between
120.76 + //the end of the thumb and end of the track.
120.77 int x, w;
120.78 if (scrollbar.getComponentOrientation().isLeftToRight()) {
120.79 - x = decrButton.getX() + decrButton.getWidth();
120.80 + x = trackRect.x;
120.81 w = thumbR.x - x;
120.82 } else {
120.83 x = thumbR.x + thumbR.width;
120.84 - w = decrButton.getX() - x;
120.85 + w = trackRect.x + trackRect.width - x;
120.86 }
120.87 int y = insets.top;
120.88 int h = scrollbar.getHeight() - (insets.top + insets.bottom);
120.89 @@ -471,19 +517,23 @@
120.90 g.setColor(trackHighlightColor);
120.91
120.92 if (scrollbar.getOrientation() == JScrollBar.VERTICAL) {
120.93 + //fill the area between the bottom of the thumb and the end of the track.
120.94 int x = insets.left;
120.95 int y = thumbR.y + thumbR.height;
120.96 int w = scrollbar.getWidth() - (insets.left + insets.right);
120.97 - int h = incrButton.getY() - y;
120.98 + int h = trackRect.y + trackRect.height - y;
120.99 g.fillRect(x, y, w, h);
120.100 }
120.101 else {
120.102 + //if left-to-right, fill the area between the right of the thumb and the
120.103 + //end of the track. If right-to-left, then fill the area to the left of
120.104 + //the thumb and the start of the track.
120.105 int x, w;
120.106 if (scrollbar.getComponentOrientation().isLeftToRight()) {
120.107 x = thumbR.x + thumbR.width;
120.108 - w = incrButton.getX() - x;
120.109 + w = trackRect.x + trackRect.width - x;
120.110 } else {
120.111 - x = incrButton.getX() + incrButton.getWidth();
120.112 + x = trackRect.x;
120.113 w = thumbR.x - x;
120.114 }
120.115 int y = insets.top;
120.116 @@ -610,11 +660,13 @@
120.117 int incrButtonY = sbSize.height - (sbInsets.bottom + incrButtonH);
120.118
120.119 /* The thumb must fit within the height left over after we
120.120 - * subtract the preferredSize of the buttons and the insets.
120.121 + * subtract the preferredSize of the buttons and the insets
120.122 + * and the gaps
120.123 */
120.124 int sbInsetsH = sbInsets.top + sbInsets.bottom;
120.125 int sbButtonsH = decrButtonH + incrButtonH;
120.126 - float trackH = sbSize.height - (sbInsetsH + sbButtonsH);
120.127 + int gaps = decrGap + incrGap;
120.128 + float trackH = sbSize.height - (sbInsetsH + sbButtonsH) - gaps;
120.129
120.130 /* Compute the height and origin of the thumb. The case
120.131 * where the thumb is at the bottom edge is handled specially
120.132 @@ -632,11 +684,11 @@
120.133 thumbH = Math.max(thumbH, getMinimumThumbSize().height);
120.134 thumbH = Math.min(thumbH, getMaximumThumbSize().height);
120.135
120.136 - int thumbY = incrButtonY - thumbH;
120.137 + int thumbY = incrButtonY - incrGap - thumbH;
120.138 if (value < (sb.getMaximum() - sb.getVisibleAmount())) {
120.139 float thumbRange = trackH - thumbH;
120.140 thumbY = (int)(0.5f + (thumbRange * ((value - min) / (range - extent))));
120.141 - thumbY += decrButtonY + decrButtonH;
120.142 + thumbY += decrButtonY + decrButtonH + decrGap;
120.143 }
120.144
120.145 /* If the buttons don't fit, allocate half of the available
120.146 @@ -652,8 +704,8 @@
120.147
120.148 /* Update the trackRect field.
120.149 */
120.150 - int itrackY = decrButtonY + decrButtonH;
120.151 - int itrackH = incrButtonY - itrackY;
120.152 + int itrackY = decrButtonY + decrButtonH + decrGap;
120.153 + int itrackH = incrButtonY - incrGap - itrackY;
120.154 trackRect.setBounds(itemX, itrackY, itemW, itrackH);
120.155
120.156 /* If the thumb isn't going to fit, zero it's bounds. Otherwise
120.157 @@ -671,11 +723,11 @@
120.158 }
120.159 }
120.160 else {
120.161 - if ((thumbY + thumbH) > incrButtonY) {
120.162 - thumbY = incrButtonY - thumbH;
120.163 + if ((thumbY + thumbH) > incrButtonY - incrGap) {
120.164 + thumbY = incrButtonY - incrGap - thumbH;
120.165 }
120.166 - if (thumbY < (decrButtonY + decrButtonH)) {
120.167 - thumbY = decrButtonY + decrButtonH + 1;
120.168 + if (thumbY < (decrButtonY + decrButtonH + decrGap)) {
120.169 + thumbY = decrButtonY + decrButtonH + decrGap + 1;
120.170 }
120.171 setThumbBounds(itemX, thumbY, itemW, thumbH);
120.172 }
120.173 @@ -710,13 +762,16 @@
120.174 }
120.175 int leftButtonX = sbInsets.left;
120.176 int rightButtonX = sbSize.width - (sbInsets.right + rightButtonW);
120.177 + int leftGap = ltr ? decrGap : incrGap;
120.178 + int rightGap = ltr ? incrGap : decrGap;
120.179
120.180 /* The thumb must fit within the width left over after we
120.181 - * subtract the preferredSize of the buttons and the insets.
120.182 + * subtract the preferredSize of the buttons and the insets
120.183 + * and the gaps
120.184 */
120.185 int sbInsetsW = sbInsets.left + sbInsets.right;
120.186 int sbButtonsW = leftButtonW + rightButtonW;
120.187 - float trackW = sbSize.width - (sbInsetsW + sbButtonsW);
120.188 + float trackW = sbSize.width - (sbInsetsW + sbButtonsW) - (leftGap + rightGap);
120.189
120.190 /* Compute the width and origin of the thumb. Enforce
120.191 * the thumbs min/max dimensions. The case where the thumb
120.192 @@ -735,7 +790,7 @@
120.193 thumbW = Math.max(thumbW, getMinimumThumbSize().width);
120.194 thumbW = Math.min(thumbW, getMaximumThumbSize().width);
120.195
120.196 - int thumbX = ltr ? rightButtonX - thumbW : leftButtonX + leftButtonW;
120.197 + int thumbX = ltr ? rightButtonX - rightGap - thumbW : leftButtonX + leftButtonW + leftGap;
120.198 if (value < (max - sb.getVisibleAmount())) {
120.199 float thumbRange = trackW - thumbW;
120.200 if( ltr ) {
120.201 @@ -743,7 +798,7 @@
120.202 } else {
120.203 thumbX = (int)(0.5f + (thumbRange * ((max - extent - value) / (range - extent))));
120.204 }
120.205 - thumbX += leftButtonX + leftButtonW;
120.206 + thumbX += leftButtonX + leftButtonW + leftGap;
120.207 }
120.208
120.209 /* If the buttons don't fit, allocate half of the available
120.210 @@ -752,7 +807,7 @@
120.211 int sbAvailButtonW = (sbSize.width - sbInsetsW);
120.212 if (sbAvailButtonW < sbButtonsW) {
120.213 rightButtonW = leftButtonW = sbAvailButtonW / 2;
120.214 - rightButtonX = sbSize.width - (sbInsets.right + rightButtonW);
120.215 + rightButtonX = sbSize.width - (sbInsets.right + rightButtonW + rightGap);
120.216 }
120.217
120.218 (ltr ? decrButton : incrButton).setBounds(leftButtonX, itemY, leftButtonW, itemH);
120.219 @@ -760,8 +815,8 @@
120.220
120.221 /* Update the trackRect field.
120.222 */
120.223 - int itrackX = leftButtonX + leftButtonW;
120.224 - int itrackW = rightButtonX - itrackX;
120.225 + int itrackX = leftButtonX + leftButtonW + leftGap;
120.226 + int itrackW = rightButtonX - rightGap - itrackX;
120.227 trackRect.setBounds(itrackX, itemY, itrackW, itemH);
120.228
120.229 /* Make sure the thumb fits between the buttons. Note
120.230 @@ -778,11 +833,11 @@
120.231 }
120.232 }
120.233 else {
120.234 - if (thumbX + thumbW > rightButtonX) {
120.235 - thumbX = rightButtonX - thumbW;
120.236 + if (thumbX + thumbW > rightButtonX - rightGap) {
120.237 + thumbX = rightButtonX - rightGap - thumbW;
120.238 }
120.239 - if (thumbX < leftButtonX + leftButtonW) {
120.240 - thumbX = leftButtonX + leftButtonW + 1;
120.241 + if (thumbX < leftButtonX + leftButtonW + leftGap) {
120.242 + thumbX = leftButtonX + leftButtonW + leftGap + 1;
120.243 }
120.244 setThumbBounds(thumbX, itemY, thumbW, itemH);
120.245 }
120.246 @@ -1151,20 +1206,15 @@
120.247 int thumbMin, thumbMax, thumbPos;
120.248
120.249 if (scrollbar.getOrientation() == JScrollBar.VERTICAL) {
120.250 - thumbMin = decrButton.getY() + decrButton.getHeight();
120.251 - thumbMax = incrButton.getY() - thumbR.height;
120.252 + thumbMin = trackRect.y;
120.253 + thumbMax = trackRect.y + trackRect.height - thumbR.height;
120.254 thumbPos = Math.min(thumbMax, Math.max(thumbMin, (e.getY() - offset)));
120.255 setThumbBounds(thumbR.x, thumbPos, thumbR.width, thumbR.height);
120.256 trackLength = getTrackBounds().height;
120.257 }
120.258 else {
120.259 - if (scrollbar.getComponentOrientation().isLeftToRight()) {
120.260 - thumbMin = decrButton.getX() + decrButton.getWidth();
120.261 - thumbMax = incrButton.getX() - thumbR.width;
120.262 - } else {
120.263 - thumbMin = incrButton.getX() + incrButton.getWidth();
120.264 - thumbMax = decrButton.getX() - thumbR.width;
120.265 - }
120.266 + thumbMin = trackRect.x;
120.267 + thumbMax = trackRect.x + trackRect.width - thumbR.width;
120.268 thumbPos = Math.min(thumbMax, Math.max(thumbMin, (e.getX() - offset)));
120.269 setThumbBounds(thumbPos, thumbR.y, thumbR.width, thumbR.height);
120.270 trackLength = getTrackBounds().width;
121.1 --- a/src/share/classes/javax/swing/plaf/basic/BasicSliderUI.java Tue Apr 28 14:43:44 2009 -0700
121.2 +++ b/src/share/classes/javax/swing/plaf/basic/BasicSliderUI.java Wed Apr 29 00:27:46 2009 -0700
121.3 @@ -205,6 +205,9 @@
121.4 focusColor = UIManager.getColor("Slider.focus");
121.5
121.6 focusInsets = (Insets)UIManager.get( "Slider.focusInsets" );
121.7 + // use default if missing so that BasicSliderUI can be used in other
121.8 + // LAFs like Nimbus
121.9 + if (focusInsets == null) focusInsets = new InsetsUIResource(2,2,2,2);
121.10 }
121.11
121.12 protected TrackListener createTrackListener(JSlider slider) {
122.1 --- a/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java Tue Apr 28 14:43:44 2009 -0700
122.2 +++ b/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java Wed Apr 29 00:27:46 2009 -0700
122.3 @@ -347,8 +347,9 @@
122.4 // This plus 2 here is to provide backwards consistancy. Previously,
122.5 // the old size did not include the 2 pixel border around the divider,
122.6 // it now does.
122.7 - LookAndFeel.installProperty(splitPane, "dividerSize",
122.8 - UIManager.get("SplitPane.dividerSize"));
122.9 + Integer dividerSize = (Integer)UIManager.get("SplitPane.dividerSize");
122.10 + if (divider == null) dividerSize = 10;
122.11 + LookAndFeel.installProperty(splitPane, "dividerSize", dividerSize);
122.12
122.13 divider.setDividerSize(splitPane.getDividerSize());
122.14 dividerSize = divider.getDividerSize();
123.1 --- a/src/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java Tue Apr 28 14:43:44 2009 -0700
123.2 +++ b/src/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java Wed Apr 29 00:27:46 2009 -0700
123.3 @@ -379,6 +379,14 @@
123.4 opaque = Boolean.FALSE;
123.5 }
123.6 LookAndFeel.installProperty(tabPane, "opaque", opaque);
123.7 +
123.8 + // Fix for 6711145 BasicTabbedPanuUI should not throw a NPE if these
123.9 + // keys are missing. So we are setting them to there default values here
123.10 + // if the keys are missing.
123.11 + if (tabInsets == null) tabInsets = new Insets(0,4,1,4);
123.12 + if (selectedTabPadInsets == null) selectedTabPadInsets = new Insets(2,2,2,1);
123.13 + if (tabAreaInsets == null) tabAreaInsets = new Insets(3,2,0,2);
123.14 + if (contentBorderInsets == null) contentBorderInsets = new Insets(2,2,3,3);
123.15 }
123.16
123.17 protected void uninstallDefaults() {
124.1 --- a/src/share/classes/javax/swing/plaf/basic/BasicTableUI.java Tue Apr 28 14:43:44 2009 -0700
124.2 +++ b/src/share/classes/javax/swing/plaf/basic/BasicTableUI.java Wed Apr 29 00:27:46 2009 -0700
124.3 @@ -1414,17 +1414,20 @@
124.4
124.5 Color sbg = table.getSelectionBackground();
124.6 if (sbg == null || sbg instanceof UIResource) {
124.7 - table.setSelectionBackground(UIManager.getColor("Table.selectionBackground"));
124.8 + sbg = UIManager.getColor("Table.selectionBackground");
124.9 + table.setSelectionBackground(sbg != null ? sbg : UIManager.getColor("textHighlight"));
124.10 }
124.11
124.12 Color sfg = table.getSelectionForeground();
124.13 if (sfg == null || sfg instanceof UIResource) {
124.14 - table.setSelectionForeground(UIManager.getColor("Table.selectionForeground"));
124.15 + sfg = UIManager.getColor("Table.selectionForeground");
124.16 + table.setSelectionForeground(sfg != null ? sfg : UIManager.getColor("textHighlightText"));
124.17 }
124.18
124.19 Color gridColor = table.getGridColor();
124.20 if (gridColor == null || gridColor instanceof UIResource) {
124.21 - table.setGridColor(UIManager.getColor("Table.gridColor"));
124.22 + gridColor = UIManager.getColor("Table.gridColor");
124.23 + table.setGridColor(gridColor != null ? gridColor : Color.GRAY);
124.24 }
124.25
124.26 // install the scrollpane border
125.1 --- a/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java Tue Apr 28 14:43:44 2009 -0700
125.2 +++ b/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java Wed Apr 29 00:27:46 2009 -0700
125.3 @@ -27,13 +27,10 @@
125.4 import java.util.*;
125.5 import java.awt.*;
125.6 import java.awt.event.*;
125.7 -import java.awt.font.*;
125.8 import java.awt.datatransfer.*;
125.9 -import java.awt.dnd.*;
125.10 import java.awt.im.InputContext;
125.11 import java.beans.*;
125.12 import java.io.*;
125.13 -import java.net.*;
125.14 import javax.swing.*;
125.15 import javax.swing.plaf.*;
125.16 import javax.swing.text.*;
125.17 @@ -785,11 +782,15 @@
125.18 installDefaults();
125.19 installDefaults2();
125.20
125.21 - // common case is background painted... this can
125.22 - // easily be changed by subclasses or from outside
125.23 - // of the component.
125.24 - LookAndFeel.installProperty(editor, "opaque", Boolean.TRUE);
125.25 - LookAndFeel.installProperty(editor, "autoscrolls", Boolean.TRUE);
125.26 + // This is a workaround as these should not override what synth has
125.27 + // set them to
125.28 + if (!(this instanceof sun.swing.plaf.synth.SynthUI)){
125.29 + // common case is background painted... this can
125.30 + // easily be changed by subclasses or from outside
125.31 + // of the component.
125.32 + LookAndFeel.installProperty(editor, "opaque", Boolean.TRUE);
125.33 + LookAndFeel.installProperty(editor, "autoscrolls", Boolean.TRUE);
125.34 + }
125.35
125.36 // attach to the model and editor
125.37 editor.addPropertyChangeListener(updateHandler);
126.1 --- a/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java Tue Apr 28 14:43:44 2009 -0700
126.2 +++ b/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java Wed Apr 29 00:27:46 2009 -0700
126.3 @@ -2402,15 +2402,25 @@
126.4 }
126.5 leadRow = getRowForPath(tree, newPath);
126.6
126.7 - if(repaint) {
126.8 - if(bounds != null)
126.9 - tree.repaint(bounds);
126.10 + if (repaint) {
126.11 + if (bounds != null) {
126.12 + tree.repaint(getRepaintPathBounds(bounds));
126.13 + }
126.14 bounds = getPathBounds(tree, newPath);
126.15 - if(bounds != null)
126.16 - tree.repaint(bounds);
126.17 + if (bounds != null) {
126.18 + tree.repaint(getRepaintPathBounds(bounds));
126.19 + }
126.20 }
126.21 }
126.22
126.23 + private Rectangle getRepaintPathBounds(Rectangle bounds) {
126.24 + if (UIManager.getBoolean("Tree.repaintWholeRow")) {
126.25 + bounds.x = 0;
126.26 + bounds.width = tree.getWidth();
126.27 + }
126.28 + return bounds;
126.29 + }
126.30 +
126.31 private TreePath getLeadSelectionPath() {
126.32 return tree.getLeadSelectionPath();
126.33 }
126.34 @@ -3643,14 +3653,6 @@
126.35 focusGained(e);
126.36 }
126.37
126.38 - private Rectangle getRepaintPathBounds(Rectangle bounds) {
126.39 - if(UIManager.getBoolean("Tree.repaintWholeRow")) {
126.40 - bounds.x = 0;
126.41 - bounds.width = tree.getWidth();
126.42 - }
126.43 - return bounds;
126.44 - }
126.45 -
126.46 //
126.47 // CellEditorListener
126.48 //
127.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
127.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/AbstractRegionPainter.java Wed Apr 29 00:27:46 2009 -0700
127.3 @@ -0,0 +1,735 @@
127.4 +/*
127.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
127.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
127.7 + *
127.8 + * This code is free software; you can redistribute it and/or modify it
127.9 + * under the terms of the GNU General Public License version 2 only, as
127.10 + * published by the Free Software Foundation. Sun designates this
127.11 + * particular file as subject to the "Classpath" exception as provided
127.12 + * by Sun in the LICENSE file that accompanied this code.
127.13 + *
127.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
127.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
127.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
127.17 + * version 2 for more details (a copy is included in the LICENSE file that
127.18 + * accompanied this code).
127.19 + *
127.20 + * You should have received a copy of the GNU General Public License version
127.21 + * 2 along with this work; if not, write to the Free Software Foundation,
127.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
127.23 + *
127.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
127.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
127.26 + * have any questions.
127.27 + */
127.28 +package javax.swing.plaf.nimbus;
127.29 +
127.30 +import java.awt.*;
127.31 +import java.awt.image.*;
127.32 +import java.lang.reflect.Method;
127.33 +import javax.swing.*;
127.34 +import javax.swing.plaf.UIResource;
127.35 +import javax.swing.Painter;
127.36 +import java.awt.print.PrinterGraphics;
127.37 +import static javax.swing.plaf.nimbus.NimbusLookAndFeel.deriveARGB;
127.38 +
127.39 +/**
127.40 + * Convenient base class for defining Painter instances for rendering a
127.41 + * region or component in Nimbus.
127.42 + *
127.43 + * @author Jasper Potts
127.44 + * @author Richard Bair
127.45 + */
127.46 +public abstract class AbstractRegionPainter implements Painter<JComponent> {
127.47 + /**
127.48 + * PaintContext, which holds a lot of the state needed for cache hinting and x/y value decoding
127.49 + * The data contained within the context is typically only computed once and reused over
127.50 + * multiple paint calls, whereas the other values (w, h, f, leftWidth, etc) are recomputed
127.51 + * for each call to paint.
127.52 + *
127.53 + * This field is retrieved from subclasses on each paint operation. It is up
127.54 + * to the subclass to compute and cache the PaintContext over multiple calls.
127.55 + */
127.56 + private PaintContext ctx;
127.57 + /**
127.58 + * The scaling factor. Recomputed on each call to paint.
127.59 + */
127.60 + private float f;
127.61 + /*
127.62 + Various metrics used for decoding x/y values based on the canvas size
127.63 + and stretching insets.
127.64 +
127.65 + On each call to paint, we first ask the subclass for the PaintContext.
127.66 + From the context we get the canvas size and stretching insets, and whether
127.67 + the algorithm should be "inverted", meaning the center section remains
127.68 + a fixed size and the other sections scale.
127.69 +
127.70 + We then use these values to compute a series of metrics (listed below)
127.71 + which are used to decode points in a specific axis (x or y).
127.72 +
127.73 + The leftWidth represents the distance from the left edge of the region
127.74 + to the first stretching inset, after accounting for any scaling factor
127.75 + (such as DPI scaling). The centerWidth is the distance between the leftWidth
127.76 + and the rightWidth. The rightWidth is the distance from the right edge,
127.77 + to the right inset (after scaling has been applied).
127.78 +
127.79 + The same logic goes for topHeight, centerHeight, and bottomHeight.
127.80 +
127.81 + The leftScale represents the proportion of the width taken by the left section.
127.82 + The same logic is applied to the other scales.
127.83 +
127.84 + The various widths/heights are used to decode control points. The
127.85 + various scales are used to decode bezier handles (or anchors).
127.86 + */
127.87 + /**
127.88 + * The width of the left section. Recomputed on each call to paint.
127.89 + */
127.90 + private float leftWidth;
127.91 + /**
127.92 + * The height of the top section. Recomputed on each call to paint.
127.93 + */
127.94 + private float topHeight;
127.95 + /**
127.96 + * The width of the center section. Recomputed on each call to paint.
127.97 + */
127.98 + private float centerWidth;
127.99 + /**
127.100 + * The height of the center section. Recomputed on each call to paint.
127.101 + */
127.102 + private float centerHeight;
127.103 + /**
127.104 + * The width of the right section. Recomputed on each call to paint.
127.105 + */
127.106 + private float rightWidth;
127.107 + /**
127.108 + * The height of the bottom section. Recomputed on each call to paint.
127.109 + */
127.110 + private float bottomHeight;
127.111 + /**
127.112 + * The scaling factor to use for the left section. Recomputed on each call to paint.
127.113 + */
127.114 + private float leftScale;
127.115 + /**
127.116 + * The scaling factor to use for the top section. Recomputed on each call to paint.
127.117 + */
127.118 + private float topScale;
127.119 + /**
127.120 + * The scaling factor to use for the center section, in the horizontal
127.121 + * direction. Recomputed on each call to paint.
127.122 + */
127.123 + private float centerHScale;
127.124 + /**
127.125 + * The scaling factor to use for the center section, in the vertical
127.126 + * direction. Recomputed on each call to paint.
127.127 + */
127.128 + private float centerVScale;
127.129 + /**
127.130 + * The scaling factor to use for the right section. Recomputed on each call to paint.
127.131 + */
127.132 + private float rightScale;
127.133 + /**
127.134 + * The scaling factor to use for the bottom section. Recomputed on each call to paint.
127.135 + */
127.136 + private float bottomScale;
127.137 +
127.138 + /**
127.139 + * Create a new AbstractRegionPainter
127.140 + */
127.141 + protected AbstractRegionPainter() { }
127.142 +
127.143 + /**
127.144 + * @inheritDoc
127.145 + */
127.146 + @Override
127.147 + public final void paint(Graphics2D g, JComponent c, int w, int h) {
127.148 + //don't render if the width/height are too small
127.149 + if (w <= 0 || h <=0) return;
127.150 +
127.151 + Object[] extendedCacheKeys = getExtendedCacheKeys(c);
127.152 + ctx = getPaintContext();
127.153 + PaintContext.CacheMode cacheMode = ctx == null ? PaintContext.CacheMode.NO_CACHING : ctx.cacheMode;
127.154 + if (cacheMode == PaintContext.CacheMode.NO_CACHING ||
127.155 + !ImageCache.getInstance().isImageCachable(w, h) ||
127.156 + g instanceof PrinterGraphics) {
127.157 + // no caching so paint directly
127.158 + paint0(g, c, w, h, extendedCacheKeys);
127.159 + } else if (cacheMode == PaintContext.CacheMode.FIXED_SIZES) {
127.160 + paintWithFixedSizeCaching(g, c, w, h, extendedCacheKeys);
127.161 + } else {
127.162 + // 9 Square caching
127.163 + paintWith9SquareCaching(g, ctx, c, w, h, extendedCacheKeys);
127.164 + }
127.165 + }
127.166 +
127.167 + /**
127.168 + * Get any extra attributes which the painter implementation would like
127.169 + * to include in the image cache lookups. This is checked for every call
127.170 + * of the paint(g, c, w, h) method.
127.171 + *
127.172 + * @param c The component on the current paint call
127.173 + * @return Array of extra objects to be included in the cache key
127.174 + */
127.175 + protected Object[] getExtendedCacheKeys(JComponent c) {
127.176 + return null;
127.177 + }
127.178 +
127.179 + /**
127.180 + * <p>Gets the PaintContext for this painting operation. This method is called on every
127.181 + * paint, and so should be fast and produce no garbage. The PaintContext contains
127.182 + * information such as cache hints. It also contains data necessary for decoding
127.183 + * points at runtime, such as the stretching insets, the canvas size at which the
127.184 + * encoded points were defined, and whether the stretching insets are inverted.</p>
127.185 + *
127.186 + * <p> This method allows for subclasses to package the painting of different states
127.187 + * with possibly different canvas sizes, etc, into one AbstractRegionPainter implementation.</p>
127.188 + *
127.189 + * @return a PaintContext associated with this paint operation.
127.190 + */
127.191 + protected abstract PaintContext getPaintContext();
127.192 +
127.193 + /**
127.194 + * <p>Configures the given Graphics2D. Often, rendering hints or compositiing rules are
127.195 + * applied to a Graphics2D object prior to painting, which should affect all of the
127.196 + * subsequent painting operations. This method provides a convenient hook for configuring
127.197 + * the Graphics object prior to rendering, regardless of whether the render operation is
127.198 + * performed to an intermediate buffer or directly to the display.</p>
127.199 + *
127.200 + * @param g The Graphics2D object to configure. Will not be null.
127.201 + */
127.202 + protected void configureGraphics(Graphics2D g) {
127.203 + g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
127.204 + }
127.205 +
127.206 + /**
127.207 + * Actually performs the painting operation. Subclasses must implement this method.
127.208 + * The graphics object passed may represent the actual surface being rendererd to,
127.209 + * or it may be an intermediate buffer. It has also been pre-translated. Simply render
127.210 + * the component as if it were located at 0, 0 and had a width of <code>width</code>
127.211 + * and a height of <code>height</code>. For performance reasons, you may want to read
127.212 + * the clip from the Graphics2D object and only render within that space.
127.213 + *
127.214 + * @param g The Graphics2D surface to paint to
127.215 + * @param c The JComponent related to the drawing event. For example, if the
127.216 + * region being rendered is Button, then <code>c</code> will be a
127.217 + * JButton. If the region being drawn is ScrollBarSlider, then the
127.218 + * component will be JScrollBar. This value may be null.
127.219 + * @param width The width of the region to paint. Note that in the case of
127.220 + * painting the foreground, this value may differ from c.getWidth().
127.221 + * @param height The height of the region to paint. Note that in the case of
127.222 + * painting the foreground, this value may differ from c.getHeight().
127.223 + * @param extendedCacheKeys The result of the call to getExtendedCacheKeys()
127.224 + */
127.225 + protected abstract void doPaint(Graphics2D g, JComponent c, int width,
127.226 + int height, Object[] extendedCacheKeys);
127.227 +
127.228 + /**
127.229 + * Decodes and returns a float value representing the actual pixel location for
127.230 + * the given encoded X value.
127.231 + *
127.232 + * @param x an encoded x value (0...1, or 1...2, or 2...3)
127.233 + * @return the decoded x value
127.234 + */
127.235 + protected final float decodeX(float x) {
127.236 + if (ctx.canvasSize == null) return x;
127.237 +
127.238 + if (x >= 0 && x <= 1) {
127.239 + return x * leftWidth;
127.240 + } else if (x > 1 && x < 2) {
127.241 + return ((x-1) * centerWidth) + leftWidth;
127.242 + } else if (x >= 2 && x <= 3) {
127.243 + return ((x-2) * rightWidth) + leftWidth + centerWidth;
127.244 + } else {
127.245 + throw new AssertionError("Invalid x");
127.246 + }
127.247 + }
127.248 +
127.249 + /**
127.250 + * Decodes and returns a float value representing the actual pixel location for
127.251 + * the given encoded y value.
127.252 + *
127.253 + * @param y an encoded y value (0...1, or 1...2, or 2...3)
127.254 + * @return the decoded y value
127.255 + */
127.256 + protected final float decodeY(float y) {
127.257 + if (ctx.canvasSize == null) return y;
127.258 +
127.259 + if (y >= 0 && y <= 1) {
127.260 + return y * topHeight;
127.261 + } else if (y > 1 && y < 2) {
127.262 + return ((y-1) * centerHeight) + topHeight;
127.263 + } else if (y >= 2 && y <= 3) {
127.264 + return ((y-2) * bottomHeight) + topHeight + centerHeight;
127.265 + } else {
127.266 + throw new AssertionError("Invalid y");
127.267 + }
127.268 + }
127.269 +
127.270 + /**
127.271 + * Decodes and returns a float value representing the actual pixel location for
127.272 + * the anchor point given the encoded X value of the control point, and the offset
127.273 + * distance to the anchor from that control point.
127.274 + *
127.275 + * @param x an encoded x value of the bezier control point (0...1, or 1...2, or 2...3)
127.276 + * @param dx the offset distance to the anchor from the control point x
127.277 + * @return the decoded x location of the control point
127.278 + */
127.279 + protected final float decodeAnchorX(float x, float dx) {
127.280 + if (ctx.canvasSize == null) return x + dx;
127.281 +
127.282 + if (x >= 0 && x <= 1) {
127.283 + return decodeX(x) + (dx * leftScale);
127.284 + } else if (x > 1 && x < 2) {
127.285 + return decodeX(x) + (dx * centerHScale);
127.286 + } else if (x >= 2 && x <= 3) {
127.287 + return decodeX(x) + (dx * rightScale);
127.288 + } else {
127.289 + throw new AssertionError("Invalid x");
127.290 + }
127.291 + }
127.292 +
127.293 + /**
127.294 + * Decodes and returns a float value representing the actual pixel location for
127.295 + * the anchor point given the encoded Y value of the control point, and the offset
127.296 + * distance to the anchor from that control point.
127.297 + *
127.298 + * @param y an encoded y value of the bezier control point (0...1, or 1...2, or 2...3)
127.299 + * @param dy the offset distance to the anchor from the control point y
127.300 + * @return the decoded y position of the control point
127.301 + */
127.302 + protected final float decodeAnchorY(float y, float dy) {
127.303 + if (ctx.canvasSize == null) return y + dy;
127.304 +
127.305 + if (y >= 0 && y <= 1) {
127.306 + return decodeY(y) + (dy * topScale);
127.307 + } else if (y > 1 && y < 2) {
127.308 + return decodeY(y) + (dy * centerVScale);
127.309 + } else if (y >= 2 && y <= 3) {
127.310 + return decodeY(y) + (dy * bottomScale);
127.311 + } else {
127.312 + throw new AssertionError("Invalid y");
127.313 + }
127.314 + }
127.315 +
127.316 + /**
127.317 + * Decodes and returns a color, which is derived from a base color in UI
127.318 + * defaults.
127.319 + *
127.320 + * @param key A key corrosponding to the value in the UI Defaults table
127.321 + * of UIManager where the base color is defined
127.322 + * @param hOffset The hue offset used for derivation.
127.323 + * @param sOffset The saturation offset used for derivation.
127.324 + * @param bOffset The brightness offset used for derivation.
127.325 + * @param aOffset The alpha offset used for derivation. Between 0...255
127.326 + * @return The derived color, whos color value will change if the parent
127.327 + * uiDefault color changes.
127.328 + */
127.329 + protected final Color decodeColor(String key, float hOffset, float sOffset,
127.330 + float bOffset, int aOffset) {
127.331 + if (UIManager.getLookAndFeel() instanceof NimbusLookAndFeel){
127.332 + NimbusLookAndFeel laf = (NimbusLookAndFeel) UIManager.getLookAndFeel();
127.333 + return laf.getDerivedColor(key, hOffset, sOffset, bOffset, aOffset, true);
127.334 + } else {
127.335 + // can not give a right answer as painter sould not be used outside
127.336 + // of nimbus laf but do the best we can
127.337 + return Color.getHSBColor(hOffset,sOffset,bOffset);
127.338 + }
127.339 + }
127.340 +
127.341 + /**
127.342 + * Decodes and returns a color, which is derived from a offset between two
127.343 + * other colors.
127.344 + *
127.345 + * @param color1 The first color
127.346 + * @param color2 The second color
127.347 + * @param midPoint The offset between color 1 and color 2, a value of 0.0 is
127.348 + * color 1 and 1.0 is color 2;
127.349 + * @return The derived color
127.350 + */
127.351 + protected final Color decodeColor(Color color1, Color color2,
127.352 + float midPoint) {
127.353 + return new Color(deriveARGB(color1, color2, midPoint));
127.354 + }
127.355 +
127.356 + /**
127.357 + * Given parameters for creating a LinearGradientPaint, this method will
127.358 + * create and return a linear gradient paint. One primary purpose for this
127.359 + * method is to avoid creating a LinearGradientPaint where the start and
127.360 + * end points are equal. In such a case, the end y point is slightly
127.361 + * increased to avoid the overlap.
127.362 + *
127.363 + * @param x1
127.364 + * @param y1
127.365 + * @param x2
127.366 + * @param y2
127.367 + * @param midpoints
127.368 + * @param colors
127.369 + * @return a valid LinearGradientPaint. This method never returns null.
127.370 + */
127.371 + protected final LinearGradientPaint decodeGradient(float x1, float y1, float x2, float y2, float[] midpoints, Color[] colors) {
127.372 + if (x1 == x2 && y1 == y2) {
127.373 + y2 += .00001f;
127.374 + }
127.375 + return new LinearGradientPaint(x1, y1, x2, y2, midpoints, colors);
127.376 + }
127.377 +
127.378 + /**
127.379 + * Given parameters for creating a RadialGradientPaint, this method will
127.380 + * create and return a radial gradient paint. One primary purpose for this
127.381 + * method is to avoid creating a RadialGradientPaint where the radius
127.382 + * is non-positive. In such a case, the radius is just slightly
127.383 + * increased to avoid 0.
127.384 + *
127.385 + * @param x
127.386 + * @param y
127.387 + * @param r
127.388 + * @param midpoints
127.389 + * @param colors
127.390 + * @return a valid RadialGradientPaint. This method never returns null.
127.391 + */
127.392 + protected final RadialGradientPaint decodeRadialGradient(float x, float y, float r, float[] midpoints, Color[] colors) {
127.393 + if (r == 0f) {
127.394 + r = .00001f;
127.395 + }
127.396 + return new RadialGradientPaint(x, y, r, midpoints, colors);
127.397 + }
127.398 +
127.399 + /**
127.400 + * Get a color property from the given JComponent. First checks for a
127.401 + * <code>getXXX()</code> method and if that fails checks for a client
127.402 + * property with key <code>property</code>. If that still fails to return
127.403 + * a Color then <code>defaultColor</code> is returned.
127.404 + *
127.405 + * @param c The component to get the color property from
127.406 + * @param property The name of a bean style property or client property
127.407 + * @param defaultColor The color to return if no color was obtained from
127.408 + * the component.
127.409 + * @return The color that was obtained from the component or defaultColor
127.410 + */
127.411 + protected final Color getComponentColor(JComponent c, String property,
127.412 + Color defaultColor,
127.413 + float saturationOffset,
127.414 + float brightnessOffset,
127.415 + int alphaOffset) {
127.416 + Color color = null;
127.417 + if (c != null) {
127.418 + // handle some special cases for performance
127.419 + if ("background".equals(property)) {
127.420 + color = c.getBackground();
127.421 + } else if ("foreground".equals(property)) {
127.422 + color = c.getForeground();
127.423 + } else if (c instanceof JList && "selectionForeground".equals(property)) {
127.424 + color = ((JList) c).getSelectionForeground();
127.425 + } else if (c instanceof JList && "selectionBackground".equals(property)) {
127.426 + color = ((JList) c).getSelectionBackground();
127.427 + } else if (c instanceof JTable && "selectionForeground".equals(property)) {
127.428 + color = ((JTable) c).getSelectionForeground();
127.429 + } else if (c instanceof JTable && "selectionBackground".equals(property)) {
127.430 + color = ((JTable) c).getSelectionBackground();
127.431 + } else {
127.432 + String s = "get" + Character.toUpperCase(property.charAt(0)) + property.substring(1);
127.433 + try {
127.434 + Method method = c.getClass().getMethod(s);
127.435 + color = (Color) method.invoke(c);
127.436 + } catch (Exception e) {
127.437 + //don't do anything, it just didn't work, that's all.
127.438 + //This could be a normal occurance if you use a property
127.439 + //name referring to a key in clientProperties instead of
127.440 + //a real property
127.441 + }
127.442 + if (color == null) {
127.443 + Object value = c.getClientProperty(property);
127.444 + if (value instanceof Color) {
127.445 + color = (Color) value;
127.446 + }
127.447 + }
127.448 + }
127.449 + }
127.450 + // we return the defaultColor if the color found is null, or if
127.451 + // it is a UIResource. This is done because the color for the
127.452 + // ENABLED state is set on the component, but you don't want to use
127.453 + // that color for the over state. So we only respect the color
127.454 + // specified for the property if it was set by the user, as opposed
127.455 + // to set by us.
127.456 + if (color == null || color instanceof UIResource) {
127.457 + return defaultColor;
127.458 + } else if (saturationOffset != 0 || brightnessOffset != 0 || alphaOffset != 0) {
127.459 + float[] tmp = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), null);
127.460 + tmp[1] = clamp(tmp[1] + saturationOffset);
127.461 + tmp[2] = clamp(tmp[2] + brightnessOffset);
127.462 + int alpha = clamp(color.getAlpha() + alphaOffset);
127.463 + return new Color((Color.HSBtoRGB(tmp[0], tmp[1], tmp[2]) & 0xFFFFFF) | (alpha <<24));
127.464 + } else {
127.465 + return color;
127.466 + }
127.467 + }
127.468 +
127.469 + /**
127.470 + * A class encapsulating state useful when painting. Generally, instances of this
127.471 + * class are created once, and reused for each paint request without modification.
127.472 + * This class contains values useful when hinting the cache engine, and when decoding
127.473 + * control points and bezier curve anchors.
127.474 + */
127.475 + protected static class PaintContext {
127.476 + protected static enum CacheMode {
127.477 + NO_CACHING, FIXED_SIZES, NINE_SQUARE_SCALE
127.478 + }
127.479 +
127.480 + private static Insets EMPTY_INSETS = new Insets(0, 0, 0, 0);
127.481 +
127.482 + private Insets stretchingInsets;
127.483 + private Dimension canvasSize;
127.484 + private boolean inverted;
127.485 + private CacheMode cacheMode;
127.486 + private double maxHorizontalScaleFactor;
127.487 + private double maxVerticalScaleFactor;
127.488 +
127.489 + private float a; // insets.left
127.490 + private float b; // canvasSize.width - insets.right
127.491 + private float c; // insets.top
127.492 + private float d; // canvasSize.height - insets.bottom;
127.493 + private float aPercent; // only used if inverted == true
127.494 + private float bPercent; // only used if inverted == true
127.495 + private float cPercent; // only used if inverted == true
127.496 + private float dPercent; // only used if inverted == true
127.497 +
127.498 + /**
127.499 + * Creates a new PaintContext which does not attempt to cache or scale any cached
127.500 + * images.
127.501 + *
127.502 + * @param insets The stretching insets. May be null. If null, then assumed to be 0, 0, 0, 0.
127.503 + * @param canvasSize The size of the canvas used when encoding the various x/y values. May be null.
127.504 + * If null, then it is assumed that there are no encoded values, and any calls
127.505 + * to one of the "decode" methods will return the passed in value.
127.506 + * @param inverted Whether to "invert" the meaning of the 9-square grid and stretching insets
127.507 + */
127.508 + public PaintContext(Insets insets, Dimension canvasSize, boolean inverted) {
127.509 + this(insets, canvasSize, inverted, null, 1, 1);
127.510 + }
127.511 +
127.512 + /**
127.513 + * Creates a new PaintContext.
127.514 + *
127.515 + * @param insets The stretching insets. May be null. If null, then assumed to be 0, 0, 0, 0.
127.516 + * @param canvasSize The size of the canvas used when encoding the various x/y values. May be null.
127.517 + * If null, then it is assumed that there are no encoded values, and any calls
127.518 + * to one of the "decode" methods will return the passed in value.
127.519 + * @param inverted Whether to "invert" the meaning of the 9-square grid and stretching insets
127.520 + * @param cacheMode A hint as to which caching mode to use. If null, then set to no caching.
127.521 + * @param maxH The maximium scale in the horizontal direction to use before punting and redrawing from scratch.
127.522 + * For example, if maxH is 2, then we will attempt to scale any cached images up to 2x the canvas
127.523 + * width before redrawing from scratch. Reasonable maxH values may improve painting performance.
127.524 + * If set too high, then you may get poor looking graphics at higher zoom levels. Must be >= 1.
127.525 + * @param maxV The maximium scale in the vertical direction to use before punting and redrawing from scratch.
127.526 + * For example, if maxV is 2, then we will attempt to scale any cached images up to 2x the canvas
127.527 + * height before redrawing from scratch. Reasonable maxV values may improve painting performance.
127.528 + * If set too high, then you may get poor looking graphics at higher zoom levels. Must be >= 1.
127.529 + */
127.530 + public PaintContext(Insets insets, Dimension canvasSize, boolean inverted,
127.531 + CacheMode cacheMode, double maxH, double maxV) {
127.532 + if (maxH < 1 || maxH < 1) {
127.533 + throw new IllegalArgumentException("Both maxH and maxV must be >= 1");
127.534 + }
127.535 +
127.536 + this.stretchingInsets = insets == null ? EMPTY_INSETS : insets;
127.537 + this.canvasSize = canvasSize;
127.538 + this.inverted = inverted;
127.539 + this.cacheMode = cacheMode == null ? CacheMode.NO_CACHING : cacheMode;
127.540 + this.maxHorizontalScaleFactor = maxH;
127.541 + this.maxVerticalScaleFactor = maxV;
127.542 +
127.543 + if (canvasSize != null) {
127.544 + a = insets.left;
127.545 + b = canvasSize.width - insets.right;
127.546 + c = insets.top;
127.547 + d = canvasSize.height - insets.bottom;
127.548 + this.canvasSize = canvasSize;
127.549 + this.inverted = inverted;
127.550 + if (inverted) {
127.551 + float available = canvasSize.width - (b - a);
127.552 + aPercent = available > 0f ? a / available : 0f;
127.553 + bPercent = available > 0f ? b / available : 0f;
127.554 + available = canvasSize.height - (d - c);
127.555 + cPercent = available > 0f ? c / available : 0f;
127.556 + dPercent = available > 0f ? d / available : 0f;
127.557 + }
127.558 + }
127.559 + }
127.560 + }
127.561 +
127.562 + //---------------------- private methods
127.563 +
127.564 + //initializes the class to prepare it for being able to decode points
127.565 + private void prepare(float w, float h) {
127.566 + //if no PaintContext has been specified, reset the values and bail
127.567 + //also bail if the canvasSize was not set (since decoding will not work)
127.568 + if (ctx == null || ctx.canvasSize == null) {
127.569 + f = 1f;
127.570 + leftWidth = centerWidth = rightWidth = 0f;
127.571 + topHeight = centerHeight = bottomHeight = 0f;
127.572 + leftScale = centerHScale = rightScale = 0f;
127.573 + topScale = centerVScale = bottomScale = 0f;
127.574 + return;
127.575 + }
127.576 +
127.577 + //calculate the scaling factor, and the sizes for the various 9-square sections
127.578 + Number scale = (Number)UIManager.get("scale");
127.579 + f = scale == null ? 1f : scale.floatValue();
127.580 +
127.581 + if (ctx.inverted) {
127.582 + centerWidth = (ctx.b - ctx.a) * f;
127.583 + float availableSpace = w - centerWidth;
127.584 + leftWidth = availableSpace * ctx.aPercent;
127.585 + rightWidth = availableSpace * ctx.bPercent;
127.586 + centerHeight = (ctx.d - ctx.c) * f;
127.587 + availableSpace = h - centerHeight;
127.588 + topHeight = availableSpace * ctx.cPercent;
127.589 + bottomHeight = availableSpace * ctx.dPercent;
127.590 + } else {
127.591 + leftWidth = ctx.a * f;
127.592 + rightWidth = (float)(ctx.canvasSize.getWidth() - ctx.b) * f;
127.593 + centerWidth = w - leftWidth - rightWidth;
127.594 + topHeight = ctx.c * f;
127.595 + bottomHeight = (float)(ctx.canvasSize.getHeight() - ctx.d) * f;
127.596 + centerHeight = h - topHeight - bottomHeight;
127.597 + }
127.598 +
127.599 + leftScale = ctx.a == 0f ? 0f : leftWidth / ctx.a;
127.600 + centerHScale = (ctx.b - ctx.a) == 0f ? 0f : centerWidth / (ctx.b - ctx.a);
127.601 + rightScale = (ctx.canvasSize.width - ctx.b) == 0f ? 0f : rightWidth / (ctx.canvasSize.width - ctx.b);
127.602 + topScale = ctx.c == 0f ? 0f : topHeight / ctx.c;
127.603 + centerVScale = (ctx.d - ctx.c) == 0f ? 0f : centerHeight / (ctx.d - ctx.c);
127.604 + bottomScale = (ctx.canvasSize.height - ctx.d) == 0f ? 0f : bottomHeight / (ctx.canvasSize.height - ctx.d);
127.605 + }
127.606 +
127.607 + private void paintWith9SquareCaching(Graphics2D g, PaintContext ctx,
127.608 + JComponent c, int w, int h,
127.609 + Object[] extendedCacheKeys) {
127.610 + // check if we can scale to the requested size
127.611 + Dimension canvas = ctx.canvasSize;
127.612 + Insets insets = ctx.stretchingInsets;
127.613 +
127.614 + if (w <= (canvas.width * ctx.maxHorizontalScaleFactor) && h <= (canvas.height * ctx.maxVerticalScaleFactor)) {
127.615 + // get image at canvas size
127.616 + VolatileImage img = getImage(g.getDeviceConfiguration(), c, canvas.width, canvas.height, extendedCacheKeys);
127.617 + if (img != null) {
127.618 + // calculate dst inserts
127.619 + // todo: destination inserts need to take into acount scale factor for high dpi. Note: You can use f for this, I think
127.620 + Insets dstInsets;
127.621 + if (ctx.inverted){
127.622 + int leftRight = (w-(canvas.width-(insets.left+insets.right)))/2;
127.623 + int topBottom = (h-(canvas.height-(insets.top+insets.bottom)))/2;
127.624 + dstInsets = new Insets(topBottom,leftRight,topBottom,leftRight);
127.625 + } else {
127.626 + dstInsets = insets;
127.627 + }
127.628 + // paint 9 square scaled
127.629 + Object oldScaleingHints = g.getRenderingHint(RenderingHints.KEY_INTERPOLATION);
127.630 + g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
127.631 + ImageScalingHelper.paint(g, 0, 0, w, h, img, insets, dstInsets,
127.632 + ImageScalingHelper.PaintType.PAINT9_STRETCH, ImageScalingHelper.PAINT_ALL);
127.633 + g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
127.634 + oldScaleingHints!=null?oldScaleingHints:RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
127.635 + } else {
127.636 + // render directly
127.637 + paint0(g, c, w, h, extendedCacheKeys);
127.638 + }
127.639 + } else {
127.640 + // paint directly
127.641 + paint0(g, c, w, h, extendedCacheKeys);
127.642 + }
127.643 + }
127.644 +
127.645 + private void paintWithFixedSizeCaching(Graphics2D g, JComponent c, int w,
127.646 + int h, Object[] extendedCacheKeys) {
127.647 + VolatileImage img = getImage(g.getDeviceConfiguration(), c, w, h, extendedCacheKeys);
127.648 + if (img != null) {
127.649 + //render cached image
127.650 + g.drawImage(img, 0, 0, null);
127.651 + } else {
127.652 + // render directly
127.653 + paint0(g, c, w, h, extendedCacheKeys);
127.654 + }
127.655 + }
127.656 +
127.657 + /** Gets the rendered image for this painter at the requested size, either from cache or create a new one */
127.658 + private VolatileImage getImage(GraphicsConfiguration config, JComponent c,
127.659 + int w, int h, Object[] extendedCacheKeys) {
127.660 + ImageCache imageCache = ImageCache.getInstance();
127.661 + //get the buffer for this component
127.662 + VolatileImage buffer = (VolatileImage) imageCache.getImage(config, w, h, this, extendedCacheKeys);
127.663 +
127.664 + int renderCounter = 0; //to avoid any potential, though unlikely, infinite loop
127.665 + do {
127.666 + //validate the buffer so we can check for surface loss
127.667 + int bufferStatus = VolatileImage.IMAGE_INCOMPATIBLE;
127.668 + if (buffer != null) {
127.669 + bufferStatus = buffer.validate(config);
127.670 + }
127.671 +
127.672 + //If the buffer status is incompatible or restored, then we need to re-render to the volatile image
127.673 + if (bufferStatus == VolatileImage.IMAGE_INCOMPATIBLE || bufferStatus == VolatileImage.IMAGE_RESTORED) {
127.674 + //if the buffer is null (hasn't been created), or isn't the right size, or has lost its contents,
127.675 + //then recreate the buffer
127.676 + if (buffer == null || buffer.getWidth() != w || buffer.getHeight() != h ||
127.677 + bufferStatus == VolatileImage.IMAGE_INCOMPATIBLE) {
127.678 + //clear any resources related to the old back buffer
127.679 + if (buffer != null) {
127.680 + buffer.flush();
127.681 + buffer = null;
127.682 + }
127.683 + //recreate the buffer
127.684 + buffer = config.createCompatibleVolatileImage(w, h,
127.685 + Transparency.TRANSLUCENT);
127.686 + // put in cache for future
127.687 + imageCache.setImage(buffer, config, w, h, this, extendedCacheKeys);
127.688 + }
127.689 + //create the graphics context with which to paint to the buffer
127.690 + Graphics2D bg = buffer.createGraphics();
127.691 + //clear the background before configuring the graphics
127.692 + bg.setComposite(AlphaComposite.Clear);
127.693 + bg.fillRect(0, 0, w, h);
127.694 + bg.setComposite(AlphaComposite.SrcOver);
127.695 + configureGraphics(bg);
127.696 + // paint the painter into buffer
127.697 + paint0(bg, c, w, h, extendedCacheKeys);
127.698 + //close buffer graphics
127.699 + bg.dispose();
127.700 + }
127.701 + } while (buffer.contentsLost() && renderCounter++ < 3);
127.702 + // check if we failed
127.703 + if (renderCounter == 3) return null;
127.704 + // return image
127.705 + return buffer;
127.706 + }
127.707 +
127.708 + //convenience method which creates a temporary graphics object by creating a
127.709 + //clone of the passed in one, configuring it, drawing with it, disposing it.
127.710 + //These steps have to be taken to ensure that any hints set on the graphics
127.711 + //are removed subsequent to painting.
127.712 + private void paint0(Graphics2D g, JComponent c, int width, int height,
127.713 + Object[] extendedCacheKeys) {
127.714 + prepare(width, height);
127.715 + g = (Graphics2D)g.create();
127.716 + configureGraphics(g);
127.717 + doPaint(g, c, width, height, extendedCacheKeys);
127.718 + g.dispose();
127.719 + }
127.720 +
127.721 + private float clamp(float value) {
127.722 + if (value < 0) {
127.723 + value = 0;
127.724 + } else if (value > 1) {
127.725 + value = 1;
127.726 + }
127.727 + return value;
127.728 + }
127.729 +
127.730 + private int clamp(int value) {
127.731 + if (value < 0) {
127.732 + value = 0;
127.733 + } else if (value > 255) {
127.734 + value = 255;
127.735 + }
127.736 + return value;
127.737 + }
127.738 +}
128.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
128.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/Defaults.template Wed Apr 29 00:27:46 2009 -0700
128.3 @@ -0,0 +1,878 @@
128.4 +/*
128.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
128.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
128.7 + *
128.8 + * This code is free software; you can redistribute it and/or modify it
128.9 + * under the terms of the GNU General Public License version 2 only, as
128.10 + * published by the Free Software Foundation. Sun designates this
128.11 + * particular file as subject to the "Classpath" exception as provided
128.12 + * by Sun in the LICENSE file that accompanied this code.
128.13 + *
128.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
128.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
128.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
128.17 + * version 2 for more details (a copy is included in the LICENSE file that
128.18 + * accompanied this code).
128.19 + *
128.20 + * You should have received a copy of the GNU General Public License version
128.21 + * 2 along with this work; if not, write to the Free Software Foundation,
128.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
128.23 + *
128.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
128.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
128.26 + * have any questions.
128.27 + */
128.28 +package ${PACKAGE};
128.29 +
128.30 +import javax.swing.Painter;
128.31 +import java.awt.Graphics;
128.32 +import sun.font.FontManager;
128.33 +import sun.swing.plaf.synth.DefaultSynthStyle;
128.34 +import javax.swing.BorderFactory;
128.35 +import javax.swing.JComponent;
128.36 +import javax.swing.JInternalFrame;
128.37 +import javax.swing.UIDefaults;
128.38 +import javax.swing.UIManager;
128.39 +import javax.swing.plaf.BorderUIResource;
128.40 +import javax.swing.plaf.ColorUIResource;
128.41 +import javax.swing.plaf.DimensionUIResource;
128.42 +import javax.swing.plaf.FontUIResource;
128.43 +import javax.swing.plaf.InsetsUIResource;
128.44 +import javax.swing.plaf.synth.Region;
128.45 +import javax.swing.plaf.synth.SynthStyle;
128.46 +import java.awt.Color;
128.47 +import java.awt.Component;
128.48 +import java.awt.Dimension;
128.49 +import java.awt.Font;
128.50 +import java.awt.Graphics2D;
128.51 +import java.awt.Insets;
128.52 +import java.awt.image.BufferedImage;
128.53 +import static java.awt.image.BufferedImage.*;
128.54 +import java.beans.PropertyChangeEvent;
128.55 +import java.beans.PropertyChangeListener;
128.56 +import java.lang.ref.WeakReference;
128.57 +import java.lang.reflect.Constructor;
128.58 +import java.util.ArrayList;
128.59 +import java.util.HashMap;
128.60 +import java.util.LinkedList;
128.61 +import java.util.List;
128.62 +import java.util.Map;
128.63 +import java.util.Set;
128.64 +import java.util.WeakHashMap;
128.65 +import javax.swing.border.Border;
128.66 +import javax.swing.plaf.UIResource;
128.67 +
128.68 +/**
128.69 + * This class contains all the implementation details related to
128.70 + * ${LAF_NAME}. It contains all the code for initializing the UIDefaults table,
128.71 + * as well as for selecting
128.72 + * a SynthStyle based on a JComponent/Region pair.
128.73 + *
128.74 + * @author Richard Bair
128.75 + */
128.76 +final class ${LAF_NAME}Defaults {
128.77 + /**
128.78 + * The map of SynthStyles. This map is keyed by Region. Each Region maps
128.79 + * to a List of LazyStyles. Each LazyStyle has a reference to the prefix
128.80 + * that was registered with it. This reference can then be inspected to see
128.81 + * if it is the proper lazy style.
128.82 + * <p/>
128.83 + * There can be more than one LazyStyle for a single Region if there is more
128.84 + * than one prefix defined for a given region. For example, both Button and
128.85 + * "MyButton" might be prefixes assigned to the Region.Button region.
128.86 + */
128.87 + private Map<Region, List<LazyStyle>> m;
128.88 + /**
128.89 + * A map of regions which have been registered.
128.90 + * This mapping is maintained so that the Region can be found based on
128.91 + * prefix in a very fast manner. This is used in the "matches" method of
128.92 + * LazyStyle.
128.93 + */
128.94 + private Map<String, Region> registeredRegions =
128.95 + new HashMap<String, Region>();
128.96 + /**
128.97 + * Our fallback style to avoid NPEs if the proper style cannot be found in
128.98 + * this class. Not sure if relying on DefaultSynthStyle is the best choice.
128.99 + */
128.100 + private DefaultSynthStyle defaultStyle;
128.101 + /**
128.102 + * The default font that will be used. I store this value so that it can be
128.103 + * set in the UIDefaults when requested.
128.104 + */
128.105 + private FontUIResource defaultFont;
128.106 +
128.107 + /**
128.108 + * Map of lists of derived colors keyed by the DerivedColorKeys
128.109 + */
128.110 + private Map<DerivedColorKey, DerivedColor> derivedColorsMap =
128.111 + new HashMap<DerivedColorKey, DerivedColor>();
128.112 +
128.113 + /** Tempory key used for fetching from the derivedColorsMap */
128.114 + private final DerivedColorKey tmpDCKey = new DerivedColorKey();
128.115 +
128.116 + /** Listener for changes to user defaults table */
128.117 + private DefaultsListener defaultsListener = new DefaultsListener();
128.118 +
128.119 + /** Called by UIManager when this look and feel is installed. */
128.120 + void initialize() {
128.121 + // add listener for derived colors
128.122 + UIManager.addPropertyChangeListener(defaultsListener);
128.123 + UIManager.getDefaults().addPropertyChangeListener(defaultsListener);
128.124 + }
128.125 +
128.126 + /** Called by UIManager when this look and feel is uninstalled. */
128.127 + void uninitialize() {
128.128 + // remove listener for derived colors
128.129 + UIManager.getDefaults().removePropertyChangeListener(defaultsListener);
128.130 + UIManager.removePropertyChangeListener(defaultsListener);
128.131 + }
128.132 +
128.133 + /**
128.134 + * Create a new ${LAF_NAME}Defaults. This constructor is only called from
128.135 + * within ${LAF_NAME}LookAndFeel.
128.136 + */
128.137 + ${LAF_NAME}Defaults() {
128.138 + m = new HashMap<Region, List<LazyStyle>>();
128.139 +
128.140 + //Create the default font and default style. Also register all of the
128.141 + //regions and their states that this class will use for later lookup.
128.142 + //Additional regions can be registered later by 3rd party components.
128.143 + //These are simply the default registrations.
128.144 + defaultFont = FontManager.getFontConfigFUIR("sans", Font.PLAIN, 12);
128.145 + defaultStyle = new DefaultSynthStyle();
128.146 + defaultStyle.setFont(defaultFont);
128.147 +
128.148 + //initialize the map of styles
128.149 +${STYLE_INIT}
128.150 + }
128.151 +
128.152 + //--------------- Methods called by ${LAF_NAME}LookAndFeel
128.153 +
128.154 + /**
128.155 + * Called from ${LAF_NAME}LookAndFeel to initialize the UIDefaults.
128.156 + *
128.157 + * @param d UIDefaults table to initialize. This will never be null.
128.158 + * If listeners are attached to <code>d</code>, then you will
128.159 + * only receive notification of LookAndFeel level defaults, not
128.160 + * all defaults on the UIManager.
128.161 + */
128.162 + void initializeDefaults(UIDefaults d) {
128.163 +${UI_DEFAULT_INIT}
128.164 + }
128.165 +
128.166 + /**
128.167 + * <p>Registers the given region and prefix. The prefix, if it contains
128.168 + * quoted sections, refers to certain named components. If there are not
128.169 + * quoted sections, then the prefix refers to a generic component type.</p>
128.170 + *
128.171 + * <p>If the given region/prefix combo has already been registered, then
128.172 + * it will not be registered twice. The second registration attempt will
128.173 + * fail silently.</p>
128.174 + *
128.175 + * @param region The Synth Region that is being registered. Such as Button,
128.176 + * or ScrollBarThumb.
128.177 + * @param prefix The UIDefault prefix. For example, could be ComboBox, or if
128.178 + * a named components, "MyComboBox", or even something like
128.179 + * ToolBar:"MyComboBox":"ComboBox.arrowButton"
128.180 + */
128.181 + void register(Region region, String prefix) {
128.182 + //validate the method arguments
128.183 + if (region == null || prefix == null) {
128.184 + throw new IllegalArgumentException(
128.185 + "Neither Region nor Prefix may be null");
128.186 + }
128.187 +
128.188 + //Add a LazyStyle for this region/prefix to m.
128.189 + List<LazyStyle> styles = m.get(region);
128.190 + if (styles == null) {
128.191 + styles = new LinkedList<LazyStyle>();
128.192 + styles.add(new LazyStyle(prefix));
128.193 + m.put(region, styles);
128.194 + } else {
128.195 + //iterate over all the current styles and see if this prefix has
128.196 + //already been registered. If not, then register it.
128.197 + for (LazyStyle s : styles) {
128.198 + if (prefix.equals(s.prefix)) {
128.199 + return;
128.200 + }
128.201 + }
128.202 + styles.add(new LazyStyle(prefix));
128.203 + }
128.204 +
128.205 + //add this region to the map of registered regions
128.206 + registeredRegions.put(region.getName(), region);
128.207 + }
128.208 +
128.209 + /**
128.210 + * <p>Locate the style associated with the given region, and component.
128.211 + * This is called from ${LAF_NAME}LookAndFeel in the SynthStyleFactory
128.212 + * implementation.</p>
128.213 + *
128.214 + * <p>Lookup occurs as follows:<br/>
128.215 + * Check the map of styles <code>m</code>. If the map contains no styles at
128.216 + * all, then simply return the defaultStyle. If the map contains styles,
128.217 + * then iterate over all of the styles for the Region <code>r</code> looking
128.218 + * for the best match, based on prefix. If a match was made, then return
128.219 + * that SynthStyle. Otherwise, return the defaultStyle.</p>
128.220 + *
128.221 + * @param comp The component associated with this region. For example, if
128.222 + * the Region is Region.Button then the component will be a JButton.
128.223 + * If the Region is a subregion, such as ScrollBarThumb, then the
128.224 + * associated component will be the component that subregion belongs
128.225 + * to, such as JScrollBar. The JComponent may be named. It may not be
128.226 + * null.
128.227 + * @param r The region we are looking for a style for. May not be null.
128.228 + */
128.229 + SynthStyle getStyle(JComponent comp, Region r) {
128.230 + //validate method arguments
128.231 + if (comp == null || r == null) {
128.232 + throw new IllegalArgumentException(
128.233 + "Neither comp nor r may be null");
128.234 + }
128.235 +
128.236 + //if there are no lazy styles registered for the region r, then return
128.237 + //the default style
128.238 + List<LazyStyle> styles = m.get(r);
128.239 + if (styles == null || styles.size() == 0) {
128.240 + return defaultStyle;
128.241 + }
128.242 +
128.243 + //Look for the best SynthStyle for this component/region pair.
128.244 + LazyStyle foundStyle = null;
128.245 + for (LazyStyle s : styles) {
128.246 + if (s.matches(comp)) {
128.247 + //replace the foundStyle if foundStyle is null, or
128.248 + //if the new style "s" is more specific (ie, its path was
128.249 + //longer), or if the foundStyle was "simple" and the new style
128.250 + //was not (ie: the foundStyle was for something like Button and
128.251 + //the new style was for something like "MyButton", hence, being
128.252 + //more specific.) In all cases, favor the most specific style
128.253 + //found.
128.254 + if (foundStyle == null ||
128.255 + (foundStyle.parts.length < s.parts.length) ||
128.256 + (foundStyle.parts.length == s.parts.length
128.257 + && foundStyle.simple && !s.simple)) {
128.258 + foundStyle = s;
128.259 + }
128.260 + }
128.261 + }
128.262 +
128.263 + //return the style, if found, or the default style if not found
128.264 + return foundStyle == null ? defaultStyle : foundStyle.getStyle(comp);
128.265 + }
128.266 +
128.267 + /*
128.268 + Various public helper classes.
128.269 + These may be used to register 3rd party values into UIDefaults
128.270 + */
128.271 +
128.272 + /**
128.273 + * <p>Derives its font value based on a parent font and a set of offsets and
128.274 + * attributes. This class is an ActiveValue, meaning that it will recompute
128.275 + * its value each time it is requested from UIDefaults. It is therefore
128.276 + * recommended to read this value once and cache it in the UI delegate class
128.277 + * until asked to reinitialize.</p>
128.278 + *
128.279 + * <p>To use this class, create an instance with the key of the font in the
128.280 + * UI defaults table from which to derive this font, along with a size
128.281 + * offset (if any), and whether it is to be bold, italic, or left in its
128.282 + * default form.</p>
128.283 + */
128.284 + public static final class DerivedFont implements UIDefaults.ActiveValue {
128.285 + private float sizeOffset;
128.286 + private Boolean bold;
128.287 + private Boolean italic;
128.288 + private String parentKey;
128.289 +
128.290 + /**
128.291 + * Create a new DerivedFont.
128.292 + *
128.293 + * @param key The UIDefault key associated with this derived font's
128.294 + * parent or source. If this key leads to a null value, or a
128.295 + * value that is not a font, then null will be returned as
128.296 + * the derived font. The key must not be null.
128.297 + * @param sizeOffset The size offset, as a percentage, to use. For
128.298 + * example, if the source font was a 12pt font and the
128.299 + * sizeOffset were specified as .9, then the new font
128.300 + * will be 90% of what the source font was, or, 10.8
128.301 + * pts which is rounded to 11pts. This fractional
128.302 + * based offset allows for proper font scaling in high
128.303 + * DPI or large system font scenarios.
128.304 + * @param bold Whether the new font should be bold. If null, then this
128.305 + * new font will inherit the bold setting of the source
128.306 + * font.
128.307 + * @param italic Whether the new font should be italicized. If null,
128.308 + * then this new font will inherit the italic setting of
128.309 + * the source font.
128.310 + */
128.311 + public DerivedFont(String key, float sizeOffset, Boolean bold,
128.312 + Boolean italic) {
128.313 + //validate the constructor arguments
128.314 + if (key == null) {
128.315 + throw new IllegalArgumentException("You must specify a key");
128.316 + }
128.317 +
128.318 + //set the values
128.319 + this.parentKey = key;
128.320 + this.sizeOffset = sizeOffset;
128.321 + this.bold = bold;
128.322 + this.italic = italic;
128.323 + }
128.324 +
128.325 + /**
128.326 + * @inheritDoc
128.327 + */
128.328 + @Override
128.329 + public Object createValue(UIDefaults defaults) {
128.330 + Font f = defaults.getFont(parentKey);
128.331 + if (f != null) {
128.332 + // always round size for now so we have exact int font size
128.333 + // (or we may have lame looking fonts)
128.334 + float size = Math.round(f.getSize2D() * sizeOffset);
128.335 + int style = f.getStyle();
128.336 + if (bold != null) {
128.337 + if (bold.booleanValue()) {
128.338 + style = style | Font.BOLD;
128.339 + } else {
128.340 + style = style & ~Font.BOLD;
128.341 + }
128.342 + }
128.343 + if (italic != null) {
128.344 + if (italic.booleanValue()) {
128.345 + style = style | Font.ITALIC;
128.346 + } else {
128.347 + style = style & ~Font.ITALIC;
128.348 + }
128.349 + }
128.350 + return f.deriveFont(style, size);
128.351 + } else {
128.352 + return null;
128.353 + }
128.354 + }
128.355 + }
128.356 +
128.357 +
128.358 + /**
128.359 + * This class is private because it relies on the constructor of the
128.360 + * auto-generated AbstractRegionPainter subclasses. Hence, it is not
128.361 + * generally useful, and is private.
128.362 + * <p/>
128.363 + * LazyPainter is a LazyValue class. It will create the
128.364 + * AbstractRegionPainter lazily, when asked. It uses reflection to load the
128.365 + * proper class and invoke its constructor.
128.366 + */
128.367 + private static final class LazyPainter implements UIDefaults.LazyValue {
128.368 + private int which;
128.369 + private AbstractRegionPainter.PaintContext ctx;
128.370 + private String className;
128.371 +
128.372 + LazyPainter(String className, int which, Insets insets,
128.373 + Dimension canvasSize, boolean inverted) {
128.374 + if (className == null) {
128.375 + throw new IllegalArgumentException(
128.376 + "The className must be specified");
128.377 + }
128.378 +
128.379 + this.className = className;
128.380 + this.which = which;
128.381 + this.ctx = new AbstractRegionPainter.PaintContext(
128.382 + insets, canvasSize, inverted);
128.383 + }
128.384 +
128.385 + LazyPainter(String className, int which, Insets insets,
128.386 + Dimension canvasSize, boolean inverted,
128.387 + AbstractRegionPainter.PaintContext.CacheMode cacheMode,
128.388 + double maxH, double maxV) {
128.389 + if (className == null) {
128.390 + throw new IllegalArgumentException(
128.391 + "The className must be specified");
128.392 + }
128.393 +
128.394 + this.className = className;
128.395 + this.which = which;
128.396 + this.ctx = new AbstractRegionPainter.PaintContext(
128.397 + insets, canvasSize, inverted, cacheMode, maxH, maxV);
128.398 + }
128.399 +
128.400 + @Override
128.401 + public Object createValue(UIDefaults table) {
128.402 + try {
128.403 + Class c;
128.404 + Object cl;
128.405 + // See if we should use a separate ClassLoader
128.406 + if (table == null || !((cl = table.get("ClassLoader"))
128.407 + instanceof ClassLoader)) {
128.408 + cl = Thread.currentThread().
128.409 + getContextClassLoader();
128.410 + if (cl == null) {
128.411 + // Fallback to the system class loader.
128.412 + cl = ClassLoader.getSystemClassLoader();
128.413 + }
128.414 + }
128.415 +
128.416 + c = Class.forName(className, true, (ClassLoader)cl);
128.417 + Constructor constructor = c.getConstructor(
128.418 + AbstractRegionPainter.PaintContext.class, int.class);
128.419 + if (constructor == null) {
128.420 + throw new NullPointerException(
128.421 + "Failed to find the constructor for the class: " +
128.422 + className);
128.423 + }
128.424 + return constructor.newInstance(ctx, which);
128.425 + } catch (Exception e) {
128.426 + e.printStackTrace();
128.427 + return null;
128.428 + }
128.429 + }
128.430 + }
128.431 +
128.432 + /**
128.433 + * A class which creates the NimbusStyle associated with it lazily, but also
128.434 + * manages a lot more information about the style. It is less of a LazyValue
128.435 + * type of class, and more of an Entry or Item type of class, as it
128.436 + * represents an entry in the list of LazyStyles in the map m.
128.437 + *
128.438 + * The primary responsibilities of this class include:
128.439 + * <ul>
128.440 + * <li>Determining whether a given component/region pair matches this
128.441 + * style</li>
128.442 + * <li>Splitting the prefix specified in the constructor into its
128.443 + * constituent parts to facilitate quicker matching</li>
128.444 + * <li>Creating and vending a NimbusStyle lazily.</li>
128.445 + * </ul>
128.446 + */
128.447 + private final class LazyStyle {
128.448 + /**
128.449 + * The prefix this LazyStyle was registered with. Something like
128.450 + * Button or ComboBox:"ComboBox.arrowButton"
128.451 + */
128.452 + private String prefix;
128.453 + /**
128.454 + * Whether or not this LazyStyle represents an unnamed component
128.455 + */
128.456 + private boolean simple = true;
128.457 + /**
128.458 + * The various parts, or sections, of the prefix. For example,
128.459 + * the prefix:
128.460 + * ComboBox:"ComboBox.arrowButton"
128.461 + *
128.462 + * will be broken into two parts,
128.463 + * ComboBox and "ComboBox.arrowButton"
128.464 + */
128.465 + private Part[] parts;
128.466 + /**
128.467 + * Cached shared style.
128.468 + */
128.469 + private NimbusStyle style;
128.470 + /**
128.471 + * A weakly referenced hash map such that if the reference JComponent
128.472 + * key is garbage collected then the entry is removed from the map.
128.473 + * This cache exists so that when a JComponent has nimbus overrides
128.474 + * in its client map, a unique style will be created and returned
128.475 + * for that JComponent instance, always. In such a situation each
128.476 + * JComponent instance must have its own instance of NimbusStyle.
128.477 + */
128.478 + private WeakHashMap<JComponent, WeakReference<NimbusStyle>> overridesCache;
128.479 +
128.480 + /**
128.481 + * Create a new LazyStyle.
128.482 + *
128.483 + * @param prefix The prefix associated with this style. Cannot be null.
128.484 + */
128.485 + private LazyStyle(String prefix) {
128.486 + if (prefix == null) {
128.487 + throw new IllegalArgumentException(
128.488 + "The prefix must not be null");
128.489 + }
128.490 +
128.491 + this.prefix = prefix;
128.492 +
128.493 + //there is one odd case that needs to be supported here: cell
128.494 + //renderers. A cell renderer is defined as a named internal
128.495 + //component, so for example:
128.496 + // List."List.cellRenderer"
128.497 + //The problem is that the component named List.cellRenderer is not a
128.498 + //child of a JList. Rather, it is treated more as a direct component
128.499 + //Thus, if the prefix ends with "cellRenderer", then remove all the
128.500 + //previous dotted parts of the prefix name so that it becomes, for
128.501 + //example: "List.cellRenderer"
128.502 + //Likewise, we have a hacked work around for cellRenderer, renderer,
128.503 + //and listRenderer.
128.504 + String temp = prefix;
128.505 + if (temp.endsWith("cellRenderer\"")
128.506 + || temp.endsWith("renderer\"")
128.507 + || temp.endsWith("listRenderer\"")) {
128.508 + temp = temp.substring(temp.lastIndexOf(":\"") + 1);
128.509 + }
128.510 +
128.511 + //otherwise, normal code path
128.512 + List<String> sparts = split(temp);
128.513 + parts = new Part[sparts.size()];
128.514 + for (int i = 0; i < parts.length; i++) {
128.515 + parts[i] = new Part(sparts.get(i));
128.516 + if (parts[i].named) {
128.517 + simple = false;
128.518 + }
128.519 + }
128.520 + }
128.521 +
128.522 + /**
128.523 + * Gets the style. Creates it if necessary.
128.524 + * @return the style
128.525 + */
128.526 + SynthStyle getStyle(JComponent c) {
128.527 + // if the component has overrides, it gets its own unique style
128.528 + // instead of the shared style.
128.529 + if (c.getClientProperty("Nimbus.Overrides") != null) {
128.530 + if (overridesCache == null)
128.531 + overridesCache = new WeakHashMap<JComponent, WeakReference<NimbusStyle>>();
128.532 + WeakReference<NimbusStyle> ref = overridesCache.get(c);
128.533 + NimbusStyle s = ref == null ? null : ref.get();
128.534 + if (s == null) {
128.535 + s = new NimbusStyle(prefix, c);
128.536 + overridesCache.put(c, new WeakReference<NimbusStyle>(s));
128.537 + }
128.538 + return s;
128.539 + }
128.540 +
128.541 + // lazily create the style if necessary
128.542 + if (style == null)
128.543 + style = new NimbusStyle(prefix, null);
128.544 +
128.545 + // return the style
128.546 + return style;
128.547 + }
128.548 +
128.549 + /**
128.550 + * This LazyStyle is a match for the given component if, and only if,
128.551 + * for each part of the prefix the component hierarchy matches exactly.
128.552 + * That is, if given "a":something:"b", then:
128.553 + * c.getName() must equals "b"
128.554 + * c.getParent() can be anything
128.555 + * c.getParent().getParent().getName() must equal "a".
128.556 + */
128.557 + boolean matches(JComponent c) {
128.558 + return matches(c, parts.length - 1);
128.559 + }
128.560 +
128.561 + private boolean matches(Component c, int partIndex) {
128.562 + if (partIndex < 0) return true;
128.563 + if (c == null) return false;
128.564 + //only get here if partIndex > 0 and c == null
128.565 +
128.566 + String name = c.getName();
128.567 + if (parts[partIndex].named && parts[partIndex].s.equals(name)) {
128.568 + //so far so good, recurse
128.569 + return matches(c.getParent(), partIndex - 1);
128.570 + } else if (!parts[partIndex].named) {
128.571 + //if c is not named, and parts[partIndex] has an expected class
128.572 + //type registered, then check to make sure c is of the
128.573 + //right type;
128.574 + Class clazz = parts[partIndex].c;
128.575 + if (clazz != null && clazz.isAssignableFrom(c.getClass())) {
128.576 + //so far so good, recurse
128.577 + return matches(c.getParent(), partIndex - 1);
128.578 + } else if (clazz == null &&
128.579 + registeredRegions.containsKey(parts[partIndex].s)) {
128.580 + Region r = registeredRegions.get(parts[partIndex].s);
128.581 + Component parent = r.isSubregion() ? c : c.getParent();
128.582 + //special case the JInternalFrameTitlePane, because it
128.583 + //doesn't fit the mold. very, very funky.
128.584 + if (r == Region.INTERNAL_FRAME_TITLE_PANE && parent != null
128.585 + && parent instanceof JInternalFrame.JDesktopIcon) {
128.586 + JInternalFrame.JDesktopIcon icon =
128.587 + (JInternalFrame.JDesktopIcon) parent;
128.588 + parent = icon.getInternalFrame();
128.589 + }
128.590 + //it was the name of a region. So far, so good. Recurse.
128.591 + return matches(parent, partIndex - 1);
128.592 + }
128.593 + }
128.594 +
128.595 + return false;
128.596 + }
128.597 +
128.598 + /**
128.599 + * Given some dot separated prefix, split on the colons that are
128.600 + * not within quotes, and not within brackets.
128.601 + *
128.602 + * @param prefix
128.603 + * @return
128.604 + */
128.605 + private List<String> split(String prefix) {
128.606 + List<String> parts = new ArrayList<String>();
128.607 + int bracketCount = 0;
128.608 + boolean inquotes = false;
128.609 + int lastIndex = 0;
128.610 + for (int i = 0; i < prefix.length(); i++) {
128.611 + char c = prefix.charAt(i);
128.612 +
128.613 + if (c == '[') {
128.614 + bracketCount++;
128.615 + continue;
128.616 + } else if (c == '"') {
128.617 + inquotes = !inquotes;
128.618 + continue;
128.619 + } else if (c == ']') {
128.620 + bracketCount--;
128.621 + if (bracketCount < 0) {
128.622 + throw new RuntimeException(
128.623 + "Malformed prefix: " + prefix);
128.624 + }
128.625 + continue;
128.626 + }
128.627 +
128.628 + if (c == ':' && !inquotes && bracketCount == 0) {
128.629 + //found a character to split on.
128.630 + parts.add(prefix.substring(lastIndex, i));
128.631 + lastIndex = i + 1;
128.632 + }
128.633 + }
128.634 + if (lastIndex < prefix.length() - 1 && !inquotes
128.635 + && bracketCount == 0) {
128.636 + parts.add(prefix.substring(lastIndex));
128.637 + }
128.638 + return parts;
128.639 +
128.640 + }
128.641 +
128.642 + private final class Part {
128.643 + private String s;
128.644 + //true if this part represents a component name
128.645 + private boolean named;
128.646 + private Class c;
128.647 +
128.648 + Part(String s) {
128.649 + named = s.charAt(0) == '"' && s.charAt(s.length() - 1) == '"';
128.650 + if (named) {
128.651 + this.s = s.substring(1, s.length() - 1);
128.652 + } else {
128.653 + this.s = s;
128.654 + //TODO use a map of known regions for Synth and Swing, and
128.655 + //then use [classname] instead of org_class_name style
128.656 + try {
128.657 + c = Class.forName("javax.swing.J" + s);
128.658 + } catch (Exception e) {
128.659 + }
128.660 + try {
128.661 + c = Class.forName(s.replace("_", "."));
128.662 + } catch (Exception e) {
128.663 + }
128.664 + }
128.665 + }
128.666 + }
128.667 + }
128.668 +
128.669 + /**
128.670 + * Get a derived color, derived colors are shared instances and will be
128.671 + * updated when its parent UIDefault color changes.
128.672 + *
128.673 + * @param uiDefaultParentName The parent UIDefault key
128.674 + * @param hOffset The hue offset
128.675 + * @param sOffset The saturation offset
128.676 + * @param bOffset The brightness offset
128.677 + * @param aOffset The alpha offset
128.678 + * @return The stored derived color
128.679 + */
128.680 + public DerivedColor getDerivedColor(String uiDefaultParentName,
128.681 + float hOffset, float sOffset,
128.682 + float bOffset, int aOffset){
128.683 + return getDerivedColor(uiDefaultParentName, hOffset, sOffset,
128.684 + bOffset, aOffset, true);
128.685 + }
128.686 +
128.687 + /**
128.688 + * Get a derived color, derived colors are shared instances and will be
128.689 + * updated when its parent UIDefault color changes.
128.690 + *
128.691 + * @param uiDefaultParentName The parent UIDefault key
128.692 + * @param hOffset The hue offset
128.693 + * @param sOffset The saturation offset
128.694 + * @param bOffset The brightness offset
128.695 + * @param aOffset The alpha offset
128.696 + * @param uiResource True if the derived color should be a UIResource,
128.697 + * false if it should not be a UIResource
128.698 + * @return The stored derived color
128.699 + */
128.700 + public DerivedColor getDerivedColor(String uiDefaultParentName,
128.701 + float hOffset, float sOffset,
128.702 + float bOffset, int aOffset,
128.703 + boolean uiResource){
128.704 + tmpDCKey.set(uiDefaultParentName, hOffset, sOffset, bOffset, aOffset,
128.705 + uiResource);
128.706 + DerivedColor color = derivedColorsMap.get(tmpDCKey);
128.707 + if (color == null){
128.708 + if (uiResource) {
128.709 + color = new DerivedColor.UIResource(uiDefaultParentName,
128.710 + hOffset, sOffset, bOffset, aOffset);
128.711 + } else {
128.712 + color = new DerivedColor(uiDefaultParentName, hOffset, sOffset,
128.713 + bOffset, aOffset);
128.714 + }
128.715 + // calculate the initial value
128.716 + color.rederiveColor();
128.717 + // add the listener so that if the color changes we'll propogate it
128.718 + color.addPropertyChangeListener(defaultsListener);
128.719 + // add to the derived colors table
128.720 + derivedColorsMap.put(new DerivedColorKey(uiDefaultParentName,
128.721 + hOffset, sOffset, bOffset, aOffset, uiResource),color);
128.722 + }
128.723 + return color;
128.724 + }
128.725 +
128.726 + /**
128.727 + * Key class for derived colors
128.728 + */
128.729 + private class DerivedColorKey {
128.730 + private String uiDefaultParentName;
128.731 + private float hOffset, sOffset, bOffset;
128.732 + private int aOffset;
128.733 + private boolean uiResource;
128.734 +
128.735 + DerivedColorKey(){}
128.736 +
128.737 + DerivedColorKey(String uiDefaultParentName, float hOffset,
128.738 + float sOffset, float bOffset, int aOffset,
128.739 + boolean uiResource) {
128.740 + set(uiDefaultParentName, hOffset, sOffset, bOffset, aOffset, uiResource);
128.741 + }
128.742 +
128.743 + void set (String uiDefaultParentName, float hOffset,
128.744 + float sOffset, float bOffset, int aOffset,
128.745 + boolean uiResource) {
128.746 + this.uiDefaultParentName = uiDefaultParentName;
128.747 + this.hOffset = hOffset;
128.748 + this.sOffset = sOffset;
128.749 + this.bOffset = bOffset;
128.750 + this.aOffset = aOffset;
128.751 + this.uiResource = uiResource;
128.752 + }
128.753 +
128.754 + @Override
128.755 + public boolean equals(Object o) {
128.756 + if (this == o) return true;
128.757 + if (!(o instanceof DerivedColorKey)) return false;
128.758 + DerivedColorKey that = (DerivedColorKey) o;
128.759 + if (aOffset != that.aOffset) return false;
128.760 + if (Float.compare(that.bOffset, bOffset) != 0) return false;
128.761 + if (Float.compare(that.hOffset, hOffset) != 0) return false;
128.762 + if (Float.compare(that.sOffset, sOffset) != 0) return false;
128.763 + if (uiDefaultParentName != null ?
128.764 + !uiDefaultParentName.equals(that.uiDefaultParentName) :
128.765 + that.uiDefaultParentName != null) return false;
128.766 + if (this.uiResource != that.uiResource) return false;
128.767 + return true;
128.768 + }
128.769 +
128.770 + @Override
128.771 + public int hashCode() {
128.772 + int result = super.hashCode();
128.773 + result = 31 * result + uiDefaultParentName.hashCode();
128.774 + result = 31 * result + hOffset != +0.0f ?
128.775 + Float.floatToIntBits(hOffset) : 0;
128.776 + result = 31 * result + sOffset != +0.0f ?
128.777 + Float.floatToIntBits(sOffset) : 0;
128.778 + result = 31 * result + bOffset != +0.0f ?
128.779 + Float.floatToIntBits(bOffset) : 0;
128.780 + result = 31 * result + aOffset;
128.781 + result = 31 * result + (uiResource ? 1 : 0);
128.782 + return result;
128.783 + }
128.784 + }
128.785 +
128.786 + /**
128.787 + * Listener to update derived colors on UIManager Defaults changes
128.788 + */
128.789 + private class DefaultsListener implements PropertyChangeListener {
128.790 + @Override
128.791 + public void propertyChange(PropertyChangeEvent evt) {
128.792 + Object src = evt.getSource();
128.793 + String key = evt.getPropertyName();
128.794 + if (key.equals("lookAndFeel")){
128.795 + // LAF has been installed, this is the first point at which we
128.796 + // can access our defaults table via UIManager so before now
128.797 + // all derived colors will be incorrect.
128.798 + // First we need to update
128.799 + for (DerivedColor color : derivedColorsMap.values()) {
128.800 + color.rederiveColor();
128.801 + }
128.802 + } else if (src instanceof DerivedColor && key.equals("rgb")) {
128.803 + // derived color that is in UIManager defaults has changed
128.804 + // update all its dependent colors. Don't worry about doing
128.805 + // this recursively since calling rederiveColor will cause
128.806 + // another PCE to be fired, ending up here and essentially
128.807 + // recursing
128.808 + DerivedColor parentColor = (DerivedColor)src;
128.809 + String parentKey = null;
128.810 + Set<Map.Entry<Object,Object>> entries =
128.811 + UIManager.getDefaults().entrySet();
128.812 +
128.813 + for (Map.Entry entry : entries) {
128.814 + Object value = entry.getValue();
128.815 + if (value == parentColor) {
128.816 + parentKey = entry.getKey().toString();
128.817 + }
128.818 + }
128.819 +
128.820 + if (parentKey == null) {
128.821 + //couldn't find the DerivedColor in the UIDefaults map,
128.822 + //so we just bail.
128.823 + return;
128.824 + }
128.825 +
128.826 + for (Map.Entry entry : entries) {
128.827 + Object value = entry.getValue();
128.828 + if (value instanceof DerivedColor) {
128.829 + DerivedColor color = (DerivedColor)entry.getValue();
128.830 + if (parentKey.equals(color.getUiDefaultParentName())) {
128.831 + color.rederiveColor();
128.832 + }
128.833 + }
128.834 + }
128.835 + }
128.836 + }
128.837 + }
128.838 +
128.839 + private static final class PainterBorder implements Border, UIResource {
128.840 + private Insets insets;
128.841 + private Painter painter;
128.842 + private String painterKey;
128.843 +
128.844 + PainterBorder(String painterKey, Insets insets) {
128.845 + this.insets = insets;
128.846 + this.painterKey = painterKey;
128.847 + }
128.848 +
128.849 + @Override
128.850 + public void paintBorder(Component c, Graphics g, int x, int y, int w, int h) {
128.851 + if (painter == null) {
128.852 + painter = (Painter)UIManager.get(painterKey);
128.853 + if (painter == null) return;
128.854 + }
128.855 +
128.856 + g.translate(x, y);
128.857 + if (g instanceof Graphics2D)
128.858 + painter.paint((Graphics2D)g, c, w, h);
128.859 + else {
128.860 + BufferedImage img = new BufferedImage(w, h, TYPE_INT_ARGB);
128.861 + Graphics2D gfx = img.createGraphics();
128.862 + painter.paint(gfx, c, w, h);
128.863 + gfx.dispose();
128.864 + g.drawImage(img, x, y, null);
128.865 + img = null;
128.866 + }
128.867 + g.translate(-x, -y);
128.868 + }
128.869 +
128.870 + @Override
128.871 + public Insets getBorderInsets(Component c) {
128.872 + return (Insets)insets.clone();
128.873 + }
128.874 +
128.875 + @Override
128.876 + public boolean isBorderOpaque() {
128.877 + return false;
128.878 + }
128.879 + }
128.880 +}
128.881 +
129.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
129.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/DerivedColor.java Wed Apr 29 00:27:46 2009 -0700
129.3 @@ -0,0 +1,215 @@
129.4 +/*
129.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
129.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
129.7 + *
129.8 + * This code is free software; you can redistribute it and/or modify it
129.9 + * under the terms of the GNU General Public License version 2 only, as
129.10 + * published by the Free Software Foundation. Sun designates this
129.11 + * particular file as subject to the "Classpath" exception as provided
129.12 + * by Sun in the LICENSE file that accompanied this code.
129.13 + *
129.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
129.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
129.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
129.17 + * version 2 for more details (a copy is included in the LICENSE file that
129.18 + * accompanied this code).
129.19 + *
129.20 + * You should have received a copy of the GNU General Public License version
129.21 + * 2 along with this work; if not, write to the Free Software Foundation,
129.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
129.23 + *
129.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
129.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
129.26 + * have any questions.
129.27 + */
129.28 +package javax.swing.plaf.nimbus;
129.29 +
129.30 +import javax.swing.UIManager;
129.31 +import java.awt.Color;
129.32 +import java.beans.PropertyChangeSupport;
129.33 +import java.beans.PropertyChangeListener;
129.34 +
129.35 +/**
129.36 + * DerivedColor - A color implementation that is derived from a UIManager
129.37 + * defaults table color and a set of offsets. It can be rederived at any point
129.38 + * by calling rederiveColor(). For example when its parent color changes and it
129.39 + * value will update to reflect the new derived color. Property change events
129.40 + * are fired for the "rgb" property when the derived color changes.
129.41 + *
129.42 + * @author Jasper Potts
129.43 + */
129.44 +class DerivedColor extends Color {
129.45 + private final PropertyChangeSupport changeSupport =
129.46 + new PropertyChangeSupport(this);
129.47 + private final String uiDefaultParentName;
129.48 + private final float hOffset, sOffset, bOffset;
129.49 + private final int aOffset;
129.50 + private int argbValue;
129.51 +
129.52 + DerivedColor(String uiDefaultParentName, float hOffset, float sOffset, float bOffset, int aOffset) {
129.53 + super(0);
129.54 + this.uiDefaultParentName = uiDefaultParentName;
129.55 + this.hOffset = hOffset;
129.56 + this.sOffset = sOffset;
129.57 + this.bOffset = bOffset;
129.58 + this.aOffset = aOffset;
129.59 + }
129.60 +
129.61 + public String getUiDefaultParentName() {
129.62 + return uiDefaultParentName;
129.63 + }
129.64 +
129.65 + public float getHueOffset() {
129.66 + return hOffset;
129.67 + }
129.68 +
129.69 + public float getSaturationOffset() {
129.70 + return sOffset;
129.71 + }
129.72 +
129.73 + public float getBrightnessOffset() {
129.74 + return bOffset;
129.75 + }
129.76 +
129.77 + public int getAlphaOffset() {
129.78 + return aOffset;
129.79 + }
129.80 +
129.81 + /**
129.82 + * Recalculate the derived color from the UIManager parent color and offsets
129.83 + */
129.84 + public void rederiveColor() {
129.85 + int old = argbValue;
129.86 + Color src = UIManager.getColor(uiDefaultParentName);
129.87 + if (src != null) {
129.88 + float[] tmp = Color.RGBtoHSB(src.getRed(), src.getGreen(), src.getBlue(), null);
129.89 + // apply offsets
129.90 + tmp[0] = clamp(tmp[0] + hOffset);
129.91 + tmp[1] = clamp(tmp[1] + sOffset);
129.92 + tmp[2] = clamp(tmp[2] + bOffset);
129.93 + int alpha = clamp(src.getAlpha() + aOffset);
129.94 + argbValue = (Color.HSBtoRGB(tmp[0], tmp[1], tmp[2]) & 0xFFFFFF) | (alpha << 24);
129.95 + } else {
129.96 + float[] tmp = new float[3];
129.97 + tmp[0] = clamp(hOffset);
129.98 + tmp[1] = clamp(sOffset);
129.99 + tmp[2] = clamp(bOffset);
129.100 + int alpha = clamp(aOffset);
129.101 + argbValue = (Color.HSBtoRGB(tmp[0], tmp[1], tmp[2]) & 0xFFFFFF) | (alpha << 24);
129.102 + }
129.103 + changeSupport.firePropertyChange("rgb", old, argbValue);
129.104 + }
129.105 +
129.106 + /**
129.107 + * Returns the RGB value representing the color in the default sRGB {@link java.awt.image.ColorModel}. (Bits 24-31
129.108 + * are alpha, 16-23 are red, 8-15 are green, 0-7 are blue).
129.109 + *
129.110 + * @return the RGB value of the color in the default sRGB <code>ColorModel</code>.
129.111 + * @see java.awt.image.ColorModel#getRGBdefault
129.112 + * @see #getRed
129.113 + * @see #getGreen
129.114 + * @see #getBlue
129.115 + * @since JDK1.0
129.116 + */
129.117 + @Override public int getRGB() {
129.118 + return argbValue;
129.119 + }
129.120 +
129.121 + @Override
129.122 + public boolean equals(Object o) {
129.123 + if (this == o) return true;
129.124 + if (!(o instanceof DerivedColor)) return false;
129.125 + DerivedColor that = (DerivedColor) o;
129.126 + if (aOffset != that.aOffset) return false;
129.127 + if (Float.compare(that.bOffset, bOffset) != 0) return false;
129.128 + if (Float.compare(that.hOffset, hOffset) != 0) return false;
129.129 + if (Float.compare(that.sOffset, sOffset) != 0) return false;
129.130 + if (!uiDefaultParentName.equals(that.uiDefaultParentName)) return false;
129.131 + return true;
129.132 + }
129.133 +
129.134 + @Override
129.135 + public int hashCode() {
129.136 + int result = uiDefaultParentName.hashCode();
129.137 + result = 31 * result + hOffset != +0.0f ?
129.138 + Float.floatToIntBits(hOffset) : 0;
129.139 + result = 31 * result + sOffset != +0.0f ?
129.140 + Float.floatToIntBits(sOffset) : 0;
129.141 + result = 31 * result + bOffset != +0.0f ?
129.142 + Float.floatToIntBits(bOffset) : 0;
129.143 + result = 31 * result + aOffset;
129.144 + return result;
129.145 + }
129.146 +
129.147 + /**
129.148 + * Add a PropertyChangeListener to the listener list.
129.149 + * The listener is registered for all properties.
129.150 + * The same listener object may be added more than once, and will be called
129.151 + * as many times as it is added.
129.152 + * If <code>listener</code> is null, no exception is thrown and no action
129.153 + * is taken.
129.154 + *
129.155 + * @param listener The PropertyChangeListener to be added
129.156 + */
129.157 + public void addPropertyChangeListener(PropertyChangeListener listener) {
129.158 + changeSupport.addPropertyChangeListener(listener);
129.159 + }
129.160 +
129.161 + /**
129.162 + * Remove a PropertyChangeListener from the listener list.
129.163 + * This removes a PropertyChangeListener that was registered
129.164 + * for all properties.
129.165 + * If <code>listener</code> was added more than once to the same event
129.166 + * source, it will be notified one less time after being removed.
129.167 + * If <code>listener</code> is null, or was never added, no exception is
129.168 + * thrown and no action is taken.
129.169 + *
129.170 + * @param listener The PropertyChangeListener to be removed
129.171 + */
129.172 + public void removePropertyChangeListener(PropertyChangeListener listener) {
129.173 + changeSupport.removePropertyChangeListener(listener);
129.174 + }
129.175 +
129.176 + private float clamp(float value) {
129.177 + if (value < 0) {
129.178 + value = 0;
129.179 + } else if (value > 1) {
129.180 + value = 1;
129.181 + }
129.182 + return value;
129.183 + }
129.184 +
129.185 + private int clamp(int value) {
129.186 + if (value < 0) {
129.187 + value = 0;
129.188 + } else if (value > 255) {
129.189 + value = 255;
129.190 + }
129.191 + return value;
129.192 + }
129.193 +
129.194 + /**
129.195 + * Returns a string representation of this <code>Color</code>. This method
129.196 + * is intended to be used only for debugging purposes. The content and
129.197 + * format of the returned string might vary between implementations. The
129.198 + * returned string might be empty but cannot be <code>null</code>.
129.199 + *
129.200 + * @return a String representation of this <code>Color</code>.
129.201 + */
129.202 + @Override
129.203 + public String toString() {
129.204 + Color src = UIManager.getColor(uiDefaultParentName);
129.205 + String s = "DerivedColor(color=" + getRed() + "," + getGreen() + "," + getBlue() +
129.206 + " parent=" + uiDefaultParentName +
129.207 + " offsets=" + getHueOffset() + "," + getSaturationOffset() + ","
129.208 + + getBrightnessOffset() + "," + getAlphaOffset();
129.209 + return src == null ? s : s + " pColor=" + src.getRed() + "," + src.getGreen() + "," + src.getBlue();
129.210 + }
129.211 +
129.212 + static class UIResource extends DerivedColor implements javax.swing.plaf.UIResource {
129.213 + UIResource(String uiDefaultParentName, float hOffset, float sOffset,
129.214 + float bOffset, int aOffset) {
129.215 + super(uiDefaultParentName, hOffset, sOffset, bOffset, aOffset);
129.216 + }
129.217 + }
129.218 +}
130.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
130.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/DropShadowEffect.java Wed Apr 29 00:27:46 2009 -0700
130.3 @@ -0,0 +1,128 @@
130.4 +/*
130.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
130.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
130.7 + *
130.8 + * This code is free software; you can redistribute it and/or modify it
130.9 + * under the terms of the GNU General Public License version 2 only, as
130.10 + * published by the Free Software Foundation. Sun designates this
130.11 + * particular file as subject to the "Classpath" exception as provided
130.12 + * by Sun in the LICENSE file that accompanied this code.
130.13 + *
130.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
130.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
130.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
130.17 + * version 2 for more details (a copy is included in the LICENSE file that
130.18 + * accompanied this code).
130.19 + *
130.20 + * You should have received a copy of the GNU General Public License version
130.21 + * 2 along with this work; if not, write to the Free Software Foundation,
130.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
130.23 + *
130.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
130.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
130.26 + * have any questions.
130.27 + */
130.28 +package javax.swing.plaf.nimbus;
130.29 +
130.30 +import java.awt.image.BufferedImage;
130.31 +import java.awt.image.Raster;
130.32 +import java.awt.image.WritableRaster;
130.33 +import java.util.Arrays;
130.34 +
130.35 +/**
130.36 + * DropShadowEffect - This effect currently only works with ARGB type buffered
130.37 + * images.
130.38 + *
130.39 + * @author Created by Jasper Potts (Jun 18, 2007)
130.40 + */
130.41 +class DropShadowEffect extends ShadowEffect {
130.42 +
130.43 + // =================================================================================================================
130.44 + // Effect Methods
130.45 +
130.46 + /**
130.47 + * Get the type of this effect, one of UNDER,BLENDED,OVER. UNDER means the result of apply effect should be painted
130.48 + * under the src image. BLENDED means the result of apply sffect contains a modified src image so just it should be
130.49 + * painted. OVER means the result of apply effect should be painted over the src image.
130.50 + *
130.51 + * @return The effect type
130.52 + */
130.53 + @Override
130.54 + EffectType getEffectType() {
130.55 + return EffectType.UNDER;
130.56 + }
130.57 +
130.58 + /**
130.59 + * Apply the effect to the src image generating the result . The result image may or may not contain the source
130.60 + * image depending on what the effect type is.
130.61 + *
130.62 + * @param src The source image for applying the effect to
130.63 + * @param dst The destination image to paint effect result into. If this is null then a new image will be created
130.64 + * @param w The width of the src image to apply effect to, this allow the src and dst buffers to be bigger than
130.65 + * the area the need effect applied to it
130.66 + * @param h The height of the src image to apply effect to, this allow the src and dst buffers to be bigger than
130.67 + * the area the need effect applied to it
130.68 + * @return Image with the result of the effect
130.69 + */
130.70 + @Override
130.71 + BufferedImage applyEffect(BufferedImage src, BufferedImage dst, int w, int h) {
130.72 + if (src == null || src.getType() != BufferedImage.TYPE_INT_ARGB){
130.73 + throw new IllegalArgumentException("Effect only works with " +
130.74 + "source images of type BufferedImage.TYPE_INT_ARGB.");
130.75 + }
130.76 + if (dst != null && dst.getType() != BufferedImage.TYPE_INT_ARGB){
130.77 + throw new IllegalArgumentException("Effect only works with " +
130.78 + "destination images of type BufferedImage.TYPE_INT_ARGB.");
130.79 + }
130.80 + // calculate offset
130.81 + double trangleAngle = Math.toRadians(angle - 90);
130.82 + int offsetX = (int) (Math.sin(trangleAngle) * distance);
130.83 + int offsetY = (int) (Math.cos(trangleAngle) * distance);
130.84 + // clac expanded size
130.85 + int tmpOffX = offsetX + size;
130.86 + int tmpOffY = offsetX + size;
130.87 + int tmpW = w + offsetX + size + size;
130.88 + int tmpH = h + offsetX + size;
130.89 + // create tmp buffers
130.90 + int[] lineBuf = getArrayCache().getTmpIntArray(w);
130.91 + byte[] tmpBuf1 = getArrayCache().getTmpByteArray1(tmpW * tmpH);
130.92 + Arrays.fill(tmpBuf1, (byte) 0x00);
130.93 + byte[] tmpBuf2 = getArrayCache().getTmpByteArray2(tmpW * tmpH);
130.94 + // extract src image alpha channel and inverse and offset
130.95 + Raster srcRaster = src.getRaster();
130.96 + for (int y = 0; y < h; y++) {
130.97 + int dy = (y + tmpOffY);
130.98 + int offset = dy * tmpW;
130.99 + srcRaster.getDataElements(0, y, w, 1, lineBuf);
130.100 + for (int x = 0; x < w; x++) {
130.101 + int dx = x + tmpOffX;
130.102 + tmpBuf1[offset + dx] = (byte) ((lineBuf[x] & 0xFF000000) >>> 24);
130.103 + }
130.104 + }
130.105 + // blur
130.106 + float[] kernel = EffectUtils.createGaussianKernel(size);
130.107 + EffectUtils.blur(tmpBuf1, tmpBuf2, tmpW, tmpH, kernel, size); // horizontal pass
130.108 + EffectUtils.blur(tmpBuf2, tmpBuf1, tmpH, tmpW, kernel, size);// vertical pass
130.109 + //rescale
130.110 + float spread = Math.min(1 / (1 - (0.01f * this.spread)), 255);
130.111 + for (int i = 0; i < tmpBuf1.length; i++) {
130.112 + int val = (int) (((int) tmpBuf1[i] & 0xFF) * spread);
130.113 + tmpBuf1[i] = (val > 255) ? (byte) 0xFF : (byte) val;
130.114 + }
130.115 + // create color image with shadow color and greyscale image as alpha
130.116 + if (dst == null) dst = new BufferedImage(w, h,
130.117 + BufferedImage.TYPE_INT_ARGB);
130.118 + WritableRaster shadowRaster = dst.getRaster();
130.119 + int red = color.getRed(), green = color.getGreen(), blue = color.getBlue();
130.120 + for (int y = 0; y < h; y++) {
130.121 + int srcY = y + tmpOffY;
130.122 + int shadowOffset = (srcY - offsetY) * tmpW;
130.123 + for (int x = 0; x < w; x++) {
130.124 + int srcX = x + tmpOffX;
130.125 + lineBuf[x] = tmpBuf1[shadowOffset + (srcX - offsetX)] << 24 | red << 16 | green << 8 | blue;
130.126 + }
130.127 + shadowRaster.setDataElements(0, y, w, 1, lineBuf);
130.128 + }
130.129 + return dst;
130.130 + }
130.131 +}
131.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
131.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/Effect.java Wed Apr 29 00:27:46 2009 -0700
131.3 @@ -0,0 +1,133 @@
131.4 +/*
131.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
131.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
131.7 + *
131.8 + * This code is free software; you can redistribute it and/or modify it
131.9 + * under the terms of the GNU General Public License version 2 only, as
131.10 + * published by the Free Software Foundation. Sun designates this
131.11 + * particular file as subject to the "Classpath" exception as provided
131.12 + * by Sun in the LICENSE file that accompanied this code.
131.13 + *
131.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
131.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
131.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
131.17 + * version 2 for more details (a copy is included in the LICENSE file that
131.18 + * accompanied this code).
131.19 + *
131.20 + * You should have received a copy of the GNU General Public License version
131.21 + * 2 along with this work; if not, write to the Free Software Foundation,
131.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
131.23 + *
131.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
131.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
131.26 + * have any questions.
131.27 + */
131.28 +package javax.swing.plaf.nimbus;
131.29 +
131.30 +import sun.awt.AppContext;
131.31 +
131.32 +import java.awt.image.BufferedImage;
131.33 +import java.lang.ref.SoftReference;
131.34 +
131.35 +/**
131.36 + * Effect
131.37 + *
131.38 + * @author Created by Jasper Potts (Jun 18, 2007)
131.39 + */
131.40 +abstract class Effect {
131.41 + enum EffectType {
131.42 + UNDER, BLENDED, OVER
131.43 + }
131.44 +
131.45 + // =================================================================================================================
131.46 + // Abstract Methods
131.47 +
131.48 + /**
131.49 + * Get the type of this effect, one of UNDER,BLENDED,OVER. UNDER means the result of apply effect should be painted
131.50 + * under the src image. BLENDED means the result of apply sffect contains a modified src image so just it should be
131.51 + * painted. OVER means the result of apply effect should be painted over the src image.
131.52 + *
131.53 + * @return The effect type
131.54 + */
131.55 + abstract EffectType getEffectType();
131.56 +
131.57 + /**
131.58 + * Get the opacity to use to paint the result effected image if the EffectType is UNDER or OVER.
131.59 + *
131.60 + * @return The opactity for the effect, 0.0f -> 1.0f
131.61 + */
131.62 + abstract float getOpacity();
131.63 +
131.64 + /**
131.65 + * Apply the effect to the src image generating the result . The result image may or may not contain the source
131.66 + * image depending on what the effect type is.
131.67 + *
131.68 + * @param src The source image for applying the effect to
131.69 + * @param dst The dstination image to paint effect result into. If this is null then a new image will be created
131.70 + * @param w The width of the src image to apply effect to, this allow the src and dst buffers to be bigger than
131.71 + * the area the need effect applied to it
131.72 + * @param h The height of the src image to apply effect to, this allow the src and dst buffers to be bigger than
131.73 + * the area the need effect applied to it
131.74 + * @return The result of appl
131.75 + */
131.76 + abstract BufferedImage applyEffect(BufferedImage src, BufferedImage dst, int w, int h);
131.77 +
131.78 + // =================================================================================================================
131.79 + // Static data cache
131.80 +
131.81 + protected static ArrayCache getArrayCache() {
131.82 + ArrayCache cache = (ArrayCache)AppContext.getAppContext().get(ArrayCache.class);
131.83 + if (cache == null){
131.84 + cache = new ArrayCache();
131.85 + AppContext.getAppContext().put(ArrayCache.class,cache);
131.86 + }
131.87 + return cache;
131.88 + }
131.89 +
131.90 + protected static class ArrayCache {
131.91 + private SoftReference<int[]> tmpIntArray = null;
131.92 + private SoftReference<byte[]> tmpByteArray1 = null;
131.93 + private SoftReference<byte[]> tmpByteArray2 = null;
131.94 + private SoftReference<byte[]> tmpByteArray3 = null;
131.95 +
131.96 + protected int[] getTmpIntArray(int size) {
131.97 + int[] tmp;
131.98 + if (tmpIntArray == null || (tmp = tmpIntArray.get()) == null || tmp.length < size) {
131.99 + // create new array
131.100 + tmp = new int[size];
131.101 + tmpIntArray = new SoftReference<int[]>(tmp);
131.102 + }
131.103 + return tmp;
131.104 + }
131.105 +
131.106 + protected byte[] getTmpByteArray1(int size) {
131.107 + byte[] tmp;
131.108 + if (tmpByteArray1 == null || (tmp = tmpByteArray1.get()) == null || tmp.length < size) {
131.109 + // create new array
131.110 + tmp = new byte[size];
131.111 + tmpByteArray1 = new SoftReference<byte[]>(tmp);
131.112 + }
131.113 + return tmp;
131.114 + }
131.115 +
131.116 + protected byte[] getTmpByteArray2(int size) {
131.117 + byte[] tmp;
131.118 + if (tmpByteArray2 == null || (tmp = tmpByteArray2.get()) == null || tmp.length < size) {
131.119 + // create new array
131.120 + tmp = new byte[size];
131.121 + tmpByteArray2 = new SoftReference<byte[]>(tmp);
131.122 + }
131.123 + return tmp;
131.124 + }
131.125 +
131.126 + protected byte[] getTmpByteArray3(int size) {
131.127 + byte[] tmp;
131.128 + if (tmpByteArray3 == null || (tmp = tmpByteArray3.get()) == null || tmp.length < size) {
131.129 + // create new array
131.130 + tmp = new byte[size];
131.131 + tmpByteArray3 = new SoftReference<byte[]>(tmp);
131.132 + }
131.133 + return tmp;
131.134 + }
131.135 + }
131.136 +}
132.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
132.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/EffectUtils.java Wed Apr 29 00:27:46 2009 -0700
132.3 @@ -0,0 +1,426 @@
132.4 +/*
132.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
132.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
132.7 + *
132.8 + * This code is free software; you can redistribute it and/or modify it
132.9 + * under the terms of the GNU General Public License version 2 only, as
132.10 + * published by the Free Software Foundation. Sun designates this
132.11 + * particular file as subject to the "Classpath" exception as provided
132.12 + * by Sun in the LICENSE file that accompanied this code.
132.13 + *
132.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
132.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
132.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
132.17 + * version 2 for more details (a copy is included in the LICENSE file that
132.18 + * accompanied this code).
132.19 + *
132.20 + * You should have received a copy of the GNU General Public License version
132.21 + * 2 along with this work; if not, write to the Free Software Foundation,
132.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
132.23 + *
132.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
132.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
132.26 + * have any questions.
132.27 + */
132.28 +package javax.swing.plaf.nimbus;
132.29 +
132.30 +import java.awt.AlphaComposite;
132.31 +import java.awt.Graphics2D;
132.32 +import java.awt.Transparency;
132.33 +import java.awt.GraphicsConfiguration;
132.34 +import java.awt.GraphicsEnvironment;
132.35 +import java.awt.image.BufferedImage;
132.36 +import java.awt.image.Raster;
132.37 +import java.awt.image.WritableRaster;
132.38 +import java.awt.image.ColorModel;
132.39 +
132.40 +/**
132.41 + * EffectUtils
132.42 + *
132.43 + * @author Created by Jasper Potts (Jun 18, 2007)
132.44 + */
132.45 +class EffectUtils {
132.46 +
132.47 + /**
132.48 + * Clear a transparent image to 100% transparent
132.49 + *
132.50 + * @param img The image to clear
132.51 + */
132.52 + static void clearImage(BufferedImage img) {
132.53 + Graphics2D g2 = img.createGraphics();
132.54 + g2.setComposite(AlphaComposite.Clear);
132.55 + g2.fillRect(0, 0, img.getWidth(), img.getHeight());
132.56 + g2.dispose();
132.57 + }
132.58 +
132.59 + // =================================================================================================================
132.60 + // Blur
132.61 +
132.62 + /**
132.63 + * Apply Gaussian Blur to Image
132.64 + *
132.65 + * @param src The image tp
132.66 + * @param dst The destination image to draw blured src image into, null if you want a new one created
132.67 + * @param radius The blur kernel radius
132.68 + * @return The blured image
132.69 + */
132.70 + static BufferedImage gaussianBlur(BufferedImage src, BufferedImage dst, int radius) {
132.71 + int width = src.getWidth();
132.72 + int height = src.getHeight();
132.73 + if (dst == null || dst.getWidth() != width || dst.getHeight() != height || src.getType() != dst.getType()) {
132.74 + dst = createColorModelCompatibleImage(src);
132.75 + }
132.76 + float[] kernel = createGaussianKernel(radius);
132.77 + if (src.getType() == BufferedImage.TYPE_INT_ARGB) {
132.78 + int[] srcPixels = new int[width * height];
132.79 + int[] dstPixels = new int[width * height];
132.80 + getPixels(src, 0, 0, width, height, srcPixels);
132.81 + // horizontal pass
132.82 + blur(srcPixels, dstPixels, width, height, kernel, radius);
132.83 + // vertical pass
132.84 + //noinspection SuspiciousNameCombination
132.85 + blur(dstPixels, srcPixels, height, width, kernel, radius);
132.86 + // the result is now stored in srcPixels due to the 2nd pass
132.87 + setPixels(dst, 0, 0, width, height, srcPixels);
132.88 + } else if (src.getType() == BufferedImage.TYPE_BYTE_GRAY) {
132.89 + byte[] srcPixels = new byte[width * height];
132.90 + byte[] dstPixels = new byte[width * height];
132.91 + getPixels(src, 0, 0, width, height, srcPixels);
132.92 + // horizontal pass
132.93 + blur(srcPixels, dstPixels, width, height, kernel, radius);
132.94 + // vertical pass
132.95 + //noinspection SuspiciousNameCombination
132.96 + blur(dstPixels, srcPixels, height, width, kernel, radius);
132.97 + // the result is now stored in srcPixels due to the 2nd pass
132.98 + setPixels(dst, 0, 0, width, height, srcPixels);
132.99 + } else {
132.100 + throw new IllegalArgumentException("EffectUtils.gaussianBlur() src image is not a supported type, type=[" +
132.101 + src.getType() + "]");
132.102 + }
132.103 + return dst;
132.104 + }
132.105 +
132.106 + /**
132.107 + * <p>Blurs the source pixels into the destination pixels. The force of the blur is specified by the radius which
132.108 + * must be greater than 0.</p> <p>The source and destination pixels arrays are expected to be in the INT_ARGB
132.109 + * format.</p> <p>After this method is executed, dstPixels contains a transposed and filtered copy of
132.110 + * srcPixels.</p>
132.111 + *
132.112 + * @param srcPixels the source pixels
132.113 + * @param dstPixels the destination pixels
132.114 + * @param width the width of the source picture
132.115 + * @param height the height of the source picture
132.116 + * @param kernel the kernel of the blur effect
132.117 + * @param radius the radius of the blur effect
132.118 + */
132.119 + private static void blur(int[] srcPixels, int[] dstPixels,
132.120 + int width, int height,
132.121 + float[] kernel, int radius) {
132.122 + float a;
132.123 + float r;
132.124 + float g;
132.125 + float b;
132.126 +
132.127 + int ca;
132.128 + int cr;
132.129 + int cg;
132.130 + int cb;
132.131 +
132.132 + for (int y = 0; y < height; y++) {
132.133 + int index = y;
132.134 + int offset = y * width;
132.135 +
132.136 + for (int x = 0; x < width; x++) {
132.137 + a = r = g = b = 0.0f;
132.138 +
132.139 + for (int i = -radius; i <= radius; i++) {
132.140 + int subOffset = x + i;
132.141 + if (subOffset < 0 || subOffset >= width) {
132.142 + subOffset = (x + width) % width;
132.143 + }
132.144 +
132.145 + int pixel = srcPixels[offset + subOffset];
132.146 + float blurFactor = kernel[radius + i];
132.147 +
132.148 + a += blurFactor * ((pixel >> 24) & 0xFF);
132.149 + r += blurFactor * ((pixel >> 16) & 0xFF);
132.150 + g += blurFactor * ((pixel >> 8) & 0xFF);
132.151 + b += blurFactor * ((pixel) & 0xFF);
132.152 + }
132.153 +
132.154 + ca = (int) (a + 0.5f);
132.155 + cr = (int) (r + 0.5f);
132.156 + cg = (int) (g + 0.5f);
132.157 + cb = (int) (b + 0.5f);
132.158 +
132.159 + dstPixels[index] = ((ca > 255 ? 255 : ca) << 24) |
132.160 + ((cr > 255 ? 255 : cr) << 16) |
132.161 + ((cg > 255 ? 255 : cg) << 8) |
132.162 + (cb > 255 ? 255 : cb);
132.163 + index += height;
132.164 + }
132.165 + }
132.166 + }
132.167 +
132.168 + /**
132.169 + * <p>Blurs the source pixels into the destination pixels. The force of the blur is specified by the radius which
132.170 + * must be greater than 0.</p> <p>The source and destination pixels arrays are expected to be in the BYTE_GREY
132.171 + * format.</p> <p>After this method is executed, dstPixels contains a transposed and filtered copy of
132.172 + * srcPixels.</p>
132.173 + *
132.174 + * @param srcPixels the source pixels
132.175 + * @param dstPixels the destination pixels
132.176 + * @param width the width of the source picture
132.177 + * @param height the height of the source picture
132.178 + * @param kernel the kernel of the blur effect
132.179 + * @param radius the radius of the blur effect
132.180 + */
132.181 + static void blur(byte[] srcPixels, byte[] dstPixels,
132.182 + int width, int height,
132.183 + float[] kernel, int radius) {
132.184 + float p;
132.185 + int cp;
132.186 + for (int y = 0; y < height; y++) {
132.187 + int index = y;
132.188 + int offset = y * width;
132.189 + for (int x = 0; x < width; x++) {
132.190 + p = 0.0f;
132.191 + for (int i = -radius; i <= radius; i++) {
132.192 + int subOffset = x + i;
132.193 +// if (subOffset < 0) subOffset = 0;
132.194 +// if (subOffset >= width) subOffset = width-1;
132.195 + if (subOffset < 0 || subOffset >= width) {
132.196 + subOffset = (x + width) % width;
132.197 + }
132.198 + int pixel = srcPixels[offset + subOffset] & 0xFF;
132.199 + float blurFactor = kernel[radius + i];
132.200 + p += blurFactor * pixel;
132.201 + }
132.202 + cp = (int) (p + 0.5f);
132.203 + dstPixels[index] = (byte) (cp > 255 ? 255 : cp);
132.204 + index += height;
132.205 + }
132.206 + }
132.207 + }
132.208 +
132.209 + static float[] createGaussianKernel(int radius) {
132.210 + if (radius < 1) {
132.211 + throw new IllegalArgumentException("Radius must be >= 1");
132.212 + }
132.213 +
132.214 + float[] data = new float[radius * 2 + 1];
132.215 +
132.216 + float sigma = radius / 3.0f;
132.217 + float twoSigmaSquare = 2.0f * sigma * sigma;
132.218 + float sigmaRoot = (float) Math.sqrt(twoSigmaSquare * Math.PI);
132.219 + float total = 0.0f;
132.220 +
132.221 + for (int i = -radius; i <= radius; i++) {
132.222 + float distance = i * i;
132.223 + int index = i + radius;
132.224 + data[index] = (float) Math.exp(-distance / twoSigmaSquare) / sigmaRoot;
132.225 + total += data[index];
132.226 + }
132.227 +
132.228 + for (int i = 0; i < data.length; i++) {
132.229 + data[i] /= total;
132.230 + }
132.231 +
132.232 + return data;
132.233 + }
132.234 +
132.235 + // =================================================================================================================
132.236 + // Get/Set Pixels helper methods
132.237 +
132.238 + /**
132.239 + * <p>Returns an array of pixels, stored as integers, from a <code>BufferedImage</code>. The pixels are grabbed from
132.240 + * a rectangular area defined by a location and two dimensions. Calling this method on an image of type different
132.241 + * from <code>BufferedImage.TYPE_INT_ARGB</code> and <code>BufferedImage.TYPE_INT_RGB</code> will unmanage the
132.242 + * image.</p>
132.243 + *
132.244 + * @param img the source image
132.245 + * @param x the x location at which to start grabbing pixels
132.246 + * @param y the y location at which to start grabbing pixels
132.247 + * @param w the width of the rectangle of pixels to grab
132.248 + * @param h the height of the rectangle of pixels to grab
132.249 + * @param pixels a pre-allocated array of pixels of size w*h; can be null
132.250 + * @return <code>pixels</code> if non-null, a new array of integers otherwise
132.251 + * @throws IllegalArgumentException is <code>pixels</code> is non-null and of length < w*h
132.252 + */
132.253 + static byte[] getPixels(BufferedImage img,
132.254 + int x, int y, int w, int h, byte[] pixels) {
132.255 + if (w == 0 || h == 0) {
132.256 + return new byte[0];
132.257 + }
132.258 +
132.259 + if (pixels == null) {
132.260 + pixels = new byte[w * h];
132.261 + } else if (pixels.length < w * h) {
132.262 + throw new IllegalArgumentException("pixels array must have a length >= w*h");
132.263 + }
132.264 +
132.265 + int imageType = img.getType();
132.266 + if (imageType == BufferedImage.TYPE_BYTE_GRAY) {
132.267 + Raster raster = img.getRaster();
132.268 + return (byte[]) raster.getDataElements(x, y, w, h, pixels);
132.269 + } else {
132.270 + throw new IllegalArgumentException("Only type BYTE_GRAY is supported");
132.271 + }
132.272 + }
132.273 +
132.274 + /**
132.275 + * <p>Writes a rectangular area of pixels in the destination <code>BufferedImage</code>. Calling this method on an
132.276 + * image of type different from <code>BufferedImage.TYPE_INT_ARGB</code> and <code>BufferedImage.TYPE_INT_RGB</code>
132.277 + * will unmanage the image.</p>
132.278 + *
132.279 + * @param img the destination image
132.280 + * @param x the x location at which to start storing pixels
132.281 + * @param y the y location at which to start storing pixels
132.282 + * @param w the width of the rectangle of pixels to store
132.283 + * @param h the height of the rectangle of pixels to store
132.284 + * @param pixels an array of pixels, stored as integers
132.285 + * @throws IllegalArgumentException is <code>pixels</code> is non-null and of length < w*h
132.286 + */
132.287 + static void setPixels(BufferedImage img,
132.288 + int x, int y, int w, int h, byte[] pixels) {
132.289 + if (pixels == null || w == 0 || h == 0) {
132.290 + return;
132.291 + } else if (pixels.length < w * h) {
132.292 + throw new IllegalArgumentException("pixels array must have a length >= w*h");
132.293 + }
132.294 + int imageType = img.getType();
132.295 + if (imageType == BufferedImage.TYPE_BYTE_GRAY) {
132.296 + WritableRaster raster = img.getRaster();
132.297 + raster.setDataElements(x, y, w, h, pixels);
132.298 + } else {
132.299 + throw new IllegalArgumentException("Only type BYTE_GRAY is supported");
132.300 + }
132.301 + }
132.302 +
132.303 + /**
132.304 + * <p>Returns an array of pixels, stored as integers, from a
132.305 + * <code>BufferedImage</code>. The pixels are grabbed from a rectangular
132.306 + * area defined by a location and two dimensions. Calling this method on
132.307 + * an image of type different from <code>BufferedImage.TYPE_INT_ARGB</code>
132.308 + * and <code>BufferedImage.TYPE_INT_RGB</code> will unmanage the image.</p>
132.309 + *
132.310 + * @param img the source image
132.311 + * @param x the x location at which to start grabbing pixels
132.312 + * @param y the y location at which to start grabbing pixels
132.313 + * @param w the width of the rectangle of pixels to grab
132.314 + * @param h the height of the rectangle of pixels to grab
132.315 + * @param pixels a pre-allocated array of pixels of size w*h; can be null
132.316 + * @return <code>pixels</code> if non-null, a new array of integers
132.317 + * otherwise
132.318 + * @throws IllegalArgumentException is <code>pixels</code> is non-null and
132.319 + * of length < w*h
132.320 + */
132.321 + public static int[] getPixels(BufferedImage img,
132.322 + int x, int y, int w, int h, int[] pixels) {
132.323 + if (w == 0 || h == 0) {
132.324 + return new int[0];
132.325 + }
132.326 +
132.327 + if (pixels == null) {
132.328 + pixels = new int[w * h];
132.329 + } else if (pixels.length < w * h) {
132.330 + throw new IllegalArgumentException("pixels array must have a length" +
132.331 + " >= w*h");
132.332 + }
132.333 +
132.334 + int imageType = img.getType();
132.335 + if (imageType == BufferedImage.TYPE_INT_ARGB ||
132.336 + imageType == BufferedImage.TYPE_INT_RGB) {
132.337 + Raster raster = img.getRaster();
132.338 + return (int[]) raster.getDataElements(x, y, w, h, pixels);
132.339 + }
132.340 +
132.341 + // Unmanages the image
132.342 + return img.getRGB(x, y, w, h, pixels, 0, w);
132.343 + }
132.344 +
132.345 + /**
132.346 + * <p>Writes a rectangular area of pixels in the destination
132.347 + * <code>BufferedImage</code>. Calling this method on
132.348 + * an image of type different from <code>BufferedImage.TYPE_INT_ARGB</code>
132.349 + * and <code>BufferedImage.TYPE_INT_RGB</code> will unmanage the image.</p>
132.350 + *
132.351 + * @param img the destination image
132.352 + * @param x the x location at which to start storing pixels
132.353 + * @param y the y location at which to start storing pixels
132.354 + * @param w the width of the rectangle of pixels to store
132.355 + * @param h the height of the rectangle of pixels to store
132.356 + * @param pixels an array of pixels, stored as integers
132.357 + * @throws IllegalArgumentException is <code>pixels</code> is non-null and
132.358 + * of length < w*h
132.359 + */
132.360 + public static void setPixels(BufferedImage img,
132.361 + int x, int y, int w, int h, int[] pixels) {
132.362 + if (pixels == null || w == 0 || h == 0) {
132.363 + return;
132.364 + } else if (pixels.length < w * h) {
132.365 + throw new IllegalArgumentException("pixels array must have a length" +
132.366 + " >= w*h");
132.367 + }
132.368 +
132.369 + int imageType = img.getType();
132.370 + if (imageType == BufferedImage.TYPE_INT_ARGB ||
132.371 + imageType == BufferedImage.TYPE_INT_RGB) {
132.372 + WritableRaster raster = img.getRaster();
132.373 + raster.setDataElements(x, y, w, h, pixels);
132.374 + } else {
132.375 + // Unmanages the image
132.376 + img.setRGB(x, y, w, h, pixels, 0, w);
132.377 + }
132.378 + }
132.379 +
132.380 + /**
132.381 + * <p>Returns a new <code>BufferedImage</code> using the same color model
132.382 + * as the image passed as a parameter. The returned image is only compatible
132.383 + * with the image passed as a parameter. This does not mean the returned
132.384 + * image is compatible with the hardware.</p>
132.385 + *
132.386 + * @param image the reference image from which the color model of the new
132.387 + * image is obtained
132.388 + * @return a new <code>BufferedImage</code>, compatible with the color model
132.389 + * of <code>image</code>
132.390 + */
132.391 + public static BufferedImage createColorModelCompatibleImage(BufferedImage image) {
132.392 + ColorModel cm = image.getColorModel();
132.393 + return new BufferedImage(cm,
132.394 + cm.createCompatibleWritableRaster(image.getWidth(),
132.395 + image.getHeight()),
132.396 + cm.isAlphaPremultiplied(), null);
132.397 + }
132.398 +
132.399 + /**
132.400 + * <p>Returns a new translucent compatible image of the specified width and
132.401 + * height. That is, the returned <code>BufferedImage</code> is compatible with
132.402 + * the graphics hardware. If the method is called in a headless
132.403 + * environment, then the returned BufferedImage will be compatible with
132.404 + * the source image.</p>
132.405 + *
132.406 + * @param width the width of the new image
132.407 + * @param height the height of the new image
132.408 + * @return a new translucent compatible <code>BufferedImage</code> of the
132.409 + * specified width and height
132.410 + */
132.411 + public static BufferedImage createCompatibleTranslucentImage(int width,
132.412 + int height) {
132.413 + return isHeadless() ?
132.414 + new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB) :
132.415 + getGraphicsConfiguration().createCompatibleImage(width, height,
132.416 + Transparency.TRANSLUCENT);
132.417 + }
132.418 +
132.419 + private static boolean isHeadless() {
132.420 + return GraphicsEnvironment.isHeadless();
132.421 + }
132.422 +
132.423 + // Returns the graphics configuration for the primary screen
132.424 + private static GraphicsConfiguration getGraphicsConfiguration() {
132.425 + return GraphicsEnvironment.getLocalGraphicsEnvironment().
132.426 + getDefaultScreenDevice().getDefaultConfiguration();
132.427 + }
132.428 +
132.429 +}
133.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
133.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/ImageCache.java Wed Apr 29 00:27:46 2009 -0700
133.3 @@ -0,0 +1,217 @@
133.4 +/*
133.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
133.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
133.7 + *
133.8 + * This code is free software; you can redistribute it and/or modify it
133.9 + * under the terms of the GNU General Public License version 2 only, as
133.10 + * published by the Free Software Foundation. Sun designates this
133.11 + * particular file as subject to the "Classpath" exception as provided
133.12 + * by Sun in the LICENSE file that accompanied this code.
133.13 + *
133.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
133.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
133.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
133.17 + * version 2 for more details (a copy is included in the LICENSE file that
133.18 + * accompanied this code).
133.19 + *
133.20 + * You should have received a copy of the GNU General Public License version
133.21 + * 2 along with this work; if not, write to the Free Software Foundation,
133.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
133.23 + *
133.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
133.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
133.26 + * have any questions.
133.27 + */
133.28 +package javax.swing.plaf.nimbus;
133.29 +
133.30 +import java.awt.GraphicsConfiguration;
133.31 +import java.awt.Image;
133.32 +import java.lang.ref.ReferenceQueue;
133.33 +import java.lang.ref.SoftReference;
133.34 +import java.util.Arrays;
133.35 +import java.util.Iterator;
133.36 +import java.util.LinkedHashMap;
133.37 +import java.util.Map;
133.38 +import java.util.concurrent.locks.ReadWriteLock;
133.39 +import java.util.concurrent.locks.ReentrantReadWriteLock;
133.40 +
133.41 +/**
133.42 + * ImageCache - A fixed pixel count sized cache of Images keyed by arbitrary set of arguments. All images are held with
133.43 + * SoftReferences so they will be dropped by the GC if heap memory gets tight. When our size hits max pixel count least
133.44 + * recently requested images are removed first.
133.45 + *
133.46 + * @author Created by Jasper Potts (Aug 7, 2007)
133.47 + */
133.48 +class ImageCache {
133.49 + // Ordered Map keyed by args hash, ordered by most recent accessed entry.
133.50 + private final LinkedHashMap<Integer, PixelCountSoftReference> map =
133.51 + new LinkedHashMap<Integer, PixelCountSoftReference>(16, 0.75f, true);
133.52 + // Maximum number of pixels to cache, this is used if maxCount
133.53 + private final int maxPixelCount;
133.54 + // Maximum cached image size in pxiels
133.55 + private final int maxSingleImagePixelSize;
133.56 + // The current number of pixels stored in the cache
133.57 + private int currentPixelCount = 0;
133.58 + // Lock for concurrent access to map
133.59 + private ReadWriteLock lock = new ReentrantReadWriteLock();
133.60 + // Reference queue for tracking lost softreferences to images in the cache
133.61 + private ReferenceQueue<Image> referenceQueue = new ReferenceQueue<Image>();
133.62 + // Singleton Instance
133.63 + private static final ImageCache instance = new ImageCache();
133.64 +
133.65 +
133.66 + /** Get static singleton instance */
133.67 + static ImageCache getInstance() {
133.68 + return instance;
133.69 + }
133.70 +
133.71 + public ImageCache() {
133.72 + this.maxPixelCount = (8 * 1024 * 1024) / 4; // 8Mb of pixels
133.73 + this.maxSingleImagePixelSize = 300 * 300;
133.74 + }
133.75 +
133.76 + public ImageCache(int maxPixelCount, int maxSingleImagePixelSize) {
133.77 + this.maxPixelCount = maxPixelCount;
133.78 + this.maxSingleImagePixelSize = maxSingleImagePixelSize;
133.79 + }
133.80 +
133.81 + /** Clear the cache */
133.82 + public void flush() {
133.83 + lock.readLock().lock();
133.84 + try {
133.85 + map.clear();
133.86 + } finally {
133.87 + lock.readLock().unlock();
133.88 + }
133.89 + }
133.90 +
133.91 + /**
133.92 + * Check if the image size is to big to be stored in the cache
133.93 + *
133.94 + * @param w The image width
133.95 + * @param h The image height
133.96 + * @return True if the image size is less than max
133.97 + */
133.98 + public boolean isImageCachable(int w, int h) {
133.99 + return (w * h) < maxSingleImagePixelSize;
133.100 + }
133.101 +
133.102 + /**
133.103 + * Get the cached image for given keys
133.104 + *
133.105 + * @param config The graphics configuration, needed if cached image is a Volatile Image. Used as part of cache key
133.106 + * @param w The image width, used as part of cache key
133.107 + * @param h The image height, used as part of cache key
133.108 + * @param args Other arguments to use as part of the cache key
133.109 + * @return Returns the cached Image, or null there is no cached image for key
133.110 + */
133.111 + public Image getImage(GraphicsConfiguration config, int w, int h, Object... args) {
133.112 + lock.readLock().lock();
133.113 + try {
133.114 + PixelCountSoftReference ref = map.get(hash(config, w, h, args));
133.115 + // check reference has not been lost and the key truly matches, in case of false positive hash match
133.116 + if (ref != null && ref.equals(config,w, h, args)) {
133.117 + return ref.get();
133.118 + } else {
133.119 + return null;
133.120 + }
133.121 + } finally {
133.122 + lock.readLock().unlock();
133.123 + }
133.124 + }
133.125 +
133.126 + /**
133.127 + * Sets the cached image for the specified constraints.
133.128 + *
133.129 + * @param image The image to store in cache
133.130 + * @param config The graphics configuration, needed if cached image is a Volatile Image. Used as part of cache key
133.131 + * @param w The image width, used as part of cache key
133.132 + * @param h The image height, used as part of cache key
133.133 + * @param args Other arguments to use as part of the cache key
133.134 + * @return true if the image could be cached or false if the image is too big
133.135 + */
133.136 + public boolean setImage(Image image, GraphicsConfiguration config, int w, int h, Object... args) {
133.137 + if (!isImageCachable(w, h)) return false;
133.138 + int hash = hash(config, w, h, args);
133.139 + lock.writeLock().lock();
133.140 + try {
133.141 + PixelCountSoftReference ref = map.get(hash);
133.142 + // check if currently in map
133.143 + if (ref != null && ref.get() == image) {
133.144 + return true;
133.145 + }
133.146 + // clear out old
133.147 + if (ref != null) {
133.148 + currentPixelCount -= ref.pixelCount;
133.149 + map.remove(hash);
133.150 + }
133.151 + // add new image to pixel count
133.152 + int newPixelCount = image.getWidth(null) * image.getHeight(null);
133.153 + currentPixelCount += newPixelCount;
133.154 + // clean out lost references if not enough space
133.155 + if (currentPixelCount > maxPixelCount) {
133.156 + while ((ref = (PixelCountSoftReference)referenceQueue.poll()) != null){
133.157 + //reference lost
133.158 + map.remove(ref.hash);
133.159 + currentPixelCount -= ref.pixelCount;
133.160 + }
133.161 + }
133.162 + // remove old items till there is enough free space
133.163 + if (currentPixelCount > maxPixelCount) {
133.164 + Iterator<Map.Entry<Integer, PixelCountSoftReference>> mapIter = map.entrySet().iterator();
133.165 + while ((currentPixelCount > maxPixelCount) && mapIter.hasNext()) {
133.166 + Map.Entry<Integer, PixelCountSoftReference> entry = mapIter.next();
133.167 + mapIter.remove();
133.168 + Image img = entry.getValue().get();
133.169 + if (img != null) img.flush();
133.170 + currentPixelCount -= entry.getValue().pixelCount;
133.171 + }
133.172 + }
133.173 + // finaly put new in map
133.174 + map.put(hash, new PixelCountSoftReference(image, referenceQueue, newPixelCount,hash, config, w, h, args));
133.175 + return true;
133.176 + } finally {
133.177 + lock.writeLock().unlock();
133.178 + }
133.179 + }
133.180 +
133.181 + /** Create a unique hash from all the input */
133.182 + private int hash(GraphicsConfiguration config, int w, int h, Object ... args) {
133.183 + int hash;
133.184 + hash = (config != null ? config.hashCode() : 0);
133.185 + hash = 31 * hash + w;
133.186 + hash = 31 * hash + h;
133.187 + hash = 31 * hash + Arrays.deepHashCode(args);
133.188 + return hash;
133.189 + }
133.190 +
133.191 +
133.192 + /** Extended SoftReference that stores the pixel count even after the image is lost */
133.193 + private static class PixelCountSoftReference extends SoftReference<Image> {
133.194 + private final int pixelCount;
133.195 + private final int hash;
133.196 + // key parts
133.197 + private final GraphicsConfiguration config;
133.198 + private final int w;
133.199 + private final int h;
133.200 + private final Object[] args;
133.201 +
133.202 + public PixelCountSoftReference(Image referent, ReferenceQueue<? super Image> q, int pixelCount, int hash,
133.203 + GraphicsConfiguration config, int w, int h, Object[] args) {
133.204 + super(referent, q);
133.205 + this.pixelCount = pixelCount;
133.206 + this.hash = hash;
133.207 + this.config = config;
133.208 + this.w = w;
133.209 + this.h = h;
133.210 + this.args = args;
133.211 + }
133.212 +
133.213 + public boolean equals (GraphicsConfiguration config, int w, int h, Object[] args){
133.214 + return config == this.config &&
133.215 + w == this.w &&
133.216 + h == this.h &&
133.217 + Arrays.equals(args, this.args);
133.218 + }
133.219 + }
133.220 +}
134.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
134.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/ImageScalingHelper.java Wed Apr 29 00:27:46 2009 -0700
134.3 @@ -0,0 +1,280 @@
134.4 +/*
134.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
134.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
134.7 + *
134.8 + * This code is free software; you can redistribute it and/or modify it
134.9 + * under the terms of the GNU General Public License version 2 only, as
134.10 + * published by the Free Software Foundation. Sun designates this
134.11 + * particular file as subject to the "Classpath" exception as provided
134.12 + * by Sun in the LICENSE file that accompanied this code.
134.13 + *
134.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
134.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
134.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
134.17 + * version 2 for more details (a copy is included in the LICENSE file that
134.18 + * accompanied this code).
134.19 + *
134.20 + * You should have received a copy of the GNU General Public License version
134.21 + * 2 along with this work; if not, write to the Free Software Foundation,
134.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
134.23 + *
134.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
134.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
134.26 + * have any questions.
134.27 + */
134.28 +package javax.swing.plaf.nimbus;
134.29 +
134.30 +import java.awt.Graphics;
134.31 +import java.awt.Image;
134.32 +import java.awt.Insets;
134.33 +
134.34 +/**
134.35 + * ImageScalingHelper
134.36 + *
134.37 + * @author Created by Jasper Potts (Aug 8, 2007)
134.38 + */
134.39 +class ImageScalingHelper {
134.40 +
134.41 + /** Enumeration for the types of painting this class can handle. */
134.42 + enum PaintType {
134.43 + /**
134.44 + * Painting type indicating the image should be centered in the space provided. When used the <code>mask</code>
134.45 + * is ignored.
134.46 + */
134.47 + CENTER,
134.48 +
134.49 + /**
134.50 + * Painting type indicating the image should be tiled across the specified width and height. When used the
134.51 + * <code>mask</code> is ignored.
134.52 + */
134.53 + TILE,
134.54 +
134.55 + /**
134.56 + * Painting type indicating the image should be split into nine regions with the top, left, bottom and right
134.57 + * areas stretched.
134.58 + */
134.59 + PAINT9_STRETCH,
134.60 +
134.61 + /**
134.62 + * Painting type indicating the image should be split into nine regions with the top, left, bottom and right
134.63 + * areas tiled.
134.64 + */
134.65 + PAINT9_TILE
134.66 + }
134.67 +
134.68 + ;
134.69 +
134.70 + private static final Insets EMPTY_INSETS = new Insets(0, 0, 0, 0);
134.71 +
134.72 + static final int PAINT_TOP_LEFT = 1;
134.73 + static final int PAINT_TOP = 2;
134.74 + static final int PAINT_TOP_RIGHT = 4;
134.75 + static final int PAINT_LEFT = 8;
134.76 + static final int PAINT_CENTER = 16;
134.77 + static final int PAINT_RIGHT = 32;
134.78 + static final int PAINT_BOTTOM_RIGHT = 64;
134.79 + static final int PAINT_BOTTOM = 128;
134.80 + static final int PAINT_BOTTOM_LEFT = 256;
134.81 + /**
134.82 + * Specifies that all regions should be painted. If this is set any other regions specified will not be painted.
134.83 + * For example PAINT_ALL | PAINT_CENTER will paint all but the center.
134.84 + */
134.85 + static final int PAINT_ALL = 512;
134.86 +
134.87 + /**
134.88 + * Paints using the algorightm specified by <code>paintType</code>.
134.89 + *
134.90 + * @param g Graphics to render to
134.91 + * @param x X-coordinate
134.92 + * @param y Y-coordinate
134.93 + * @param w Width to render to
134.94 + * @param h Height to render to
134.95 + * @param image Image to render from, if <code>null</code> this method will do nothing
134.96 + * @param sInsets Insets specifying the portion of the image that will be stretched or tiled, if <code>null</code>
134.97 + * empty <code>Insets</code> will be used.
134.98 + * @param dInsets Destination insets specifying the portion of the image will be stretched or tiled, if
134.99 + * <code>null</code> empty <code>Insets</code> will be used.
134.100 + * @param paintType Specifies what type of algorithm to use in painting
134.101 + * @param mask Specifies portion of image to render, if <code>PAINT_ALL</code> is specified, any other regions
134.102 + * specified will not be painted, for example PAINT_ALL | PAINT_CENTER paints everything but the
134.103 + * center.
134.104 + */
134.105 + public static void paint(Graphics g, int x, int y, int w, int h,
134.106 + Image image, Insets sInsets,
134.107 + Insets dInsets, PaintType paintType, int mask) {
134.108 + if (image == null || image.getWidth(null) <= 0 || image.getHeight(null) <= 0) {
134.109 + return;
134.110 + }
134.111 + if (sInsets == null) {
134.112 + sInsets = EMPTY_INSETS;
134.113 + }
134.114 + if (dInsets == null) {
134.115 + dInsets = EMPTY_INSETS;
134.116 + }
134.117 + int iw = image.getWidth(null);
134.118 + int ih = image.getHeight(null);
134.119 +
134.120 + if (paintType == PaintType.CENTER) {
134.121 + // Center the image
134.122 + g.drawImage(image, x + (w - iw) / 2,
134.123 + y + (h - ih) / 2, null);
134.124 + } else if (paintType == PaintType.TILE) {
134.125 + // Tile the image
134.126 + int lastIY = 0;
134.127 + for (int yCounter = y, maxY = y + h; yCounter < maxY;
134.128 + yCounter += (ih - lastIY), lastIY = 0) {
134.129 + int lastIX = 0;
134.130 + for (int xCounter = x, maxX = x + w; xCounter < maxX;
134.131 + xCounter += (iw - lastIX), lastIX = 0) {
134.132 + int dx2 = Math.min(maxX, xCounter + iw - lastIX);
134.133 + int dy2 = Math.min(maxY, yCounter + ih - lastIY);
134.134 + g.drawImage(image, xCounter, yCounter, dx2, dy2,
134.135 + lastIX, lastIY, lastIX + dx2 - xCounter,
134.136 + lastIY + dy2 - yCounter, null);
134.137 + }
134.138 + }
134.139 + } else {
134.140 + int st = sInsets.top;
134.141 + int sl = sInsets.left;
134.142 + int sb = sInsets.bottom;
134.143 + int sr = sInsets.right;
134.144 +
134.145 + int dt = dInsets.top;
134.146 + int dl = dInsets.left;
134.147 + int db = dInsets.bottom;
134.148 + int dr = dInsets.right;
134.149 +
134.150 + // Constrain the insets to the size of the image
134.151 + if (st + sb > ih) {
134.152 + db = dt = sb = st = Math.max(0, ih / 2);
134.153 + }
134.154 + if (sl + sr > iw) {
134.155 + dl = dr = sl = sr = Math.max(0, iw / 2);
134.156 + }
134.157 +
134.158 + // Constrain the insets to the size of the region we're painting
134.159 + // in.
134.160 + if (dt + db > h) {
134.161 + dt = db = Math.max(0, h / 2 - 1);
134.162 + }
134.163 + if (dl + dr > w) {
134.164 + dl = dr = Math.max(0, w / 2 - 1);
134.165 + }
134.166 +
134.167 + boolean stretch = (paintType == PaintType.PAINT9_STRETCH);
134.168 + if ((mask & PAINT_ALL) != 0) {
134.169 + mask = (PAINT_ALL - 1) & ~mask;
134.170 + }
134.171 +
134.172 + if ((mask & PAINT_LEFT) != 0) {
134.173 + drawChunk(image, g, stretch, x, y + dt, x + dl, y + h - db,
134.174 + 0, st, sl, ih - sb, false);
134.175 + }
134.176 + if ((mask & PAINT_TOP_LEFT) != 0) {
134.177 + drawImage(image, g, x, y, x + dl, y + dt,
134.178 + 0, 0, sl, st);
134.179 + }
134.180 + if ((mask & PAINT_TOP) != 0) {
134.181 + drawChunk(image, g, stretch, x + dl, y, x + w - dr, y + dt,
134.182 + sl, 0, iw - sr, st, true);
134.183 + }
134.184 + if ((mask & PAINT_TOP_RIGHT) != 0) {
134.185 + drawImage(image, g, x + w - dr, y, x + w, y + dt,
134.186 + iw - sr, 0, iw, st);
134.187 + }
134.188 + if ((mask & PAINT_RIGHT) != 0) {
134.189 + drawChunk(image, g, stretch,
134.190 + x + w - dr, y + dt, x + w, y + h - db,
134.191 + iw - sr, st, iw, ih - sb, false);
134.192 + }
134.193 + if ((mask & PAINT_BOTTOM_RIGHT) != 0) {
134.194 + drawImage(image, g, x + w - dr, y + h - db, x + w, y + h,
134.195 + iw - sr, ih - sb, iw, ih);
134.196 + }
134.197 + if ((mask & PAINT_BOTTOM) != 0) {
134.198 + drawChunk(image, g, stretch,
134.199 + x + dl, y + h - db, x + w - dr, y + h,
134.200 + sl, ih - sb, iw - sr, ih, true);
134.201 + }
134.202 + if ((mask & PAINT_BOTTOM_LEFT) != 0) {
134.203 + drawImage(image, g, x, y + h - db, x + dl, y + h,
134.204 + 0, ih - sb, sl, ih);
134.205 + }
134.206 + if ((mask & PAINT_CENTER) != 0) {
134.207 + drawImage(image, g, x + dl, y + dt, x + w - dr, y + h - db,
134.208 + sl, st, iw - sr, ih - sb);
134.209 + }
134.210 + }
134.211 + }
134.212 +
134.213 + /**
134.214 + * Draws a portion of an image, stretched or tiled.
134.215 + *
134.216 + * @param image Image to render.
134.217 + * @param g Graphics to render to
134.218 + * @param stretch Whether the image should be stretched or timed in the
134.219 + * provided space.
134.220 + * @param dx1 X origin to draw to
134.221 + * @param dy1 Y origin to draw to
134.222 + * @param dx2 End x location to draw to
134.223 + * @param dy2 End y location to draw to
134.224 + * @param sx1 X origin to draw from
134.225 + * @param sy1 Y origin to draw from
134.226 + * @param sx2 Max x location to draw from
134.227 + * @param sy2 Max y location to draw from
134.228 + * @param xDirection Used if the image is not stretched. If true it
134.229 + * indicates the image should be tiled along the x axis.
134.230 + */
134.231 + private static void drawChunk(Image image, Graphics g, boolean stretch,
134.232 + int dx1, int dy1, int dx2, int dy2, int sx1,
134.233 + int sy1, int sx2, int sy2,
134.234 + boolean xDirection) {
134.235 + if (dx2 - dx1 <= 0 || dy2 - dy1 <= 0 || sx2 - sx1 <= 0 ||
134.236 + sy2 - sy1 <= 0) {
134.237 + // Bogus location, nothing to paint
134.238 + return;
134.239 + }
134.240 + if (stretch) {
134.241 + g.drawImage(image, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, null);
134.242 + }
134.243 + else {
134.244 + int xSize = sx2 - sx1;
134.245 + int ySize = sy2 - sy1;
134.246 + int deltaX;
134.247 + int deltaY;
134.248 +
134.249 + if (xDirection) {
134.250 + deltaX = xSize;
134.251 + deltaY = 0;
134.252 + }
134.253 + else {
134.254 + deltaX = 0;
134.255 + deltaY = ySize;
134.256 + }
134.257 + while (dx1 < dx2 && dy1 < dy2) {
134.258 + int newDX2 = Math.min(dx2, dx1 + xSize);
134.259 + int newDY2 = Math.min(dy2, dy1 + ySize);
134.260 +
134.261 + g.drawImage(image, dx1, dy1, newDX2, newDY2,
134.262 + sx1, sy1, sx1 + newDX2 - dx1,
134.263 + sy1 + newDY2 - dy1, null);
134.264 + dx1 += deltaX;
134.265 + dy1 += deltaY;
134.266 + }
134.267 + }
134.268 + }
134.269 +
134.270 + private static void drawImage(Image image, Graphics g,
134.271 + int dx1, int dy1, int dx2, int dy2, int sx1,
134.272 + int sy1, int sx2, int sy2) {
134.273 + // PENDING: is this necessary, will G2D do it for me?
134.274 + if (dx2 - dx1 <= 0 || dy2 - dy1 <= 0 || sx2 - sx1 <= 0 ||
134.275 + sy2 - sy1 <= 0) {
134.276 + // Bogus location, nothing to paint
134.277 + return;
134.278 + }
134.279 + g.drawImage(image, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, null);
134.280 + }
134.281 +
134.282 +
134.283 +}
135.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
135.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/InnerGlowEffect.java Wed Apr 29 00:27:46 2009 -0700
135.3 @@ -0,0 +1,39 @@
135.4 +/*
135.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
135.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
135.7 + *
135.8 + * This code is free software; you can redistribute it and/or modify it
135.9 + * under the terms of the GNU General Public License version 2 only, as
135.10 + * published by the Free Software Foundation. Sun designates this
135.11 + * particular file as subject to the "Classpath" exception as provided
135.12 + * by Sun in the LICENSE file that accompanied this code.
135.13 + *
135.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
135.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
135.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
135.17 + * version 2 for more details (a copy is included in the LICENSE file that
135.18 + * accompanied this code).
135.19 + *
135.20 + * You should have received a copy of the GNU General Public License version
135.21 + * 2 along with this work; if not, write to the Free Software Foundation,
135.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
135.23 + *
135.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
135.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
135.26 + * have any questions.
135.27 + */
135.28 +package javax.swing.plaf.nimbus;
135.29 +
135.30 +import java.awt.Color;
135.31 +
135.32 +/**
135.33 + * InnerGlowEffect
135.34 + *
135.35 + * @author Created by Jasper Potts (Jun 21, 2007)
135.36 + */
135.37 +class InnerGlowEffect extends InnerShadowEffect {
135.38 + InnerGlowEffect() {
135.39 + distance = 0;
135.40 + color = new Color(255, 255, 211);
135.41 + }
135.42 +}
136.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
136.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/InnerShadowEffect.java Wed Apr 29 00:27:46 2009 -0700
136.3 @@ -0,0 +1,131 @@
136.4 +/*
136.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
136.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
136.7 + *
136.8 + * This code is free software; you can redistribute it and/or modify it
136.9 + * under the terms of the GNU General Public License version 2 only, as
136.10 + * published by the Free Software Foundation. Sun designates this
136.11 + * particular file as subject to the "Classpath" exception as provided
136.12 + * by Sun in the LICENSE file that accompanied this code.
136.13 + *
136.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
136.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
136.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
136.17 + * version 2 for more details (a copy is included in the LICENSE file that
136.18 + * accompanied this code).
136.19 + *
136.20 + * You should have received a copy of the GNU General Public License version
136.21 + * 2 along with this work; if not, write to the Free Software Foundation,
136.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
136.23 + *
136.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
136.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
136.26 + * have any questions.
136.27 + */
136.28 +package javax.swing.plaf.nimbus;
136.29 +
136.30 +import java.awt.image.BufferedImage;
136.31 +import java.awt.image.Raster;
136.32 +import java.awt.image.WritableRaster;
136.33 +import java.util.Arrays;
136.34 +
136.35 +/**
136.36 + * InnerShadowEffect - This effect currently only works with ARGB type buffered
136.37 + * images.
136.38 + *
136.39 + * @author Created by Jasper Potts (Jun 18, 2007)
136.40 + */
136.41 +class InnerShadowEffect extends ShadowEffect {
136.42 +
136.43 + // =================================================================================================================
136.44 + // Effect Methods
136.45 +
136.46 + /**
136.47 + * Get the type of this effect, one of UNDER,BLENDED,OVER. UNDER means the result of apply effect should be painted
136.48 + * under the src image. BLENDED means the result of apply sffect contains a modified src image so just it should be
136.49 + * painted. OVER means the result of apply effect should be painted over the src image.
136.50 + *
136.51 + * @return The effect type
136.52 + */
136.53 + Effect.EffectType getEffectType() {
136.54 + return Effect.EffectType.OVER;
136.55 + }
136.56 +
136.57 + /**
136.58 + * Apply the effect to the src image generating the result . The result image may or may not contain the source
136.59 + * image depending on what the effect type is.
136.60 + *
136.61 + * @param src The source image for applying the effect to
136.62 + * @param dst The dstination image to paint effect result into. If this is null then a new image will be created
136.63 + * @param w The width of the src image to apply effect to, this allow the src and dst buffers to be bigger than
136.64 + * the area the need effect applied to it
136.65 + * @param h The height of the src image to apply effect to, this allow the src and dst buffers to be bigger than
136.66 + * the area the need effect applied to it
136.67 + * @return Image with the result of the effect
136.68 + */
136.69 + BufferedImage applyEffect(BufferedImage src, BufferedImage dst, int w, int h) {
136.70 + if (src == null || src.getType() != BufferedImage.TYPE_INT_ARGB){
136.71 + throw new IllegalArgumentException("Effect only works with " +
136.72 + "source images of type BufferedImage.TYPE_INT_ARGB.");
136.73 + }
136.74 + if (dst != null && dst.getType() != BufferedImage.TYPE_INT_ARGB){
136.75 + throw new IllegalArgumentException("Effect only works with " +
136.76 + "destination images of type BufferedImage.TYPE_INT_ARGB.");
136.77 + }
136.78 + // calculate offset
136.79 + double trangleAngle = Math.toRadians(angle - 90);
136.80 + int offsetX = (int) (Math.sin(trangleAngle) * distance);
136.81 + int offsetY = (int) (Math.cos(trangleAngle) * distance);
136.82 + // clac expanded size
136.83 + int tmpOffX = offsetX + size;
136.84 + int tmpOffY = offsetX + size;
136.85 + int tmpW = w + offsetX + size + size;
136.86 + int tmpH = h + offsetX + size;
136.87 + // create tmp buffers
136.88 + int[] lineBuf = getArrayCache().getTmpIntArray(w);
136.89 + byte[] srcAlphaBuf = getArrayCache().getTmpByteArray1(tmpW * tmpH);
136.90 + Arrays.fill(srcAlphaBuf, (byte) 0xFF);
136.91 + byte[] tmpBuf1 = getArrayCache().getTmpByteArray2(tmpW * tmpH);
136.92 + byte[] tmpBuf2 = getArrayCache().getTmpByteArray3(tmpW * tmpH);
136.93 + // extract src image alpha channel and inverse and offset
136.94 + Raster srcRaster = src.getRaster();
136.95 + for (int y = 0; y < h; y++) {
136.96 + int dy = (y + tmpOffY);
136.97 + int offset = dy * tmpW;
136.98 + srcRaster.getDataElements(0, y, w, 1, lineBuf);
136.99 + for (int x = 0; x < w; x++) {
136.100 + int dx = x + tmpOffX;
136.101 + srcAlphaBuf[offset + dx] = (byte) ((255 - ((lineBuf[x] & 0xFF000000) >>> 24)) & 0xFF);
136.102 + }
136.103 + }
136.104 + // blur
136.105 + float[] kernel = EffectUtils.createGaussianKernel(size * 2);
136.106 + EffectUtils.blur(srcAlphaBuf, tmpBuf2, tmpW, tmpH, kernel, size * 2); // horizontal pass
136.107 + EffectUtils.blur(tmpBuf2, tmpBuf1, tmpH, tmpW, kernel, size * 2);// vertical pass
136.108 + //rescale
136.109 + float spread = Math.min(1 / (1 - (0.01f * this.spread)), 255);
136.110 + for (int i = 0; i < tmpBuf1.length; i++) {
136.111 + int val = (int) (((int) tmpBuf1[i] & 0xFF) * spread);
136.112 + tmpBuf1[i] = (val > 255) ? (byte) 0xFF : (byte) val;
136.113 + }
136.114 + // create color image with shadow color and greyscale image as alpha
136.115 + if (dst == null) dst = new BufferedImage(w, h,
136.116 + BufferedImage.TYPE_INT_ARGB);
136.117 + WritableRaster shadowRaster = dst.getRaster();
136.118 + int red = color.getRed(), green = color.getGreen(), blue = color.getBlue();
136.119 + for (int y = 0; y < h; y++) {
136.120 + int srcY = y + tmpOffY;
136.121 + int offset = srcY * tmpW;
136.122 + int shadowOffset = (srcY - offsetY) * tmpW;
136.123 + for (int x = 0; x < w; x++) {
136.124 + int srcX = x + tmpOffX;
136.125 + int origianlAlphaVal = 255 - ((int) srcAlphaBuf[offset + srcX] & 0xFF);
136.126 + int shadowVal = (int) tmpBuf1[shadowOffset + (srcX - offsetX)] & 0xFF;
136.127 + int alphaVal = Math.min(origianlAlphaVal, shadowVal);
136.128 + lineBuf[x] = ((byte) alphaVal & 0xFF) << 24 | red << 16 | green << 8 | blue;
136.129 + }
136.130 + shadowRaster.setDataElements(0, y, w, 1, lineBuf);
136.131 + }
136.132 + return dst;
136.133 + }
136.134 +}
137.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
137.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/LoweredBorder.java Wed Apr 29 00:27:46 2009 -0700
137.3 @@ -0,0 +1,201 @@
137.4 +/*
137.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
137.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
137.7 + *
137.8 + * This code is free software; you can redistribute it and/or modify it
137.9 + * under the terms of the GNU General Public License version 2 only, as
137.10 + * published by the Free Software Foundation. Sun designates this
137.11 + * particular file as subject to the "Classpath" exception as provided
137.12 + * by Sun in the LICENSE file that accompanied this code.
137.13 + *
137.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
137.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
137.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
137.17 + * version 2 for more details (a copy is included in the LICENSE file that
137.18 + * accompanied this code).
137.19 + *
137.20 + * You should have received a copy of the GNU General Public License version
137.21 + * 2 along with this work; if not, write to the Free Software Foundation,
137.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
137.23 + *
137.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
137.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
137.26 + * have any questions.
137.27 + */
137.28 +package javax.swing.plaf.nimbus;
137.29 +
137.30 +import javax.swing.border.Border;
137.31 +import javax.swing.JComponent;
137.32 +import javax.swing.plaf.UIResource;
137.33 +import java.awt.Insets;
137.34 +import java.awt.Component;
137.35 +import java.awt.Graphics;
137.36 +import java.awt.Graphics2D;
137.37 +import java.awt.Color;
137.38 +import java.awt.Transparency;
137.39 +import java.awt.RenderingHints;
137.40 +import java.awt.Dimension;
137.41 +import java.awt.image.BufferedImage;
137.42 +
137.43 +/**
137.44 + * LoweredBorder - A recessed rounded inner shadowed border. Used as the
137.45 + * standard Nimbus TitledBorder. This class is both a painter and a swing
137.46 + * border.
137.47 + *
137.48 + * @author Jasper Potts
137.49 + */
137.50 +class LoweredBorder extends AbstractRegionPainter implements Border {
137.51 + private static final int IMG_SIZE = 30;
137.52 + private static final int RADIUS = 13;
137.53 + private static final Insets INSETS = new Insets(10,10,10,10);
137.54 + private static final PaintContext PAINT_CONTEXT = new PaintContext(INSETS,
137.55 + new Dimension(IMG_SIZE,IMG_SIZE),false,
137.56 + PaintContext.CacheMode.NINE_SQUARE_SCALE,
137.57 + Integer.MAX_VALUE, Integer.MAX_VALUE);
137.58 +
137.59 + // =========================================================================
137.60 + // Painter Methods
137.61 +
137.62 + @Override
137.63 + protected Object[] getExtendedCacheKeys(JComponent c) {
137.64 + return new Object[] {c.getBackground()};
137.65 + }
137.66 +
137.67 + /**
137.68 + * Actually performs the painting operation. Subclasses must implement this
137.69 + * method. The graphics object passed may represent the actual surface being
137.70 + * rendererd to, or it may be an intermediate buffer. It has also been
137.71 + * pre-translated. Simply render the component as if it were located at 0, 0
137.72 + * and had a width of <code>width</code> and a height of
137.73 + * <code>height</code>. For performance reasons, you may want to read the
137.74 + * clip from the Graphics2D object and only render within that space.
137.75 + *
137.76 + * @param g The Graphics2D surface to paint to
137.77 + * @param c The JComponent related to the drawing event. For example,
137.78 + * if the region being rendered is Button, then <code>c</code>
137.79 + * will be a JButton. If the region being drawn is
137.80 + * ScrollBarSlider, then the component will be JScrollBar.
137.81 + * This value may be null.
137.82 + * @param width The width of the region to paint. Note that in the case of
137.83 + * painting the foreground, this value may differ from
137.84 + * c.getWidth().
137.85 + * @param height The height of the region to paint. Note that in the case of
137.86 + * painting the foreground, this value may differ from
137.87 + * c.getHeight().
137.88 + */
137.89 + protected void doPaint(Graphics2D g, JComponent c, int width, int height,
137.90 + Object[] extendedCacheKeys) {
137.91 + BufferedImage img1 = new BufferedImage(IMG_SIZE,IMG_SIZE,
137.92 + BufferedImage.TYPE_INT_ARGB);
137.93 + BufferedImage img2 = new BufferedImage(IMG_SIZE,IMG_SIZE,
137.94 + BufferedImage.TYPE_INT_ARGB);
137.95 + // draw shadow shape
137.96 + Graphics2D g2 = (Graphics2D)img1.getGraphics();
137.97 + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
137.98 + RenderingHints.VALUE_ANTIALIAS_ON);
137.99 + g2.setColor(c.getBackground());
137.100 + g2.fillRoundRect(2,0,26,26,RADIUS,RADIUS);
137.101 + g2.dispose();
137.102 + // draw shadow
137.103 + InnerShadowEffect effect = new InnerShadowEffect();
137.104 + effect.setDistance(1);
137.105 + effect.setSize(3);
137.106 + effect.setColor(getLighter(c.getBackground(),2.1f));
137.107 + effect.setAngle(90);
137.108 + effect.applyEffect(img1,img2,IMG_SIZE,IMG_SIZE);
137.109 + // draw outline to img2
137.110 + g2 = (Graphics2D)img2.getGraphics();
137.111 + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
137.112 + RenderingHints.VALUE_ANTIALIAS_ON);
137.113 + g2.setClip(0,28,IMG_SIZE,1);
137.114 + g2.setColor(getLighter(c.getBackground(),0.90f));
137.115 + g2.drawRoundRect(2,1,25,25,RADIUS,RADIUS);
137.116 + g2.dispose();
137.117 + // draw final image
137.118 + if (width != IMG_SIZE || height != IMG_SIZE){
137.119 + ImageScalingHelper.paint(g,0,0,width,height,img2, INSETS, INSETS,
137.120 + ImageScalingHelper.PaintType.PAINT9_STRETCH,
137.121 + ImageScalingHelper.PAINT_ALL);
137.122 + } else {
137.123 + g.drawImage(img2,0,0,c);
137.124 + }
137.125 + img1 = null;
137.126 + img2 = null;
137.127 + }
137.128 +
137.129 + /**
137.130 + * <p>Gets the PaintContext for this painting operation. This method is
137.131 + * called on every paint, and so should be fast and produce no garbage. The
137.132 + * PaintContext contains information such as cache hints. It also contains
137.133 + * data necessary for decoding points at runtime, such as the stretching
137.134 + * insets, the canvas size at which the encoded points were defined, and
137.135 + * whether the stretching insets are inverted.</p>
137.136 + * <p/>
137.137 + * <p> This method allows for subclasses to package the painting of
137.138 + * different states with possibly different canvas sizes, etc, into one
137.139 + * AbstractRegionPainter implementation.</p>
137.140 + *
137.141 + * @return a PaintContext associated with this paint operation.
137.142 + */
137.143 + protected PaintContext getPaintContext() {
137.144 + return PAINT_CONTEXT;
137.145 + }
137.146 +
137.147 + // =========================================================================
137.148 + // Border Methods
137.149 +
137.150 + /**
137.151 + * Returns the insets of the border.
137.152 + *
137.153 + * @param c the component for which this border insets value applies
137.154 + */
137.155 + public Insets getBorderInsets(Component c) {
137.156 + return INSETS;
137.157 + }
137.158 +
137.159 + /**
137.160 + * Returns whether or not the border is opaque. If the border is opaque, it
137.161 + * is responsible for filling in it's own background when painting.
137.162 + */
137.163 + public boolean isBorderOpaque() {
137.164 + return false;
137.165 + }
137.166 +
137.167 + /**
137.168 + * Paints the border for the specified component with the specified position
137.169 + * and size.
137.170 + *
137.171 + * @param c the component for which this border is being painted
137.172 + * @param g the paint graphics
137.173 + * @param x the x position of the painted border
137.174 + * @param y the y position of the painted border
137.175 + * @param width the width of the painted border
137.176 + * @param height the height of the painted border
137.177 + */
137.178 + public void paintBorder(Component c, Graphics g, int x, int y, int width,
137.179 + int height) {
137.180 + JComponent comp = (c instanceof JComponent)?(JComponent)c:null;
137.181 + if (g instanceof Graphics2D){
137.182 + Graphics2D g2 = (Graphics2D)g;
137.183 + g2.translate(x,y);
137.184 + paint(g2,comp, width, height);
137.185 + g2.translate(-x,-y);
137.186 + } else {
137.187 + BufferedImage img = new BufferedImage(IMG_SIZE,IMG_SIZE,
137.188 + BufferedImage.TYPE_INT_ARGB);
137.189 + Graphics2D g2 = (Graphics2D)img.getGraphics();
137.190 + paint(g2,comp, width, height);
137.191 + g2.dispose();
137.192 + ImageScalingHelper.paint(g,x,y,width,height,img,INSETS, INSETS,
137.193 + ImageScalingHelper.PaintType.PAINT9_STRETCH,
137.194 + ImageScalingHelper.PAINT_ALL);
137.195 + }
137.196 + }
137.197 +
137.198 + private Color getLighter(Color c, float factor){
137.199 + return new Color(Math.min((int)(c.getRed()/factor), 255),
137.200 + Math.min((int)(c.getGreen()/factor), 255),
137.201 + Math.min((int)(c.getBlue()/factor), 255));
137.202 + }
137.203 +}
137.204 +
138.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
138.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/NimbusIcon.java Wed Apr 29 00:27:46 2009 -0700
138.3 @@ -0,0 +1,223 @@
138.4 +/*
138.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
138.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
138.7 + *
138.8 + * This code is free software; you can redistribute it and/or modify it
138.9 + * under the terms of the GNU General Public License version 2 only, as
138.10 + * published by the Free Software Foundation. Sun designates this
138.11 + * particular file as subject to the "Classpath" exception as provided
138.12 + * by Sun in the LICENSE file that accompanied this code.
138.13 + *
138.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
138.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
138.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
138.17 + * version 2 for more details (a copy is included in the LICENSE file that
138.18 + * accompanied this code).
138.19 + *
138.20 + * You should have received a copy of the GNU General Public License version
138.21 + * 2 along with this work; if not, write to the Free Software Foundation,
138.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
138.23 + *
138.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
138.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
138.26 + * have any questions.
138.27 + */
138.28 +package javax.swing.plaf.nimbus;
138.29 +
138.30 +import javax.swing.Painter;
138.31 +import sun.swing.plaf.synth.SynthIcon;
138.32 +
138.33 +import javax.swing.plaf.synth.SynthContext;
138.34 +import javax.swing.*;
138.35 +import java.awt.*;
138.36 +import java.awt.image.BufferedImage;
138.37 +import javax.swing.plaf.UIResource;
138.38 +
138.39 +/**
138.40 + * An icon that delegates to a painter.
138.41 + * @author rbair
138.42 + */
138.43 +class NimbusIcon extends SynthIcon {
138.44 + private int width;
138.45 + private int height;
138.46 + private String prefix;
138.47 + private String key;
138.48 +
138.49 + NimbusIcon(String prefix, String key, int w, int h) {
138.50 + this.width = w;
138.51 + this.height = h;
138.52 + this.prefix = prefix;
138.53 + this.key = key;
138.54 + }
138.55 +
138.56 + @Override
138.57 + public void paintIcon(SynthContext context, Graphics g, int x, int y,
138.58 + int w, int h) {
138.59 + Painter painter = null;
138.60 + if (context != null) {
138.61 + painter = (Painter)context.getStyle().get(context, key);
138.62 + }
138.63 + if (painter == null){
138.64 + painter = (Painter) UIManager.get(prefix + "[Enabled]." + key);
138.65 + }
138.66 +
138.67 + if (painter != null && context != null) {
138.68 + JComponent c = context.getComponent();
138.69 + boolean rotate = false;
138.70 + boolean flip = false;
138.71 + //translatex and translatey are additional translations that
138.72 + //must occur on the graphics context when rendering a toolbar
138.73 + //icon
138.74 + int translatex = 0;
138.75 + int translatey = 0;
138.76 + if (c instanceof JToolBar) {
138.77 + JToolBar toolbar = (JToolBar)c;
138.78 + rotate = toolbar.getOrientation() == JToolBar.VERTICAL;
138.79 + flip = !toolbar.getComponentOrientation().isLeftToRight();
138.80 + Object o = NimbusLookAndFeel.resolveToolbarConstraint(toolbar);
138.81 + //we only do the +1 hack for UIResource borders, assuming
138.82 + //that the border is probably going to be our border
138.83 + if (toolbar.getBorder() instanceof UIResource) {
138.84 + if (o == BorderLayout.SOUTH) {
138.85 + translatey = 1;
138.86 + } else if (o == BorderLayout.EAST) {
138.87 + translatex = 1;
138.88 + }
138.89 + }
138.90 + }
138.91 + if (g instanceof Graphics2D){
138.92 + Graphics2D gfx = (Graphics2D)g;
138.93 + gfx.translate(x, y);
138.94 + gfx.translate(translatex, translatey);
138.95 + if (rotate) {
138.96 + gfx.rotate(Math.toRadians(90));
138.97 + gfx.translate(0, -w);
138.98 + painter.paint(gfx, context.getComponent(), h, w);
138.99 + gfx.translate(0, w);
138.100 + gfx.rotate(Math.toRadians(-90));
138.101 + } else if (flip){
138.102 + gfx.scale(-1, 1);
138.103 + gfx.translate(-w,0);
138.104 + painter.paint(gfx, context.getComponent(), w, h);
138.105 + gfx.translate(w,0);
138.106 + gfx.scale(-1, 1);
138.107 + } else {
138.108 + painter.paint(gfx, context.getComponent(), w, h);
138.109 + }
138.110 + gfx.translate(-translatex, -translatey);
138.111 + gfx.translate(-x, -y);
138.112 + } else {
138.113 + // use image if we are printing to a Java 1.1 PrintGraphics as
138.114 + // it is not a instance of Graphics2D
138.115 + BufferedImage img = new BufferedImage(w,h,
138.116 + BufferedImage.TYPE_INT_ARGB);
138.117 + Graphics2D gfx = img.createGraphics();
138.118 + if (rotate) {
138.119 + gfx.rotate(Math.toRadians(90));
138.120 + gfx.translate(0, -w);
138.121 + painter.paint(gfx, context.getComponent(), h, w);
138.122 + } else if (flip){
138.123 + gfx.scale(-1, 1);
138.124 + gfx.translate(-w,0);
138.125 + painter.paint(gfx, context.getComponent(), w, h);
138.126 + } else {
138.127 + painter.paint(gfx, context.getComponent(), w, h);
138.128 + }
138.129 + gfx.dispose();
138.130 + g.drawImage(img,x,y,null);
138.131 + img = null;
138.132 + }
138.133 + }
138.134 + }
138.135 +
138.136 + /**
138.137 + * Implements the standard Icon interface's paintIcon method as the standard
138.138 + * synth stub passes null for the context and this will cause us to not
138.139 + * paint any thing, so we override here so that we can paint the enabled
138.140 + * state if no synth context is available
138.141 + */
138.142 + @Override
138.143 + public void paintIcon(Component c, Graphics g, int x, int y) {
138.144 + Painter painter = (Painter)UIManager.get(prefix + "[Enabled]." + key);
138.145 + if (painter != null){
138.146 + JComponent jc = (c instanceof JComponent) ? (JComponent)c : null;
138.147 + Graphics2D gfx = (Graphics2D)g;
138.148 + gfx.translate(x, y);
138.149 + painter.paint(gfx, jc , width, height);
138.150 + gfx.translate(-x, -y);
138.151 + }
138.152 + }
138.153 +
138.154 + @Override
138.155 + public int getIconWidth(SynthContext context) {
138.156 + if (context == null) {
138.157 + return width;
138.158 + }
138.159 + JComponent c = context.getComponent();
138.160 + if (c instanceof JToolBar && ((JToolBar)c).getOrientation() == JToolBar.VERTICAL) {
138.161 + //we only do the -1 hack for UIResource borders, assuming
138.162 + //that the border is probably going to be our border
138.163 + if (c.getBorder() instanceof UIResource) {
138.164 + return c.getWidth() - 1;
138.165 + } else {
138.166 + return c.getWidth();
138.167 + }
138.168 + } else {
138.169 + return scale(context, width);
138.170 + }
138.171 + }
138.172 +
138.173 + @Override
138.174 + public int getIconHeight(SynthContext context) {
138.175 + if (context == null) {
138.176 + return height;
138.177 + }
138.178 + JComponent c = context.getComponent();
138.179 + if (c instanceof JToolBar){
138.180 + JToolBar toolbar = (JToolBar)c;
138.181 + if (toolbar.getOrientation() == JToolBar.HORIZONTAL) {
138.182 + //we only do the -1 hack for UIResource borders, assuming
138.183 + //that the border is probably going to be our border
138.184 + if (toolbar.getBorder() instanceof UIResource) {
138.185 + return c.getHeight() - 1;
138.186 + } else {
138.187 + return c.getHeight();
138.188 + }
138.189 + } else {
138.190 + return scale(context, width);
138.191 + }
138.192 + } else {
138.193 + return scale(context, height);
138.194 + }
138.195 + }
138.196 +
138.197 + /**
138.198 + * Scale a size based on the "JComponent.sizeVariant" client property of the
138.199 + * component that is using this icon
138.200 + *
138.201 + * @param context The synthContext to get the component from
138.202 + * @param size The size to scale
138.203 + * @return The scaled size or original if "JComponent.sizeVariant" is not
138.204 + * set
138.205 + */
138.206 + private int scale(SynthContext context, int size) {
138.207 + if (context == null || context.getComponent() == null){
138.208 + return size;
138.209 + }
138.210 + // The key "JComponent.sizeVariant" is used to match Apple's LAF
138.211 + String scaleKey = (String) context.getComponent().getClientProperty(
138.212 + "JComponent.sizeVariant");
138.213 + if (scaleKey != null) {
138.214 + if (NimbusStyle.LARGE_KEY.equals(scaleKey)) {
138.215 + size *= NimbusStyle.LARGE_SCALE;
138.216 + } else if (NimbusStyle.SMALL_KEY.equals(scaleKey)) {
138.217 + size *= NimbusStyle.SMALL_SCALE;
138.218 + } else if (NimbusStyle.MINI_KEY.equals(scaleKey)) {
138.219 + // mini is not quite as small for icons as full mini is
138.220 + // just too tiny
138.221 + size *= NimbusStyle.MINI_SCALE + 0.07;
138.222 + }
138.223 + }
138.224 + return size;
138.225 + }
138.226 +}
139.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
139.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java Wed Apr 29 00:27:46 2009 -0700
139.3 @@ -0,0 +1,520 @@
139.4 +/*
139.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
139.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
139.7 + *
139.8 + * This code is free software; you can redistribute it and/or modify it
139.9 + * under the terms of the GNU General Public License version 2 only, as
139.10 + * published by the Free Software Foundation. Sun designates this
139.11 + * particular file as subject to the "Classpath" exception as provided
139.12 + * by Sun in the LICENSE file that accompanied this code.
139.13 + *
139.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
139.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
139.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
139.17 + * version 2 for more details (a copy is included in the LICENSE file that
139.18 + * accompanied this code).
139.19 + *
139.20 + * You should have received a copy of the GNU General Public License version
139.21 + * 2 along with this work; if not, write to the Free Software Foundation,
139.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
139.23 + *
139.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
139.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
139.26 + * have any questions.
139.27 + */
139.28 +package javax.swing.plaf.nimbus;
139.29 +
139.30 +import java.awt.BorderLayout;
139.31 +import static java.awt.BorderLayout.*;
139.32 +import javax.swing.JComponent;
139.33 +import javax.swing.UIDefaults;
139.34 +import javax.swing.UIManager;
139.35 +import javax.swing.plaf.synth.Region;
139.36 +import javax.swing.plaf.synth.SynthLookAndFeel;
139.37 +import javax.swing.plaf.synth.SynthStyle;
139.38 +import javax.swing.plaf.synth.SynthStyleFactory;
139.39 +import javax.swing.plaf.UIResource;
139.40 +import java.security.AccessController;
139.41 +import java.awt.Color;
139.42 +import java.awt.Container;
139.43 +import java.awt.Graphics2D;
139.44 +import java.awt.LayoutManager;
139.45 +import java.awt.image.BufferedImage;
139.46 +import javax.swing.GrayFilter;
139.47 +import javax.swing.Icon;
139.48 +import javax.swing.JToolBar;
139.49 +import javax.swing.border.TitledBorder;
139.50 +import javax.swing.plaf.BorderUIResource;
139.51 +import javax.swing.plaf.ColorUIResource;
139.52 +import sun.swing.ImageIconUIResource;
139.53 +import sun.swing.plaf.synth.SynthIcon;
139.54 +import sun.swing.plaf.GTKKeybindings;
139.55 +import sun.swing.plaf.WindowsKeybindings;
139.56 +import sun.security.action.GetPropertyAction;
139.57 +
139.58 +/**
139.59 + * <p>The NimbusLookAndFeel class.</p>
139.60 + *
139.61 + * @author Jasper Potts
139.62 + * @author Richard Bair
139.63 + */
139.64 +public class NimbusLookAndFeel extends SynthLookAndFeel {
139.65 +
139.66 + /** Set of standard region names for UIDefaults Keys */
139.67 + private static final String[] COMPONENT_KEYS = new String[]{"ArrowButton", "Button",
139.68 + "CheckBox", "CheckBoxMenuItem", "ColorChooser", "ComboBox",
139.69 + "DesktopPane", "DesktopIcon", "EditorPane", "FileChooser",
139.70 + "FormattedTextField", "InternalFrame",
139.71 + "InternalFrameTitlePane", "Label", "List", "Menu",
139.72 + "MenuBar", "MenuItem", "OptionPane", "Panel",
139.73 + "PasswordField", "PopupMenu", "PopupMenuSeparator",
139.74 + "ProgressBar", "RadioButton", "RadioButtonMenuItem",
139.75 + "RootPane", "ScrollBar", "ScrollBarTrack", "ScrollBarThumb",
139.76 + "ScrollPane", "Separator", "Slider", "SliderTrack",
139.77 + "SliderThumb", "Spinner", "SplitPane", "TabbedPane",
139.78 + "Table", "TableHeader", "TextArea", "TextField", "TextPane",
139.79 + "ToggleButton", "ToolBar", "ToolTip", "Tree", "Viewport"};
139.80 +
139.81 + /**
139.82 + * A reference to the auto-generated file NimbusDefaults. This file contains
139.83 + * the default mappings and values for the look and feel as specified in the
139.84 + * visual designer.
139.85 + */
139.86 + private NimbusDefaults defaults;
139.87 +
139.88 + /**
139.89 + * Reference to populated LAD uidefaults
139.90 + */
139.91 + private UIDefaults uiDefaults;
139.92 +
139.93 + /**
139.94 + * Create a new NimbusLookAndFeel.
139.95 + */
139.96 + public NimbusLookAndFeel() {
139.97 + super();
139.98 + defaults = new NimbusDefaults();
139.99 + }
139.100 +
139.101 + /** Called by UIManager when this look and feel is installed. */
139.102 + @Override public void initialize() {
139.103 + super.initialize();
139.104 + defaults.initialize();
139.105 + // create synth style factory
139.106 + setStyleFactory(new SynthStyleFactory() {
139.107 + @Override
139.108 + public SynthStyle getStyle(JComponent c, Region r) {
139.109 + return defaults.getStyle(c, r);
139.110 + }
139.111 + });
139.112 + }
139.113 +
139.114 +
139.115 + /** Called by UIManager when this look and feel is uninstalled. */
139.116 + @Override public void uninitialize() {
139.117 + super.uninitialize();
139.118 + defaults.uninitialize();
139.119 + // clear all cached images to free memory
139.120 + ImageCache.getInstance().flush();
139.121 + // remove the listeners and things installed by NimbusStyle
139.122 + NimbusStyle.uninitialize();
139.123 + }
139.124 +
139.125 + /**
139.126 + * @inheritDoc
139.127 + */
139.128 + @Override public UIDefaults getDefaults() {
139.129 + if (uiDefaults == null){
139.130 + // Detect platform
139.131 + String osName = getSystemProperty("os.name");
139.132 + boolean isWindows = osName != null && osName.contains("Windows");
139.133 +
139.134 + // We need to call super for basic's properties file.
139.135 + uiDefaults = super.getDefaults();
139.136 + defaults.initializeDefaults(uiDefaults);
139.137 +
139.138 + // Install Keybindings
139.139 + if (isWindows) {
139.140 + WindowsKeybindings.installKeybindings(uiDefaults);
139.141 + } else {
139.142 + GTKKeybindings.installKeybindings(uiDefaults);
139.143 + }
139.144 +
139.145 + // Add Titled Border
139.146 + uiDefaults.put("TitledBorder.titlePosition",
139.147 + TitledBorder.ABOVE_TOP);
139.148 + uiDefaults.put("TitledBorder.border", new BorderUIResource(
139.149 + new LoweredBorder()));
139.150 + uiDefaults.put("TitledBorder.titleColor",
139.151 + getDerivedColor("text",0.0f,0.0f,0.23f,0,true));
139.152 + uiDefaults.put("TitledBorder.font",
139.153 + new NimbusDefaults.DerivedFont("defaultFont",
139.154 + 1f, true, null));
139.155 +
139.156 + // Choose Dialog button positions
139.157 + uiDefaults.put("OptionPane.isYesLast", !isWindows);
139.158 +
139.159 + // Store Table ScrollPane Corner Component
139.160 + uiDefaults.put("Table.scrollPaneCornerComponent",
139.161 + TableScrollPaneCorner.class);
139.162 +
139.163 + // Setup the settings for ToolBarSeparator which is custom
139.164 + // installed for Nimbus
139.165 + uiDefaults.put("ToolBarSeparator[Enabled].backgroundPainter",
139.166 + new ToolBarSeparatorPainter());
139.167 +
139.168 + // Populate UIDefaults with a standard set of properties
139.169 + for (String componentKey : COMPONENT_KEYS) {
139.170 + String key = componentKey+".foreground";
139.171 + if (!uiDefaults.containsKey(key)){
139.172 + uiDefaults.put(key,
139.173 + new NimbusProperty(componentKey,"textForeground"));
139.174 + }
139.175 + key = componentKey+".background";
139.176 + if (!uiDefaults.containsKey(key)){
139.177 + uiDefaults.put(key,
139.178 + new NimbusProperty(componentKey,"background"));
139.179 + }
139.180 + key = componentKey+".font";
139.181 + if (!uiDefaults.containsKey(key)){
139.182 + uiDefaults.put(key,
139.183 + new NimbusProperty(componentKey,"font"));
139.184 + }
139.185 + key = componentKey+".disabledText";
139.186 + if (!uiDefaults.containsKey(key)){
139.187 + uiDefaults.put(key,
139.188 + new NimbusProperty(componentKey,"Disabled",
139.189 + "textForeground"));
139.190 + }
139.191 + key = componentKey+".disabled";
139.192 + if (!uiDefaults.containsKey(key)){
139.193 + uiDefaults.put(key,
139.194 + new NimbusProperty(componentKey,"Disabled",
139.195 + "background"));
139.196 + }
139.197 + }
139.198 +
139.199 + // FileView icon keys are used by some applications, we don't have
139.200 + // a computer icon at the moment so using home icon for now
139.201 + uiDefaults.put("FileView.computerIcon",
139.202 + new LinkProperty("FileChooser.homeFolderIcon"));
139.203 + uiDefaults.put("FileView.directoryIcon",
139.204 + new LinkProperty("FileChooser.directoryIcon"));
139.205 + uiDefaults.put("FileView.fileIcon",
139.206 + new LinkProperty("FileChooser.fileIcon"));
139.207 + uiDefaults.put("FileView.floppyDriveIcon",
139.208 + new LinkProperty("FileChooser.floppyDriveIcon"));
139.209 + uiDefaults.put("FileView.hardDriveIcon",
139.210 + new LinkProperty("FileChooser.hardDriveIcon"));
139.211 + }
139.212 + return uiDefaults;
139.213 + }
139.214 +
139.215 + /**
139.216 + * Gets the style associated with the given component and region. This
139.217 + * will never return null. If an appropriate component and region cannot
139.218 + * be determined, then a default style is returned.
139.219 + *
139.220 + * @param c a non-null reference to a JComponent
139.221 + * @param r a non-null reference to the region of the component c
139.222 + * @return a non-null reference to a NimbusStyle.
139.223 + */
139.224 + public static NimbusStyle getStyle(JComponent c, Region r) {
139.225 + return (NimbusStyle)SynthLookAndFeel.getStyle(c, r);
139.226 + }
139.227 +
139.228 + /**
139.229 + * Return a short string that identifies this look and feel. This
139.230 + * String will be the unquoted String "Nimbus".
139.231 + *
139.232 + * @return a short string identifying this look and feel.
139.233 + */
139.234 + @Override public String getName() {
139.235 + return "Nimbus";
139.236 + }
139.237 +
139.238 + /**
139.239 + * Return a string that identifies this look and feel. This String will
139.240 + * be the unquoted String "Nimbus".
139.241 + *
139.242 + * @return a short string identifying this look and feel.
139.243 + */
139.244 + @Override public String getID() {
139.245 + return "Nimbus";
139.246 + }
139.247 +
139.248 + /**
139.249 + * Returns a textual description of this look and feel.
139.250 + *
139.251 + * @return textual description of this look and feel.
139.252 + */
139.253 + @Override public String getDescription() {
139.254 + return "Nimbus Look and Feel";
139.255 + }
139.256 +
139.257 + /**
139.258 + * @inheritDoc
139.259 + * @return true
139.260 + */
139.261 + @Override public boolean shouldUpdateStyleOnAncestorChanged() {
139.262 + return true;
139.263 + }
139.264 +
139.265 + /**
139.266 + * <p>Registers a third party component with the NimbusLookAndFeel.</p>
139.267 + *
139.268 + * <p>Regions represent Components and areas within Components that act as
139.269 + * independent painting areas. Once registered with the NimbusLookAndFeel,
139.270 + * NimbusStyles for these Regions can be retrieved via the
139.271 + * <code>getStyle</code> method.</p>
139.272 + *
139.273 + * <p>The NimbusLookAndFeel uses a standard naming scheme for entries in the
139.274 + * UIDefaults table. The key for each property, state, painter, and other
139.275 + * default registered in UIDefaults for a specific Region will begin with
139.276 + * the specified <code>prefix</code></p>
139.277 + *
139.278 + * <p>For example, suppose I had a component named JFoo. Suppose I then registered
139.279 + * this component with the NimbusLookAndFeel in this manner:</p>
139.280 + *
139.281 + * <pre><code>
139.282 + * laf.register(NimbusFooUI.FOO_REGION, "Foo");
139.283 + * </code></pre>
139.284 + *
139.285 + * <p>In this case, I could then register properties for this component with
139.286 + * UIDefaults in the following manner:</p>
139.287 + *
139.288 + * <pre><code>
139.289 + * UIManager.put("Foo.background", new ColorUIResource(Color.BLACK));
139.290 + * UIManager.put("Foo.Enabled.backgroundPainter", new FooBackgroundPainter());
139.291 + * </code></pre>
139.292 + *
139.293 + * <p>It is also possible to register a named component with Nimbus.
139.294 + * For example, suppose you wanted to style the background of a JPanel
139.295 + * named "MyPanel" differently from other JPanels. You could accomplish this
139.296 + * by doing the following:</p>
139.297 + *
139.298 + * <pre><code>
139.299 + * laf.register(Region.PANEL, "\"MyPanel\"");
139.300 + * UIManager.put("\"MyPanel\".background", new ColorUIResource(Color.RED));
139.301 + * </code></pre>
139.302 + *
139.303 + * @param region The Synth Region that is being registered. Such as Button, or
139.304 + * ScrollBarThumb, or NimbusFooUI.FOO_REGION.
139.305 + * @param prefix The UIDefault prefix. For example, could be ComboBox, or if
139.306 + * a named components, "MyComboBox", or even something like
139.307 + * ToolBar."MyComboBox"."ComboBox.arrowButton"
139.308 + */
139.309 + public void register(Region region, String prefix) {
139.310 + defaults.register(region, prefix);
139.311 + }
139.312 +
139.313 + /**
139.314 + * Simple utility method that reads system keys.
139.315 + */
139.316 + private String getSystemProperty(String key) {
139.317 + return AccessController.doPrivileged(new GetPropertyAction(key));
139.318 + }
139.319 +
139.320 + @Override
139.321 + public Icon getDisabledIcon(JComponent component, Icon icon) {
139.322 + if (icon instanceof SynthIcon) {
139.323 + SynthIcon si = (SynthIcon)icon;
139.324 + BufferedImage img = EffectUtils.createCompatibleTranslucentImage(
139.325 + si.getIconWidth(), si.getIconHeight());
139.326 + Graphics2D gfx = img.createGraphics();
139.327 + si.paintIcon(component, gfx, 0, 0);
139.328 + gfx.dispose();
139.329 + return new ImageIconUIResource(GrayFilter.createDisabledImage(img));
139.330 + } else {
139.331 + return super.getDisabledIcon(component, icon);
139.332 + }
139.333 + }
139.334 +
139.335 + /**
139.336 + * Get a derived color, derived colors are shared instances and is color
139.337 + * value will change when its parent UIDefault color changes.
139.338 + *
139.339 + * @param uiDefaultParentName The parent UIDefault key
139.340 + * @param hOffset The hue offset
139.341 + * @param sOffset The saturation offset
139.342 + * @param bOffset The brightness offset
139.343 + * @param aOffset The alpha offset
139.344 + * @param uiResource True if the derived color should be a
139.345 + * UIResource, false if it should not be
139.346 + * @return The stored derived color
139.347 + */
139.348 + public Color getDerivedColor(String uiDefaultParentName,
139.349 + float hOffset, float sOffset,
139.350 + float bOffset, int aOffset,
139.351 + boolean uiResource) {
139.352 + return defaults.getDerivedColor(uiDefaultParentName, hOffset, sOffset,
139.353 + bOffset, aOffset, uiResource);
139.354 + }
139.355 +
139.356 + /**
139.357 + * Decodes and returns a color, which is derived from an offset between two
139.358 + * other colors.
139.359 + *
139.360 + * @param color1 The first color
139.361 + * @param color2 The second color
139.362 + * @param midPoint The offset between color 1 and color 2, a value of 0.0 is
139.363 + * color 1 and 1.0 is color 2;
139.364 + * @param uiResource True if the derived color should be a UIResource
139.365 + * @return The derived color
139.366 + */
139.367 + protected final Color getDerivedColor(Color color1, Color color2,
139.368 + float midPoint, boolean uiResource) {
139.369 + int argb = deriveARGB(color1, color2, midPoint);
139.370 + if (uiResource) {
139.371 + return new ColorUIResource(argb);
139.372 + } else {
139.373 + return new Color(argb);
139.374 + }
139.375 + }
139.376 +
139.377 + /**
139.378 + * Decodes and returns a color, which is derived from a offset between two
139.379 + * other colors.
139.380 + *
139.381 + * @param color1 The first color
139.382 + * @param color2 The second color
139.383 + * @param midPoint The offset between color 1 and color 2, a value of 0.0 is
139.384 + * color 1 and 1.0 is color 2;
139.385 + * @return The derived color, which will be a UIResource
139.386 + */
139.387 + protected final Color getDerivedColor(Color color1, Color color2,
139.388 + float midPoint) {
139.389 + return getDerivedColor(color1, color2, midPoint, true);
139.390 + }
139.391 +
139.392 + /**
139.393 + * Package private method which returns either BorderLayout.NORTH,
139.394 + * BorderLayout.SOUTH, BorderLayout.EAST, or BorderLayout.WEST depending
139.395 + * on the location of the toolbar in its parent. The toolbar might be
139.396 + * in PAGE_START, PAGE_END, CENTER, or some other position, but will be
139.397 + * resolved to either NORTH,SOUTH,EAST, or WEST based on where the toolbar
139.398 + * actually IS, with CENTER being NORTH.
139.399 + *
139.400 + * This code is used to determine where the border line should be drawn
139.401 + * by the custom toolbar states, and also used by NimbusIcon to determine
139.402 + * whether the handle icon needs to be shifted to look correct.
139.403 + *
139.404 + * Toollbars are unfortunately odd in the way these things are handled,
139.405 + * and so this code exists to unify the logic related to toolbars so it can
139.406 + * be shared among the static files such as NimbusIcon and generated files
139.407 + * such as the ToolBar state classes.
139.408 + */
139.409 + static Object resolveToolbarConstraint(JToolBar toolbar) {
139.410 + //NOTE: we don't worry about component orientation or PAGE_END etc
139.411 + //because the BasicToolBarUI always uses an absolute position of
139.412 + //NORTH/SOUTH/EAST/WEST.
139.413 + if (toolbar != null) {
139.414 + Container parent = toolbar.getParent();
139.415 + if (parent != null) {
139.416 + LayoutManager m = parent.getLayout();
139.417 + if (m instanceof BorderLayout) {
139.418 + BorderLayout b = (BorderLayout)m;
139.419 + Object con = b.getConstraints(toolbar);
139.420 + if (con == SOUTH || con == EAST || con == WEST) {
139.421 + return con;
139.422 + }
139.423 + return NORTH;
139.424 + }
139.425 + }
139.426 + }
139.427 + return NORTH;
139.428 + }
139.429 +
139.430 + /**
139.431 + * Derives the ARGB value for a color based on an offset between two
139.432 + * other colors.
139.433 + *
139.434 + * @param color1 The first color
139.435 + * @param color2 The second color
139.436 + * @param midPoint The offset between color 1 and color 2, a value of 0.0 is
139.437 + * color 1 and 1.0 is color 2;
139.438 + * @return the ARGB value for a new color based on this derivation
139.439 + */
139.440 + static int deriveARGB(Color color1, Color color2, float midPoint) {
139.441 + int r = color1.getRed() +
139.442 + (int) ((color2.getRed() - color1.getRed()) * midPoint + 0.5f);
139.443 + int g = color1.getGreen() +
139.444 + (int) ((color2.getGreen() - color1.getGreen()) * midPoint +
139.445 + 0.5f);
139.446 + int b = color1.getBlue() +
139.447 + (int) ((color2.getBlue() - color1.getBlue()) * midPoint + 0.5f);
139.448 + int a = color1.getAlpha() +
139.449 + (int) ((color2.getAlpha() - color1.getAlpha()) * midPoint +
139.450 + 0.5f);
139.451 + return ((a & 0xFF) << 24) |
139.452 + ((r & 0xFF) << 16) |
139.453 + ((g & 0xFF) << 8) |
139.454 + (b & 0xFF);
139.455 + }
139.456 +
139.457 + /**
139.458 + * Simple Symbolic Link style UIDefalts Property
139.459 + */
139.460 + private class LinkProperty implements UIDefaults.ActiveValue, UIResource{
139.461 + private String dstPropName;
139.462 +
139.463 + private LinkProperty(String dstPropName) {
139.464 + this.dstPropName = dstPropName;
139.465 + }
139.466 +
139.467 + @Override
139.468 + public Object createValue(UIDefaults table) {
139.469 + return UIManager.get(dstPropName);
139.470 + }
139.471 + }
139.472 +
139.473 + /**
139.474 + * Nimbus Property that looks up Nimbus keys for standard key names. For
139.475 + * example "Button.background" --> "Button[Enabled].backgound"
139.476 + */
139.477 + private class NimbusProperty implements UIDefaults.ActiveValue, UIResource {
139.478 + private String prefix;
139.479 + private String state = null;
139.480 + private String suffix;
139.481 + private boolean isFont;
139.482 +
139.483 + private NimbusProperty(String prefix, String suffix) {
139.484 + this.prefix = prefix;
139.485 + this.suffix = suffix;
139.486 + isFont = "font".equals(suffix);
139.487 + }
139.488 +
139.489 + private NimbusProperty(String prefix, String state, String suffix) {
139.490 + this(prefix,suffix);
139.491 + this.state = state;
139.492 + }
139.493 +
139.494 + /**
139.495 + * Creates the value retrieved from the <code>UIDefaults</code> table.
139.496 + * The object is created each time it is accessed.
139.497 + *
139.498 + * @param table a <code>UIDefaults</code> table
139.499 + * @return the created <code>Object</code>
139.500 + */
139.501 + @Override
139.502 + public Object createValue(UIDefaults table) {
139.503 + Object obj = null;
139.504 + // check specified state
139.505 + if (state!=null){
139.506 + obj = uiDefaults.get(prefix+"["+state+"]."+suffix);
139.507 + }
139.508 + // check enabled state
139.509 + if (obj==null){
139.510 + obj = uiDefaults.get(prefix+"[Enabled]."+suffix);
139.511 + }
139.512 + // check for defaults
139.513 + if (obj==null){
139.514 + if (isFont) {
139.515 + obj = uiDefaults.get("defaultFont");
139.516 + } else {
139.517 + obj = uiDefaults.get(suffix);
139.518 + }
139.519 + }
139.520 + return obj;
139.521 + }
139.522 + }
139.523 +}
140.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
140.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/NimbusStyle.java Wed Apr 29 00:27:46 2009 -0700
140.3 @@ -0,0 +1,1259 @@
140.4 +/*
140.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
140.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
140.7 + *
140.8 + * This code is free software; you can redistribute it and/or modify it
140.9 + * under the terms of the GNU General Public License version 2 only, as
140.10 + * published by the Free Software Foundation. Sun designates this
140.11 + * particular file as subject to the "Classpath" exception as provided
140.12 + * by Sun in the LICENSE file that accompanied this code.
140.13 + *
140.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
140.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
140.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
140.17 + * version 2 for more details (a copy is included in the LICENSE file that
140.18 + * accompanied this code).
140.19 + *
140.20 + * You should have received a copy of the GNU General Public License version
140.21 + * 2 along with this work; if not, write to the Free Software Foundation,
140.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
140.23 + *
140.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
140.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
140.26 + * have any questions.
140.27 + */
140.28 +package javax.swing.plaf.nimbus;
140.29 +
140.30 +import javax.swing.Painter;
140.31 +
140.32 +import java.beans.PropertyChangeEvent;
140.33 +import javax.swing.JComponent;
140.34 +import javax.swing.UIDefaults;
140.35 +import javax.swing.UIManager;
140.36 +import javax.swing.plaf.ColorUIResource;
140.37 +import javax.swing.plaf.synth.ColorType;
140.38 +import static javax.swing.plaf.synth.SynthConstants.*;
140.39 +import javax.swing.plaf.synth.SynthContext;
140.40 +import javax.swing.plaf.synth.SynthPainter;
140.41 +import javax.swing.plaf.synth.SynthStyle;
140.42 +import java.awt.Color;
140.43 +import java.awt.Font;
140.44 +import java.awt.Insets;
140.45 +import java.beans.PropertyChangeListener;
140.46 +import java.util.ArrayList;
140.47 +import java.util.Collections;
140.48 +import java.util.Comparator;
140.49 +import java.util.HashMap;
140.50 +import java.util.HashSet;
140.51 +import java.util.List;
140.52 +import java.util.Map;
140.53 +import java.util.TreeMap;
140.54 +import sun.awt.AppContext;
140.55 +
140.56 +/**
140.57 + * <p>A SynthStyle implementation used by Nimbus. Each Region that has been
140.58 + * registered with the NimbusLookAndFeel will have an associated NimbusStyle.
140.59 + * Third party components that are registered with the NimbusLookAndFeel will
140.60 + * therefore be handed a NimbusStyle from the look and feel from the
140.61 + * #getStyle(JComponent, Region) method.</p>
140.62 + *
140.63 + * <p>This class properly reads and retrieves values placed in the UIDefaults
140.64 + * according to the standard Nimbus naming conventions. It will create and
140.65 + * retrieve painters, fonts, colors, and other data stored there.</p>
140.66 + *
140.67 + * <p>NimbusStyle also supports the ability to override settings on a per
140.68 + * component basis. NimbusStyle checks the component's client property map for
140.69 + * "Nimbus.Overrides". If the value associated with this key is an instance of
140.70 + * UIDefaults, then the values in that defaults table will override the standard
140.71 + * Nimbus defaults in UIManager, but for that component instance only.</p>
140.72 + *
140.73 + * <p>Optionally, you may specify the client property
140.74 + * "Nimbus.Overrides.InheritDefaults". If true, this client property indicates
140.75 + * that the defaults located in UIManager should first be read, and then
140.76 + * replaced with defaults located in the component client properties. If false,
140.77 + * then only the defaults located in the component client property map will
140.78 + * be used. If not specified, it is assumed to be true.</p>
140.79 + *
140.80 + * <p>You must specify "Nimbus.Overrides" for "Nimbus.Overrides.InheritDefaults"
140.81 + * to have any effect. "Nimbus.Overrides" indicates whether there are any
140.82 + * overrides, while "Nimbus.Overrides.InheritDefaults" indicates whether those
140.83 + * overrides should first be initialized with the defaults from UIManager.</p>
140.84 + *
140.85 + * <p>The NimbusStyle is reloaded whenever a property change event is fired
140.86 + * for a component for "Nimbus.Overrides" or "Nimbus.Overrides.InheritDefaults".
140.87 + * So for example, setting a new UIDefaults on a component would cause the
140.88 + * style to be reloaded.</p>
140.89 + *
140.90 + * <p>The values are only read out of UIManager once, and then cached. If
140.91 + * you need to read the values again (for example, if the UI is being reloaded),
140.92 + * then discard this NimbusStyle and read a new one from NimbusLookAndFeel
140.93 + * using NimbusLookAndFeel.getStyle.</p>
140.94 + *
140.95 + * <p>The primary API of interest in this class for 3rd party component authors
140.96 + * are the three methods which retrieve painters: #getBackgroundPainter,
140.97 + * #getForegroundPainter, and #getBorderPainter.</p>
140.98 + *
140.99 + * <p>NimbusStyle allows you to specify custom states, or modify the order of
140.100 + * states. Synth (and thus Nimbus) has the concept of a "state". For example,
140.101 + * a JButton might be in the "MOUSE_OVER" state, or the "ENABLED" state, or the
140.102 + * "DISABLED" state. These are all "standard" states which are defined in synth,
140.103 + * and which apply to all synth Regions.</p>
140.104 + *
140.105 + * <p>Sometimes, however, you need to have a custom state. For example, you
140.106 + * want JButton to render differently if it's parent is a JToolbar. In Nimbus,
140.107 + * you specify these custom states by including a special key in UIDefaults.
140.108 + * The following UIDefaults entries define three states for this button:</p>
140.109 + *
140.110 + * <pre><code>
140.111 + * JButton.States = Enabled, Disabled, Toolbar
140.112 + * JButton[Enabled].backgroundPainter = somePainter
140.113 + * JButton[Disabled].background = BLUE
140.114 + * JButton[Toolbar].backgroundPainter = someOtherPaint
140.115 + * </code></pre>
140.116 + *
140.117 + * <p>As you can see, the <code>JButton.States</code> entry lists the states
140.118 + * that the JButton style will support. You then specify the settings for
140.119 + * each state. If you do not specify the <code>JButton.States</code> entry,
140.120 + * then the standard Synth states will be assumed. If you specify the entry
140.121 + * but the list of states is empty or null, then the standard synth states
140.122 + * will be assumed.</p>
140.123 + *
140.124 + * @author Richard Bair
140.125 + * @author Jasper Potts
140.126 + */
140.127 +public final class NimbusStyle extends SynthStyle {
140.128 + /* Keys and scales for large/small/mini components, based on Apples sizes */
140.129 + public static final String LARGE_KEY = "large";
140.130 + public static final String SMALL_KEY = "small";
140.131 + public static final String MINI_KEY = "mini";
140.132 + public static final double LARGE_SCALE = 1.15;
140.133 + public static final double SMALL_SCALE = 0.857;
140.134 + public static final double MINI_SCALE = 0.714;
140.135 +
140.136 + /**
140.137 + * Special constant used for performance reasons during the get() method.
140.138 + * If get() runs through all of the search locations and determines that
140.139 + * there is no value, then NULL will be placed into the values map. This way
140.140 + * on subsequent lookups it will simply extract NULL, see it, and return
140.141 + * null rather than continuing the lookup procedure.
140.142 + */
140.143 + private static final Object NULL = '\0';
140.144 + /**
140.145 + * <p>The Color to return from getColorForState if it would otherwise have
140.146 + * returned null.</p>
140.147 + *
140.148 + * <p>Returning null from getColorForState is a very bad thing, as it causes
140.149 + * the AWT peer for the component to install a SystemColor, which is not a
140.150 + * UIResource. As a result, if <code>null</code> is returned from
140.151 + * getColorForState, then thereafter the color is not updated for other
140.152 + * states or on LAF changes or updates. This DEFAULT_COLOR is used to
140.153 + * ensure that a ColorUIResource is always returned from
140.154 + * getColorForState.</p>
140.155 + */
140.156 + private static final Color DEFAULT_COLOR = new ColorUIResource(Color.BLACK);
140.157 + /**
140.158 + * Simple Comparator for ordering the RuntimeStates according to their
140.159 + * rank.
140.160 + */
140.161 + private static final Comparator<RuntimeState> STATE_COMPARATOR =
140.162 + new Comparator<RuntimeState>() {
140.163 + @Override
140.164 + public int compare(RuntimeState a, RuntimeState b) {
140.165 + return a.state - b.state;
140.166 + }
140.167 + };
140.168 + /**
140.169 + * The prefix for the component or region that this NimbusStyle
140.170 + * represents. This prefix is used to lookup state in the UIManager.
140.171 + * It should be something like Button or Slider.Thumb or "MyButton" or
140.172 + * ComboBox."ComboBox.arrowButton" or "MyComboBox"."ComboBox.arrowButton"
140.173 + */
140.174 + private String prefix;
140.175 + /**
140.176 + * The SynthPainter that will be returned from this NimbusStyle. The
140.177 + * SynthPainter returned will be a SynthPainterImpl, which will in turn
140.178 + * delegate back to this NimbusStyle for the proper Painter (not
140.179 + * SynthPainter) to use for painting the foreground, background, or border.
140.180 + */
140.181 + private SynthPainter painter;
140.182 + /**
140.183 + * Data structure containing all of the defaults, insets, states, and other
140.184 + * values associated with this style. This instance refers to default
140.185 + * values, and are used when no overrides are discovered in the client
140.186 + * properties of a component. These values are lazily created on first
140.187 + * access.
140.188 + */
140.189 + private Values values;
140.190 +
140.191 + /**
140.192 + * A temporary CacheKey used to perform lookups. This pattern avoids
140.193 + * creating useless garbage keys, or concatenating strings, etc.
140.194 + */
140.195 + private CacheKey tmpKey = new CacheKey("", 0);
140.196 +
140.197 + /**
140.198 + * Some NimbusStyles are created for a specific component only. In Nimbus,
140.199 + * this happens whenever the component has as a client property a
140.200 + * UIDefaults which overrides (or supplements) those defaults found in
140.201 + * UIManager.
140.202 + */
140.203 + private JComponent component;
140.204 +
140.205 + /**
140.206 + * Create a new NimbusStyle. Only the prefix must be supplied. At the
140.207 + * appropriate time, installDefaults will be called. At that point, all of
140.208 + * the state information will be pulled from UIManager and stored locally
140.209 + * within this style.
140.210 + *
140.211 + * @param prefix Something like Button or Slider.Thumb or
140.212 + * org.jdesktop.swingx.JXStatusBar or ComboBox."ComboBox.arrowButton"
140.213 + * @param c an optional reference to a component that this NimbusStyle
140.214 + * should be associated with. This is only used when the component
140.215 + * has Nimbus overrides registered in its client properties and
140.216 + * should be null otherwise.
140.217 + */
140.218 + NimbusStyle(String prefix, JComponent c) {
140.219 + this.component = c;
140.220 + this.prefix = prefix;
140.221 + this.painter = new SynthPainterImpl(this);
140.222 + }
140.223 +
140.224 + /**
140.225 + * @inheritDoc
140.226 + *
140.227 + * Overridden to cause this style to populate itself with data from
140.228 + * UIDefaults, if necessary.
140.229 + */
140.230 + @Override public void installDefaults(SynthContext ctx) {
140.231 + validate();
140.232 +
140.233 + //delegate to the superclass to install defaults such as background,
140.234 + //foreground, font, and opaque onto the swing component.
140.235 + super.installDefaults(ctx);
140.236 + }
140.237 +
140.238 + static String parsePrefix(String key) {
140.239 + if (key == null) return null;
140.240 + boolean inquotes = false;
140.241 + for (int i=0; i<key.length(); i++) {
140.242 + char c = key.charAt(i);
140.243 + if (c == '"') {
140.244 + inquotes = !inquotes;
140.245 + } else if ((c == '[' || c == '.') && !inquotes) {
140.246 + return key.substring(0, i);
140.247 + }
140.248 + }
140.249 + return null;
140.250 + }
140.251 +
140.252 + /**
140.253 + * Called by NimbusLookAndFeel when the look and feel is being uninstalled.
140.254 + * Performs general cleanup of any app-context specific data.
140.255 + */
140.256 + static void uninitialize() {
140.257 + // get the appcontext that we've stored data in
140.258 + AppContext ctx = AppContext.getAppContext();
140.259 +
140.260 + // get the pcl stored in app context
140.261 + PropertyChangeListener pcl = (PropertyChangeListener)
140.262 + ctx.get("NimbusStyle.defaults.pcl");
140.263 +
140.264 + // if the pcl exists, uninstall it from the UIDefaults tables
140.265 + if (pcl != null) {
140.266 + UIManager.getDefaults().removePropertyChangeListener(pcl);
140.267 + UIManager.getLookAndFeelDefaults().removePropertyChangeListener(pcl);
140.268 + }
140.269 +
140.270 + // clear out the compiled defaults
140.271 + ctx.put("NimbusStyle.defaults", null);
140.272 + }
140.273 +
140.274 + /**
140.275 + * Pulls data out of UIDefaults, if it has not done so already, and sets
140.276 + * up the internal state.
140.277 + */
140.278 + private void validate() {
140.279 + // a non-null values object is the flag we use to determine whether
140.280 + // to reparse from UIManager.
140.281 + if (values != null) return;
140.282 +
140.283 + // reconstruct this NimbusStyle based on the entries in the UIManager
140.284 + // and possibly based on any overrides within the component's
140.285 + // client properties (assuming such a component exists and contains
140.286 + // any Nimbus.Overrides)
140.287 + values = new Values();
140.288 +
140.289 + // the profiler revealed that a great deal of CPU time and useless
140.290 + // garbage was being produced by this method and the init method. One
140.291 + // culprit was the creation and reparsing of the entire UIDefaults
140.292 + // map on each call to this method where "values" was null. It turns
140.293 + // out this was happening a lot.
140.294 + // To remove this bottleneck, we store the compiled TreeMaps of defaults
140.295 + // in the appContext for reuse. It is nulled whenever the UIDefaults
140.296 + // changes and recomputed when necessary.
140.297 + final AppContext ctx = AppContext.getAppContext();
140.298 +
140.299 + // fetch the defaults from the app context. If null, then create and
140.300 + // store the compiled defaults
140.301 + Map<String, TreeMap<String, Object>> compiledDefaults =
140.302 + (Map<String, TreeMap<String, Object>>)
140.303 + ctx.get("NimbusStyle.defaults");
140.304 +
140.305 + if (compiledDefaults == null) {
140.306 + // the entire UIDefaults tables are parsed and compiled into
140.307 + // this map of maps. The key of the compiledDefaults is the
140.308 + // prefix for each style, while the value is a map of
140.309 + // keys->values for that prefix.
140.310 + compiledDefaults = new HashMap<String, TreeMap<String, Object>>();
140.311 +
140.312 + // get all the defaults from UIManager.getDefaults() and put them
140.313 + // into the compiledDefaults
140.314 + compileDefaults(compiledDefaults, UIManager.getDefaults());
140.315 +
140.316 + // This second statement pulls defaults from the laf defaults
140.317 + UIDefaults lafDefaults = UIManager.getLookAndFeelDefaults();
140.318 + compileDefaults(compiledDefaults, lafDefaults);
140.319 +
140.320 + // if it has not already been done, add a listener to both
140.321 + // UIManager.getDefaults() and UIManager.getLookAndFeelDefaults().
140.322 + PropertyChangeListener pcl = (PropertyChangeListener)
140.323 + ctx.get("NimbusStyle.defaults.pcl");
140.324 +
140.325 + // if pcl is null, then it has not yet been registered with
140.326 + // the UIManager defaults for this app context
140.327 + if (pcl == null) {
140.328 + // create a PCL which will simply clear out the compiled
140.329 + // defaults from the app context, causing it to be recomputed
140.330 + // on subsequent passes
140.331 + pcl = new DefaultsListener();
140.332 + // add the PCL to both defaults tables that we pay attention
140.333 + // to, so that if the UIDefaults are updated, then the
140.334 + // precompiled defaults will be cleared from the app context
140.335 + // and recomputed on subsequent passes
140.336 + UIManager.getDefaults().addPropertyChangeListener(pcl);
140.337 + UIManager.getLookAndFeelDefaults().addPropertyChangeListener(pcl);
140.338 + // save the PCL to the app context as a marker indicating
140.339 + // that the PCL has been registered so we don't end up adding
140.340 + // more than one listener to the UIDefaults tables.
140.341 + ctx.put("NimbusStyle.defaults.pcl", pcl);
140.342 + }
140.343 +
140.344 + // store the defaults for reuse
140.345 + ctx.put("NimbusStyle.defaults", compiledDefaults);
140.346 + }
140.347 +
140.348 + TreeMap<String, Object> defaults = compiledDefaults.get(prefix);
140.349 +
140.350 + // inspect the client properties for the key "Nimbus.Overrides". If the
140.351 + // value is an instance of UIDefaults, then these defaults are used
140.352 + // in place of, or in addition to, the defaults in UIManager.
140.353 + if (component != null) {
140.354 + Object o = component.getClientProperty("Nimbus.Overrides");
140.355 + if (o instanceof UIDefaults) {
140.356 + Object i = component.getClientProperty(
140.357 + "Nimbus.Overrides.InheritDefaults");
140.358 + boolean inherit = i instanceof Boolean ? (Boolean)i : true;
140.359 + UIDefaults d = (UIDefaults)o;
140.360 + TreeMap<String, Object> map = new TreeMap<String, Object>();
140.361 + for (Object obj : d.keySet()) {
140.362 + if (obj instanceof String) {
140.363 + String key = (String)obj;
140.364 + if (key.startsWith(prefix)) {
140.365 + map.put(key, d.get(key));
140.366 + }
140.367 + }
140.368 + }
140.369 + if (inherit) {
140.370 + defaults.putAll(map);
140.371 + } else {
140.372 + defaults = map;
140.373 + }
140.374 + }
140.375 + }
140.376 +
140.377 + // Now that I've accumulated all the defaults pertaining to this
140.378 + // style, call init which will read these defaults and configure
140.379 + // the default "values".
140.380 + init(values, defaults);
140.381 + }
140.382 +
140.383 + /**
140.384 + * Iterates over all the keys in the specified UIDefaults and compiles
140.385 + * those keys into the comiledDefaults data structure. It relies on
140.386 + * parsing the "prefix" out of the key. If the key is not a String or is
140.387 + * null then it is ignored. In all other cases a prefix is parsed out
140.388 + * (even if that prefix is the empty String or is a "fake" prefix. That
140.389 + * is, suppose you had a key Foo~~MySpecial.KeyThing~~. In this case this
140.390 + * is not a Nimbus formatted key, but we don't care, we treat it as if it
140.391 + * is. This doesn't pose any harm, it will simply never be used).
140.392 + *
140.393 + * @param compiledDefaults
140.394 + * @param d
140.395 + */
140.396 + private void compileDefaults(
140.397 + Map<String, TreeMap<String,Object>> compiledDefaults,
140.398 + UIDefaults d) {
140.399 + for (Object obj : new HashSet(d.keySet())) {
140.400 + if (obj instanceof String) {
140.401 + String key = (String)obj;
140.402 + String kp = parsePrefix(key);
140.403 + if (kp == null) continue;
140.404 + TreeMap<String,Object> map = compiledDefaults.get(kp);
140.405 + if (map == null) {
140.406 + map = new TreeMap<String,Object>();
140.407 + compiledDefaults.put(kp, map);
140.408 + }
140.409 + map.put(key, d.get(key));
140.410 + }
140.411 + }
140.412 + }
140.413 +
140.414 + /**
140.415 + * Initializes the given <code>Values</code> object with the defaults
140.416 + * contained in the given TreeMap.
140.417 + *
140.418 + * @param v The Values object to be initialized
140.419 + * @param myDefaults a map of UIDefaults to use in initializing the Values.
140.420 + * This map must contain only keys associated with this Style.
140.421 + */
140.422 + private void init(Values v, TreeMap<String, Object> myDefaults) {
140.423 + //a list of the different types of states used by this style. This
140.424 + //list may contain only "standard" states (those defined by Synth),
140.425 + //or it may contain custom states, or it may contain only "standard"
140.426 + //states but list them in a non-standard order.
140.427 + List<State> states = new ArrayList<State>();
140.428 + //a map of state name to code
140.429 + Map<String,Integer> stateCodes = new HashMap<String,Integer>();
140.430 + //This is a list of runtime "state" context objects. These contain
140.431 + //the values associated with each state.
140.432 + List<RuntimeState> runtimeStates = new ArrayList<RuntimeState>();
140.433 +
140.434 + //determine whether there are any custom states, or custom state
140.435 + //order. If so, then read all those custom states and define the
140.436 + //"values" stateTypes to be a non-null array.
140.437 + //Otherwise, let the "values" stateTypes be null to indicate that
140.438 + //there are no custom states or custom state ordering
140.439 + String statesString = (String)myDefaults.get(prefix + ".States");
140.440 + if (statesString != null) {
140.441 + String s[] = statesString.split(",");
140.442 + for (int i=0; i<s.length; i++) {
140.443 + s[i] = s[i].trim();
140.444 + if (!State.isStandardStateName(s[i])) {
140.445 + //this is a non-standard state name, so look for the
140.446 + //custom state associated with it
140.447 + String stateName = prefix + "." + s[i];
140.448 + State customState = (State)myDefaults.get(stateName);
140.449 + if (customState != null) {
140.450 + states.add(customState);
140.451 + }
140.452 + } else {
140.453 + states.add(State.getStandardState(s[i]));
140.454 + }
140.455 + }
140.456 +
140.457 + //if there were any states defined, then set the stateTypes array
140.458 + //to be non-null. Otherwise, leave it null (meaning, use the
140.459 + //standard synth states).
140.460 + if (states.size() > 0) {
140.461 + v.stateTypes = states.toArray(new State[states.size()]);
140.462 + }
140.463 +
140.464 + //assign codes for each of the state types
140.465 + int code = 1;
140.466 + for (State state : states) {
140.467 + stateCodes.put(state.getName(), code);
140.468 + code <<= 1;
140.469 + }
140.470 + } else {
140.471 + //since there were no custom states defined, setup the list of
140.472 + //standard synth states. Note that the "v.stateTypes" is not
140.473 + //being set here, indicating that at runtime the state selection
140.474 + //routines should use standard synth states instead of custom
140.475 + //states. I do need to popuplate this temp list now though, so that
140.476 + //the remainder of this method will function as expected.
140.477 + states.add(State.Enabled);
140.478 + states.add(State.MouseOver);
140.479 + states.add(State.Pressed);
140.480 + states.add(State.Disabled);
140.481 + states.add(State.Focused);
140.482 + states.add(State.Selected);
140.483 + states.add(State.Default);
140.484 +
140.485 + //assign codes for the states
140.486 + stateCodes.put("Enabled", ENABLED);
140.487 + stateCodes.put("MouseOver", MOUSE_OVER);
140.488 + stateCodes.put("Pressed", PRESSED);
140.489 + stateCodes.put("Disabled", DISABLED);
140.490 + stateCodes.put("Focused", FOCUSED);
140.491 + stateCodes.put("Selected", SELECTED);
140.492 + stateCodes.put("Default", DEFAULT);
140.493 + }
140.494 +
140.495 + //Now iterate over all the keys in the defaults table
140.496 + for (String key : myDefaults.keySet()) {
140.497 + //The key is something like JButton.Enabled.backgroundPainter,
140.498 + //or JButton.States, or JButton.background.
140.499 + //Remove the "JButton." portion of the key
140.500 + String temp = key.substring(prefix.length());
140.501 + //if there is a " or : then we skip it because it is a subregion
140.502 + //of some kind
140.503 + if (temp.indexOf('"') != -1 || temp.indexOf(':') != -1) continue;
140.504 + //remove the separator
140.505 + temp = temp.substring(1);
140.506 + //At this point, temp may be any of the following:
140.507 + //background
140.508 + //[Enabled].background
140.509 + //[Enabled+MouseOver].background
140.510 + //property.foo
140.511 +
140.512 + //parse out the states and the property
140.513 + String stateString = null;
140.514 + String property = null;
140.515 + int bracketIndex = temp.indexOf(']');
140.516 + if (bracketIndex < 0) {
140.517 + //there is not a state string, so property = temp
140.518 + property = temp;
140.519 + } else {
140.520 + stateString = temp.substring(0, bracketIndex);
140.521 + property = temp.substring(bracketIndex + 2);
140.522 + }
140.523 +
140.524 + //now that I have the state (if any) and the property, get the
140.525 + //value for this property and install it where it belongs
140.526 + if (stateString == null) {
140.527 + //there was no state, just a property. Check for the custom
140.528 + //"contentMargins" property (which is handled specially by
140.529 + //Synth/Nimbus). Also check for the property being "States",
140.530 + //in which case it is not a real property and should be ignored.
140.531 + //otherwise, assume it is a property and install it on the
140.532 + //values object
140.533 + if ("contentMargins".equals(property)) {
140.534 + v.contentMargins = (Insets)myDefaults.get(key);
140.535 + } else if ("States".equals(property)) {
140.536 + //ignore
140.537 + } else {
140.538 + v.defaults.put(property, myDefaults.get(key));
140.539 + }
140.540 + } else {
140.541 + //it is possible that the developer has a malformed UIDefaults
140.542 + //entry, such that something was specified in the place of
140.543 + //the State portion of the key but it wasn't a state. In this
140.544 + //case, skip will be set to true
140.545 + boolean skip = false;
140.546 + //this variable keeps track of the int value associated with
140.547 + //the state. See SynthState for details.
140.548 + int componentState = 0;
140.549 + //Multiple states may be specified in the string, such as
140.550 + //Enabled+MouseOver
140.551 + String[] stateParts = stateString.split("\\+");
140.552 + //For each state, we need to find the State object associated
140.553 + //with it, or skip it if it cannot be found.
140.554 + for (String s : stateParts) {
140.555 + if (stateCodes.containsKey(s)) {
140.556 + componentState |= stateCodes.get(s);
140.557 + } else {
140.558 + //Was not a state. Maybe it was a subregion or something
140.559 + //skip it.
140.560 + skip = true;
140.561 + break;
140.562 + }
140.563 + }
140.564 +
140.565 + if (skip) continue;
140.566 +
140.567 + //find the RuntimeState for this State
140.568 + RuntimeState rs = null;
140.569 + for (RuntimeState s : runtimeStates) {
140.570 + if (s.state == componentState) {
140.571 + rs = s;
140.572 + break;
140.573 + }
140.574 + }
140.575 +
140.576 + //couldn't find the runtime state, so create a new one
140.577 + if (rs == null) {
140.578 + rs = new RuntimeState(componentState, stateString);
140.579 + runtimeStates.add(rs);
140.580 + }
140.581 +
140.582 + //check for a couple special properties, such as for the
140.583 + //painters. If these are found, then set the specially on
140.584 + //the runtime state. Else, it is just a normal property,
140.585 + //so put it in the UIDefaults associated with that runtime
140.586 + //state
140.587 + if ("backgroundPainter".equals(property)) {
140.588 + rs.backgroundPainter = (Painter)myDefaults.get(key);
140.589 + } else if ("foregroundPainter".equals(property)) {
140.590 + rs.foregroundPainter = (Painter) myDefaults.get(key);
140.591 + } else if ("borderPainter".equals(property)) {
140.592 + rs.borderPainter = (Painter) myDefaults.get(key);
140.593 + } else {
140.594 + rs.defaults.put(property, myDefaults.get(key));
140.595 + }
140.596 + }
140.597 + }
140.598 +
140.599 + //now that I've collected all the runtime states, I'll sort them based
140.600 + //on their integer "state" (see SynthState for how this works).
140.601 + Collections.sort(runtimeStates, STATE_COMPARATOR);
140.602 +
140.603 + //finally, set the array of runtime states on the values object
140.604 + v.states = runtimeStates.toArray(new RuntimeState[runtimeStates.size()]);
140.605 + }
140.606 +
140.607 + /**
140.608 + * @inheritDoc
140.609 + *
140.610 + * Overridden to cause this style to populate itself with data from
140.611 + * UIDefaults, if necessary.
140.612 + */
140.613 + @Override public Insets getInsets(SynthContext ctx, Insets in) {
140.614 + if (in == null) {
140.615 + in = new Insets(0, 0, 0, 0);
140.616 + }
140.617 +
140.618 + Values v = getValues(ctx);
140.619 +
140.620 + if (v.contentMargins == null) {
140.621 + in.bottom = in.top = in.left = in.right = 0;
140.622 + return in;
140.623 + } else {
140.624 + in.bottom = v.contentMargins.bottom;
140.625 + in.top = v.contentMargins.top;
140.626 + in.left = v.contentMargins.left;
140.627 + in.right = v.contentMargins.right;
140.628 + // Account for scale
140.629 + // The key "JComponent.sizeVariant" is used to match Apple's LAF
140.630 + String scaleKey = (String)ctx.getComponent().getClientProperty(
140.631 + "JComponent.sizeVariant");
140.632 + if (scaleKey != null){
140.633 + if (LARGE_KEY.equals(scaleKey)){
140.634 + in.bottom *= LARGE_SCALE;
140.635 + in.top *= LARGE_SCALE;
140.636 + in.left *= LARGE_SCALE;
140.637 + in.right *= LARGE_SCALE;
140.638 + } else if (SMALL_KEY.equals(scaleKey)){
140.639 + in.bottom *= SMALL_SCALE;
140.640 + in.top *= SMALL_SCALE;
140.641 + in.left *= SMALL_SCALE;
140.642 + in.right *= SMALL_SCALE;
140.643 + } else if (MINI_KEY.equals(scaleKey)){
140.644 + in.bottom *= MINI_SCALE;
140.645 + in.top *= MINI_SCALE;
140.646 + in.left *= MINI_SCALE;
140.647 + in.right *= MINI_SCALE;
140.648 + }
140.649 + }
140.650 + return in;
140.651 + }
140.652 + }
140.653 +
140.654 + /**
140.655 + * @inheritDoc
140.656 + *
140.657 + * <p>Overridden to cause this style to populate itself with data from
140.658 + * UIDefaults, if necessary.</p>
140.659 + *
140.660 + * <p>In addition, NimbusStyle handles ColorTypes slightly differently from
140.661 + * Synth.</p>
140.662 + * <ul>
140.663 + * <li>ColorType.BACKGROUND will equate to the color stored in UIDefaults
140.664 + * named "background".</li>
140.665 + * <li>ColorType.TEXT_BACKGROUND will equate to the color stored in
140.666 + * UIDefaults named "textBackground".</li>
140.667 + * <li>ColorType.FOREGROUND will equate to the color stored in UIDefaults
140.668 + * named "textForeground".</li>
140.669 + * <li>ColorType.TEXT_FOREGROUND will equate to the color stored in
140.670 + * UIDefaults named "textForeground".</li>
140.671 + * </ul>
140.672 + */
140.673 + @Override protected Color getColorForState(SynthContext ctx, ColorType type) {
140.674 + String key = null;
140.675 + if (type == ColorType.BACKGROUND) {
140.676 + key = "background";
140.677 + } else if (type == ColorType.FOREGROUND) {
140.678 + //map FOREGROUND as TEXT_FOREGROUND
140.679 + key = "textForeground";
140.680 + } else if (type == ColorType.TEXT_BACKGROUND) {
140.681 + key = "textBackground";
140.682 + } else if (type == ColorType.TEXT_FOREGROUND) {
140.683 + key = "textForeground";
140.684 + } else if (type == ColorType.FOCUS) {
140.685 + key = "focus";
140.686 + } else if (type != null) {
140.687 + key = type.toString();
140.688 + } else {
140.689 + return DEFAULT_COLOR;
140.690 + }
140.691 + Color c = (Color) get(ctx, key);
140.692 + //if all else fails, return a default color (which is a ColorUIResource)
140.693 + if (c == null) c = DEFAULT_COLOR;
140.694 + return c;
140.695 + }
140.696 +
140.697 + /**
140.698 + * @inheritDoc
140.699 + *
140.700 + * Overridden to cause this style to populate itself with data from
140.701 + * UIDefaults, if necessary. If a value named "font" is not found in
140.702 + * UIDefaults, then the "defaultFont" font in UIDefaults will be returned
140.703 + * instead.
140.704 + */
140.705 + @Override protected Font getFontForState(SynthContext ctx) {
140.706 + Font f = (Font)get(ctx, "font");
140.707 + if (f == null) f = UIManager.getFont("defaultFont");
140.708 +
140.709 + // Account for scale
140.710 + // The key "JComponent.sizeVariant" is used to match Apple's LAF
140.711 + String scaleKey = (String)ctx.getComponent().getClientProperty(
140.712 + "JComponent.sizeVariant");
140.713 + if (scaleKey != null){
140.714 + if (LARGE_KEY.equals(scaleKey)){
140.715 + f = f.deriveFont(Math.round(f.getSize2D()*LARGE_SCALE));
140.716 + } else if (SMALL_KEY.equals(scaleKey)){
140.717 + f = f.deriveFont(Math.round(f.getSize2D()*SMALL_SCALE));
140.718 + } else if (MINI_KEY.equals(scaleKey)){
140.719 + f = f.deriveFont(Math.round(f.getSize2D()*MINI_SCALE));
140.720 + }
140.721 + }
140.722 + return f;
140.723 + }
140.724 +
140.725 + /**
140.726 + * @inheritDoc
140.727 + *
140.728 + * Returns the SynthPainter for this style, which ends up delegating to
140.729 + * the Painters installed in this style.
140.730 + */
140.731 + @Override public SynthPainter getPainter(SynthContext ctx) {
140.732 + return painter;
140.733 + }
140.734 +
140.735 + /**
140.736 + * @inheritDoc
140.737 + *
140.738 + * Overridden to cause this style to populate itself with data from
140.739 + * UIDefaults, if necessary. If opacity is not specified in UI defaults,
140.740 + * then it defaults to being non-opaque.
140.741 + */
140.742 + @Override public boolean isOpaque(SynthContext ctx) {
140.743 + // Force Table CellRenderers to be opaque
140.744 + if ("Table.cellRenderer".equals(ctx.getComponent().getName())) {
140.745 + return true;
140.746 + }
140.747 + Boolean opaque = (Boolean)get(ctx, "opaque");
140.748 + return opaque == null ? false : opaque;
140.749 + }
140.750 +
140.751 + /**
140.752 + * @inheritDoc
140.753 + *
140.754 + * <p>Overridden to cause this style to populate itself with data from
140.755 + * UIDefaults, if necessary.</p>
140.756 + *
140.757 + * <p>Properties in UIDefaults may be specified in a chained manner. For
140.758 + * example:
140.759 + * <pre>
140.760 + * background
140.761 + * Button.opacity
140.762 + * Button.Enabled.foreground
140.763 + * Button.Enabled+Selected.background
140.764 + * </pre></p>
140.765 + *
140.766 + * <p>In this example, suppose you were in the Enabled+Selected state and
140.767 + * searched for "foreground". In this case, we first check for
140.768 + * Button.Enabled+Selected.foreground, but no such color exists. We then
140.769 + * fall back to the next valid state, in this case,
140.770 + * Button.Enabled.foreground, and have a match. So we return it.</p>
140.771 + *
140.772 + * <p>Again, if we were in the state Enabled and looked for "background", we
140.773 + * wouldn't find it in Button.Enabled, or in Button, but would at the top
140.774 + * level in UIManager. So we return that value.</p>
140.775 + *
140.776 + * <p>One special note: the "key" passed to this method could be of the form
140.777 + * "background" or "Button.background" where "Button" equals the prefix
140.778 + * passed to the NimbusStyle constructor. In either case, it looks for
140.779 + * "background".</p>
140.780 + *
140.781 + * @param ctx
140.782 + * @param key must not be null
140.783 + */
140.784 + @Override public Object get(SynthContext ctx, Object key) {
140.785 + Values v = getValues(ctx);
140.786 +
140.787 + // strip off the prefix, if there is one.
140.788 + String fullKey = key.toString();
140.789 + String partialKey = fullKey.substring(fullKey.indexOf(".") + 1);
140.790 +
140.791 + Object obj = null;
140.792 + int xstate = getExtendedState(ctx, v);
140.793 +
140.794 + // check the cache
140.795 + tmpKey.init(partialKey, xstate);
140.796 + obj = v.cache.get(tmpKey);
140.797 + boolean wasInCache = obj != null;
140.798 + if (!wasInCache){
140.799 + // Search exact matching states and then lesser matching states
140.800 + RuntimeState s = null;
140.801 + int[] lastIndex = new int[] {-1};
140.802 + while (obj == null &&
140.803 + (s = getNextState(v.states, lastIndex, xstate)) != null) {
140.804 + obj = s.defaults.get(partialKey);
140.805 + }
140.806 + // Search Region Defaults
140.807 + if (obj == null && v.defaults != null) {
140.808 + obj = v.defaults.get(partialKey);
140.809 + }
140.810 + // return found object
140.811 + // Search UIManager Defaults
140.812 + if (obj == null) obj = UIManager.get(fullKey);
140.813 + // Search Synth Defaults for InputMaps
140.814 + if (obj == null && partialKey.equals("focusInputMap")) {
140.815 + obj = super.get(ctx, fullKey);
140.816 + }
140.817 + // if all we got was a null, store this fact for later use
140.818 + v.cache.put(new CacheKey(partialKey, xstate),
140.819 + obj == null ? NULL : obj);
140.820 + }
140.821 + // return found object
140.822 + return obj == NULL ? null : obj;
140.823 + }
140.824 +
140.825 + /**
140.826 + * Gets the appropriate background Painter, if there is one, for the state
140.827 + * specified in the given SynthContext. This method does appropriate
140.828 + * fallback searching, as described in #get.
140.829 + *
140.830 + * @param ctx The SynthContext. Must not be null.
140.831 + * @return The background painter associated for the given state, or null if
140.832 + * none could be found.
140.833 + */
140.834 + public Painter getBackgroundPainter(SynthContext ctx) {
140.835 + Values v = getValues(ctx);
140.836 + int xstate = getExtendedState(ctx, v);
140.837 + Painter p = null;
140.838 +
140.839 + // check the cache
140.840 + tmpKey.init("backgroundPainter$$instance", xstate);
140.841 + p = (Painter)v.cache.get(tmpKey);
140.842 + if (p != null) return p;
140.843 +
140.844 + // not in cache, so lookup and store in cache
140.845 + RuntimeState s = null;
140.846 + int[] lastIndex = new int[] {-1};
140.847 + while ((s = getNextState(v.states, lastIndex, xstate)) != null) {
140.848 + if (s.backgroundPainter != null) {
140.849 + p = s.backgroundPainter;
140.850 + break;
140.851 + }
140.852 + }
140.853 + if (p == null) p = (Painter)get(ctx, "backgroundPainter");
140.854 + if (p != null) {
140.855 + v.cache.put(new CacheKey("backgroundPainter$$instance", xstate), p);
140.856 + }
140.857 + return p;
140.858 + }
140.859 +
140.860 + /**
140.861 + * Gets the appropriate foreground Painter, if there is one, for the state
140.862 + * specified in the given SynthContext. This method does appropriate
140.863 + * fallback searching, as described in #get.
140.864 + *
140.865 + * @param ctx The SynthContext. Must not be null.
140.866 + * @return The foreground painter associated for the given state, or null if
140.867 + * none could be found.
140.868 + */
140.869 + public Painter getForegroundPainter(SynthContext ctx) {
140.870 + Values v = getValues(ctx);
140.871 + int xstate = getExtendedState(ctx, v);
140.872 + Painter p = null;
140.873 +
140.874 + // check the cache
140.875 + tmpKey.init("foregroundPainter$$instance", xstate);
140.876 + p = (Painter)v.cache.get(tmpKey);
140.877 + if (p != null) return p;
140.878 +
140.879 + // not in cache, so lookup and store in cache
140.880 + RuntimeState s = null;
140.881 + int[] lastIndex = new int[] {-1};
140.882 + while ((s = getNextState(v.states, lastIndex, xstate)) != null) {
140.883 + if (s.foregroundPainter != null) {
140.884 + p = s.foregroundPainter;
140.885 + break;
140.886 + }
140.887 + }
140.888 + if (p == null) p = (Painter)get(ctx, "foregroundPainter");
140.889 + if (p != null) {
140.890 + v.cache.put(new CacheKey("foregroundPainter$$instance", xstate), p);
140.891 + }
140.892 + return p;
140.893 + }
140.894 +
140.895 + /**
140.896 + * Gets the appropriate border Painter, if there is one, for the state
140.897 + * specified in the given SynthContext. This method does appropriate
140.898 + * fallback searching, as described in #get.
140.899 + *
140.900 + * @param ctx The SynthContext. Must not be null.
140.901 + * @return The border painter associated for the given state, or null if
140.902 + * none could be found.
140.903 + */
140.904 + public Painter getBorderPainter(SynthContext ctx) {
140.905 + Values v = getValues(ctx);
140.906 + int xstate = getExtendedState(ctx, v);
140.907 + Painter p = null;
140.908 +
140.909 + // check the cache
140.910 + tmpKey.init("borderPainter$$instance", xstate);
140.911 + p = (Painter)v.cache.get(tmpKey);
140.912 + if (p != null) return p;
140.913 +
140.914 + // not in cache, so lookup and store in cache
140.915 + RuntimeState s = null;
140.916 + int[] lastIndex = new int[] {-1};
140.917 + while ((s = getNextState(v.states, lastIndex, xstate)) != null) {
140.918 + if (s.borderPainter != null) {
140.919 + p = s.borderPainter;
140.920 + break;
140.921 + }
140.922 + }
140.923 + if (p == null) p = (Painter)get(ctx, "borderPainter");
140.924 + if (p != null) {
140.925 + v.cache.put(new CacheKey("borderPainter$$instance", xstate), p);
140.926 + }
140.927 + return p;
140.928 + }
140.929 +
140.930 + /**
140.931 + * Utility method which returns the proper Values based on the given
140.932 + * SynthContext. Ensures that parsing of the values has occurred, or
140.933 + * reoccurs as necessary.
140.934 + *
140.935 + * @param ctx The SynthContext
140.936 + * @return a non-null values reference
140.937 + */
140.938 + private Values getValues(SynthContext ctx) {
140.939 + validate();
140.940 + return values;
140.941 + }
140.942 +
140.943 + /**
140.944 + * Simple utility method that searchs the given array of Strings for the
140.945 + * given string. This method is only called from getExtendedState if
140.946 + * the developer has specified a specific state for the component to be
140.947 + * in (ie, has "wedged" the component in that state) by specifying
140.948 + * they client property "Nimbus.State".
140.949 + *
140.950 + * @param names a non-null array of strings
140.951 + * @param name the name to look for in the array
140.952 + * @return true or false based on whether the given name is in the array
140.953 + */
140.954 + private boolean contains(String[] names, String name) {
140.955 + assert name != null;
140.956 + for (int i=0; i<names.length; i++) {
140.957 + if (name.equals(names[i])) {
140.958 + return true;
140.959 + }
140.960 + }
140.961 + return false;
140.962 + }
140.963 +
140.964 + /**
140.965 + * <p>Gets the extended state for a given synth context. Nimbus supports the
140.966 + * ability to define custom states. The algorithm used for choosing what
140.967 + * style information to use for a given state requires a single integer
140.968 + * bit string where each bit in the integer represents a different state
140.969 + * that the component is in. This method uses the componentState as
140.970 + * reported in the SynthContext, in addition to custom states, to determine
140.971 + * what this extended state is.</p>
140.972 + *
140.973 + * <p>In addition, this method checks the component in the given context
140.974 + * for a client property called "Nimbus.State". If one exists, then it will
140.975 + * decompose the String associated with that property to determine what
140.976 + * state to return. In this way, the developer can force a component to be
140.977 + * in a specific state, regardless of what the "real" state of the component
140.978 + * is.</p>
140.979 + *
140.980 + * <p>The string associated with "Nimbus.State" would be of the form:
140.981 + * <pre>Enabled+CustomState+MouseOver</pre></p>
140.982 + *
140.983 + * @param ctx
140.984 + * @param v
140.985 + * @return
140.986 + */
140.987 + private int getExtendedState(SynthContext ctx, Values v) {
140.988 + JComponent c = ctx.getComponent();
140.989 + int xstate = 0;
140.990 + int mask = 1;
140.991 + //check for the Nimbus.State client property
140.992 + //Performance NOTE: getClientProperty ends up inside a synchronized
140.993 + //block, so there is some potential for performance issues here, however
140.994 + //I'm not certain that there is one on a modern VM.
140.995 + Object property = c.getClientProperty("Nimbus.State");
140.996 + if (property != null) {
140.997 + String stateNames = property.toString();
140.998 + String[] states = stateNames.split("\\+");
140.999 + if (v.stateTypes == null){
140.1000 + // standard states only
140.1001 + for (String stateStr : states) {
140.1002 + State.StandardState s = State.getStandardState(stateStr);
140.1003 + if (s != null) xstate |= s.getState();
140.1004 + }
140.1005 + } else {
140.1006 + // custom states
140.1007 + for (State s : v.stateTypes) {
140.1008 + if (contains(states, s.getName())) {
140.1009 + xstate |= mask;
140.1010 + }
140.1011 + mask <<= 1;
140.1012 + }
140.1013 + }
140.1014 + } else {
140.1015 + //if there are no custom states defined, then simply return the
140.1016 + //state that Synth reported
140.1017 + if (v.stateTypes == null) return ctx.getComponentState();
140.1018 +
140.1019 + //there are custom states on this values, so I'll have to iterate
140.1020 + //over them all and return a custom extended state
140.1021 + int state = ctx.getComponentState();
140.1022 + for (State s : v.stateTypes) {
140.1023 + if (s.isInState(c, state)) {
140.1024 + xstate |= mask;
140.1025 + }
140.1026 + mask <<= 1;
140.1027 + }
140.1028 + }
140.1029 + return xstate;
140.1030 + }
140.1031 +
140.1032 + /**
140.1033 + * <p>Gets the RuntimeState that most closely matches the state in the given
140.1034 + * context, but is less specific than the given "lastState". Essentially,
140.1035 + * this allows you to search for the next best state.</p>
140.1036 + *
140.1037 + * <p>For example, if you had the following three states:
140.1038 + * <pre>
140.1039 + * Enabled
140.1040 + * Enabled+Pressed
140.1041 + * Disabled
140.1042 + * </pre>
140.1043 + * And you wanted to find the state that best represented
140.1044 + * ENABLED+PRESSED+FOCUSED and <code>lastState</code> was null (or an
140.1045 + * empty array, or an array with a single int with index == -1), then
140.1046 + * Enabled+Pressed would be returned. If you then call this method again but
140.1047 + * pass the index of Enabled+Pressed as the "lastState", then
140.1048 + * Enabled would be returned. If you call this method a third time and pass
140.1049 + * the index of Enabled in as the <code>lastState</code>, then null would be
140.1050 + * returned.</p>
140.1051 + *
140.1052 + * <p>The actual code path for determining the proper state is the same as
140.1053 + * in Synth.</p>
140.1054 + *
140.1055 + * @param ctx
140.1056 + * @param lastState a 1 element array, allowing me to do pass-by-reference.
140.1057 + * @return
140.1058 + */
140.1059 + private RuntimeState getNextState(RuntimeState[] states,
140.1060 + int[] lastState,
140.1061 + int xstate) {
140.1062 + // Use the StateInfo with the most bits that matches that of state.
140.1063 + // If there are none, then fallback to
140.1064 + // the StateInfo with a state of 0, indicating it'll match anything.
140.1065 +
140.1066 + // Consider if we have 3 StateInfos a, b and c with states:
140.1067 + // SELECTED, SELECTED | ENABLED, 0
140.1068 + //
140.1069 + // Input Return Value
140.1070 + // ----- ------------
140.1071 + // SELECTED a
140.1072 + // SELECTED | ENABLED b
140.1073 + // MOUSE_OVER c
140.1074 + // SELECTED | ENABLED | FOCUSED b
140.1075 + // ENABLED c
140.1076 +
140.1077 + if (states != null && states.length > 0) {
140.1078 + int bestCount = 0;
140.1079 + int bestIndex = -1;
140.1080 + int wildIndex = -1;
140.1081 +
140.1082 + //if xstate is 0, then search for the runtime state with component
140.1083 + //state of 0. That is, find the exact match and return it.
140.1084 + if (xstate == 0) {
140.1085 + for (int counter = states.length - 1; counter >= 0; counter--) {
140.1086 + if (states[counter].state == 0) {
140.1087 + lastState[0] = counter;
140.1088 + return states[counter];
140.1089 + }
140.1090 + }
140.1091 + //an exact match couldn't be found, so there was no match.
140.1092 + lastState[0] = -1;
140.1093 + return null;
140.1094 + }
140.1095 +
140.1096 + //xstate is some value != 0
140.1097 +
140.1098 + //determine from which index to start looking. If lastState[0] is -1
140.1099 + //then we know to start from the end of the state array. Otherwise,
140.1100 + //we start at the lastIndex - 1.
140.1101 + int lastStateIndex = lastState == null || lastState[0] == -1 ?
140.1102 + states.length : lastState[0];
140.1103 +
140.1104 + for (int counter = lastStateIndex - 1; counter >= 0; counter--) {
140.1105 + int oState = states[counter].state;
140.1106 +
140.1107 + if (oState == 0) {
140.1108 + if (wildIndex == -1) {
140.1109 + wildIndex = counter;
140.1110 + }
140.1111 + } else if ((xstate & oState) == oState) {
140.1112 + // This is key, we need to make sure all bits of the
140.1113 + // StateInfo match, otherwise a StateInfo with
140.1114 + // SELECTED | ENABLED would match ENABLED, which we
140.1115 + // don't want.
140.1116 +
140.1117 + // This comes from BigInteger.bitCnt
140.1118 + int bitCount = oState;
140.1119 + bitCount -= (0xaaaaaaaa & bitCount) >>> 1;
140.1120 + bitCount = (bitCount & 0x33333333) + ((bitCount >>> 2) &
140.1121 + 0x33333333);
140.1122 + bitCount = bitCount + (bitCount >>> 4) & 0x0f0f0f0f;
140.1123 + bitCount += bitCount >>> 8;
140.1124 + bitCount += bitCount >>> 16;
140.1125 + bitCount = bitCount & 0xff;
140.1126 + if (bitCount > bestCount) {
140.1127 + bestIndex = counter;
140.1128 + bestCount = bitCount;
140.1129 + }
140.1130 + }
140.1131 + }
140.1132 + if (bestIndex != -1) {
140.1133 + lastState[0] = bestIndex;
140.1134 + return states[bestIndex];
140.1135 + }
140.1136 + if (wildIndex != -1) {
140.1137 + lastState[0] = wildIndex;
140.1138 + return states[wildIndex];
140.1139 + }
140.1140 + }
140.1141 + lastState[0] = -1;
140.1142 + return null;
140.1143 + }
140.1144 +
140.1145 + /**
140.1146 + * Contains values such as the UIDefaults and painters asssociated with
140.1147 + * a state. Whereas <code>State</code> represents a distinct state that a
140.1148 + * component can be in (such as Enabled), this class represents the colors,
140.1149 + * fonts, painters, etc associated with some state for this
140.1150 + * style.
140.1151 + */
140.1152 + private final class RuntimeState implements Cloneable {
140.1153 + int state;
140.1154 + Painter backgroundPainter;
140.1155 + Painter foregroundPainter;
140.1156 + Painter borderPainter;
140.1157 + String stateName;
140.1158 + UIDefaults defaults = new UIDefaults(10, .7f);
140.1159 +
140.1160 + private RuntimeState(int state, String stateName) {
140.1161 + this.state = state;
140.1162 + this.stateName = stateName;
140.1163 + }
140.1164 +
140.1165 + @Override
140.1166 + public String toString() {
140.1167 + return stateName;
140.1168 + }
140.1169 +
140.1170 + @Override
140.1171 + public RuntimeState clone() {
140.1172 + RuntimeState clone = new RuntimeState(state, stateName);
140.1173 + clone.backgroundPainter = backgroundPainter;
140.1174 + clone.foregroundPainter = foregroundPainter;
140.1175 + clone.borderPainter = borderPainter;
140.1176 + clone.defaults.putAll(defaults);
140.1177 + return clone;
140.1178 + }
140.1179 + }
140.1180 +
140.1181 + /**
140.1182 + * Essentially a struct of data for a style. A default instance of this
140.1183 + * class is used by NimbusStyle. Additional instances exist for each
140.1184 + * component that has overrides.
140.1185 + */
140.1186 + private static final class Values {
140.1187 + /**
140.1188 + * The list of State types. A State represents a type of state, such
140.1189 + * as Enabled, Default, WindowFocused, etc. These can be custom states.
140.1190 + */
140.1191 + State[] stateTypes = null;
140.1192 + /**
140.1193 + * The list of actual runtime state representations. These can represent things such
140.1194 + * as Enabled + Focused. Thus, they differ from States in that they contain
140.1195 + * several states together, and have associated properties, data, etc.
140.1196 + */
140.1197 + RuntimeState[] states = null;
140.1198 + /**
140.1199 + * The content margins for this region.
140.1200 + */
140.1201 + Insets contentMargins;
140.1202 + /**
140.1203 + * Defaults on the region/component level.
140.1204 + */
140.1205 + UIDefaults defaults = new UIDefaults(10, .7f);
140.1206 + /**
140.1207 + * Simple cache. After a value has been looked up, it is stored
140.1208 + * in this cache for later retrieval. The key is a concatenation of
140.1209 + * the property being looked up, two dollar signs, and the extended
140.1210 + * state. So for example:
140.1211 + *
140.1212 + * foo.bar$$2353
140.1213 + */
140.1214 + Map<CacheKey,Object> cache = new HashMap<CacheKey,Object>();
140.1215 + }
140.1216 +
140.1217 + /**
140.1218 + * This implementation presupposes that key is never null and that
140.1219 + * the two keys being checked for equality are never null
140.1220 + */
140.1221 + private static final class CacheKey {
140.1222 + private String key;
140.1223 + private int xstate;
140.1224 +
140.1225 + CacheKey(Object key, int xstate) {
140.1226 + init(key, xstate);
140.1227 + }
140.1228 +
140.1229 + void init(Object key, int xstate) {
140.1230 + this.key = key.toString();
140.1231 + this.xstate = xstate;
140.1232 + }
140.1233 +
140.1234 + @Override
140.1235 + public boolean equals(Object obj) {
140.1236 + final CacheKey other = (CacheKey) obj;
140.1237 + if (obj == null) return false;
140.1238 + if (this.xstate != other.xstate) return false;
140.1239 + if (!this.key.equals(other.key)) return false;
140.1240 + return true;
140.1241 + }
140.1242 +
140.1243 + @Override
140.1244 + public int hashCode() {
140.1245 + int hash = 3;
140.1246 + hash = 29 * hash + this.key.hashCode();
140.1247 + hash = 29 * hash + this.xstate;
140.1248 + return hash;
140.1249 + }
140.1250 + }
140.1251 +
140.1252 + /**
140.1253 + * This listener is used to listen to the UIDefaults tables and clear out
140.1254 + * the cached-precompiled map of defaults in that case.
140.1255 + */
140.1256 + private static final class DefaultsListener implements PropertyChangeListener {
140.1257 + @Override
140.1258 + public void propertyChange(PropertyChangeEvent evt) {
140.1259 + AppContext.getAppContext().put("NimbusStyle.defaults", null);
140.1260 + }
140.1261 + }
140.1262 +}
141.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
141.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/OuterGlowEffect.java Wed Apr 29 00:27:46 2009 -0700
141.3 @@ -0,0 +1,39 @@
141.4 +/*
141.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
141.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
141.7 + *
141.8 + * This code is free software; you can redistribute it and/or modify it
141.9 + * under the terms of the GNU General Public License version 2 only, as
141.10 + * published by the Free Software Foundation. Sun designates this
141.11 + * particular file as subject to the "Classpath" exception as provided
141.12 + * by Sun in the LICENSE file that accompanied this code.
141.13 + *
141.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
141.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
141.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
141.17 + * version 2 for more details (a copy is included in the LICENSE file that
141.18 + * accompanied this code).
141.19 + *
141.20 + * You should have received a copy of the GNU General Public License version
141.21 + * 2 along with this work; if not, write to the Free Software Foundation,
141.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
141.23 + *
141.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
141.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
141.26 + * have any questions.
141.27 + */
141.28 +package javax.swing.plaf.nimbus;
141.29 +
141.30 +import java.awt.Color;
141.31 +
141.32 +/**
141.33 + * InnerGlowEffect
141.34 + *
141.35 + * @author Created by Jasper Potts (Jun 21, 2007)
141.36 + */
141.37 +class OuterGlowEffect extends DropShadowEffect {
141.38 + OuterGlowEffect() {
141.39 + distance = 0;
141.40 + color = new Color(255, 255, 211);
141.41 + }
141.42 +}
142.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
142.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/PainterImpl.template Wed Apr 29 00:27:46 2009 -0700
142.3 @@ -0,0 +1,87 @@
142.4 +/*
142.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
142.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
142.7 + *
142.8 + * This code is free software; you can redistribute it and/or modify it
142.9 + * under the terms of the GNU General Public License version 2 only, as
142.10 + * published by the Free Software Foundation. Sun designates this
142.11 + * particular file as subject to the "Classpath" exception as provided
142.12 + * by Sun in the LICENSE file that accompanied this code.
142.13 + *
142.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
142.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
142.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
142.17 + * version 2 for more details (a copy is included in the LICENSE file that
142.18 + * accompanied this code).
142.19 + *
142.20 + * You should have received a copy of the GNU General Public License version
142.21 + * 2 along with this work; if not, write to the Free Software Foundation,
142.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
142.23 + *
142.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
142.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
142.26 + * have any questions.
142.27 + */
142.28 +package ${PACKAGE};
142.29 +
142.30 +import java.awt.*;
142.31 +import java.awt.geom.*;
142.32 +import java.awt.image.*;
142.33 +import javax.swing.*;
142.34 +import javax.swing.Painter;
142.35 +
142.36 +
142.37 +public final class ${PAINTER_NAME} extends AbstractRegionPainter {
142.38 + //package private integers representing the available states that
142.39 + //this painter will paint. These are used when creating a new instance
142.40 + //of ${PAINTER_NAME} to determine which region/state is being painted
142.41 + //by that instance.
142.42 +${STATIC_DECL}
142.43 +
142.44 + private int state; //refers to one of the static final ints above
142.45 + private PaintContext ctx;
142.46 +
142.47 + //the following 4 variables are reused during the painting code of the layers
142.48 + private Path2D path = new Path2D.Float();
142.49 + private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0);
142.50 + private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0);
142.51 + private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0);
142.52 +
142.53 + //All Colors used for painting are stored here. Ideally, only those colors being used
142.54 + //by a particular instance of ${PAINTER_NAME} would be created. For the moment at least,
142.55 + //however, all are created for each instance.
142.56 +${COLORS_DECL}
142.57 +
142.58 + //Array of current component colors, updated in each paint call
142.59 + private Object[] componentColors;
142.60 +
142.61 + public ${PAINTER_NAME}(PaintContext ctx, int state) {
142.62 + super();
142.63 + this.state = state;
142.64 + this.ctx = ctx;
142.65 + }
142.66 +
142.67 + @Override
142.68 + protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
142.69 + //populate componentColors array with colors calculated in getExtendedCacheKeys call
142.70 + componentColors = extendedCacheKeys;
142.71 + //generate this entire method. Each state/bg/fg/border combo that has
142.72 + //been painted gets its own KEY and paint method.
142.73 + switch(state) {
142.74 +${DO_PAINT_SWITCH_BODY}
142.75 + }
142.76 + }
142.77 +
142.78 +${GET_EXTENDED_CACHE_KEYS}
142.79 +
142.80 + @Override
142.81 + protected final PaintContext getPaintContext() {
142.82 + return ctx;
142.83 + }
142.84 +
142.85 +${PAINTING_DECL}
142.86 +
142.87 +${SHAPES_DECL}
142.88 +
142.89 +${GRADIENTS_DECL}
142.90 +}
143.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
143.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/ShadowEffect.java Wed Apr 29 00:27:46 2009 -0700
143.3 @@ -0,0 +1,103 @@
143.4 +/*
143.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
143.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
143.7 + *
143.8 + * This code is free software; you can redistribute it and/or modify it
143.9 + * under the terms of the GNU General Public License version 2 only, as
143.10 + * published by the Free Software Foundation. Sun designates this
143.11 + * particular file as subject to the "Classpath" exception as provided
143.12 + * by Sun in the LICENSE file that accompanied this code.
143.13 + *
143.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
143.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
143.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
143.17 + * version 2 for more details (a copy is included in the LICENSE file that
143.18 + * accompanied this code).
143.19 + *
143.20 + * You should have received a copy of the GNU General Public License version
143.21 + * 2 along with this work; if not, write to the Free Software Foundation,
143.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
143.23 + *
143.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
143.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
143.26 + * have any questions.
143.27 + */
143.28 +package javax.swing.plaf.nimbus;
143.29 +
143.30 +import java.awt.Color;
143.31 +
143.32 +/**
143.33 + * ShadowEffect - base class with all the standard properties for shadow effects
143.34 + *
143.35 + * @author Created by Jasper Potts (Jun 18, 2007)
143.36 + */
143.37 +abstract class ShadowEffect extends Effect {
143.38 + protected Color color = Color.BLACK;
143.39 + /** Opacity a float 0-1 for percentage */
143.40 + protected float opacity = 0.75f;
143.41 + /** Angle in degrees between 0-360 */
143.42 + protected int angle = 135;
143.43 + /** Distance in pixels */
143.44 + protected int distance = 5;
143.45 + /** The shadow spread between 0-100 % */
143.46 + protected int spread = 0;
143.47 + /** Size in pixels */
143.48 + protected int size = 5;
143.49 +
143.50 + // =================================================================================================================
143.51 + // Bean methods
143.52 +
143.53 + Color getColor() {
143.54 + return color;
143.55 + }
143.56 +
143.57 + void setColor(Color color) {
143.58 + Color old = getColor();
143.59 + this.color = color;
143.60 + }
143.61 +
143.62 + float getOpacity() {
143.63 + return opacity;
143.64 + }
143.65 +
143.66 + void setOpacity(float opacity) {
143.67 + float old = getOpacity();
143.68 + this.opacity = opacity;
143.69 + }
143.70 +
143.71 + int getAngle() {
143.72 + return angle;
143.73 + }
143.74 +
143.75 + void setAngle(int angle) {
143.76 + int old = getAngle();
143.77 + this.angle = angle;
143.78 + }
143.79 +
143.80 + int getDistance() {
143.81 + return distance;
143.82 + }
143.83 +
143.84 + void setDistance(int distance) {
143.85 + int old = getDistance();
143.86 + this.distance = distance;
143.87 + }
143.88 +
143.89 + int getSpread() {
143.90 + return spread;
143.91 + }
143.92 +
143.93 + void setSpread(int spread) {
143.94 + int old = getSpread();
143.95 + this.spread = spread;
143.96 + }
143.97 +
143.98 + int getSize() {
143.99 + return size;
143.100 + }
143.101 +
143.102 + void setSize(int size) {
143.103 + int old = getSize();
143.104 + this.size = size;
143.105 + }
143.106 +}
144.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
144.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/State.java Wed Apr 29 00:27:46 2009 -0700
144.3 @@ -0,0 +1,213 @@
144.4 +/*
144.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
144.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
144.7 + *
144.8 + * This code is free software; you can redistribute it and/or modify it
144.9 + * under the terms of the GNU General Public License version 2 only, as
144.10 + * published by the Free Software Foundation. Sun designates this
144.11 + * particular file as subject to the "Classpath" exception as provided
144.12 + * by Sun in the LICENSE file that accompanied this code.
144.13 + *
144.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
144.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
144.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
144.17 + * version 2 for more details (a copy is included in the LICENSE file that
144.18 + * accompanied this code).
144.19 + *
144.20 + * You should have received a copy of the GNU General Public License version
144.21 + * 2 along with this work; if not, write to the Free Software Foundation,
144.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
144.23 + *
144.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
144.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
144.26 + * have any questions.
144.27 + */
144.28 +package javax.swing.plaf.nimbus;
144.29 +
144.30 +import java.util.HashMap;
144.31 +import java.util.Map;
144.32 +import javax.swing.JComponent;
144.33 +import javax.swing.plaf.synth.SynthConstants;
144.34 +
144.35 +/**
144.36 + * <p>Represents a built in, or custom, state in Nimbus.</p>
144.37 + *
144.38 + * <p>Synth provides several built in states, which are:
144.39 + * <ul>
144.40 + * <li>Enabled</li>
144.41 + * <li>Mouse Over</li>
144.42 + * <li>Pressed</li>
144.43 + * <li>Disabled</li>
144.44 + * <li>Focused</li>
144.45 + * <li>Selected</li>
144.46 + * <li>Default</li>
144.47 + * </ul>
144.48 + *
144.49 + * <p>However, there are many more states that could be described in a LookAndFeel, and it
144.50 + * would be nice to style components differently based on these different states.
144.51 + * For example, a progress bar could be "indeterminate". It would be very convenient
144.52 + * to allow this to be defined as a "state".</p>
144.53 + *
144.54 + * <p>This class, State, is intended to be used for such situations.
144.55 + * Simply implement the abstract #isInState method. It returns true if the given
144.56 + * JComponent is "in this state", false otherwise. This method will be called
144.57 + * <em>many</em> times in <em>performance sensitive loops</em>. It must execute
144.58 + * very quickly.</p>
144.59 + *
144.60 + * <p>For example, the following might be an implementation of a custom
144.61 + * "Indeterminate" state for JProgressBars:</p>
144.62 + *
144.63 + * <pre><code>
144.64 + * public final class IndeterminateState extends State<JProgressBar> {
144.65 + * public IndeterminateState() {
144.66 + * super("Indeterminate");
144.67 + * }
144.68 + *
144.69 + * @Override
144.70 + * protected boolean isInState(JProgressBar c) {
144.71 + * return c.isIndeterminate();
144.72 + * }
144.73 + * }
144.74 + * </code></pre>
144.75 + */
144.76 +public abstract class State<T extends JComponent>{
144.77 + static final Map<String, StandardState> standardStates = new HashMap<String, StandardState>(7);
144.78 + static final State Enabled = new StandardState(SynthConstants.ENABLED);
144.79 + static final State MouseOver = new StandardState(SynthConstants.MOUSE_OVER);
144.80 + static final State Pressed = new StandardState(SynthConstants.PRESSED);
144.81 + static final State Disabled = new StandardState(SynthConstants.DISABLED);
144.82 + static final State Focused = new StandardState(SynthConstants.FOCUSED);
144.83 + static final State Selected = new StandardState(SynthConstants.SELECTED);
144.84 + static final State Default = new StandardState(SynthConstants.DEFAULT);
144.85 +
144.86 + private String name;
144.87 +
144.88 + /**
144.89 + * <p>Create a new custom State. Specify the name for the state. The name should
144.90 + * be unique within the states set for any one particular component.
144.91 + * The name of the state should coincide with the name used in UIDefaults.</p>
144.92 + *
144.93 + * <p>For example, the following would be correct:</p>
144.94 + * <pre><code>
144.95 + * defaults.put("Button.States", "Enabled, Foo, Disabled");
144.96 + * defaults.put("Button.Foo", new FooState("Foo"));
144.97 + * </code></pre>
144.98 + *
144.99 + * @param name a simple user friendly name for the state, such as "Indeterminate"
144.100 + * or "EmbeddedPanel" or "Blurred". It is customary to use camel case,
144.101 + * with the first letter capitalized.
144.102 + */
144.103 + protected State(String name) {
144.104 + this.name = name;
144.105 + }
144.106 +
144.107 + @Override public String toString() { return name; }
144.108 +
144.109 + /**
144.110 + * <p>This is the main entry point, called by NimbusStyle.</p>
144.111 + *
144.112 + * <p>There are both custom states and standard states. Standard states
144.113 + * correlate to the states defined in SynthConstants. When a UI delegate
144.114 + * constructs a SynthContext, it specifies the state that the component is
144.115 + * in according to the states defined in SynthConstants. Our NimbusStyle
144.116 + * will then take this state, and query each State instance in the style
144.117 + * asking whether isInState(c, s).</p>
144.118 + *
144.119 + * <p>Now, only the standard states care about the "s" param. So we have
144.120 + * this odd arrangement:</p>
144.121 + * <ul>
144.122 + * <li>NimbusStyle calls State.isInState(c, s)</li>
144.123 + * <li>State.isInState(c, s) simply delegates to State.isInState(c)</li>
144.124 + * <li><em>EXCEPT</em>, StandardState overrides State.isInState(c, s) and
144.125 + * returns directly from that method after checking its state, and
144.126 + * does not call isInState(c) (since it is not needed for standard states).</li>
144.127 + * </ul>
144.128 + */
144.129 + boolean isInState(T c, int s) {
144.130 + return isInState(c);
144.131 + }
144.132 +
144.133 + /**
144.134 + * <p>Gets whether the specified JComponent is in the custom state represented
144.135 + * by this class. <em>This is an extremely performance sensitive loop.</em>
144.136 + * Please take proper precautions to ensure that it executes quickly.</p>
144.137 + *
144.138 + * <p>Nimbus uses this method to help determine what state a JComponent is
144.139 + * in. For example, a custom State could exist for JProgressBar such that
144.140 + * it would return <code>true</code> when the progress bar is indeterminate.
144.141 + * Such an implementation of this method would simply be:</p>
144.142 + *
144.143 + * <pre><code> return c.isIndeterminate();</code></pre>
144.144 + *
144.145 + * @param c the JComponent to test. This will never be null.
144.146 + * @return true if <code>c</code> is in the custom state represented by
144.147 + * this <code>State</code> instance
144.148 + */
144.149 + protected abstract boolean isInState(T c);
144.150 +
144.151 + String getName() { return name; }
144.152 +
144.153 + static boolean isStandardStateName(String name) {
144.154 + return standardStates.containsKey(name);
144.155 + }
144.156 +
144.157 + static StandardState getStandardState(String name) {
144.158 + return standardStates.get(name);
144.159 + }
144.160 +
144.161 + static final class StandardState extends State<JComponent> {
144.162 + private int state;
144.163 +
144.164 + private StandardState(int state) {
144.165 + super(toString(state));
144.166 + this.state = state;
144.167 + standardStates.put(getName(), this);
144.168 + }
144.169 +
144.170 + public int getState() {
144.171 + return state;
144.172 + }
144.173 +
144.174 + @Override
144.175 + boolean isInState(JComponent c, int s) {
144.176 + return (s & state) == state;
144.177 + }
144.178 +
144.179 + @Override
144.180 + protected boolean isInState(JComponent c) {
144.181 + throw new AssertionError("This method should never be called");
144.182 + }
144.183 +
144.184 + private static String toString(int state) {
144.185 + StringBuffer buffer = new StringBuffer();
144.186 + if ((state & SynthConstants.DEFAULT) == SynthConstants.DEFAULT) {
144.187 + buffer.append("Default");
144.188 + }
144.189 + if ((state & SynthConstants.DISABLED) == SynthConstants.DISABLED) {
144.190 + if (buffer.length() > 0) buffer.append("+");
144.191 + buffer.append("Disabled");
144.192 + }
144.193 + if ((state & SynthConstants.ENABLED) == SynthConstants.ENABLED) {
144.194 + if (buffer.length() > 0) buffer.append("+");
144.195 + buffer.append("Enabled");
144.196 + }
144.197 + if ((state & SynthConstants.FOCUSED) == SynthConstants.FOCUSED) {
144.198 + if (buffer.length() > 0) buffer.append("+");
144.199 + buffer.append("Focused");
144.200 + }
144.201 + if ((state & SynthConstants.MOUSE_OVER) == SynthConstants.MOUSE_OVER) {
144.202 + if (buffer.length() > 0) buffer.append("+");
144.203 + buffer.append("MouseOver");
144.204 + }
144.205 + if ((state & SynthConstants.PRESSED) == SynthConstants.PRESSED) {
144.206 + if (buffer.length() > 0) buffer.append("+");
144.207 + buffer.append("Pressed");
144.208 + }
144.209 + if ((state & SynthConstants.SELECTED) == SynthConstants.SELECTED) {
144.210 + if (buffer.length() > 0) buffer.append("+");
144.211 + buffer.append("Selected");
144.212 + }
144.213 + return buffer.toString();
144.214 + }
144.215 + }
144.216 +}
145.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
145.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/StateImpl.template Wed Apr 29 00:27:46 2009 -0700
145.3 @@ -0,0 +1,40 @@
145.4 +/*
145.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
145.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
145.7 + *
145.8 + * This code is free software; you can redistribute it and/or modify it
145.9 + * under the terms of the GNU General Public License version 2 only, as
145.10 + * published by the Free Software Foundation. Sun designates this
145.11 + * particular file as subject to the "Classpath" exception as provided
145.12 + * by Sun in the LICENSE file that accompanied this code.
145.13 + *
145.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
145.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
145.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
145.17 + * version 2 for more details (a copy is included in the LICENSE file that
145.18 + * accompanied this code).
145.19 + *
145.20 + * You should have received a copy of the GNU General Public License version
145.21 + * 2 along with this work; if not, write to the Free Software Foundation,
145.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
145.23 + *
145.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
145.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
145.26 + * have any questions.
145.27 + */
145.28 +package ${PACKAGE};
145.29 +
145.30 +import java.awt.*;
145.31 +import javax.swing.*;
145.32 +
145.33 +
145.34 +class ${STATE_NAME} extends State {
145.35 + ${STATE_NAME}() {
145.36 + super("${STATE_KEY}");
145.37 + }
145.38 +
145.39 + @Override protected boolean isInState(JComponent c) {
145.40 +${BODY}
145.41 + }
145.42 +}
145.43 +
146.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
146.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/SynthPainterImpl.java Wed Apr 29 00:27:46 2009 -0700
146.3 @@ -0,0 +1,2802 @@
146.4 +/*
146.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
146.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
146.7 + *
146.8 + * This code is free software; you can redistribute it and/or modify it
146.9 + * under the terms of the GNU General Public License version 2 only, as
146.10 + * published by the Free Software Foundation. Sun designates this
146.11 + * particular file as subject to the "Classpath" exception as provided
146.12 + * by Sun in the LICENSE file that accompanied this code.
146.13 + *
146.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
146.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
146.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
146.17 + * version 2 for more details (a copy is included in the LICENSE file that
146.18 + * accompanied this code).
146.19 + *
146.20 + * You should have received a copy of the GNU General Public License version
146.21 + * 2 along with this work; if not, write to the Free Software Foundation,
146.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
146.23 + *
146.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
146.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
146.26 + * have any questions.
146.27 + */
146.28 +package javax.swing.plaf.nimbus;
146.29 +
146.30 +import java.awt.*;
146.31 +import java.awt.geom.AffineTransform;
146.32 +import java.awt.geom.NoninvertibleTransformException;
146.33 +import java.awt.image.BufferedImage;
146.34 +import java.util.*;
146.35 +import javax.swing.*;
146.36 +import javax.swing.plaf.synth.SynthContext;
146.37 +import javax.swing.plaf.synth.SynthPainter;
146.38 +import javax.swing.plaf.synth.SynthConstants;
146.39 +
146.40 +import javax.swing.Painter;
146.41 +
146.42 +
146.43 +class SynthPainterImpl extends SynthPainter {
146.44 + private NimbusStyle style;
146.45 +
146.46 + SynthPainterImpl(NimbusStyle style) {
146.47 + this.style = style;
146.48 + }
146.49 +
146.50 + /**
146.51 + * Paint the provided painter using the provided transform at the specified
146.52 + * position and size. Handles if g is a non 2D Graphics by painting via a
146.53 + * BufferedImage.
146.54 + */
146.55 + private void paint(Painter p, SynthContext ctx, Graphics g, int x, int y,
146.56 + int w, int h, AffineTransform transform) {
146.57 + if (p != null) {
146.58 + if (g instanceof Graphics2D){
146.59 + Graphics2D gfx = (Graphics2D)g;
146.60 + if (transform!=null){
146.61 + gfx.transform(transform);
146.62 + }
146.63 + gfx.translate(x, y);
146.64 + p.paint(gfx, ctx.getComponent(), w, h);
146.65 + gfx.translate(-x, -y);
146.66 + if (transform!=null){
146.67 + try {
146.68 + gfx.transform(transform.createInverse());
146.69 + } catch (NoninvertibleTransformException e) {
146.70 + // this should never happen as we are in control of all
146.71 + // calls into this method and only ever pass in simple
146.72 + // transforms of rotate, flip and translates
146.73 + e.printStackTrace();
146.74 + }
146.75 + }
146.76 + } else {
146.77 + // use image if we are printing to a Java 1.1 PrintGraphics as
146.78 + // it is not a instance of Graphics2D
146.79 + BufferedImage img = new BufferedImage(w,h,
146.80 + BufferedImage.TYPE_INT_ARGB);
146.81 + Graphics2D gfx = img.createGraphics();
146.82 + if (transform!=null){
146.83 + gfx.transform(transform);
146.84 + }
146.85 + p.paint(gfx, ctx.getComponent(), w, h);
146.86 + gfx.dispose();
146.87 + g.drawImage(img,x,y,null);
146.88 + img = null;
146.89 + }
146.90 + }
146.91 + }
146.92 +
146.93 + private void paintBackground(SynthContext ctx, Graphics g, int x, int y,
146.94 + int w, int h, AffineTransform transform) {
146.95 + // if the background color of the component is 100% transparent
146.96 + // then we should not paint any background graphics. This is a solution
146.97 + // for there being no way of turning off Nimbus background painting as
146.98 + // basic components are all non-opaque by default.
146.99 + Component c = ctx.getComponent();
146.100 + Color bg = (c != null) ? c.getBackground() : null;
146.101 + if (bg == null || bg.getAlpha() > 0){
146.102 + Painter backgroundPainter = style.getBackgroundPainter(ctx);
146.103 + if (backgroundPainter != null) {
146.104 + paint(backgroundPainter, ctx, g, x, y, w, h,transform);
146.105 + }
146.106 + }
146.107 + }
146.108 +
146.109 + private void paintForeground(SynthContext ctx, Graphics g, int x, int y,
146.110 + int w, int h, AffineTransform transform) {
146.111 + Painter foregroundPainter = style.getForegroundPainter(ctx);
146.112 + if (foregroundPainter != null) {
146.113 + paint(foregroundPainter, ctx, g, x, y, w, h,transform);
146.114 + }
146.115 + }
146.116 +
146.117 + private void paintBorder(SynthContext ctx, Graphics g, int x, int y, int w,
146.118 + int h, AffineTransform transform) {
146.119 + Painter borderPainter = style.getBorderPainter(ctx);
146.120 + if (borderPainter != null) {
146.121 + paint(borderPainter, ctx, g, x, y, w, h,transform);
146.122 + }
146.123 + }
146.124 +
146.125 + private void paintBackground(SynthContext ctx, Graphics g, int x, int y, int w, int h, int orientation) {
146.126 + Component c = ctx.getComponent();
146.127 + boolean ltr = c.getComponentOrientation().isLeftToRight();
146.128 + // Don't RTL flip JSpliders as they handle it internaly
146.129 + if (ctx.getComponent() instanceof JSlider) ltr = true;
146.130 +
146.131 + if (orientation == SwingConstants.VERTICAL && ltr) {
146.132 + AffineTransform transform = new AffineTransform();
146.133 + transform.scale(-1, 1);
146.134 + transform.rotate(Math.toRadians(90));
146.135 + paintBackground(ctx, g, y, x, h, w, transform);
146.136 + } else if (orientation == SwingConstants.VERTICAL) {
146.137 + AffineTransform transform = new AffineTransform();
146.138 + transform.rotate(Math.toRadians(90));
146.139 + transform.translate(0,-(x+w));
146.140 + paintBackground(ctx, g, y, x, h, w, transform);
146.141 + } else if (orientation == SwingConstants.HORIZONTAL && ltr) {
146.142 + paintBackground(ctx, g, x, y, w, h, null);
146.143 + } else {
146.144 + //horizontal and right-to-left orientation
146.145 + AffineTransform transform = new AffineTransform();
146.146 + transform.translate(x,y);
146.147 + transform.scale(-1, 1);
146.148 + transform.translate(-w,0);
146.149 + paintBackground(ctx, g, 0, 0, w, h, transform);
146.150 + }
146.151 + }
146.152 +
146.153 + private void paintBorder(SynthContext ctx, Graphics g, int x, int y, int w, int h, int orientation) {
146.154 + Component c = ctx.getComponent();
146.155 + boolean ltr = c.getComponentOrientation().isLeftToRight();
146.156 + if (orientation == SwingConstants.VERTICAL && ltr) {
146.157 + AffineTransform transform = new AffineTransform();
146.158 + transform.scale(-1, 1);
146.159 + transform.rotate(Math.toRadians(90));
146.160 + paintBorder(ctx, g, y, x, h, w, transform);
146.161 + } else if (orientation == SwingConstants.VERTICAL) {
146.162 + AffineTransform transform = new AffineTransform();
146.163 + transform.rotate(Math.toRadians(90));
146.164 + transform.translate(0, -(x + w));
146.165 + paintBorder(ctx, g, y, 0, h, w, transform);
146.166 + } else if (orientation == SwingConstants.HORIZONTAL && ltr) {
146.167 + paintBorder(ctx, g, x, y, w, h, null);
146.168 + } else {
146.169 + //horizontal and right-to-left orientation
146.170 + paintBorder(ctx, g, x, y, w, h, null);
146.171 + }
146.172 + }
146.173 +
146.174 + private void paintForeground(SynthContext ctx, Graphics g, int x, int y, int w, int h, int orientation) {
146.175 + Component c = ctx.getComponent();
146.176 + boolean ltr = c.getComponentOrientation().isLeftToRight();
146.177 + if (orientation == SwingConstants.VERTICAL && ltr) {
146.178 + AffineTransform transform = new AffineTransform();
146.179 + transform.scale(-1, 1);
146.180 + transform.rotate(Math.toRadians(90));
146.181 + paintForeground(ctx, g, y, x, h, w, transform);
146.182 + } else if (orientation == SwingConstants.VERTICAL) {
146.183 + AffineTransform transform = new AffineTransform();
146.184 + transform.rotate(Math.toRadians(90));
146.185 + transform.translate(0, -(x + w));
146.186 + paintForeground(ctx, g, y, 0, h, w, transform);
146.187 + } else if (orientation == SwingConstants.HORIZONTAL && ltr) {
146.188 + paintForeground(ctx, g, x, y, w, h, null);
146.189 + } else {
146.190 + //horizontal and right-to-left orientation
146.191 + paintForeground(ctx, g, x, y, w, h, null);
146.192 + }
146.193 + }
146.194 +
146.195 + /**
146.196 + * Paints the background of an arrow button. Arrow buttons are created by
146.197 + * some components, such as <code>JScrollBar</code>.
146.198 + *
146.199 + * @param context SynthContext identifying the <code>JComponent</code> and
146.200 + * <code>Region</code> to paint to
146.201 + * @param g <code>Graphics</code> to paint to
146.202 + * @param x X coordinate of the area to paint to
146.203 + * @param y Y coordinate of the area to paint to
146.204 + * @param w Width of the area to paint to
146.205 + * @param h Height of the area to paint to
146.206 + */
146.207 + public void paintArrowButtonBackground(SynthContext context,
146.208 + Graphics g, int x, int y,
146.209 + int w, int h) {
146.210 + if (context.getComponent().getComponentOrientation().isLeftToRight()){
146.211 + paintBackground(context, g, x, y, w, h, null);
146.212 + } else {
146.213 + AffineTransform transform = new AffineTransform();
146.214 + transform.translate(x,y);
146.215 + transform.scale(-1, 1);
146.216 + transform.translate(-w,0);
146.217 + paintBackground(context, g, 0, 0, w, h, transform);
146.218 + }
146.219 + }
146.220 +
146.221 + /**
146.222 + * Paints the border of an arrow button. Arrow buttons are created by
146.223 + * some components, such as <code>JScrollBar</code>.
146.224 + *
146.225 + * @param context SynthContext identifying the <code>JComponent</code> and
146.226 + * <code>Region</code> to paint to
146.227 + * @param g <code>Graphics</code> to paint to
146.228 + * @param x X coordinate of the area to paint to
146.229 + * @param y Y coordinate of the area to paint to
146.230 + * @param w Width of the area to paint to
146.231 + * @param h Height of the area to paint to
146.232 + */
146.233 + public void paintArrowButtonBorder(SynthContext context,
146.234 + Graphics g, int x, int y,
146.235 + int w, int h) {
146.236 + paintBorder(context, g, x, y, w, h, null);
146.237 + }
146.238 +
146.239 + /**
146.240 + * Paints the foreground of an arrow button. This method is responsible
146.241 + * for drawing a graphical representation of a direction, typically
146.242 + * an arrow. Arrow buttons are created by
146.243 + * some components, such as <code>JScrollBar</code>
146.244 + *
146.245 + * @param context SynthContext identifying the <code>JComponent</code> and
146.246 + * <code>Region</code> to paint to
146.247 + * @param g <code>Graphics</code> to paint to
146.248 + * @param x X coordinate of the area to paint to
146.249 + * @param y Y coordinate of the area to paint to
146.250 + * @param w Width of the area to paint to
146.251 + * @param h Height of the area to paint to
146.252 + * @param direction One of SwingConstants.NORTH, SwingConstants.SOUTH
146.253 + * SwingConstants.EAST or SwingConstants.WEST
146.254 + */
146.255 + public void paintArrowButtonForeground(SynthContext context,
146.256 + Graphics g, int x, int y,
146.257 + int w, int h,
146.258 + int direction) {
146.259 + //assume that the painter is arranged with the arrow pointing... LEFT?
146.260 + String compName = context.getComponent().getName();
146.261 + boolean ltr = context.getComponent().
146.262 + getComponentOrientation().isLeftToRight();
146.263 + // The hard coding for spinners here needs to be replaced by a more
146.264 + // general method for disabling rotation
146.265 + if ("Spinner.nextButton".equals(compName) ||
146.266 + "Spinner.previousButton".equals(compName)) {
146.267 + if (ltr){
146.268 + paintForeground(context, g, x, y, w, h, null);
146.269 + } else {
146.270 + AffineTransform transform = new AffineTransform();
146.271 + transform.translate(w, 0);
146.272 + transform.scale(-1, 1);
146.273 + paintForeground(context, g, x, y, w, h, transform);
146.274 + }
146.275 + } else if (direction == SwingConstants.WEST) {
146.276 + paintForeground(context, g, x, y, w, h, null);
146.277 + } else if (direction == SwingConstants.NORTH) {
146.278 + if (ltr){
146.279 + AffineTransform transform = new AffineTransform();
146.280 + transform.scale(-1, 1);
146.281 + transform.rotate(Math.toRadians(90));
146.282 + paintForeground(context, g, y, 0, h, w, transform);
146.283 + } else {
146.284 + AffineTransform transform = new AffineTransform();
146.285 + transform.rotate(Math.toRadians(90));
146.286 + transform.translate(0, -(x + w));
146.287 + paintForeground(context, g, y, 0, h, w, transform);
146.288 + }
146.289 + } else if (direction == SwingConstants.EAST) {
146.290 + AffineTransform transform = new AffineTransform();
146.291 + transform.translate(w, 0);
146.292 + transform.scale(-1, 1);
146.293 + paintForeground(context, g, x, y, w, h, transform);
146.294 + } else if (direction == SwingConstants.SOUTH) {
146.295 + if (ltr){
146.296 + AffineTransform transform = new AffineTransform();
146.297 + transform.rotate(Math.toRadians(-90));
146.298 + transform.translate(-h, 0);
146.299 + paintForeground(context, g, y, x, h, w, transform);
146.300 + } else {
146.301 + AffineTransform transform = new AffineTransform();
146.302 + transform.scale(-1, 1);
146.303 + transform.rotate(Math.toRadians(-90));
146.304 + transform.translate(-(h+y), -(w+x));
146.305 + paintForeground(context, g, y, x, h, w, transform);
146.306 + }
146.307 + }
146.308 + }
146.309 +
146.310 + /**
146.311 + * Paints the background of a button.
146.312 + *
146.313 + * @param context SynthContext identifying the <code>JComponent</code> and
146.314 + * <code>Region</code> to paint to
146.315 + * @param g <code>Graphics</code> to paint to
146.316 + * @param x X coordinate of the area to paint to
146.317 + * @param y Y coordinate of the area to paint to
146.318 + * @param w Width of the area to paint to
146.319 + * @param h Height of the area to paint to
146.320 + */
146.321 + public void paintButtonBackground(SynthContext context,
146.322 + Graphics g, int x, int y,
146.323 + int w, int h) {
146.324 + paintBackground(context, g, x, y, w, h, null);
146.325 + }
146.326 +
146.327 + /**
146.328 + * Paints the border of a button.
146.329 + *
146.330 + * @param context SynthContext identifying the <code>JComponent</code> and
146.331 + * <code>Region</code> to paint to
146.332 + * @param g <code>Graphics</code> to paint to
146.333 + * @param x X coordinate of the area to paint to
146.334 + * @param y Y coordinate of the area to paint to
146.335 + * @param w Width of the area to paint to
146.336 + * @param h Height of the area to paint to
146.337 + */
146.338 + public void paintButtonBorder(SynthContext context,
146.339 + Graphics g, int x, int y,
146.340 + int w, int h) {
146.341 + paintBorder(context, g, x, y, w, h, null);
146.342 + }
146.343 +
146.344 + /**
146.345 + * Paints the background of a check box menu item.
146.346 + *
146.347 + * @param context SynthContext identifying the <code>JComponent</code> and
146.348 + * <code>Region</code> to paint to
146.349 + * @param g <code>Graphics</code> to paint to
146.350 + * @param x X coordinate of the area to paint to
146.351 + * @param y Y coordinate of the area to paint to
146.352 + * @param w Width of the area to paint to
146.353 + * @param h Height of the area to paint to
146.354 + */
146.355 + public void paintCheckBoxMenuItemBackground(SynthContext context,
146.356 + Graphics g, int x, int y,
146.357 + int w, int h) {
146.358 + paintBackground(context, g, x, y, w, h, null);
146.359 + }
146.360 +
146.361 + /**
146.362 + * Paints the border of a check box menu item.
146.363 + *
146.364 + * @param context SynthContext identifying the <code>JComponent</code> and
146.365 + * <code>Region</code> to paint to
146.366 + * @param g <code>Graphics</code> to paint to
146.367 + * @param x X coordinate of the area to paint to
146.368 + * @param y Y coordinate of the area to paint to
146.369 + * @param w Width of the area to paint to
146.370 + * @param h Height of the area to paint to
146.371 + */
146.372 + public void paintCheckBoxMenuItemBorder(SynthContext context,
146.373 + Graphics g, int x, int y,
146.374 + int w, int h) {
146.375 + paintBorder(context, g, x, y, w, h, null);
146.376 + }
146.377 +
146.378 + /**
146.379 + * Paints the background of a check box.
146.380 + *
146.381 + * @param context SynthContext identifying the <code>JComponent</code> and
146.382 + * <code>Region</code> to paint to
146.383 + * @param g <code>Graphics</code> to paint to
146.384 + * @param x X coordinate of the area to paint to
146.385 + * @param y Y coordinate of the area to paint to
146.386 + * @param w Width of the area to paint to
146.387 + * @param h Height of the area to paint to
146.388 + */
146.389 + public void paintCheckBoxBackground(SynthContext context,
146.390 + Graphics g, int x, int y,
146.391 + int w, int h) {
146.392 + paintBackground(context, g, x, y, w, h, null);
146.393 + }
146.394 +
146.395 + /**
146.396 + * Paints the border of a check box.
146.397 + *
146.398 + * @param context SynthContext identifying the <code>JComponent</code> and
146.399 + * <code>Region</code> to paint to
146.400 + * @param g <code>Graphics</code> to paint to
146.401 + * @param x X coordinate of the area to paint to
146.402 + * @param y Y coordinate of the area to paint to
146.403 + * @param w Width of the area to paint to
146.404 + * @param h Height of the area to paint to
146.405 + */
146.406 + public void paintCheckBoxBorder(SynthContext context,
146.407 + Graphics g, int x, int y,
146.408 + int w, int h) {
146.409 + paintBorder(context, g, x, y, w, h, null);
146.410 + }
146.411 +
146.412 + /**
146.413 + * Paints the background of a color chooser.
146.414 + *
146.415 + * @param context SynthContext identifying the <code>JComponent</code> and
146.416 + * <code>Region</code> to paint to
146.417 + * @param g <code>Graphics</code> to paint to
146.418 + * @param x X coordinate of the area to paint to
146.419 + * @param y Y coordinate of the area to paint to
146.420 + * @param w Width of the area to paint to
146.421 + * @param h Height of the area to paint to
146.422 + */
146.423 + public void paintColorChooserBackground(SynthContext context,
146.424 + Graphics g, int x, int y,
146.425 + int w, int h) {
146.426 + paintBackground(context, g, x, y, w, h, null);
146.427 + }
146.428 +
146.429 + /**
146.430 + * Paints the border of a color chooser.
146.431 + *
146.432 + * @param context SynthContext identifying the <code>JComponent</code> and
146.433 + * <code>Region</code> to paint to
146.434 + * @param g <code>Graphics</code> to paint to
146.435 + * @param x X coordinate of the area to paint to
146.436 + * @param y Y coordinate of the area to paint to
146.437 + * @param w Width of the area to paint to
146.438 + * @param h Height of the area to paint to
146.439 + */
146.440 + public void paintColorChooserBorder(SynthContext context,
146.441 + Graphics g, int x, int y,
146.442 + int w, int h) {
146.443 + paintBorder(context, g, x, y, w, h, null);
146.444 + }
146.445 +
146.446 + /**
146.447 + * Paints the background of a combo box.
146.448 + *
146.449 + * @param context SynthContext identifying the <code>JComponent</code> and
146.450 + * <code>Region</code> to paint to
146.451 + * @param g <code>Graphics</code> to paint to
146.452 + * @param x X coordinate of the area to paint to
146.453 + * @param y Y coordinate of the area to paint to
146.454 + * @param w Width of the area to paint to
146.455 + * @param h Height of the area to paint to
146.456 + */
146.457 + public void paintComboBoxBackground(SynthContext context,
146.458 + Graphics g, int x, int y,
146.459 + int w, int h) {
146.460 + if (context.getComponent().getComponentOrientation().isLeftToRight()){
146.461 + paintBackground(context, g, x, y, w, h, null);
146.462 + } else {
146.463 + AffineTransform transform = new AffineTransform();
146.464 + transform.translate(x,y);
146.465 + transform.scale(-1, 1);
146.466 + transform.translate(-w,0);
146.467 + paintBackground(context, g, 0, 0, w, h, transform);
146.468 + }
146.469 + }
146.470 +
146.471 + /**
146.472 + * Paints the border of a combo box.
146.473 + *
146.474 + * @param context SynthContext identifying the <code>JComponent</code> and
146.475 + * <code>Region</code> to paint to
146.476 + * @param g <code>Graphics</code> to paint to
146.477 + * @param x X coordinate of the area to paint to
146.478 + * @param y Y coordinate of the area to paint to
146.479 + * @param w Width of the area to paint to
146.480 + * @param h Height of the area to paint to
146.481 + */
146.482 + public void paintComboBoxBorder(SynthContext context,
146.483 + Graphics g, int x, int y,
146.484 + int w, int h) {
146.485 + paintBorder(context, g, x, y, w, h, null);
146.486 + }
146.487 +
146.488 + /**
146.489 + * Paints the background of a desktop icon.
146.490 + *
146.491 + * @param context SynthContext identifying the <code>JComponent</code> and
146.492 + * <code>Region</code> to paint to
146.493 + * @param g <code>Graphics</code> to paint to
146.494 + * @param x X coordinate of the area to paint to
146.495 + * @param y Y coordinate of the area to paint to
146.496 + * @param w Width of the area to paint to
146.497 + * @param h Height of the area to paint to
146.498 + */
146.499 + public void paintDesktopIconBackground(SynthContext context,
146.500 + Graphics g, int x, int y,
146.501 + int w, int h) {
146.502 + paintBackground(context, g, x, y, w, h, null);
146.503 + }
146.504 +
146.505 + /**
146.506 + * Paints the border of a desktop icon.
146.507 + *
146.508 + * @param context SynthContext identifying the <code>JComponent</code> and
146.509 + * <code>Region</code> to paint to
146.510 + * @param g <code>Graphics</code> to paint to
146.511 + * @param x X coordinate of the area to paint to
146.512 + * @param y Y coordinate of the area to paint to
146.513 + * @param w Width of the area to paint to
146.514 + * @param h Height of the area to paint to
146.515 + */
146.516 + public void paintDesktopIconBorder(SynthContext context,
146.517 + Graphics g, int x, int y,
146.518 + int w, int h) {
146.519 + paintBorder(context, g, x, y, w, h, null);
146.520 + }
146.521 +
146.522 + /**
146.523 + * Paints the background of a desktop pane.
146.524 + *
146.525 + * @param context SynthContext identifying the <code>JComponent</code> and
146.526 + * <code>Region</code> to paint to
146.527 + * @param g <code>Graphics</code> to paint to
146.528 + * @param x X coordinate of the area to paint to
146.529 + * @param y Y coordinate of the area to paint to
146.530 + * @param w Width of the area to paint to
146.531 + * @param h Height of the area to paint to
146.532 + */
146.533 + public void paintDesktopPaneBackground(SynthContext context,
146.534 + Graphics g, int x, int y,
146.535 + int w, int h) {
146.536 + paintBackground(context, g, x, y, w, h, null);
146.537 + }
146.538 +
146.539 + /**
146.540 + * Paints the background of a desktop pane.
146.541 + *
146.542 + * @param context SynthContext identifying the <code>JComponent</code> and
146.543 + * <code>Region</code> to paint to
146.544 + * @param g <code>Graphics</code> to paint to
146.545 + * @param x X coordinate of the area to paint to
146.546 + * @param y Y coordinate of the area to paint to
146.547 + * @param w Width of the area to paint to
146.548 + * @param h Height of the area to paint to
146.549 + */
146.550 + public void paintDesktopPaneBorder(SynthContext context,
146.551 + Graphics g, int x, int y,
146.552 + int w, int h) {
146.553 + paintBorder(context, g, x, y, w, h, null);
146.554 + }
146.555 +
146.556 + /**
146.557 + * Paints the background of an editor pane.
146.558 + *
146.559 + * @param context SynthContext identifying the <code>JComponent</code> and
146.560 + * <code>Region</code> to paint to
146.561 + * @param g <code>Graphics</code> to paint to
146.562 + * @param x X coordinate of the area to paint to
146.563 + * @param y Y coordinate of the area to paint to
146.564 + * @param w Width of the area to paint to
146.565 + * @param h Height of the area to paint to
146.566 + */
146.567 + public void paintEditorPaneBackground(SynthContext context,
146.568 + Graphics g, int x, int y,
146.569 + int w, int h) {
146.570 + paintBackground(context, g, x, y, w, h, null);
146.571 + }
146.572 +
146.573 + /**
146.574 + * Paints the border of an editor pane.
146.575 + *
146.576 + * @param context SynthContext identifying the <code>JComponent</code> and
146.577 + * <code>Region</code> to paint to
146.578 + * @param g <code>Graphics</code> to paint to
146.579 + * @param x X coordinate of the area to paint to
146.580 + * @param y Y coordinate of the area to paint to
146.581 + * @param w Width of the area to paint to
146.582 + * @param h Height of the area to paint to
146.583 + */
146.584 + public void paintEditorPaneBorder(SynthContext context,
146.585 + Graphics g, int x, int y,
146.586 + int w, int h) {
146.587 + paintBorder(context, g, x, y, w, h, null);
146.588 + }
146.589 +
146.590 + /**
146.591 + * Paints the background of a file chooser.
146.592 + *
146.593 + * @param context SynthContext identifying the <code>JComponent</code> and
146.594 + * <code>Region</code> to paint to
146.595 + * @param g <code>Graphics</code> to paint to
146.596 + * @param x X coordinate of the area to paint to
146.597 + * @param y Y coordinate of the area to paint to
146.598 + * @param w Width of the area to paint to
146.599 + * @param h Height of the area to paint to
146.600 + */
146.601 + public void paintFileChooserBackground(SynthContext context,
146.602 + Graphics g, int x, int y,
146.603 + int w, int h) {
146.604 + paintBackground(context, g, x, y, w, h, null);
146.605 + }
146.606 +
146.607 + /**
146.608 + * Paints the border of a file chooser.
146.609 + *
146.610 + * @param context SynthContext identifying the <code>JComponent</code> and
146.611 + * <code>Region</code> to paint to
146.612 + * @param g <code>Graphics</code> to paint to
146.613 + * @param x X coordinate of the area to paint to
146.614 + * @param y Y coordinate of the area to paint to
146.615 + * @param w Width of the area to paint to
146.616 + * @param h Height of the area to paint to
146.617 + */
146.618 + public void paintFileChooserBorder(SynthContext context,
146.619 + Graphics g, int x, int y,
146.620 + int w, int h) {
146.621 + paintBorder(context, g, x, y, w, h, null);
146.622 + }
146.623 +
146.624 + /**
146.625 + * Paints the background of a formatted text field.
146.626 + *
146.627 + * @param context SynthContext identifying the <code>JComponent</code> and
146.628 + * <code>Region</code> to paint to
146.629 + * @param g <code>Graphics</code> to paint to
146.630 + * @param x X coordinate of the area to paint to
146.631 + * @param y Y coordinate of the area to paint to
146.632 + * @param w Width of the area to paint to
146.633 + * @param h Height of the area to paint to
146.634 + */
146.635 + public void paintFormattedTextFieldBackground(SynthContext context,
146.636 + Graphics g, int x, int y,
146.637 + int w, int h) {
146.638 + if (context.getComponent().getComponentOrientation().isLeftToRight()){
146.639 + paintBackground(context, g, x, y, w, h, null);
146.640 + } else {
146.641 + AffineTransform transform = new AffineTransform();
146.642 + transform.translate(x,y);
146.643 + transform.scale(-1, 1);
146.644 + transform.translate(-w,0);
146.645 + paintBackground(context, g, 0, 0, w, h, transform);
146.646 + }
146.647 + }
146.648 +
146.649 + /**
146.650 + * Paints the border of a formatted text field.
146.651 + *
146.652 + * @param context SynthContext identifying the <code>JComponent</code> and
146.653 + * <code>Region</code> to paint to
146.654 + * @param g <code>Graphics</code> to paint to
146.655 + * @param x X coordinate of the area to paint to
146.656 + * @param y Y coordinate of the area to paint to
146.657 + * @param w Width of the area to paint to
146.658 + * @param h Height of the area to paint to
146.659 + */
146.660 + public void paintFormattedTextFieldBorder(SynthContext context,
146.661 + Graphics g, int x, int y,
146.662 + int w, int h) {
146.663 + if (context.getComponent().getComponentOrientation().isLeftToRight()){
146.664 + paintBorder(context, g, x, y, w, h, null);
146.665 + } else {
146.666 + AffineTransform transform = new AffineTransform();
146.667 + transform.translate(x,y);
146.668 + transform.scale(-1, 1);
146.669 + transform.translate(-w,0);
146.670 + paintBorder(context, g, 0, 0, w, h, transform);
146.671 + }
146.672 + }
146.673 +
146.674 + /**
146.675 + * Paints the background of an internal frame title pane.
146.676 + *
146.677 + * @param context SynthContext identifying the <code>JComponent</code> and
146.678 + * <code>Region</code> to paint to
146.679 + * @param g <code>Graphics</code> to paint to
146.680 + * @param x X coordinate of the area to paint to
146.681 + * @param y Y coordinate of the area to paint to
146.682 + * @param w Width of the area to paint to
146.683 + * @param h Height of the area to paint to
146.684 + */
146.685 + public void paintInternalFrameTitlePaneBackground(SynthContext context,
146.686 + Graphics g, int x, int y,
146.687 + int w, int h) {
146.688 + paintBackground(context, g, x, y, w, h, null);
146.689 + }
146.690 +
146.691 + /**
146.692 + * Paints the border of an internal frame title pane.
146.693 + *
146.694 + * @param context SynthContext identifying the <code>JComponent</code> and
146.695 + * <code>Region</code> to paint to
146.696 + * @param g <code>Graphics</code> to paint to
146.697 + * @param x X coordinate of the area to paint to
146.698 + * @param y Y coordinate of the area to paint to
146.699 + * @param w Width of the area to paint to
146.700 + * @param h Height of the area to paint to
146.701 + */
146.702 + public void paintInternalFrameTitlePaneBorder(SynthContext context,
146.703 + Graphics g, int x, int y,
146.704 + int w, int h) {
146.705 + paintBorder(context, g, x, y, w, h, null);
146.706 + }
146.707 +
146.708 + /**
146.709 + * Paints the background of an internal frame.
146.710 + *
146.711 + * @param context SynthContext identifying the <code>JComponent</code> and
146.712 + * <code>Region</code> to paint to
146.713 + * @param g <code>Graphics</code> to paint to
146.714 + * @param x X coordinate of the area to paint to
146.715 + * @param y Y coordinate of the area to paint to
146.716 + * @param w Width of the area to paint to
146.717 + * @param h Height of the area to paint to
146.718 + */
146.719 + public void paintInternalFrameBackground(SynthContext context,
146.720 + Graphics g, int x, int y,
146.721 + int w, int h) {
146.722 + paintBackground(context, g, x, y, w, h, null);
146.723 + }
146.724 +
146.725 + /**
146.726 + * Paints the border of an internal frame.
146.727 + *
146.728 + * @param context SynthContext identifying the <code>JComponent</code> and
146.729 + * <code>Region</code> to paint to
146.730 + * @param g <code>Graphics</code> to paint to
146.731 + * @param x X coordinate of the area to paint to
146.732 + * @param y Y coordinate of the area to paint to
146.733 + * @param w Width of the area to paint to
146.734 + * @param h Height of the area to paint to
146.735 + */
146.736 + public void paintInternalFrameBorder(SynthContext context,
146.737 + Graphics g, int x, int y,
146.738 + int w, int h) {
146.739 + paintBorder(context, g, x, y, w, h, null);
146.740 + }
146.741 +
146.742 + /**
146.743 + * Paints the background of a label.
146.744 + *
146.745 + * @param context SynthContext identifying the <code>JComponent</code> and
146.746 + * <code>Region</code> to paint to
146.747 + * @param g <code>Graphics</code> to paint to
146.748 + * @param x X coordinate of the area to paint to
146.749 + * @param y Y coordinate of the area to paint to
146.750 + * @param w Width of the area to paint to
146.751 + * @param h Height of the area to paint to
146.752 + */
146.753 + public void paintLabelBackground(SynthContext context,
146.754 + Graphics g, int x, int y,
146.755 + int w, int h) {
146.756 + paintBackground(context, g, x, y, w, h, null);
146.757 + }
146.758 +
146.759 + /**
146.760 + * Paints the border of a label.
146.761 + *
146.762 + * @param context SynthContext identifying the <code>JComponent</code> and
146.763 + * <code>Region</code> to paint to
146.764 + * @param g <code>Graphics</code> to paint to
146.765 + * @param x X coordinate of the area to paint to
146.766 + * @param y Y coordinate of the area to paint to
146.767 + * @param w Width of the area to paint to
146.768 + * @param h Height of the area to paint to
146.769 + */
146.770 + public void paintLabelBorder(SynthContext context,
146.771 + Graphics g, int x, int y,
146.772 + int w, int h) {
146.773 + paintBorder(context, g, x, y, w, h, null);
146.774 + }
146.775 +
146.776 + /**
146.777 + * Paints the background of a list.
146.778 + *
146.779 + * @param context SynthContext identifying the <code>JComponent</code> and
146.780 + * <code>Region</code> to paint to
146.781 + * @param g <code>Graphics</code> to paint to
146.782 + * @param x X coordinate of the area to paint to
146.783 + * @param y Y coordinate of the area to paint to
146.784 + * @param w Width of the area to paint to
146.785 + * @param h Height of the area to paint to
146.786 + */
146.787 + public void paintListBackground(SynthContext context,
146.788 + Graphics g, int x, int y,
146.789 + int w, int h) {
146.790 + paintBackground(context, g, x, y, w, h, null);
146.791 + }
146.792 +
146.793 + /**
146.794 + * Paints the border of a list.
146.795 + *
146.796 + * @param context SynthContext identifying the <code>JComponent</code> and
146.797 + * <code>Region</code> to paint to
146.798 + * @param g <code>Graphics</code> to paint to
146.799 + * @param x X coordinate of the area to paint to
146.800 + * @param y Y coordinate of the area to paint to
146.801 + * @param w Width of the area to paint to
146.802 + * @param h Height of the area to paint to
146.803 + */
146.804 + public void paintListBorder(SynthContext context,
146.805 + Graphics g, int x, int y,
146.806 + int w, int h) {
146.807 + paintBorder(context, g, x, y, w, h, null);
146.808 + }
146.809 +
146.810 + /**
146.811 + * Paints the background of a menu bar.
146.812 + *
146.813 + * @param context SynthContext identifying the <code>JComponent</code> and
146.814 + * <code>Region</code> to paint to
146.815 + * @param g <code>Graphics</code> to paint to
146.816 + * @param x X coordinate of the area to paint to
146.817 + * @param y Y coordinate of the area to paint to
146.818 + * @param w Width of the area to paint to
146.819 + * @param h Height of the area to paint to
146.820 + */
146.821 + public void paintMenuBarBackground(SynthContext context,
146.822 + Graphics g, int x, int y,
146.823 + int w, int h) {
146.824 + paintBackground(context, g, x, y, w, h, null);
146.825 + }
146.826 +
146.827 + /**
146.828 + * Paints the border of a menu bar.
146.829 + *
146.830 + * @param context SynthContext identifying the <code>JComponent</code> and
146.831 + * <code>Region</code> to paint to
146.832 + * @param g <code>Graphics</code> to paint to
146.833 + * @param x X coordinate of the area to paint to
146.834 + * @param y Y coordinate of the area to paint to
146.835 + * @param w Width of the area to paint to
146.836 + * @param h Height of the area to paint to
146.837 + */
146.838 + public void paintMenuBarBorder(SynthContext context,
146.839 + Graphics g, int x, int y,
146.840 + int w, int h) {
146.841 + paintBorder(context, g, x, y, w, h, null);
146.842 + }
146.843 +
146.844 + /**
146.845 + * Paints the background of a menu item.
146.846 + *
146.847 + * @param context SynthContext identifying the <code>JComponent</code> and
146.848 + * <code>Region</code> to paint to
146.849 + * @param g <code>Graphics</code> to paint to
146.850 + * @param x X coordinate of the area to paint to
146.851 + * @param y Y coordinate of the area to paint to
146.852 + * @param w Width of the area to paint to
146.853 + * @param h Height of the area to paint to
146.854 + */
146.855 + public void paintMenuItemBackground(SynthContext context,
146.856 + Graphics g, int x, int y,
146.857 + int w, int h) {
146.858 + paintBackground(context, g, x, y, w, h, null);
146.859 + }
146.860 +
146.861 + /**
146.862 + * Paints the border of a menu item.
146.863 + *
146.864 + * @param context SynthContext identifying the <code>JComponent</code> and
146.865 + * <code>Region</code> to paint to
146.866 + * @param g <code>Graphics</code> to paint to
146.867 + * @param x X coordinate of the area to paint to
146.868 + * @param y Y coordinate of the area to paint to
146.869 + * @param w Width of the area to paint to
146.870 + * @param h Height of the area to paint to
146.871 + */
146.872 + public void paintMenuItemBorder(SynthContext context,
146.873 + Graphics g, int x, int y,
146.874 + int w, int h) {
146.875 + paintBorder(context, g, x, y, w, h, null);
146.876 + }
146.877 +
146.878 + /**
146.879 + * Paints the background of a menu.
146.880 + *
146.881 + * @param context SynthContext identifying the <code>JComponent</code> and
146.882 + * <code>Region</code> to paint to
146.883 + * @param g <code>Graphics</code> to paint to
146.884 + * @param x X coordinate of the area to paint to
146.885 + * @param y Y coordinate of the area to paint to
146.886 + * @param w Width of the area to paint to
146.887 + * @param h Height of the area to paint to
146.888 + */
146.889 + public void paintMenuBackground(SynthContext context,
146.890 + Graphics g, int x, int y,
146.891 + int w, int h) {
146.892 + paintBackground(context, g, x, y, w, h, null);
146.893 + }
146.894 +
146.895 + /**
146.896 + * Paints the border of a menu.
146.897 + *
146.898 + * @param context SynthContext identifying the <code>JComponent</code> and
146.899 + * <code>Region</code> to paint to
146.900 + * @param g <code>Graphics</code> to paint to
146.901 + * @param x X coordinate of the area to paint to
146.902 + * @param y Y coordinate of the area to paint to
146.903 + * @param w Width of the area to paint to
146.904 + * @param h Height of the area to paint to
146.905 + */
146.906 + public void paintMenuBorder(SynthContext context,
146.907 + Graphics g, int x, int y,
146.908 + int w, int h) {
146.909 + paintBorder(context, g, x, y, w, h, null);
146.910 + }
146.911 +
146.912 + /**
146.913 + * Paints the background of an option pane.
146.914 + *
146.915 + * @param context SynthContext identifying the <code>JComponent</code> and
146.916 + * <code>Region</code> to paint to
146.917 + * @param g <code>Graphics</code> to paint to
146.918 + * @param x X coordinate of the area to paint to
146.919 + * @param y Y coordinate of the area to paint to
146.920 + * @param w Width of the area to paint to
146.921 + * @param h Height of the area to paint to
146.922 + */
146.923 + public void paintOptionPaneBackground(SynthContext context,
146.924 + Graphics g, int x, int y,
146.925 + int w, int h) {
146.926 + paintBackground(context, g, x, y, w, h, null);
146.927 + }
146.928 +
146.929 + /**
146.930 + * Paints the border of an option pane.
146.931 + *
146.932 + * @param context SynthContext identifying the <code>JComponent</code> and
146.933 + * <code>Region</code> to paint to
146.934 + * @param g <code>Graphics</code> to paint to
146.935 + * @param x X coordinate of the area to paint to
146.936 + * @param y Y coordinate of the area to paint to
146.937 + * @param w Width of the area to paint to
146.938 + * @param h Height of the area to paint to
146.939 + */
146.940 + public void paintOptionPaneBorder(SynthContext context,
146.941 + Graphics g, int x, int y,
146.942 + int w, int h) {
146.943 + paintBorder(context, g, x, y, w, h, null);
146.944 + }
146.945 +
146.946 + /**
146.947 + * Paints the background of a panel.
146.948 + *
146.949 + * @param context SynthContext identifying the <code>JComponent</code> and
146.950 + * <code>Region</code> to paint to
146.951 + * @param g <code>Graphics</code> to paint to
146.952 + * @param x X coordinate of the area to paint to
146.953 + * @param y Y coordinate of the area to paint to
146.954 + * @param w Width of the area to paint to
146.955 + * @param h Height of the area to paint to
146.956 + */
146.957 + public void paintPanelBackground(SynthContext context,
146.958 + Graphics g, int x, int y,
146.959 + int w, int h) {
146.960 + paintBackground(context, g, x, y, w, h, null);
146.961 + }
146.962 +
146.963 + /**
146.964 + * Paints the border of a panel.
146.965 + *
146.966 + * @param context SynthContext identifying the <code>JComponent</code> and
146.967 + * <code>Region</code> to paint to
146.968 + * @param g <code>Graphics</code> to paint to
146.969 + * @param x X coordinate of the area to paint to
146.970 + * @param y Y coordinate of the area to paint to
146.971 + * @param w Width of the area to paint to
146.972 + * @param h Height of the area to paint to
146.973 + */
146.974 + public void paintPanelBorder(SynthContext context,
146.975 + Graphics g, int x, int y,
146.976 + int w, int h) {
146.977 + paintBorder(context, g, x, y, w, h, null);
146.978 + }
146.979 +
146.980 + /**
146.981 + * Paints the background of a password field.
146.982 + *
146.983 + * @param context SynthContext identifying the <code>JComponent</code> and
146.984 + * <code>Region</code> to paint to
146.985 + * @param g <code>Graphics</code> to paint to
146.986 + * @param x X coordinate of the area to paint to
146.987 + * @param y Y coordinate of the area to paint to
146.988 + * @param w Width of the area to paint to
146.989 + * @param h Height of the area to paint to
146.990 + */
146.991 + public void paintPasswordFieldBackground(SynthContext context,
146.992 + Graphics g, int x, int y,
146.993 + int w, int h) {
146.994 + paintBackground(context, g, x, y, w, h, null);
146.995 + }
146.996 +
146.997 + /**
146.998 + * Paints the border of a password field.
146.999 + *
146.1000 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1001 + * <code>Region</code> to paint to
146.1002 + * @param g <code>Graphics</code> to paint to
146.1003 + * @param x X coordinate of the area to paint to
146.1004 + * @param y Y coordinate of the area to paint to
146.1005 + * @param w Width of the area to paint to
146.1006 + * @param h Height of the area to paint to
146.1007 + */
146.1008 + public void paintPasswordFieldBorder(SynthContext context,
146.1009 + Graphics g, int x, int y,
146.1010 + int w, int h) {
146.1011 + paintBorder(context, g, x, y, w, h, null);
146.1012 + }
146.1013 +
146.1014 + /**
146.1015 + * Paints the background of a popup menu.
146.1016 + *
146.1017 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1018 + * <code>Region</code> to paint to
146.1019 + * @param g <code>Graphics</code> to paint to
146.1020 + * @param x X coordinate of the area to paint to
146.1021 + * @param y Y coordinate of the area to paint to
146.1022 + * @param w Width of the area to paint to
146.1023 + * @param h Height of the area to paint to
146.1024 + */
146.1025 + public void paintPopupMenuBackground(SynthContext context,
146.1026 + Graphics g, int x, int y,
146.1027 + int w, int h) {
146.1028 + paintBackground(context, g, x, y, w, h, null);
146.1029 + }
146.1030 +
146.1031 + /**
146.1032 + * Paints the border of a popup menu.
146.1033 + *
146.1034 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1035 + * <code>Region</code> to paint to
146.1036 + * @param g <code>Graphics</code> to paint to
146.1037 + * @param x X coordinate of the area to paint to
146.1038 + * @param y Y coordinate of the area to paint to
146.1039 + * @param w Width of the area to paint to
146.1040 + * @param h Height of the area to paint to
146.1041 + */
146.1042 + public void paintPopupMenuBorder(SynthContext context,
146.1043 + Graphics g, int x, int y,
146.1044 + int w, int h) {
146.1045 + paintBorder(context, g, x, y, w, h, null);
146.1046 + }
146.1047 +
146.1048 + /**
146.1049 + * Paints the background of a progress bar.
146.1050 + *
146.1051 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1052 + * <code>Region</code> to paint to
146.1053 + * @param g <code>Graphics</code> to paint to
146.1054 + * @param x X coordinate of the area to paint to
146.1055 + * @param y Y coordinate of the area to paint to
146.1056 + * @param w Width of the area to paint to
146.1057 + * @param h Height of the area to paint to
146.1058 + */
146.1059 + public void paintProgressBarBackground(SynthContext context,
146.1060 + Graphics g, int x, int y,
146.1061 + int w, int h) {
146.1062 + paintBackground(context, g, x, y, w, h, null);
146.1063 + }
146.1064 +
146.1065 + /**
146.1066 + * Paints the background of a progress bar. This implementation invokes the
146.1067 + * method of the same name without the orientation.
146.1068 + *
146.1069 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1070 + * <code>Region</code> to paint to
146.1071 + * @param g <code>Graphics</code> to paint to
146.1072 + * @param x X coordinate of the area to paint to
146.1073 + * @param y Y coordinate of the area to paint to
146.1074 + * @param w Width of the area to paint to
146.1075 + * @param h Height of the area to paint to
146.1076 + * @param orientation one of <code>JProgressBar.HORIZONTAL</code> or
146.1077 + * <code>JProgressBar.VERTICAL</code>
146.1078 + * @since 1.6
146.1079 + */
146.1080 + public void paintProgressBarBackground(SynthContext context,
146.1081 + Graphics g, int x, int y,
146.1082 + int w, int h, int orientation) {
146.1083 + paintBackground(context, g, x, y, w, h, orientation);
146.1084 + }
146.1085 +
146.1086 + /**
146.1087 + * Paints the border of a progress bar.
146.1088 + *
146.1089 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1090 + * <code>Region</code> to paint to
146.1091 + * @param g <code>Graphics</code> to paint to
146.1092 + * @param x X coordinate of the area to paint to
146.1093 + * @param y Y coordinate of the area to paint to
146.1094 + * @param w Width of the area to paint to
146.1095 + * @param h Height of the area to paint to
146.1096 + */
146.1097 + public void paintProgressBarBorder(SynthContext context,
146.1098 + Graphics g, int x, int y,
146.1099 + int w, int h) {
146.1100 + paintBorder(context, g, x, y, w, h, null);
146.1101 + }
146.1102 +
146.1103 + /**
146.1104 + * Paints the border of a progress bar. This implementation invokes the
146.1105 + * method of the same name without the orientation.
146.1106 + *
146.1107 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1108 + * <code>Region</code> to paint to
146.1109 + * @param g <code>Graphics</code> to paint to
146.1110 + * @param x X coordinate of the area to paint to
146.1111 + * @param y Y coordinate of the area to paint to
146.1112 + * @param w Width of the area to paint to
146.1113 + * @param h Height of the area to paint to
146.1114 + * @param orientation one of <code>JProgressBar.HORIZONTAL</code> or
146.1115 + * <code>JProgressBar.VERTICAL</code>
146.1116 + * @since 1.6
146.1117 + */
146.1118 + public void paintProgressBarBorder(SynthContext context,
146.1119 + Graphics g, int x, int y,
146.1120 + int w, int h, int orientation) {
146.1121 + paintBorder(context, g, x, y, w, h, orientation);
146.1122 + }
146.1123 +
146.1124 + /**
146.1125 + * Paints the foreground of a progress bar. is responsible for
146.1126 + * providing an indication of the progress of the progress bar.
146.1127 + *
146.1128 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1129 + * <code>Region</code> to paint to
146.1130 + * @param g <code>Graphics</code> to paint to
146.1131 + * @param x X coordinate of the area to paint to
146.1132 + * @param y Y coordinate of the area to paint to
146.1133 + * @param w Width of the area to paint to
146.1134 + * @param h Height of the area to paint to
146.1135 + * @param orientation one of <code>JProgressBar.HORIZONTAL</code> or
146.1136 + * <code>JProgressBar.VERTICAL</code>
146.1137 + */
146.1138 + public void paintProgressBarForeground(SynthContext context,
146.1139 + Graphics g, int x, int y,
146.1140 + int w, int h, int orientation) {
146.1141 + paintForeground(context, g, x, y, w, h, orientation);
146.1142 + }
146.1143 +
146.1144 + /**
146.1145 + * Paints the background of a radio button menu item.
146.1146 + *
146.1147 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1148 + * <code>Region</code> to paint to
146.1149 + * @param g <code>Graphics</code> to paint to
146.1150 + * @param x X coordinate of the area to paint to
146.1151 + * @param y Y coordinate of the area to paint to
146.1152 + * @param w Width of the area to paint to
146.1153 + * @param h Height of the area to paint to
146.1154 + */
146.1155 + public void paintRadioButtonMenuItemBackground(SynthContext context,
146.1156 + Graphics g, int x, int y,
146.1157 + int w, int h) {
146.1158 + paintBackground(context, g, x, y, w, h, null);
146.1159 + }
146.1160 +
146.1161 + /**
146.1162 + * Paints the border of a radio button menu item.
146.1163 + *
146.1164 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1165 + * <code>Region</code> to paint to
146.1166 + * @param g <code>Graphics</code> to paint to
146.1167 + * @param x X coordinate of the area to paint to
146.1168 + * @param y Y coordinate of the area to paint to
146.1169 + * @param w Width of the area to paint to
146.1170 + * @param h Height of the area to paint to
146.1171 + */
146.1172 + public void paintRadioButtonMenuItemBorder(SynthContext context,
146.1173 + Graphics g, int x, int y,
146.1174 + int w, int h) {
146.1175 + paintBorder(context, g, x, y, w, h, null);
146.1176 + }
146.1177 +
146.1178 + /**
146.1179 + * Paints the background of a radio button.
146.1180 + *
146.1181 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1182 + * <code>Region</code> to paint to
146.1183 + * @param g <code>Graphics</code> to paint to
146.1184 + * @param x X coordinate of the area to paint to
146.1185 + * @param y Y coordinate of the area to paint to
146.1186 + * @param w Width of the area to paint to
146.1187 + * @param h Height of the area to paint to
146.1188 + */
146.1189 + public void paintRadioButtonBackground(SynthContext context,
146.1190 + Graphics g, int x, int y,
146.1191 + int w, int h) {
146.1192 + paintBackground(context, g, x, y, w, h, null);
146.1193 + }
146.1194 +
146.1195 + /**
146.1196 + * Paints the border of a radio button.
146.1197 + *
146.1198 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1199 + * <code>Region</code> to paint to
146.1200 + * @param g <code>Graphics</code> to paint to
146.1201 + * @param x X coordinate of the area to paint to
146.1202 + * @param y Y coordinate of the area to paint to
146.1203 + * @param w Width of the area to paint to
146.1204 + * @param h Height of the area to paint to
146.1205 + */
146.1206 + public void paintRadioButtonBorder(SynthContext context,
146.1207 + Graphics g, int x, int y,
146.1208 + int w, int h) {
146.1209 + paintBorder(context, g, x, y, w, h, null);
146.1210 + }
146.1211 +
146.1212 + /**
146.1213 + * Paints the background of a root pane.
146.1214 + *
146.1215 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1216 + * <code>Region</code> to paint to
146.1217 + * @param g <code>Graphics</code> to paint to
146.1218 + * @param x X coordinate of the area to paint to
146.1219 + * @param y Y coordinate of the area to paint to
146.1220 + * @param w Width of the area to paint to
146.1221 + * @param h Height of the area to paint to
146.1222 + */
146.1223 + public void paintRootPaneBackground(SynthContext context,
146.1224 + Graphics g, int x, int y,
146.1225 + int w, int h) {
146.1226 + paintBackground(context, g, x, y, w, h, null);
146.1227 + }
146.1228 +
146.1229 + /**
146.1230 + * Paints the border of a root pane.
146.1231 + *
146.1232 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1233 + * <code>Region</code> to paint to
146.1234 + * @param g <code>Graphics</code> to paint to
146.1235 + * @param x X coordinate of the area to paint to
146.1236 + * @param y Y coordinate of the area to paint to
146.1237 + * @param w Width of the area to paint to
146.1238 + * @param h Height of the area to paint to
146.1239 + */
146.1240 + public void paintRootPaneBorder(SynthContext context,
146.1241 + Graphics g, int x, int y,
146.1242 + int w, int h) {
146.1243 + paintBorder(context, g, x, y, w, h, null);
146.1244 + }
146.1245 +
146.1246 + /**
146.1247 + * Paints the background of a scrollbar.
146.1248 + *
146.1249 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1250 + * <code>Region</code> to paint to
146.1251 + * @param g <code>Graphics</code> to paint to
146.1252 + * @param x X coordinate of the area to paint to
146.1253 + * @param y Y coordinate of the area to paint to
146.1254 + * @param w Width of the area to paint to
146.1255 + * @param h Height of the area to paint to
146.1256 + */
146.1257 + public void paintScrollBarBackground(SynthContext context,
146.1258 + Graphics g, int x, int y,
146.1259 + int w, int h) {
146.1260 + paintBackground(context, g, x, y, w, h, null);
146.1261 + }
146.1262 +
146.1263 + /**
146.1264 + * Paints the background of a scrollbar. This implementation invokes the
146.1265 + * method of the same name without the orientation.
146.1266 + *
146.1267 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1268 + * <code>Region</code> to paint to
146.1269 + * @param g <code>Graphics</code> to paint to
146.1270 + * @param x X coordinate of the area to paint to
146.1271 + * @param y Y coordinate of the area to paint to
146.1272 + * @param w Width of the area to paint to
146.1273 + * @param h Height of the area to paint to
146.1274 + * @param orientation Orientation of the JScrollBar, one of
146.1275 + * <code>JScrollBar.HORIZONTAL</code> or
146.1276 + * <code>JScrollBar.VERTICAL</code>
146.1277 + * @since 1.6
146.1278 + */
146.1279 + public void paintScrollBarBackground(SynthContext context,
146.1280 + Graphics g, int x, int y,
146.1281 + int w, int h, int orientation) {
146.1282 + paintBackground(context, g, x, y, w, h, orientation);
146.1283 + }
146.1284 +
146.1285 + /**
146.1286 + * Paints the border of a scrollbar.
146.1287 + *
146.1288 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1289 + * <code>Region</code> to paint to
146.1290 + * @param g <code>Graphics</code> to paint to
146.1291 + * @param x X coordinate of the area to paint to
146.1292 + * @param y Y coordinate of the area to paint to
146.1293 + * @param w Width of the area to paint to
146.1294 + * @param h Height of the area to paint to
146.1295 + */
146.1296 + public void paintScrollBarBorder(SynthContext context,
146.1297 + Graphics g, int x, int y,
146.1298 + int w, int h) {
146.1299 + paintBorder(context, g, x, y, w, h, null);
146.1300 + }
146.1301 +
146.1302 + /**
146.1303 + * Paints the border of a scrollbar. This implementation invokes the
146.1304 + * method of the same name without the orientation.
146.1305 + *
146.1306 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1307 + * <code>Region</code> to paint to
146.1308 + * @param g <code>Graphics</code> to paint to
146.1309 + * @param x X coordinate of the area to paint to
146.1310 + * @param y Y coordinate of the area to paint to
146.1311 + * @param w Width of the area to paint to
146.1312 + * @param h Height of the area to paint to
146.1313 + * @param orientation Orientation of the JScrollBar, one of
146.1314 + * <code>JScrollBar.HORIZONTAL</code> or
146.1315 + * <code>JScrollBar.VERTICAL</code>
146.1316 + * @since 1.6
146.1317 + */
146.1318 + public void paintScrollBarBorder(SynthContext context,
146.1319 + Graphics g, int x, int y,
146.1320 + int w, int h, int orientation) {
146.1321 + paintBorder(context, g, x, y, w, h, orientation);
146.1322 + }
146.1323 +
146.1324 + /**
146.1325 + * Paints the background of the thumb of a scrollbar. The thumb provides
146.1326 + * a graphical indication as to how much of the Component is visible in a
146.1327 + * <code>JScrollPane</code>.
146.1328 + *
146.1329 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1330 + * <code>Region</code> to paint to
146.1331 + * @param g <code>Graphics</code> to paint to
146.1332 + * @param x X coordinate of the area to paint to
146.1333 + * @param y Y coordinate of the area to paint to
146.1334 + * @param w Width of the area to paint to
146.1335 + * @param h Height of the area to paint to
146.1336 + * @param orientation Orientation of the JScrollBar, one of
146.1337 + * <code>JScrollBar.HORIZONTAL</code> or
146.1338 + * <code>JScrollBar.VERTICAL</code>
146.1339 + */
146.1340 + public void paintScrollBarThumbBackground(SynthContext context,
146.1341 + Graphics g, int x, int y,
146.1342 + int w, int h, int orientation) {
146.1343 + paintBackground(context, g, x, y, w, h, orientation);
146.1344 + }
146.1345 +
146.1346 + /**
146.1347 + * Paints the border of the thumb of a scrollbar. The thumb provides
146.1348 + * a graphical indication as to how much of the Component is visible in a
146.1349 + * <code>JScrollPane</code>.
146.1350 + *
146.1351 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1352 + * <code>Region</code> to paint to
146.1353 + * @param g <code>Graphics</code> to paint to
146.1354 + * @param x X coordinate of the area to paint to
146.1355 + * @param y Y coordinate of the area to paint to
146.1356 + * @param w Width of the area to paint to
146.1357 + * @param h Height of the area to paint to
146.1358 + * @param orientation Orientation of the JScrollBar, one of
146.1359 + * <code>JScrollBar.HORIZONTAL</code> or
146.1360 + * <code>JScrollBar.VERTICAL</code>
146.1361 + */
146.1362 + public void paintScrollBarThumbBorder(SynthContext context,
146.1363 + Graphics g, int x, int y,
146.1364 + int w, int h, int orientation) {
146.1365 + paintBorder(context, g, x, y, w, h, orientation);
146.1366 + }
146.1367 +
146.1368 + /**
146.1369 + * Paints the background of the track of a scrollbar. The track contains
146.1370 + * the thumb.
146.1371 + *
146.1372 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1373 + * <code>Region</code> to paint to
146.1374 + * @param g <code>Graphics</code> to paint to
146.1375 + * @param x X coordinate of the area to paint to
146.1376 + * @param y Y coordinate of the area to paint to
146.1377 + * @param w Width of the area to paint to
146.1378 + * @param h Height of the area to paint to
146.1379 + */
146.1380 + public void paintScrollBarTrackBackground(SynthContext context,
146.1381 + Graphics g, int x, int y,
146.1382 + int w, int h) {
146.1383 + paintBackground(context, g, x, y, w, h, null);
146.1384 + }
146.1385 +
146.1386 + /**
146.1387 + * Paints the background of the track of a scrollbar. The track contains
146.1388 + * the thumb. This implementation invokes the method of the same name without
146.1389 + * the orientation.
146.1390 + *
146.1391 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1392 + * <code>Region</code> to paint to
146.1393 + * @param g <code>Graphics</code> to paint to
146.1394 + * @param x X coordinate of the area to paint to
146.1395 + * @param y Y coordinate of the area to paint to
146.1396 + * @param w Width of the area to paint to
146.1397 + * @param h Height of the area to paint to
146.1398 + * @param orientation Orientation of the JScrollBar, one of
146.1399 + * <code>JScrollBar.HORIZONTAL</code> or
146.1400 + * <code>JScrollBar.VERTICAL</code>
146.1401 + * @since 1.6
146.1402 + */
146.1403 + public void paintScrollBarTrackBackground(SynthContext context,
146.1404 + Graphics g, int x, int y,
146.1405 + int w, int h, int orientation) {
146.1406 + paintBackground(context, g, x, y, w, h, orientation);
146.1407 + }
146.1408 +
146.1409 + /**
146.1410 + * Paints the border of the track of a scrollbar. The track contains
146.1411 + * the thumb.
146.1412 + *
146.1413 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1414 + * <code>Region</code> to paint to
146.1415 + * @param g <code>Graphics</code> to paint to
146.1416 + * @param x X coordinate of the area to paint to
146.1417 + * @param y Y coordinate of the area to paint to
146.1418 + * @param w Width of the area to paint to
146.1419 + * @param h Height of the area to paint to
146.1420 + */
146.1421 + public void paintScrollBarTrackBorder(SynthContext context,
146.1422 + Graphics g, int x, int y,
146.1423 + int w, int h) {
146.1424 + paintBorder(context, g, x, y, w, h, null);
146.1425 + }
146.1426 +
146.1427 + /**
146.1428 + * Paints the border of the track of a scrollbar. The track contains
146.1429 + * the thumb. This implementation invokes the method of the same name without
146.1430 + * the orientation.
146.1431 + *
146.1432 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1433 + * <code>Region</code> to paint to
146.1434 + * @param g <code>Graphics</code> to paint to
146.1435 + * @param x X coordinate of the area to paint to
146.1436 + * @param y Y coordinate of the area to paint to
146.1437 + * @param w Width of the area to paint to
146.1438 + * @param h Height of the area to paint to
146.1439 + * @param orientation Orientation of the JScrollBar, one of
146.1440 + * <code>JScrollBar.HORIZONTAL</code> or
146.1441 + * <code>JScrollBar.VERTICAL</code>
146.1442 + * @since 1.6
146.1443 + */
146.1444 + public void paintScrollBarTrackBorder(SynthContext context,
146.1445 + Graphics g, int x, int y,
146.1446 + int w, int h, int orientation) {
146.1447 + paintBorder(context, g, x, y, w, h, orientation);
146.1448 + }
146.1449 +
146.1450 + /**
146.1451 + * Paints the background of a scroll pane.
146.1452 + *
146.1453 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1454 + * <code>Region</code> to paint to
146.1455 + * @param g <code>Graphics</code> to paint to
146.1456 + * @param x X coordinate of the area to paint to
146.1457 + * @param y Y coordinate of the area to paint to
146.1458 + * @param w Width of the area to paint to
146.1459 + * @param h Height of the area to paint to
146.1460 + */
146.1461 + public void paintScrollPaneBackground(SynthContext context,
146.1462 + Graphics g, int x, int y,
146.1463 + int w, int h) {
146.1464 + paintBackground(context, g, x, y, w, h, null);
146.1465 + }
146.1466 +
146.1467 + /**
146.1468 + * Paints the border of a scroll pane.
146.1469 + *
146.1470 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1471 + * <code>Region</code> to paint to
146.1472 + * @param g <code>Graphics</code> to paint to
146.1473 + * @param x X coordinate of the area to paint to
146.1474 + * @param y Y coordinate of the area to paint to
146.1475 + * @param w Width of the area to paint to
146.1476 + * @param h Height of the area to paint to
146.1477 + */
146.1478 + public void paintScrollPaneBorder(SynthContext context,
146.1479 + Graphics g, int x, int y,
146.1480 + int w, int h) {
146.1481 + paintBorder(context, g, x, y, w, h, null);
146.1482 + }
146.1483 +
146.1484 + /**
146.1485 + * Paints the background of a separator.
146.1486 + *
146.1487 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1488 + * <code>Region</code> to paint to
146.1489 + * @param g <code>Graphics</code> to paint to
146.1490 + * @param x X coordinate of the area to paint to
146.1491 + * @param y Y coordinate of the area to paint to
146.1492 + * @param w Width of the area to paint to
146.1493 + * @param h Height of the area to paint to
146.1494 + */
146.1495 + public void paintSeparatorBackground(SynthContext context,
146.1496 + Graphics g, int x, int y,
146.1497 + int w, int h) {
146.1498 + paintBackground(context, g, x, y, w, h, null);
146.1499 + }
146.1500 +
146.1501 + /**
146.1502 + * Paints the background of a separator. This implementation invokes the
146.1503 + * method of the same name without the orientation.
146.1504 + *
146.1505 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1506 + * <code>Region</code> to paint to
146.1507 + * @param g <code>Graphics</code> to paint to
146.1508 + * @param x X coordinate of the area to paint to
146.1509 + * @param y Y coordinate of the area to paint to
146.1510 + * @param w Width of the area to paint to
146.1511 + * @param h Height of the area to paint to
146.1512 + * @param orientation One of <code>JSeparator.HORIZONTAL</code> or
146.1513 + * <code>JSeparator.VERTICAL</code>
146.1514 + * @since 1.6
146.1515 + */
146.1516 + public void paintSeparatorBackground(SynthContext context,
146.1517 + Graphics g, int x, int y,
146.1518 + int w, int h, int orientation) {
146.1519 + paintBackground(context, g, x, y, w, h, orientation);
146.1520 + }
146.1521 +
146.1522 + /**
146.1523 + * Paints the border of a separator.
146.1524 + *
146.1525 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1526 + * <code>Region</code> to paint to
146.1527 + * @param g <code>Graphics</code> to paint to
146.1528 + * @param x X coordinate of the area to paint to
146.1529 + * @param y Y coordinate of the area to paint to
146.1530 + * @param w Width of the area to paint to
146.1531 + * @param h Height of the area to paint to
146.1532 + */
146.1533 + public void paintSeparatorBorder(SynthContext context,
146.1534 + Graphics g, int x, int y,
146.1535 + int w, int h) {
146.1536 + paintBorder(context, g, x, y, w, h, null);
146.1537 + }
146.1538 +
146.1539 + /**
146.1540 + * Paints the border of a separator. This implementation invokes the
146.1541 + * method of the same name without the orientation.
146.1542 + *
146.1543 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1544 + * <code>Region</code> to paint to
146.1545 + * @param g <code>Graphics</code> to paint to
146.1546 + * @param x X coordinate of the area to paint to
146.1547 + * @param y Y coordinate of the area to paint to
146.1548 + * @param w Width of the area to paint to
146.1549 + * @param h Height of the area to paint to
146.1550 + * @param orientation One of <code>JSeparator.HORIZONTAL</code> or
146.1551 + * <code>JSeparator.VERTICAL</code>
146.1552 + * @since 1.6
146.1553 + */
146.1554 + public void paintSeparatorBorder(SynthContext context,
146.1555 + Graphics g, int x, int y,
146.1556 + int w, int h, int orientation) {
146.1557 + paintBorder(context, g, x, y, w, h, orientation);
146.1558 + }
146.1559 +
146.1560 + /**
146.1561 + * Paints the foreground of a separator.
146.1562 + *
146.1563 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1564 + * <code>Region</code> to paint to
146.1565 + * @param g <code>Graphics</code> to paint to
146.1566 + * @param x X coordinate of the area to paint to
146.1567 + * @param y Y coordinate of the area to paint to
146.1568 + * @param w Width of the area to paint to
146.1569 + * @param h Height of the area to paint to
146.1570 + * @param orientation One of <code>JSeparator.HORIZONTAL</code> or
146.1571 + * <code>JSeparator.VERTICAL</code>
146.1572 + */
146.1573 + public void paintSeparatorForeground(SynthContext context,
146.1574 + Graphics g, int x, int y,
146.1575 + int w, int h, int orientation) {
146.1576 + paintForeground(context, g, x, y, w, h, orientation);
146.1577 + }
146.1578 +
146.1579 + /**
146.1580 + * Paints the background of a slider.
146.1581 + *
146.1582 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1583 + * <code>Region</code> to paint to
146.1584 + * @param g <code>Graphics</code> to paint to
146.1585 + * @param x X coordinate of the area to paint to
146.1586 + * @param y Y coordinate of the area to paint to
146.1587 + * @param w Width of the area to paint to
146.1588 + * @param h Height of the area to paint to
146.1589 + */
146.1590 + public void paintSliderBackground(SynthContext context,
146.1591 + Graphics g, int x, int y,
146.1592 + int w, int h) {
146.1593 + paintBackground(context, g, x, y, w, h, null);
146.1594 + }
146.1595 +
146.1596 + /**
146.1597 + * Paints the background of a slider. This implementation invokes the
146.1598 + * method of the same name without the orientation.
146.1599 + *
146.1600 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1601 + * <code>Region</code> to paint to
146.1602 + * @param g <code>Graphics</code> to paint to
146.1603 + * @param x X coordinate of the area to paint to
146.1604 + * @param y Y coordinate of the area to paint to
146.1605 + * @param w Width of the area to paint to
146.1606 + * @param h Height of the area to paint to
146.1607 + * @param orientation One of <code>JSlider.HORIZONTAL</code> or
146.1608 + * <code>JSlider.VERTICAL</code>
146.1609 + * @since 1.6
146.1610 + */
146.1611 + public void paintSliderBackground(SynthContext context,
146.1612 + Graphics g, int x, int y,
146.1613 + int w, int h, int orientation) {
146.1614 + paintBackground(context, g, x, y, w, h, orientation);
146.1615 + }
146.1616 +
146.1617 + /**
146.1618 + * Paints the border of a slider.
146.1619 + *
146.1620 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1621 + * <code>Region</code> to paint to
146.1622 + * @param g <code>Graphics</code> to paint to
146.1623 + * @param x X coordinate of the area to paint to
146.1624 + * @param y Y coordinate of the area to paint to
146.1625 + * @param w Width of the area to paint to
146.1626 + * @param h Height of the area to paint to
146.1627 + */
146.1628 + public void paintSliderBorder(SynthContext context,
146.1629 + Graphics g, int x, int y,
146.1630 + int w, int h) {
146.1631 + paintBorder(context, g, x, y, w, h, null);
146.1632 + }
146.1633 +
146.1634 + /**
146.1635 + * Paints the border of a slider. This implementation invokes the
146.1636 + * method of the same name without the orientation.
146.1637 + *
146.1638 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1639 + * <code>Region</code> to paint to
146.1640 + * @param g <code>Graphics</code> to paint to
146.1641 + * @param x X coordinate of the area to paint to
146.1642 + * @param y Y coordinate of the area to paint to
146.1643 + * @param w Width of the area to paint to
146.1644 + * @param h Height of the area to paint to
146.1645 + * @param orientation One of <code>JSlider.HORIZONTAL</code> or
146.1646 + * <code>JSlider.VERTICAL</code>
146.1647 + * @since 1.6
146.1648 + */
146.1649 + public void paintSliderBorder(SynthContext context,
146.1650 + Graphics g, int x, int y,
146.1651 + int w, int h, int orientation) {
146.1652 + paintBorder(context, g, x, y, w, h, orientation);
146.1653 + }
146.1654 +
146.1655 + /**
146.1656 + * Paints the background of the thumb of a slider.
146.1657 + *
146.1658 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1659 + * <code>Region</code> to paint to
146.1660 + * @param g <code>Graphics</code> to paint to
146.1661 + * @param x X coordinate of the area to paint to
146.1662 + * @param y Y coordinate of the area to paint to
146.1663 + * @param w Width of the area to paint to
146.1664 + * @param h Height of the area to paint to
146.1665 + * @param orientation One of <code>JSlider.HORIZONTAL</code> or
146.1666 + * <code>JSlider.VERTICAL</code>
146.1667 + */
146.1668 + public void paintSliderThumbBackground(SynthContext context,
146.1669 + Graphics g, int x, int y,
146.1670 + int w, int h, int orientation) {
146.1671 + if (context.getComponent().getClientProperty(
146.1672 + "Slider.paintThumbArrowShape") == Boolean.TRUE){
146.1673 + if (orientation == JSlider.HORIZONTAL){
146.1674 + orientation = JSlider.VERTICAL;
146.1675 + } else {
146.1676 + orientation = JSlider.HORIZONTAL;
146.1677 + }
146.1678 + paintBackground(context, g, x, y, w, h, orientation);
146.1679 + } else {
146.1680 + paintBackground(context, g, x, y, w, h, orientation);
146.1681 + }
146.1682 + }
146.1683 +
146.1684 + /**
146.1685 + * Paints the border of the thumb of a slider.
146.1686 + *
146.1687 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1688 + * <code>Region</code> to paint to
146.1689 + * @param g <code>Graphics</code> to paint to
146.1690 + * @param x X coordinate of the area to paint to
146.1691 + * @param y Y coordinate of the area to paint to
146.1692 + * @param w Width of the area to paint to
146.1693 + * @param h Height of the area to paint to
146.1694 + * @param orientation One of <code>JSlider.HORIZONTAL</code> or
146.1695 + * <code>JSlider.VERTICAL</code>
146.1696 + */
146.1697 + public void paintSliderThumbBorder(SynthContext context,
146.1698 + Graphics g, int x, int y,
146.1699 + int w, int h, int orientation) {
146.1700 + paintBorder(context, g, x, y, w, h, orientation);
146.1701 + }
146.1702 +
146.1703 + /**
146.1704 + * Paints the background of the track of a slider.
146.1705 + *
146.1706 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1707 + * <code>Region</code> to paint to
146.1708 + * @param g <code>Graphics</code> to paint to
146.1709 + * @param x X coordinate of the area to paint to
146.1710 + * @param y Y coordinate of the area to paint to
146.1711 + * @param w Width of the area to paint to
146.1712 + * @param h Height of the area to paint to
146.1713 + */
146.1714 + public void paintSliderTrackBackground(SynthContext context,
146.1715 + Graphics g, int x, int y,
146.1716 + int w, int h) {
146.1717 + paintBackground(context, g, x, y, w, h, null);
146.1718 + }
146.1719 +
146.1720 + /**
146.1721 + * Paints the background of the track of a slider. This implementation invokes
146.1722 + * the method of the same name without the orientation.
146.1723 + *
146.1724 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1725 + * <code>Region</code> to paint to
146.1726 + * @param g <code>Graphics</code> to paint to
146.1727 + * @param x X coordinate of the area to paint to
146.1728 + * @param y Y coordinate of the area to paint to
146.1729 + * @param w Width of the area to paint to
146.1730 + * @param h Height of the area to paint to
146.1731 + * @param orientation One of <code>JSlider.HORIZONTAL</code> or
146.1732 + * <code>JSlider.VERTICAL</code>
146.1733 + * @since 1.6
146.1734 + */
146.1735 + public void paintSliderTrackBackground(SynthContext context,
146.1736 + Graphics g, int x, int y,
146.1737 + int w, int h, int orientation) {
146.1738 + paintBackground(context, g, x, y, w, h, orientation);
146.1739 + }
146.1740 +
146.1741 + /**
146.1742 + * Paints the border of the track of a slider.
146.1743 + *
146.1744 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1745 + * <code>Region</code> to paint to
146.1746 + * @param g <code>Graphics</code> to paint to
146.1747 + * @param x X coordinate of the area to paint to
146.1748 + * @param y Y coordinate of the area to paint to
146.1749 + * @param w Width of the area to paint to
146.1750 + * @param h Height of the area to paint to
146.1751 + */
146.1752 + public void paintSliderTrackBorder(SynthContext context,
146.1753 + Graphics g, int x, int y,
146.1754 + int w, int h) {
146.1755 + paintBorder(context, g, x, y, w, h, null);
146.1756 + }
146.1757 +
146.1758 + /**
146.1759 + * Paints the border of the track of a slider. This implementation invokes the
146.1760 + * method of the same name without the orientation.
146.1761 + *
146.1762 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1763 + * <code>Region</code> to paint to
146.1764 + * @param g <code>Graphics</code> to paint to
146.1765 + * @param x X coordinate of the area to paint to
146.1766 + * @param y Y coordinate of the area to paint to
146.1767 + * @param w Width of the area to paint to
146.1768 + * @param h Height of the area to paint to
146.1769 + * @param orientation One of <code>JSlider.HORIZONTAL</code> or
146.1770 + * <code>JSlider.VERTICAL</code>
146.1771 + * @since 1.6
146.1772 + */
146.1773 + public void paintSliderTrackBorder(SynthContext context,
146.1774 + Graphics g, int x, int y,
146.1775 + int w, int h, int orientation) {
146.1776 + paintBorder(context, g, x, y, w, h, orientation);
146.1777 + }
146.1778 +
146.1779 + /**
146.1780 + * Paints the background of a spinner.
146.1781 + *
146.1782 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1783 + * <code>Region</code> to paint to
146.1784 + * @param g <code>Graphics</code> to paint to
146.1785 + * @param x X coordinate of the area to paint to
146.1786 + * @param y Y coordinate of the area to paint to
146.1787 + * @param w Width of the area to paint to
146.1788 + * @param h Height of the area to paint to
146.1789 + */
146.1790 + public void paintSpinnerBackground(SynthContext context,
146.1791 + Graphics g, int x, int y,
146.1792 + int w, int h) {
146.1793 + paintBackground(context, g, x, y, w, h, null);
146.1794 + }
146.1795 +
146.1796 + /**
146.1797 + * Paints the border of a spinner.
146.1798 + *
146.1799 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1800 + * <code>Region</code> to paint to
146.1801 + * @param g <code>Graphics</code> to paint to
146.1802 + * @param x X coordinate of the area to paint to
146.1803 + * @param y Y coordinate of the area to paint to
146.1804 + * @param w Width of the area to paint to
146.1805 + * @param h Height of the area to paint to
146.1806 + */
146.1807 + public void paintSpinnerBorder(SynthContext context,
146.1808 + Graphics g, int x, int y,
146.1809 + int w, int h) {
146.1810 + paintBorder(context, g, x, y, w, h, null);
146.1811 + }
146.1812 +
146.1813 + /**
146.1814 + * Paints the background of the divider of a split pane.
146.1815 + *
146.1816 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1817 + * <code>Region</code> to paint to
146.1818 + * @param g <code>Graphics</code> to paint to
146.1819 + * @param x X coordinate of the area to paint to
146.1820 + * @param y Y coordinate of the area to paint to
146.1821 + * @param w Width of the area to paint to
146.1822 + * @param h Height of the area to paint to
146.1823 + */
146.1824 + public void paintSplitPaneDividerBackground(SynthContext context,
146.1825 + Graphics g, int x, int y,
146.1826 + int w, int h) {
146.1827 + paintBackground(context, g, x, y, w, h, null);
146.1828 + }
146.1829 +
146.1830 + /**
146.1831 + * Paints the background of the divider of a split pane. This implementation
146.1832 + * invokes the method of the same name without the orientation.
146.1833 + *
146.1834 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1835 + * <code>Region</code> to paint to
146.1836 + * @param g <code>Graphics</code> to paint to
146.1837 + * @param x X coordinate of the area to paint to
146.1838 + * @param y Y coordinate of the area to paint to
146.1839 + * @param w Width of the area to paint to
146.1840 + * @param h Height of the area to paint to
146.1841 + * @param orientation One of <code>JSplitPane.HORIZONTAL_SPLIT</code> or
146.1842 + * <code>JSplitPane.VERTICAL_SPLIT</code>
146.1843 + * @since 1.6
146.1844 + */
146.1845 + public void paintSplitPaneDividerBackground(SynthContext context,
146.1846 + Graphics g, int x, int y,
146.1847 + int w, int h, int orientation) {
146.1848 + if (orientation == JSplitPane.HORIZONTAL_SPLIT) {
146.1849 + AffineTransform transform = new AffineTransform();
146.1850 + transform.scale(-1, 1);
146.1851 + transform.rotate(Math.toRadians(90));
146.1852 + paintBackground(context, g, y, x, h, w, transform);
146.1853 + } else {
146.1854 + paintBackground(context, g, x, y, w, h, null);
146.1855 + }
146.1856 + }
146.1857 +
146.1858 + /**
146.1859 + * Paints the foreground of the divider of a split pane.
146.1860 + *
146.1861 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1862 + * <code>Region</code> to paint to
146.1863 + * @param g <code>Graphics</code> to paint to
146.1864 + * @param x X coordinate of the area to paint to
146.1865 + * @param y Y coordinate of the area to paint to
146.1866 + * @param w Width of the area to paint to
146.1867 + * @param h Height of the area to paint to
146.1868 + * @param orientation One of <code>JSplitPane.HORIZONTAL_SPLIT</code> or
146.1869 + * <code>JSplitPane.VERTICAL_SPLIT</code>
146.1870 + */
146.1871 + public void paintSplitPaneDividerForeground(SynthContext context,
146.1872 + Graphics g, int x, int y,
146.1873 + int w, int h, int orientation) {
146.1874 + paintForeground(context, g, x, y, w, h, null);
146.1875 + }
146.1876 +
146.1877 + /**
146.1878 + * Paints the divider, when the user is dragging the divider, of a
146.1879 + * split pane.
146.1880 + *
146.1881 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1882 + * <code>Region</code> to paint to
146.1883 + * @param g <code>Graphics</code> to paint to
146.1884 + * @param x X coordinate of the area to paint to
146.1885 + * @param y Y coordinate of the area to paint to
146.1886 + * @param w Width of the area to paint to
146.1887 + * @param h Height of the area to paint to
146.1888 + * @param orientation One of <code>JSplitPane.HORIZONTAL_SPLIT</code> or
146.1889 + * <code>JSplitPane.VERTICAL_SPLIT</code>
146.1890 + */
146.1891 + public void paintSplitPaneDragDivider(SynthContext context,
146.1892 + Graphics g, int x, int y,
146.1893 + int w, int h, int orientation) {
146.1894 + paintBackground(context, g, x, y, w, h, null);
146.1895 + }
146.1896 +
146.1897 + /**
146.1898 + * Paints the background of a split pane.
146.1899 + *
146.1900 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1901 + * <code>Region</code> to paint to
146.1902 + * @param g <code>Graphics</code> to paint to
146.1903 + * @param x X coordinate of the area to paint to
146.1904 + * @param y Y coordinate of the area to paint to
146.1905 + * @param w Width of the area to paint to
146.1906 + * @param h Height of the area to paint to
146.1907 + */
146.1908 + public void paintSplitPaneBackground(SynthContext context,
146.1909 + Graphics g, int x, int y,
146.1910 + int w, int h) {
146.1911 + paintBackground(context, g, x, y, w, h, null);
146.1912 + }
146.1913 +
146.1914 + /**
146.1915 + * Paints the border of a split pane.
146.1916 + *
146.1917 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1918 + * <code>Region</code> to paint to
146.1919 + * @param g <code>Graphics</code> to paint to
146.1920 + * @param x X coordinate of the area to paint to
146.1921 + * @param y Y coordinate of the area to paint to
146.1922 + * @param w Width of the area to paint to
146.1923 + * @param h Height of the area to paint to
146.1924 + */
146.1925 + public void paintSplitPaneBorder(SynthContext context,
146.1926 + Graphics g, int x, int y,
146.1927 + int w, int h) {
146.1928 + paintBorder(context, g, x, y, w, h, null);
146.1929 + }
146.1930 +
146.1931 + /**
146.1932 + * Paints the background of a tabbed pane.
146.1933 + *
146.1934 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1935 + * <code>Region</code> to paint to
146.1936 + * @param g <code>Graphics</code> to paint to
146.1937 + * @param x X coordinate of the area to paint to
146.1938 + * @param y Y coordinate of the area to paint to
146.1939 + * @param w Width of the area to paint to
146.1940 + * @param h Height of the area to paint to
146.1941 + */
146.1942 + public void paintTabbedPaneBackground(SynthContext context,
146.1943 + Graphics g, int x, int y,
146.1944 + int w, int h) {
146.1945 + paintBackground(context, g, x, y, w, h, null);
146.1946 + }
146.1947 +
146.1948 + /**
146.1949 + * Paints the border of a tabbed pane.
146.1950 + *
146.1951 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1952 + * <code>Region</code> to paint to
146.1953 + * @param g <code>Graphics</code> to paint to
146.1954 + * @param x X coordinate of the area to paint to
146.1955 + * @param y Y coordinate of the area to paint to
146.1956 + * @param w Width of the area to paint to
146.1957 + * @param h Height of the area to paint to
146.1958 + */
146.1959 + public void paintTabbedPaneBorder(SynthContext context,
146.1960 + Graphics g, int x, int y,
146.1961 + int w, int h) {
146.1962 + paintBorder(context, g, x, y, w, h, null);
146.1963 + }
146.1964 +
146.1965 + /**
146.1966 + * Paints the background of the area behind the tabs of a tabbed pane.
146.1967 + *
146.1968 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1969 + * <code>Region</code> to paint to
146.1970 + * @param g <code>Graphics</code> to paint to
146.1971 + * @param x X coordinate of the area to paint to
146.1972 + * @param y Y coordinate of the area to paint to
146.1973 + * @param w Width of the area to paint to
146.1974 + * @param h Height of the area to paint to
146.1975 + */
146.1976 + public void paintTabbedPaneTabAreaBackground(SynthContext context,
146.1977 + Graphics g, int x, int y,
146.1978 + int w, int h) {
146.1979 + paintBackground(context, g, x, y, w, h, null);
146.1980 + }
146.1981 +
146.1982 + /**
146.1983 + * Paints the background of the area behind the tabs of a tabbed pane.
146.1984 + * This implementation invokes the method of the same name without the
146.1985 + * orientation.
146.1986 + *
146.1987 + * @param context SynthContext identifying the <code>JComponent</code> and
146.1988 + * <code>Region</code> to paint to
146.1989 + * @param g <code>Graphics</code> to paint to
146.1990 + * @param x X coordinate of the area to paint to
146.1991 + * @param y Y coordinate of the area to paint to
146.1992 + * @param w Width of the area to paint to
146.1993 + * @param h Height of the area to paint to
146.1994 + * @param orientation One of <code>JTabbedPane.TOP</code>,
146.1995 + * <code>JTabbedPane.LEFT</code>,
146.1996 + * <code>JTabbedPane.BOTTOM</code>, or
146.1997 + * <code>JTabbedPane.RIGHT</code>
146.1998 + * @since 1.6
146.1999 + */
146.2000 + public void paintTabbedPaneTabAreaBackground(SynthContext context,
146.2001 + Graphics g, int x, int y,
146.2002 + int w, int h, int orientation) {
146.2003 + if (orientation == JTabbedPane.LEFT) {
146.2004 + AffineTransform transform = new AffineTransform();
146.2005 + transform.scale(-1, 1);
146.2006 + transform.rotate(Math.toRadians(90));
146.2007 + paintBackground(context, g, y, x, h, w, transform);
146.2008 + } else if (orientation == JTabbedPane.RIGHT) {
146.2009 + AffineTransform transform = new AffineTransform();
146.2010 + transform.rotate(Math.toRadians(90));
146.2011 + transform.translate(0, -(x + w));
146.2012 + paintBackground(context, g, y, 0, h, w, transform);
146.2013 + } else if (orientation == JTabbedPane.BOTTOM) {
146.2014 + AffineTransform transform = new AffineTransform();
146.2015 + transform.translate(x,y);
146.2016 + transform.scale(1, -1);
146.2017 + transform.translate(0,-h);
146.2018 + paintBackground(context, g, 0, 0, w, h, transform);
146.2019 + } else {
146.2020 + paintBackground(context, g, x, y, w, h, null);
146.2021 + }
146.2022 + }
146.2023 +
146.2024 + /**
146.2025 + * Paints the border of the area behind the tabs of a tabbed pane.
146.2026 + *
146.2027 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2028 + * <code>Region</code> to paint to
146.2029 + * @param g <code>Graphics</code> to paint to
146.2030 + * @param x X coordinate of the area to paint to
146.2031 + * @param y Y coordinate of the area to paint to
146.2032 + * @param w Width of the area to paint to
146.2033 + * @param h Height of the area to paint to
146.2034 + */
146.2035 + public void paintTabbedPaneTabAreaBorder(SynthContext context,
146.2036 + Graphics g, int x, int y,
146.2037 + int w, int h) {
146.2038 + paintBorder(context, g, x, y, w, h, null);
146.2039 + }
146.2040 +
146.2041 + /**
146.2042 + * Paints the border of the area behind the tabs of a tabbed pane. This
146.2043 + * implementation invokes the method of the same name without the orientation.
146.2044 + *
146.2045 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2046 + * <code>Region</code> to paint to
146.2047 + * @param g <code>Graphics</code> to paint to
146.2048 + * @param x X coordinate of the area to paint to
146.2049 + * @param y Y coordinate of the area to paint to
146.2050 + * @param w Width of the area to paint to
146.2051 + * @param h Height of the area to paint to
146.2052 + * @param orientation One of <code>JTabbedPane.TOP</code>,
146.2053 + * <code>JTabbedPane.LEFT</code>,
146.2054 + * <code>JTabbedPane.BOTTOM</code>, or
146.2055 + * <code>JTabbedPane.RIGHT</code>
146.2056 + * @since 1.6
146.2057 + */
146.2058 + public void paintTabbedPaneTabAreaBorder(SynthContext context,
146.2059 + Graphics g, int x, int y,
146.2060 + int w, int h, int orientation) {
146.2061 + paintBorder(context, g, x, y, w, h, null);
146.2062 + }
146.2063 +
146.2064 + /**
146.2065 + * Paints the background of a tab of a tabbed pane.
146.2066 + *
146.2067 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2068 + * <code>Region</code> to paint to
146.2069 + * @param g <code>Graphics</code> to paint to
146.2070 + * @param x X coordinate of the area to paint to
146.2071 + * @param y Y coordinate of the area to paint to
146.2072 + * @param w Width of the area to paint to
146.2073 + * @param h Height of the area to paint to
146.2074 + * @param tabIndex Index of tab being painted.
146.2075 + */
146.2076 + public void paintTabbedPaneTabBackground(SynthContext context, Graphics g,
146.2077 + int x, int y, int w, int h,
146.2078 + int tabIndex) {
146.2079 + paintBackground(context, g, x, y, w, h, null);
146.2080 + }
146.2081 +
146.2082 + /**
146.2083 + * Paints the background of a tab of a tabbed pane. This implementation
146.2084 + * invokes the method of the same name without the orientation.
146.2085 + *
146.2086 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2087 + * <code>Region</code> to paint to
146.2088 + * @param g <code>Graphics</code> to paint to
146.2089 + * @param x X coordinate of the area to paint to
146.2090 + * @param y Y coordinate of the area to paint to
146.2091 + * @param w Width of the area to paint to
146.2092 + * @param h Height of the area to paint to
146.2093 + * @param tabIndex Index of tab being painted.
146.2094 + * @param orientation One of <code>JTabbedPane.TOP</code>,
146.2095 + * <code>JTabbedPane.LEFT</code>,
146.2096 + * <code>JTabbedPane.BOTTOM</code>, or
146.2097 + * <code>JTabbedPane.RIGHT</code>
146.2098 + * @since 1.6
146.2099 + */
146.2100 + public void paintTabbedPaneTabBackground(SynthContext context, Graphics g,
146.2101 + int x, int y, int w, int h,
146.2102 + int tabIndex, int orientation) {
146.2103 + if (orientation == JTabbedPane.LEFT) {
146.2104 + AffineTransform transform = new AffineTransform();
146.2105 + transform.scale(-1, 1);
146.2106 + transform.rotate(Math.toRadians(90));
146.2107 + paintBackground(context, g, y, x, h, w, transform);
146.2108 + } else if (orientation == JTabbedPane.RIGHT) {
146.2109 + AffineTransform transform = new AffineTransform();
146.2110 + transform.rotate(Math.toRadians(90));
146.2111 + transform.translate(0, -(x + w));
146.2112 + paintBackground(context, g, y, 0, h, w, transform);
146.2113 + } else if (orientation == JTabbedPane.BOTTOM) {
146.2114 + AffineTransform transform = new AffineTransform();
146.2115 + transform.translate(x,y);
146.2116 + transform.scale(1, -1);
146.2117 + transform.translate(0,-h);
146.2118 + paintBackground(context, g, 0, 0, w, h, transform);
146.2119 + } else {
146.2120 + paintBackground(context, g, x, y, w, h, null);
146.2121 + }
146.2122 + }
146.2123 +
146.2124 + /**
146.2125 + * Paints the border of a tab of a tabbed pane.
146.2126 + *
146.2127 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2128 + * <code>Region</code> to paint to
146.2129 + * @param g <code>Graphics</code> to paint to
146.2130 + * @param x X coordinate of the area to paint to
146.2131 + * @param y Y coordinate of the area to paint to
146.2132 + * @param w Width of the area to paint to
146.2133 + * @param h Height of the area to paint to
146.2134 + * @param tabIndex Index of tab being painted.
146.2135 + */
146.2136 + public void paintTabbedPaneTabBorder(SynthContext context, Graphics g,
146.2137 + int x, int y, int w, int h,
146.2138 + int tabIndex) {
146.2139 + paintBorder(context, g, x, y, w, h, null);
146.2140 + }
146.2141 +
146.2142 + /**
146.2143 + * Paints the border of a tab of a tabbed pane. This implementation invokes
146.2144 + * the method of the same name without the orientation.
146.2145 + *
146.2146 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2147 + * <code>Region</code> to paint to
146.2148 + * @param g <code>Graphics</code> to paint to
146.2149 + * @param x X coordinate of the area to paint to
146.2150 + * @param y Y coordinate of the area to paint to
146.2151 + * @param w Width of the area to paint to
146.2152 + * @param h Height of the area to paint to
146.2153 + * @param tabIndex Index of tab being painted.
146.2154 + * @param orientation One of <code>JTabbedPane.TOP</code>,
146.2155 + * <code>JTabbedPane.LEFT</code>,
146.2156 + * <code>JTabbedPane.BOTTOM</code>, or
146.2157 + * <code>JTabbedPane.RIGHT</code>
146.2158 + * @since 1.6
146.2159 + */
146.2160 + public void paintTabbedPaneTabBorder(SynthContext context, Graphics g,
146.2161 + int x, int y, int w, int h,
146.2162 + int tabIndex, int orientation) {
146.2163 + paintBorder(context, g, x, y, w, h, null);
146.2164 + }
146.2165 +
146.2166 + /**
146.2167 + * Paints the background of the area that contains the content of the
146.2168 + * selected tab of a tabbed pane.
146.2169 + *
146.2170 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2171 + * <code>Region</code> to paint to
146.2172 + * @param g <code>Graphics</code> to paint to
146.2173 + * @param x X coordinate of the area to paint to
146.2174 + * @param y Y coordinate of the area to paint to
146.2175 + * @param w Width of the area to paint to
146.2176 + * @param h Height of the area to paint to
146.2177 + */
146.2178 + public void paintTabbedPaneContentBackground(SynthContext context,
146.2179 + Graphics g, int x, int y, int w,
146.2180 + int h) {
146.2181 + paintBackground(context, g, x, y, w, h, null);
146.2182 + }
146.2183 +
146.2184 + /**
146.2185 + * Paints the border of the area that contains the content of the
146.2186 + * selected tab of a tabbed pane.
146.2187 + *
146.2188 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2189 + * <code>Region</code> to paint to
146.2190 + * @param g <code>Graphics</code> to paint to
146.2191 + * @param x X coordinate of the area to paint to
146.2192 + * @param y Y coordinate of the area to paint to
146.2193 + * @param w Width of the area to paint to
146.2194 + * @param h Height of the area to paint to
146.2195 + */
146.2196 + public void paintTabbedPaneContentBorder(SynthContext context, Graphics g,
146.2197 + int x, int y, int w, int h) {
146.2198 + paintBorder(context, g, x, y, w, h, null);
146.2199 + }
146.2200 +
146.2201 + /**
146.2202 + * Paints the background of the header of a table.
146.2203 + *
146.2204 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2205 + * <code>Region</code> to paint to
146.2206 + * @param g <code>Graphics</code> to paint to
146.2207 + * @param x X coordinate of the area to paint to
146.2208 + * @param y Y coordinate of the area to paint to
146.2209 + * @param w Width of the area to paint to
146.2210 + * @param h Height of the area to paint to
146.2211 + */
146.2212 + public void paintTableHeaderBackground(SynthContext context,
146.2213 + Graphics g, int x, int y,
146.2214 + int w, int h) {
146.2215 + paintBackground(context, g, x, y, w, h, null);
146.2216 + }
146.2217 +
146.2218 + /**
146.2219 + * Paints the border of the header of a table.
146.2220 + *
146.2221 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2222 + * <code>Region</code> to paint to
146.2223 + * @param g <code>Graphics</code> to paint to
146.2224 + * @param x X coordinate of the area to paint to
146.2225 + * @param y Y coordinate of the area to paint to
146.2226 + * @param w Width of the area to paint to
146.2227 + * @param h Height of the area to paint to
146.2228 + */
146.2229 + public void paintTableHeaderBorder(SynthContext context,
146.2230 + Graphics g, int x, int y,
146.2231 + int w, int h) {
146.2232 + paintBorder(context, g, x, y, w, h, null);
146.2233 + }
146.2234 +
146.2235 + /**
146.2236 + * Paints the background of a table.
146.2237 + *
146.2238 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2239 + * <code>Region</code> to paint to
146.2240 + * @param g <code>Graphics</code> to paint to
146.2241 + * @param x X coordinate of the area to paint to
146.2242 + * @param y Y coordinate of the area to paint to
146.2243 + * @param w Width of the area to paint to
146.2244 + * @param h Height of the area to paint to
146.2245 + */
146.2246 + public void paintTableBackground(SynthContext context,
146.2247 + Graphics g, int x, int y,
146.2248 + int w, int h) {
146.2249 + paintBackground(context, g, x, y, w, h, null);
146.2250 + }
146.2251 +
146.2252 + /**
146.2253 + * Paints the border of a table.
146.2254 + *
146.2255 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2256 + * <code>Region</code> to paint to
146.2257 + * @param g <code>Graphics</code> to paint to
146.2258 + * @param x X coordinate of the area to paint to
146.2259 + * @param y Y coordinate of the area to paint to
146.2260 + * @param w Width of the area to paint to
146.2261 + * @param h Height of the area to paint to
146.2262 + */
146.2263 + public void paintTableBorder(SynthContext context,
146.2264 + Graphics g, int x, int y,
146.2265 + int w, int h) {
146.2266 + paintBorder(context, g, x, y, w, h, null);
146.2267 + }
146.2268 +
146.2269 + /**
146.2270 + * Paints the background of a text area.
146.2271 + *
146.2272 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2273 + * <code>Region</code> to paint to
146.2274 + * @param g <code>Graphics</code> to paint to
146.2275 + * @param x X coordinate of the area to paint to
146.2276 + * @param y Y coordinate of the area to paint to
146.2277 + * @param w Width of the area to paint to
146.2278 + * @param h Height of the area to paint to
146.2279 + */
146.2280 + public void paintTextAreaBackground(SynthContext context,
146.2281 + Graphics g, int x, int y,
146.2282 + int w, int h) {
146.2283 + paintBackground(context, g, x, y, w, h, null);
146.2284 + }
146.2285 +
146.2286 + /**
146.2287 + * Paints the border of a text area.
146.2288 + *
146.2289 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2290 + * <code>Region</code> to paint to
146.2291 + * @param g <code>Graphics</code> to paint to
146.2292 + * @param x X coordinate of the area to paint to
146.2293 + * @param y Y coordinate of the area to paint to
146.2294 + * @param w Width of the area to paint to
146.2295 + * @param h Height of the area to paint to
146.2296 + */
146.2297 + public void paintTextAreaBorder(SynthContext context,
146.2298 + Graphics g, int x, int y,
146.2299 + int w, int h) {
146.2300 + paintBorder(context, g, x, y, w, h, null);
146.2301 + }
146.2302 +
146.2303 + /**
146.2304 + * Paints the background of a text pane.
146.2305 + *
146.2306 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2307 + * <code>Region</code> to paint to
146.2308 + * @param g <code>Graphics</code> to paint to
146.2309 + * @param x X coordinate of the area to paint to
146.2310 + * @param y Y coordinate of the area to paint to
146.2311 + * @param w Width of the area to paint to
146.2312 + * @param h Height of the area to paint to
146.2313 + */
146.2314 + public void paintTextPaneBackground(SynthContext context,
146.2315 + Graphics g, int x, int y,
146.2316 + int w, int h) {
146.2317 + paintBackground(context, g, x, y, w, h, null);
146.2318 + }
146.2319 +
146.2320 + /**
146.2321 + * Paints the border of a text pane.
146.2322 + *
146.2323 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2324 + * <code>Region</code> to paint to
146.2325 + * @param g <code>Graphics</code> to paint to
146.2326 + * @param x X coordinate of the area to paint to
146.2327 + * @param y Y coordinate of the area to paint to
146.2328 + * @param w Width of the area to paint to
146.2329 + * @param h Height of the area to paint to
146.2330 + */
146.2331 + public void paintTextPaneBorder(SynthContext context,
146.2332 + Graphics g, int x, int y,
146.2333 + int w, int h) {
146.2334 + paintBorder(context, g, x, y, w, h, null);
146.2335 + }
146.2336 +
146.2337 + /**
146.2338 + * Paints the background of a text field.
146.2339 + *
146.2340 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2341 + * <code>Region</code> to paint to
146.2342 + * @param g <code>Graphics</code> to paint to
146.2343 + * @param x X coordinate of the area to paint to
146.2344 + * @param y Y coordinate of the area to paint to
146.2345 + * @param w Width of the area to paint to
146.2346 + * @param h Height of the area to paint to
146.2347 + */
146.2348 + public void paintTextFieldBackground(SynthContext context,
146.2349 + Graphics g, int x, int y,
146.2350 + int w, int h) {
146.2351 + if (context.getComponent().getComponentOrientation().isLeftToRight()){
146.2352 + paintBackground(context, g, x, y, w, h, null);
146.2353 + } else {
146.2354 + AffineTransform transform = new AffineTransform();
146.2355 + transform.translate(x,y);
146.2356 + transform.scale(-1, 1);
146.2357 + transform.translate(-w,0);
146.2358 + paintBackground(context, g, 0, 0, w, h, transform);
146.2359 + }
146.2360 + }
146.2361 +
146.2362 + /**
146.2363 + * Paints the border of a text field.
146.2364 + *
146.2365 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2366 + * <code>Region</code> to paint to
146.2367 + * @param g <code>Graphics</code> to paint to
146.2368 + * @param x X coordinate of the area to paint to
146.2369 + * @param y Y coordinate of the area to paint to
146.2370 + * @param w Width of the area to paint to
146.2371 + * @param h Height of the area to paint to
146.2372 + */
146.2373 + public void paintTextFieldBorder(SynthContext context,
146.2374 + Graphics g, int x, int y,
146.2375 + int w, int h) {
146.2376 + if (context.getComponent().getComponentOrientation().isLeftToRight()){
146.2377 + paintBorder(context, g, x, y, w, h, null);
146.2378 + } else {
146.2379 + AffineTransform transform = new AffineTransform();
146.2380 + transform.translate(x,y);
146.2381 + transform.scale(-1, 1);
146.2382 + transform.translate(-w,0);
146.2383 + paintBorder(context, g, 0, 0, w, h, transform);
146.2384 + }
146.2385 + }
146.2386 +
146.2387 + /**
146.2388 + * Paints the background of a toggle button.
146.2389 + *
146.2390 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2391 + * <code>Region</code> to paint to
146.2392 + * @param g <code>Graphics</code> to paint to
146.2393 + * @param x X coordinate of the area to paint to
146.2394 + * @param y Y coordinate of the area to paint to
146.2395 + * @param w Width of the area to paint to
146.2396 + * @param h Height of the area to paint to
146.2397 + */
146.2398 + public void paintToggleButtonBackground(SynthContext context,
146.2399 + Graphics g, int x, int y,
146.2400 + int w, int h) {
146.2401 + paintBackground(context, g, x, y, w, h, null);
146.2402 + }
146.2403 +
146.2404 + /**
146.2405 + * Paints the border of a toggle button.
146.2406 + *
146.2407 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2408 + * <code>Region</code> to paint to
146.2409 + * @param g <code>Graphics</code> to paint to
146.2410 + * @param x X coordinate of the area to paint to
146.2411 + * @param y Y coordinate of the area to paint to
146.2412 + * @param w Width of the area to paint to
146.2413 + * @param h Height of the area to paint to
146.2414 + */
146.2415 + public void paintToggleButtonBorder(SynthContext context,
146.2416 + Graphics g, int x, int y,
146.2417 + int w, int h) {
146.2418 + paintBorder(context, g, x, y, w, h, null);
146.2419 + }
146.2420 +
146.2421 + /**
146.2422 + * Paints the background of a tool bar.
146.2423 + *
146.2424 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2425 + * <code>Region</code> to paint to
146.2426 + * @param g <code>Graphics</code> to paint to
146.2427 + * @param x X coordinate of the area to paint to
146.2428 + * @param y Y coordinate of the area to paint to
146.2429 + * @param w Width of the area to paint to
146.2430 + * @param h Height of the area to paint to
146.2431 + */
146.2432 + public void paintToolBarBackground(SynthContext context,
146.2433 + Graphics g, int x, int y,
146.2434 + int w, int h) {
146.2435 + paintBackground(context, g, x, y, w, h, null);
146.2436 + }
146.2437 +
146.2438 + /**
146.2439 + * Paints the background of a tool bar. This implementation invokes the
146.2440 + * method of the same name without the orientation.
146.2441 + *
146.2442 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2443 + * <code>Region</code> to paint to
146.2444 + * @param g <code>Graphics</code> to paint to
146.2445 + * @param x X coordinate of the area to paint to
146.2446 + * @param y Y coordinate of the area to paint to
146.2447 + * @param w Width of the area to paint to
146.2448 + * @param h Height of the area to paint to
146.2449 + * @param orientation One of <code>JToolBar.HORIZONTAL</code> or
146.2450 + * <code>JToolBar.VERTICAL</code>
146.2451 + * @since 1.6
146.2452 + */
146.2453 + public void paintToolBarBackground(SynthContext context,
146.2454 + Graphics g, int x, int y,
146.2455 + int w, int h, int orientation) {
146.2456 + paintBackground(context, g, x, y, w, h, orientation);
146.2457 + }
146.2458 +
146.2459 + /**
146.2460 + * Paints the border of a tool bar.
146.2461 + *
146.2462 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2463 + * <code>Region</code> to paint to
146.2464 + * @param g <code>Graphics</code> to paint to
146.2465 + * @param x X coordinate of the area to paint to
146.2466 + * @param y Y coordinate of the area to paint to
146.2467 + * @param w Width of the area to paint to
146.2468 + * @param h Height of the area to paint to
146.2469 + */
146.2470 + public void paintToolBarBorder(SynthContext context,
146.2471 + Graphics g, int x, int y,
146.2472 + int w, int h) {
146.2473 + paintBorder(context, g, x, y, w, h, null);
146.2474 + }
146.2475 +
146.2476 + /**
146.2477 + * Paints the border of a tool bar. This implementation invokes the
146.2478 + * method of the same name without the orientation.
146.2479 + *
146.2480 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2481 + * <code>Region</code> to paint to
146.2482 + * @param g <code>Graphics</code> to paint to
146.2483 + * @param x X coordinate of the area to paint to
146.2484 + * @param y Y coordinate of the area to paint to
146.2485 + * @param w Width of the area to paint to
146.2486 + * @param h Height of the area to paint to
146.2487 + * @param orientation One of <code>JToolBar.HORIZONTAL</code> or
146.2488 + * <code>JToolBar.VERTICAL</code>
146.2489 + * @since 1.6
146.2490 + */
146.2491 + public void paintToolBarBorder(SynthContext context,
146.2492 + Graphics g, int x, int y,
146.2493 + int w, int h, int orientation) {
146.2494 + paintBorder(context, g, x, y, w, h, orientation);
146.2495 + }
146.2496 +
146.2497 + /**
146.2498 + * Paints the background of the tool bar's content area.
146.2499 + *
146.2500 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2501 + * <code>Region</code> to paint to
146.2502 + * @param g <code>Graphics</code> to paint to
146.2503 + * @param x X coordinate of the area to paint to
146.2504 + * @param y Y coordinate of the area to paint to
146.2505 + * @param w Width of the area to paint to
146.2506 + * @param h Height of the area to paint to
146.2507 + */
146.2508 + public void paintToolBarContentBackground(SynthContext context,
146.2509 + Graphics g, int x, int y,
146.2510 + int w, int h) {
146.2511 + paintBackground(context, g, x, y, w, h, null);
146.2512 + }
146.2513 +
146.2514 + /**
146.2515 + * Paints the background of the tool bar's content area. This implementation
146.2516 + * invokes the method of the same name without the orientation.
146.2517 + *
146.2518 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2519 + * <code>Region</code> to paint to
146.2520 + * @param g <code>Graphics</code> to paint to
146.2521 + * @param x X coordinate of the area to paint to
146.2522 + * @param y Y coordinate of the area to paint to
146.2523 + * @param w Width of the area to paint to
146.2524 + * @param h Height of the area to paint to
146.2525 + * @param orientation One of <code>JToolBar.HORIZONTAL</code> or
146.2526 + * <code>JToolBar.VERTICAL</code>
146.2527 + * @since 1.6
146.2528 + */
146.2529 + public void paintToolBarContentBackground(SynthContext context,
146.2530 + Graphics g, int x, int y,
146.2531 + int w, int h, int orientation) {
146.2532 + paintBackground(context, g, x, y, w, h, orientation);
146.2533 + }
146.2534 +
146.2535 + /**
146.2536 + * Paints the border of the content area of a tool bar.
146.2537 + *
146.2538 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2539 + * <code>Region</code> to paint to
146.2540 + * @param g <code>Graphics</code> to paint to
146.2541 + * @param x X coordinate of the area to paint to
146.2542 + * @param y Y coordinate of the area to paint to
146.2543 + * @param w Width of the area to paint to
146.2544 + * @param h Height of the area to paint to
146.2545 + */
146.2546 + public void paintToolBarContentBorder(SynthContext context,
146.2547 + Graphics g, int x, int y,
146.2548 + int w, int h) {
146.2549 + paintBorder(context, g, x, y, w, h, null);
146.2550 + }
146.2551 +
146.2552 + /**
146.2553 + * Paints the border of the content area of a tool bar. This implementation
146.2554 + * invokes the method of the same name without the orientation.
146.2555 + *
146.2556 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2557 + * <code>Region</code> to paint to
146.2558 + * @param g <code>Graphics</code> to paint to
146.2559 + * @param x X coordinate of the area to paint to
146.2560 + * @param y Y coordinate of the area to paint to
146.2561 + * @param w Width of the area to paint to
146.2562 + * @param h Height of the area to paint to
146.2563 + * @param orientation One of <code>JToolBar.HORIZONTAL</code> or
146.2564 + * <code>JToolBar.VERTICAL</code>
146.2565 + * @since 1.6
146.2566 + */
146.2567 + public void paintToolBarContentBorder(SynthContext context,
146.2568 + Graphics g, int x, int y,
146.2569 + int w, int h, int orientation) {
146.2570 + paintBorder(context, g, x, y, w, h, orientation);
146.2571 + }
146.2572 +
146.2573 + /**
146.2574 + * Paints the background of the window containing the tool bar when it
146.2575 + * has been detached from its primary frame.
146.2576 + *
146.2577 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2578 + * <code>Region</code> to paint to
146.2579 + * @param g <code>Graphics</code> to paint to
146.2580 + * @param x X coordinate of the area to paint to
146.2581 + * @param y Y coordinate of the area to paint to
146.2582 + * @param w Width of the area to paint to
146.2583 + * @param h Height of the area to paint to
146.2584 + */
146.2585 + public void paintToolBarDragWindowBackground(SynthContext context,
146.2586 + Graphics g, int x, int y,
146.2587 + int w, int h) {
146.2588 + paintBackground(context, g, x, y, w, h, null);
146.2589 + }
146.2590 +
146.2591 + /**
146.2592 + * Paints the background of the window containing the tool bar when it
146.2593 + * has been detached from its primary frame. This implementation invokes the
146.2594 + * method of the same name without the orientation.
146.2595 + *
146.2596 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2597 + * <code>Region</code> to paint to
146.2598 + * @param g <code>Graphics</code> to paint to
146.2599 + * @param x X coordinate of the area to paint to
146.2600 + * @param y Y coordinate of the area to paint to
146.2601 + * @param w Width of the area to paint to
146.2602 + * @param h Height of the area to paint to
146.2603 + * @param orientation One of <code>JToolBar.HORIZONTAL</code> or
146.2604 + * <code>JToolBar.VERTICAL</code>
146.2605 + * @since 1.6
146.2606 + */
146.2607 + public void paintToolBarDragWindowBackground(SynthContext context,
146.2608 + Graphics g, int x, int y,
146.2609 + int w, int h, int orientation) {
146.2610 + paintBackground(context, g, x, y, w, h, orientation);
146.2611 + }
146.2612 +
146.2613 + /**
146.2614 + * Paints the border of the window containing the tool bar when it
146.2615 + * has been detached from it's primary frame.
146.2616 + *
146.2617 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2618 + * <code>Region</code> to paint to
146.2619 + * @param g <code>Graphics</code> to paint to
146.2620 + * @param x X coordinate of the area to paint to
146.2621 + * @param y Y coordinate of the area to paint to
146.2622 + * @param w Width of the area to paint to
146.2623 + * @param h Height of the area to paint to
146.2624 + */
146.2625 + public void paintToolBarDragWindowBorder(SynthContext context,
146.2626 + Graphics g, int x, int y,
146.2627 + int w, int h) {
146.2628 + paintBorder(context, g, x, y, w, h, null);
146.2629 + }
146.2630 +
146.2631 + /**
146.2632 + * Paints the border of the window containing the tool bar when it
146.2633 + * has been detached from it's primary frame. This implementation invokes the
146.2634 + * method of the same name without the orientation.
146.2635 + *
146.2636 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2637 + * <code>Region</code> to paint to
146.2638 + * @param g <code>Graphics</code> to paint to
146.2639 + * @param x X coordinate of the area to paint to
146.2640 + * @param y Y coordinate of the area to paint to
146.2641 + * @param w Width of the area to paint to
146.2642 + * @param h Height of the area to paint to
146.2643 + * @param orientation One of <code>JToolBar.HORIZONTAL</code> or
146.2644 + * <code>JToolBar.VERTICAL</code>
146.2645 + * @since 1.6
146.2646 + */
146.2647 + public void paintToolBarDragWindowBorder(SynthContext context,
146.2648 + Graphics g, int x, int y,
146.2649 + int w, int h, int orientation) {
146.2650 + paintBorder(context, g, x, y, w, h, orientation);
146.2651 + }
146.2652 +
146.2653 + /**
146.2654 + * Paints the background of a tool tip.
146.2655 + *
146.2656 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2657 + * <code>Region</code> to paint to
146.2658 + * @param g <code>Graphics</code> to paint to
146.2659 + * @param x X coordinate of the area to paint to
146.2660 + * @param y Y coordinate of the area to paint to
146.2661 + * @param w Width of the area to paint to
146.2662 + * @param h Height of the area to paint to
146.2663 + */
146.2664 + public void paintToolTipBackground(SynthContext context,
146.2665 + Graphics g, int x, int y,
146.2666 + int w, int h) {
146.2667 + paintBackground(context, g, x, y, w, h, null);
146.2668 + }
146.2669 +
146.2670 + /**
146.2671 + * Paints the border of a tool tip.
146.2672 + *
146.2673 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2674 + * <code>Region</code> to paint to
146.2675 + * @param g <code>Graphics</code> to paint to
146.2676 + * @param x X coordinate of the area to paint to
146.2677 + * @param y Y coordinate of the area to paint to
146.2678 + * @param w Width of the area to paint to
146.2679 + * @param h Height of the area to paint to
146.2680 + */
146.2681 + public void paintToolTipBorder(SynthContext context,
146.2682 + Graphics g, int x, int y,
146.2683 + int w, int h) {
146.2684 + paintBorder(context, g, x, y, w, h, null);
146.2685 + }
146.2686 +
146.2687 + /**
146.2688 + * Paints the background of a tree.
146.2689 + *
146.2690 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2691 + * <code>Region</code> to paint to
146.2692 + * @param g <code>Graphics</code> to paint to
146.2693 + * @param x X coordinate of the area to paint to
146.2694 + * @param y Y coordinate of the area to paint to
146.2695 + * @param w Width of the area to paint to
146.2696 + * @param h Height of the area to paint to
146.2697 + */
146.2698 + public void paintTreeBackground(SynthContext context,
146.2699 + Graphics g, int x, int y,
146.2700 + int w, int h) {
146.2701 + paintBackground(context, g, x, y, w, h, null);
146.2702 + }
146.2703 +
146.2704 + /**
146.2705 + * Paints the border of a tree.
146.2706 + *
146.2707 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2708 + * <code>Region</code> to paint to
146.2709 + * @param g <code>Graphics</code> to paint to
146.2710 + * @param x X coordinate of the area to paint to
146.2711 + * @param y Y coordinate of the area to paint to
146.2712 + * @param w Width of the area to paint to
146.2713 + * @param h Height of the area to paint to
146.2714 + */
146.2715 + public void paintTreeBorder(SynthContext context,
146.2716 + Graphics g, int x, int y,
146.2717 + int w, int h) {
146.2718 + paintBorder(context, g, x, y, w, h, null);
146.2719 + }
146.2720 +
146.2721 + /**
146.2722 + * Paints the background of the row containing a cell in a tree.
146.2723 + *
146.2724 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2725 + * <code>Region</code> to paint to
146.2726 + * @param g <code>Graphics</code> to paint to
146.2727 + * @param x X coordinate of the area to paint to
146.2728 + * @param y Y coordinate of the area to paint to
146.2729 + * @param w Width of the area to paint to
146.2730 + * @param h Height of the area to paint to
146.2731 + */
146.2732 + public void paintTreeCellBackground(SynthContext context,
146.2733 + Graphics g, int x, int y,
146.2734 + int w, int h) {
146.2735 + paintBackground(context, g, x, y, w, h, null);
146.2736 + }
146.2737 +
146.2738 + /**
146.2739 + * Paints the border of the row containing a cell in a tree.
146.2740 + *
146.2741 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2742 + * <code>Region</code> to paint to
146.2743 + * @param g <code>Graphics</code> to paint to
146.2744 + * @param x X coordinate of the area to paint to
146.2745 + * @param y Y coordinate of the area to paint to
146.2746 + * @param w Width of the area to paint to
146.2747 + * @param h Height of the area to paint to
146.2748 + */
146.2749 + public void paintTreeCellBorder(SynthContext context,
146.2750 + Graphics g, int x, int y,
146.2751 + int w, int h) {
146.2752 + paintBorder(context, g, x, y, w, h, null);
146.2753 + }
146.2754 +
146.2755 + /**
146.2756 + * Paints the focus indicator for a cell in a tree when it has focus.
146.2757 + *
146.2758 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2759 + * <code>Region</code> to paint to
146.2760 + * @param g <code>Graphics</code> to paint to
146.2761 + * @param x X coordinate of the area to paint to
146.2762 + * @param y Y coordinate of the area to paint to
146.2763 + * @param w Width of the area to paint to
146.2764 + * @param h Height of the area to paint to
146.2765 + */
146.2766 + public void paintTreeCellFocus(SynthContext context,
146.2767 + Graphics g, int x, int y,
146.2768 + int w, int h) {
146.2769 + //TODO
146.2770 + }
146.2771 +
146.2772 + /**
146.2773 + * Paints the background of the viewport.
146.2774 + *
146.2775 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2776 + * <code>Region</code> to paint to
146.2777 + * @param g <code>Graphics</code> to paint to
146.2778 + * @param x X coordinate of the area to paint to
146.2779 + * @param y Y coordinate of the area to paint to
146.2780 + * @param w Width of the area to paint to
146.2781 + * @param h Height of the area to paint to
146.2782 + */
146.2783 + public void paintViewportBackground(SynthContext context,
146.2784 + Graphics g, int x, int y,
146.2785 + int w, int h) {
146.2786 + paintBackground(context, g, x, y, w, h, null);
146.2787 + }
146.2788 +
146.2789 + /**
146.2790 + * Paints the border of a viewport.
146.2791 + *
146.2792 + * @param context SynthContext identifying the <code>JComponent</code> and
146.2793 + * <code>Region</code> to paint to
146.2794 + * @param g <code>Graphics</code> to paint to
146.2795 + * @param x X coordinate of the area to paint to
146.2796 + * @param y Y coordinate of the area to paint to
146.2797 + * @param w Width of the area to paint to
146.2798 + * @param h Height of the area to paint to
146.2799 + */
146.2800 + public void paintViewportBorder(SynthContext context,
146.2801 + Graphics g, int x, int y,
146.2802 + int w, int h) {
146.2803 + paintBorder(context, g, x, y, w, h, null);
146.2804 + }
146.2805 +}
147.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
147.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/TableScrollPaneCorner.java Wed Apr 29 00:27:46 2009 -0700
147.3 @@ -0,0 +1,68 @@
147.4 +/*
147.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
147.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
147.7 + *
147.8 + * This code is free software; you can redistribute it and/or modify it
147.9 + * under the terms of the GNU General Public License version 2 only, as
147.10 + * published by the Free Software Foundation. Sun designates this
147.11 + * particular file as subject to the "Classpath" exception as provided
147.12 + * by Sun in the LICENSE file that accompanied this code.
147.13 + *
147.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
147.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
147.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
147.17 + * version 2 for more details (a copy is included in the LICENSE file that
147.18 + * accompanied this code).
147.19 + *
147.20 + * You should have received a copy of the GNU General Public License version
147.21 + * 2 along with this work; if not, write to the Free Software Foundation,
147.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
147.23 + *
147.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
147.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
147.26 + * have any questions.
147.27 + */
147.28 +package javax.swing.plaf.nimbus;
147.29 +
147.30 +import javax.swing.Painter;
147.31 +
147.32 +import javax.swing.JComponent;
147.33 +import javax.swing.UIManager;
147.34 +import javax.swing.plaf.UIResource;
147.35 +import java.awt.Graphics;
147.36 +import java.awt.Graphics2D;
147.37 +import java.awt.Color;
147.38 +import java.awt.image.BufferedImage;
147.39 +
147.40 +/**
147.41 + * TableScrollPaneCorner - A simple component that paints itself using the table
147.42 + * header background painter. It is used to fill the top right corner of
147.43 + * scrollpane.
147.44 + *
147.45 + * @author Created by Jasper Potts (Jan 28, 2008)
147.46 + */
147.47 +class TableScrollPaneCorner extends JComponent implements UIResource{
147.48 +
147.49 + /**
147.50 + * Paint the component using the Nimbus Table Header Background Painter
147.51 + */
147.52 + @Override protected void paintComponent(Graphics g) {
147.53 + Painter painter = (Painter) UIManager.get(
147.54 + "TableHeader:\"TableHeader.renderer\"[Enabled].backgroundPainter");
147.55 + if (painter != null){
147.56 + if (g instanceof Graphics2D){
147.57 + painter.paint((Graphics2D)g,this,getWidth()+1,getHeight());
147.58 + } else {
147.59 + // paint using image to not Graphics2D to support
147.60 + // Java 1.1 printing API
147.61 + BufferedImage img = new BufferedImage(getWidth(),getHeight(),
147.62 + BufferedImage.TYPE_INT_ARGB);
147.63 + Graphics2D g2 = (Graphics2D)img.getGraphics();
147.64 + painter.paint(g2,this,getWidth()+1,getHeight());
147.65 + g2.dispose();
147.66 + g.drawImage(img,0,0,null);
147.67 + img = null;
147.68 + }
147.69 + }
147.70 + }
147.71 +}
148.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
148.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/ToolBarSeparatorPainter.java Wed Apr 29 00:27:46 2009 -0700
148.3 @@ -0,0 +1,71 @@
148.4 +/*
148.5 + * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
148.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
148.7 + *
148.8 + * This code is free software; you can redistribute it and/or modify it
148.9 + * under the terms of the GNU General Public License version 2 only, as
148.10 + * published by the Free Software Foundation. Sun designates this
148.11 + * particular file as subject to the "Classpath" exception as provided
148.12 + * by Sun in the LICENSE file that accompanied this code.
148.13 + *
148.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
148.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
148.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
148.17 + * version 2 for more details (a copy is included in the LICENSE file that
148.18 + * accompanied this code).
148.19 + *
148.20 + * You should have received a copy of the GNU General Public License version
148.21 + * 2 along with this work; if not, write to the Free Software Foundation,
148.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
148.23 + *
148.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
148.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
148.26 + * have any questions.
148.27 + */
148.28 +
148.29 +package javax.swing.plaf.nimbus;
148.30 +
148.31 +import javax.swing.plaf.nimbus.AbstractRegionPainter.PaintContext.CacheMode;
148.32 +import java.awt.Dimension;
148.33 +import java.awt.Graphics2D;
148.34 +import java.awt.Insets;
148.35 +import javax.swing.JComponent;
148.36 +
148.37 +/**
148.38 + * A special painter implementation for tool bar separators in Nimbus.
148.39 + * The designer tool doesn't have support for painters which render
148.40 + * repeated patterns, but that's exactly what the toolbar separator design
148.41 + * is for Nimbus. This custom painter is designed to handle this situation.
148.42 + * When support is added to the design tool / code generator to deal with
148.43 + * repeated patterns, then we can remove this class.
148.44 + * <p>
148.45 + */
148.46 +final class ToolBarSeparatorPainter extends AbstractRegionPainter {
148.47 + private static final int SPACE = 3;
148.48 + private static final int INSET = 2;
148.49 +
148.50 + @Override
148.51 + protected PaintContext getPaintContext() {
148.52 + //the paint context returned will have a few dummy values. The
148.53 + //implementation of doPaint doesn't bother with the "decode" methods
148.54 + //but calculates where to paint the circles manually. As such, we
148.55 + //only need to indicate in our PaintContext that we don't want this
148.56 + //to ever be cached
148.57 + return new PaintContext(
148.58 + new Insets(1, 0, 1, 0),
148.59 + new Dimension(38, 7),
148.60 + false, CacheMode.NO_CACHING, 1, 1);
148.61 + }
148.62 +
148.63 + @Override
148.64 + protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
148.65 + //it is assumed that in the normal orientation the separator renders
148.66 + //horizontally. Other code rotates it as necessary for a vertical
148.67 + //separator.
148.68 + g.setColor(c.getForeground());
148.69 + int y = height / 2;
148.70 + for (int i=INSET; i<=width-INSET; i+=SPACE) {
148.71 + g.fillRect(i, y, 1, 1);
148.72 + }
148.73 + }
148.74 +}
149.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
149.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/doc-files/properties.html Wed Apr 29 00:27:46 2009 -0700
149.3 @@ -0,0 +1,207 @@
149.4 +<html>
149.5 +<head>
149.6 +<link href="style.css" rel="stylesheet" type="text/css" />
149.7 +</head>
149.8 +<body>
149.9 +<h1 id="primaryColors">Primary Colors</h1>
149.10 +<table>
149.11 +<tr><th>Key</th><th>Value</th><th>Preview</th></tr>
149.12 +<tr>
149.13 +<td width="250"><code>control</code></td>
149.14 +<td><pre>#d6d9df (214,217,223)</pre></td>
149.15 +
149.16 +<td width="100" bgcolor="#d6d9df"> </td>
149.17 +</tr>
149.18 +<tr>
149.19 +<td width="250"><code>info</code></td>
149.20 +<td><pre>#f2f2bd (242,242,189)</pre></td>
149.21 +<td width="100" bgcolor="#f2f2bd"> </td>
149.22 +</tr>
149.23 +<tr>
149.24 +<td width="250"><code>nimbusAlertYellow</code></td>
149.25 +<td><pre>#ffdc23 (255,220,35)</pre></td>
149.26 +<td width="100" bgcolor="#ffdc23"> </td>
149.27 +</tr>
149.28 +<tr>
149.29 +
149.30 +<td width="250"><code>nimbusBase</code></td>
149.31 +<td><pre>#33628c (51,98,140)</pre></td>
149.32 +<td width="100" bgcolor="#33628c"> </td>
149.33 +</tr>
149.34 +<tr>
149.35 +<td width="250"><code>nimbusDisabledText</code></td>
149.36 +<td><pre>#8e8f91 (142,143,145)</pre></td>
149.37 +<td width="100" bgcolor="#8e8f91"> </td>
149.38 +</tr>
149.39 +<tr>
149.40 +<td width="250"><code>nimbusFocus</code></td>
149.41 +<td><pre>#73a4d1 (115,164,209)</pre></td>
149.42 +
149.43 +<td width="100" bgcolor="#73a4d1"> </td>
149.44 +</tr>
149.45 +<tr>
149.46 +<td width="250"><code>nimbusGreen</code></td>
149.47 +<td><pre>#b0b332 (176,179,50)</pre></td>
149.48 +<td width="100" bgcolor="#b0b332"> </td>
149.49 +</tr>
149.50 +<tr>
149.51 +<td width="250"><code>nimbusInfoBlue</code></td>
149.52 +<td><pre>#2f5cb4 (47,92,180)</pre></td>
149.53 +<td width="100" bgcolor="#2f5cb4"> </td>
149.54 +</tr>
149.55 +<tr>
149.56 +
149.57 +<td width="250"><code>nimbusLightBackground</code></td>
149.58 +<td><pre>#ffffff (255,255,255)</pre></td>
149.59 +<td width="100" bgcolor="#ffffff"> </td>
149.60 +</tr>
149.61 +<tr>
149.62 +<td width="250"><code>nimbusOrange</code></td>
149.63 +<td><pre>#bf6204 (191,98,4)</pre></td>
149.64 +<td width="100" bgcolor="#bf6204"> </td>
149.65 +</tr>
149.66 +<tr>
149.67 +<td width="250"><code>nimbusRed</code></td>
149.68 +<td><pre>#a92e22 (169,46,34)</pre></td>
149.69 +
149.70 +<td width="100" bgcolor="#a92e22"> </td>
149.71 +</tr>
149.72 +<tr>
149.73 +<td width="250"><code>nimbusSelectedText</code></td>
149.74 +<td><pre>#ffffff (255,255,255)</pre></td>
149.75 +<td width="100" bgcolor="#ffffff"> </td>
149.76 +</tr>
149.77 +<tr>
149.78 +<td width="250"><code>nimbusSelectionBackground</code></td>
149.79 +<td><pre>#39698a (57,105,138)</pre></td>
149.80 +<td width="100" bgcolor="#39698a"> </td>
149.81 +</tr>
149.82 +<tr>
149.83 +
149.84 +<td width="250"><code>text</code></td>
149.85 +<td><pre>#000000 (0,0,0)</pre></td>
149.86 +<td width="100" bgcolor="#000000"> </td>
149.87 +</tr>
149.88 +</table>
149.89 +
149.90 +<h1 id="secondaryColors">Secondary Colors</h1>
149.91 +<table>
149.92 +<tr><th>Key</th><th>Value</th><th>Preview</th></tr>
149.93 +<tr>
149.94 +<td width="250"><code>activeCaption</code></td>
149.95 +
149.96 +<td><pre>#babec6 (186,190,198)</pre></td>
149.97 +<td width="100" bgcolor="#babec6"> </td>
149.98 +</tr>
149.99 +<tr>
149.100 +<td width="250"><code>background</code></td>
149.101 +<td><pre>#d6d9df (214,217,223)</pre></td>
149.102 +<td width="100" bgcolor="#d6d9df"> </td>
149.103 +</tr>
149.104 +<tr>
149.105 +<td width="250"><code>controlDkShadow</code></td>
149.106 +<td><pre>#a4abb8 (164,171,184)</pre></td>
149.107 +<td width="100" bgcolor="#a4abb8"> </td>
149.108 +
149.109 +</tr>
149.110 +<tr>
149.111 +<td width="250"><code>controlHighlight</code></td>
149.112 +<td><pre>#e9ecf2 (233,236,242)</pre></td>
149.113 +<td width="100" bgcolor="#e9ecf2"> </td>
149.114 +</tr>
149.115 +<tr>
149.116 +<td width="250"><code>controlLHighlight</code></td>
149.117 +<td><pre>#f7f8fa (247,248,250)</pre></td>
149.118 +<td width="100" bgcolor="#f7f8fa"> </td>
149.119 +</tr>
149.120 +<tr>
149.121 +<td width="250"><code>controlShadow</code></td>
149.122 +
149.123 +<td><pre>#ccd3e0 (204,211,224)</pre></td>
149.124 +<td width="100" bgcolor="#ccd3e0"> </td>
149.125 +</tr>
149.126 +<tr>
149.127 +<td width="250"><code>controlText</code></td>
149.128 +<td><pre>#000000 (0,0,0)</pre></td>
149.129 +<td width="100" bgcolor="#000000"> </td>
149.130 +</tr>
149.131 +<tr>
149.132 +<td width="250"><code>desktop</code></td>
149.133 +<td><pre>#3d6079 (61,96,121)</pre></td>
149.134 +<td width="100" bgcolor="#3d6079"> </td>
149.135 +
149.136 +</tr>
149.137 +<tr>
149.138 +<td width="250"><code>inactiveCaption</code></td>
149.139 +<td><pre>#bdc1c8 (189,193,200)</pre></td>
149.140 +<td width="100" bgcolor="#bdc1c8"> </td>
149.141 +</tr>
149.142 +<tr>
149.143 +<td width="250"><code>infoText</code></td>
149.144 +<td><pre>#000000 (0,0,0)</pre></td>
149.145 +<td width="100" bgcolor="#000000"> </td>
149.146 +</tr>
149.147 +<tr>
149.148 +<td width="250"><code>menu</code></td>
149.149 +
149.150 +<td><pre>#edeff2 (237,239,242)</pre></td>
149.151 +<td width="100" bgcolor="#edeff2"> </td>
149.152 +</tr>
149.153 +<tr>
149.154 +<td width="250"><code>menuText</code></td>
149.155 +<td><pre>#000000 (0,0,0)</pre></td>
149.156 +<td width="100" bgcolor="#000000"> </td>
149.157 +</tr>
149.158 +<tr>
149.159 +<td width="250"><code>nimbusBlueGrey</code></td>
149.160 +<td><pre>#a9b0be (169,176,190)</pre></td>
149.161 +<td width="100" bgcolor="#a9b0be"> </td>
149.162 +
149.163 +</tr>
149.164 +<tr>
149.165 +<td width="250"><code>nimbusBorder</code></td>
149.166 +<td><pre>#9297a1 (146,151,161)</pre></td>
149.167 +<td width="100" bgcolor="#9297a1"> </td>
149.168 +</tr>
149.169 +<tr>
149.170 +<td width="250"><code>nimbusSelection</code></td>
149.171 +<td><pre>#39698a (57,105,138)</pre></td>
149.172 +<td width="100" bgcolor="#39698a"> </td>
149.173 +</tr>
149.174 +<tr>
149.175 +<td width="250"><code>scrollbar</code></td>
149.176 +
149.177 +<td><pre>#cdd0d5 (205,208,213)</pre></td>
149.178 +<td width="100" bgcolor="#cdd0d5"> </td>
149.179 +</tr>
149.180 +<tr>
149.181 +<td width="250"><code>textBackground</code></td>
149.182 +<td><pre>#39698a (57,105,138)</pre></td>
149.183 +<td width="100" bgcolor="#39698a"> </td>
149.184 +</tr>
149.185 +<tr>
149.186 +<td width="250"><code>textForeground</code></td>
149.187 +<td><pre>#000000 (0,0,0)</pre></td>
149.188 +<td width="100" bgcolor="#000000"> </td>
149.189 +
149.190 +</tr>
149.191 +<tr>
149.192 +<td width="250"><code>textHighlight</code></td>
149.193 +<td><pre>#39698a (57,105,138)</pre></td>
149.194 +<td width="100" bgcolor="#39698a"> </td>
149.195 +</tr>
149.196 +<tr>
149.197 +<td width="250"><code>textHighlightText</code></td>
149.198 +<td><pre>#ffffff (255,255,255)</pre></td>
149.199 +<td width="100" bgcolor="#ffffff"> </td>
149.200 +</tr>
149.201 +<tr>
149.202 +<td width="250"><code>textInactiveText</code></td>
149.203 +
149.204 +<td><pre>#8e8f91 (142,143,145)</pre></td>
149.205 +<td width="100" bgcolor="#8e8f91"> </td>
149.206 +</tr>
149.207 +</table>
149.208 +
149.209 +</body>
149.210 +</html>
150.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
150.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/package.html Wed Apr 29 00:27:46 2009 -0700
150.3 @@ -0,0 +1,102 @@
150.4 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
150.5 +<html>
150.6 +<head>
150.7 +<!--
150.8 +Copyright 1998-2001 Sun Microsystems, Inc. All Rights Reserved.
150.9 +DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
150.10 +
150.11 +This code is free software; you can redistribute it and/or modify it
150.12 +under the terms of the GNU General Public License version 2 only, as
150.13 +published by the Free Software Foundation. Sun designates this
150.14 +particular file as subject to the "Classpath" exception as provided
150.15 +by Sun in the LICENSE file that accompanied this code.
150.16 +
150.17 +This code is distributed in the hope that it will be useful, but WITHOUT
150.18 +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
150.19 +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
150.20 +version 2 for more details (a copy is included in the LICENSE file that
150.21 +accompanied this code).
150.22 +
150.23 +You should have received a copy of the GNU General Public License version
150.24 +2 along with this work; if not, write to the Free Software Foundation,
150.25 +Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
150.26 +
150.27 +Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
150.28 +CA 95054 USA or visit www.sun.com if you need additional information or
150.29 +have any questions.
150.30 +-->
150.31 +
150.32 +</head>
150.33 +<body bgcolor="white">
150.34 +
150.35 +Provides user interface objects built according to the cross-platform
150.36 +Nimbus look and feel.
150.37 +
150.38 +<p>Nimbus uses instances of the {@link javax.swing.Painter} interface to paint
150.39 +components. With each Swing component it associates a foreground and a
150.40 +background {@code Painter}, and there may be several painters for different
150.41 +component states.
150.42 +
150.43 +<p>Nimbus allows customizing many of its properties, including painters, by
150.44 +altering the {@link UIDefaults} table. Here's an example:
150.45 +<code><pre>
150.46 + UIManager.put("ProgressBar.tileWidth", myTileWidth);
150.47 + UIManager.put("ProgressBar[Enabled].backgroundPainter", myBgPainter);
150.48 + UIManager.put("ProgressBar[Enabled].foregroundPainter", myFgPainter);
150.49 +</pre></code>
150.50 +
150.51 +<p>Per-component customization is also possible. When rendering a component,
150.52 +Nimbus checks its client property named "Nimbus.Overrides". The value of this
150.53 +property should be an instance of {@code UIDefaults}. Settings from that table
150.54 +override the UIManager settings, but for that particular component instance
150.55 +only. An optional client property, "Nimbus.Overrides.InheritDefaults" of type
150.56 +Boolean, specifies whether the overriding settings should be merged with
150.57 +default ones ({@code true}), or replace them ({@code false}). By default they
150.58 +are merged:
150.59 +<code><pre>
150.60 + JProgressBar bar = new JProgressBar();
150.61 + UIDefaults overrides = new UIDefaults();
150.62 + overrides.put("ProgressBar.cycleTime", 330);
150.63 + ...
150.64 + bar.putClientProperty("Nimbus.Overrides", overrides);
150.65 + bar.putClientProperty("Nimbus.Overrides.InheritDefaults", false);
150.66 +</pre></code>
150.67 +
150.68 +<p>Colors in Nimbus are derived from a core set of
150.69 +<a href="doc-files/properties.html#primaryColors">primary colors</a>. There are also
150.70 +<a href="doc-files/properties.html#secondaryColors">secondary colors</a>, which are
150.71 +derived from primary ones, but serve themselves as base colors for other
150.72 +derived colors. The derivation mechanism allows for runtime customization,
150.73 +i.e. if a primary or secondary color is changed, all colors that are derived
150.74 +from it are automatically updated. The method
150.75 +{@link javax.swing.plaf.nimbus.NimbusLookAndFeel#getDerivedColor(java.lang.String, float, float, float, int, boolean)}
150.76 +may be used to create a derived color.
150.77 +
150.78 +<p>These classes are designed to be used while the
150.79 +corresponding <code>LookAndFeel</code> class has been
150.80 +installed
150.81 +(<code>UIManager.setLookAndFeel(new <i>XXX</i>LookAndFeel())</code>).
150.82 +Using them while a different <code>LookAndFeel</code> is installed
150.83 +may produce unexpected results, including exceptions.
150.84 +Additionally, changing the <code>LookAndFeel</code>
150.85 +maintained by the <code>UIManager</code> without updating the
150.86 +corresponding <code>ComponentUI</code> of any
150.87 +<code>JComponent</code>s may also produce unexpected results,
150.88 +such as the wrong colors showing up, and is generally not
150.89 +encouraged.
150.90 +
150.91 +<p><strong>Note:</strong>
150.92 +Most of the Swing API is <em>not</em> thread safe.
150.93 +For details, see
150.94 +<a
150.95 +href="http://java.sun.com/docs/books/tutorial/uiswing/overview/threads.html"
150.96 +target="_top">Threads and Swing</a>,
150.97 +a section in
150.98 +<em><a href="http://java.sun.com/docs/books/tutorial/"
150.99 +target="_top">The Java Tutorial</a></em>.
150.100 +
150.101 +@since 1.7
150.102 +@serial exclude
150.103 +
150.104 +</body>
150.105 +</html>
151.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
151.2 +++ b/src/share/classes/javax/swing/plaf/nimbus/skin.laf Wed Apr 29 00:27:46 2009 -0700
151.3 @@ -0,0 +1,28332 @@
151.4 +<?xml version="1.0" encoding="UTF-8"?>
151.5 +
151.6 +<!--
151.7 + Copyright 1998-2004 Sun Microsystems, Inc. All Rights Reserved.
151.8 + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
151.9 +
151.10 + This code is free software; you can redistribute it and/or modify it
151.11 + under the terms of the GNU General Public License version 2 only, as
151.12 + published by the Free Software Foundation. Sun designates this
151.13 + particular file as subject to the "Classpath" exception as provided
151.14 + by Sun in the LICENSE file that accompanied this code.
151.15 +
151.16 + This code is distributed in the hope that it will be useful, but WITHOUT
151.17 + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
151.18 + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
151.19 + version 2 for more details (a copy is included in the LICENSE file that
151.20 + accompanied this code).
151.21 +
151.22 + You should have received a copy of the GNU General Public License version
151.23 + 2 along with this work; if not, write to the Free Software Foundation,
151.24 + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
151.25 +
151.26 + Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
151.27 + CA 95054 USA or visit www.sun.com if you need additional information or
151.28 + have any questions.
151.29 +-->
151.30 +
151.31 +<synthModel>
151.32 + <insets>
151.33 + <uiInsets name="zeroInsets">
151.34 + <insets top="0" bottom="0" left="0" right="0"/>
151.35 + </uiInsets>
151.36 + <uiInsets name="twoInsets">
151.37 + <insets top="2" bottom="2" left="2" right="2"/>
151.38 + </uiInsets>
151.39 + <uiInsets name="threeInsets">
151.40 + <insets top="3" bottom="3" left="3" right="3"/>
151.41 + </uiInsets>
151.42 + </insets>
151.43 + <colors>
151.44 + <uiColor name="text">
151.45 + <matte red="0" green="0" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.46 + </uiColor>
151.47 + <uiColor name="control">
151.48 + <matte red="214" green="217" blue="223" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.49 + </uiColor>
151.50 + <uiColor name="nimbusBase">
151.51 + <matte red="51" green="98" blue="140" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.52 + </uiColor>
151.53 + <uiColor name="nimbusBlueGrey">
151.54 + <matte red="169" green="176" blue="190" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.52518797" brightnessOffset="0.19607842" alphaOffset="0"/>
151.55 + </uiColor>
151.56 + <uiColor name="nimbusOrange">
151.57 + <matte red="191" green="98" blue="4" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.58 + </uiColor>
151.59 + <uiColor name="nimbusGreen">
151.60 + <matte red="176" green="179" blue="50" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.61 + </uiColor>
151.62 + <uiColor name="nimbusRed">
151.63 + <matte red="169" green="46" blue="34" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.64 + </uiColor>
151.65 + <uiColor name="nimbusBorder">
151.66 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.017358616" brightnessOffset="-0.11372548" alphaOffset="0"/>
151.67 + </uiColor>
151.68 + <uiColor name="nimbusSelection">
151.69 + <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.010750473" saturationOffset="-0.04875779" brightnessOffset="-0.007843137" alphaOffset="0"/>
151.70 + </uiColor>
151.71 + <uiColor name="nimbusInfoBlue">
151.72 + <matte red="47" green="92" blue="180" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.73 + </uiColor>
151.74 + <uiColor name="nimbusAlertYellow">
151.75 + <matte red="255" green="220" blue="35" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.76 + </uiColor>
151.77 + <uiColor name="nimbusFocus">
151.78 + <matte red="115" green="164" blue="209" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.79 + </uiColor>
151.80 + <uiColor name="nimbusSelectedText">
151.81 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.82 + </uiColor>
151.83 + <uiColor name="nimbusSelectionBackground">
151.84 + <matte red="57" green="105" blue="138" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.85 + </uiColor>
151.86 + <uiColor name="nimbusDisabledText">
151.87 + <matte red="142" green="143" blue="145" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.88 + </uiColor>
151.89 + <uiColor name="nimbusLightBackground">
151.90 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.91 + </uiColor>
151.92 + <uiColor name="infoText">
151.93 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="text" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.94 + </uiColor>
151.95 + <uiColor name="info">
151.96 + <matte red="242" green="242" blue="189" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.97 + </uiColor>
151.98 + <uiColor name="menuText">
151.99 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="text" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.100 + </uiColor>
151.101 + <uiColor name="menu">
151.102 + <matte red="237" green="239" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.6150531" brightnessOffset="0.39999998" alphaOffset="0"/>
151.103 + </uiColor>
151.104 + <uiColor name="scrollbar">
151.105 + <matte red="205" green="208" blue="213" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.07296763" brightnessOffset="0.09019607" alphaOffset="0"/>
151.106 + </uiColor>
151.107 + <uiColor name="controlText">
151.108 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="text" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.109 + </uiColor>
151.110 + <uiColor name="controlHighlight">
151.111 + <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.112 + </uiColor>
151.113 + <uiColor name="controlLHighlight">
151.114 + <matte red="247" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.098526314" brightnessOffset="0.2352941" alphaOffset="0"/>
151.115 + </uiColor>
151.116 + <uiColor name="controlShadow">
151.117 + <matte red="204" green="211" blue="224" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0212406" brightnessOffset="0.13333333" alphaOffset="0"/>
151.118 + </uiColor>
151.119 + <uiColor name="controlDkShadow">
151.120 + <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.121 + </uiColor>
151.122 + <uiColor name="textHighlight">
151.123 + <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.124 + </uiColor>
151.125 + <uiColor name="textHighlightText">
151.126 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.127 + </uiColor>
151.128 + <uiColor name="textInactiveText">
151.129 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.130 + </uiColor>
151.131 + <uiColor name="desktop">
151.132 + <matte red="61" green="96" blue="121" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.009207249" saturationOffset="-0.13984653" brightnessOffset="-0.07450983" alphaOffset="0"/>
151.133 + </uiColor>
151.134 + <uiColor name="activeCaption">
151.135 + <matte red="186" green="190" blue="198" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.049920253" brightnessOffset="0.031372547" alphaOffset="0"/>
151.136 + </uiColor>
151.137 + <uiColor name="inactiveCaption">
151.138 + <matte red="189" green="193" blue="200" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.055526316" brightnessOffset="0.039215684" alphaOffset="0"/>
151.139 + </uiColor>
151.140 + </colors>
151.141 + <fonts>
151.142 + <uiFont name="InternalFrame.titleFont">
151.143 + <typeface uiDefaultParentName="defaultFont" bold="On"/>
151.144 + </uiFont>
151.145 + </fonts>
151.146 + <style>
151.147 + <textForeground>
151.148 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="text" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.149 + </textForeground>
151.150 + <textBackground>
151.151 + <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.152 + </textBackground>
151.153 + <background>
151.154 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="control" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.155 + </background>
151.156 + <inherit-textForeground>false</inherit-textForeground>
151.157 + <inherit-textBackground>false</inherit-textBackground>
151.158 + <inherit-background>false</inherit-background>
151.159 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.160 + <uiproperties>
151.161 + <uiProperty name="TitledBorder.position" type="STRING" value="ABOVE_TOP"/>
151.162 + <uiProperty name="FileView.fullRowSelection" type="BOOLEAN" value="TRUE"/>
151.163 + </uiproperties>
151.164 + </style>
151.165 + <components>
151.166 + <uiComponent opaque="false" type="javax.swing.plaf.synth.SynthArrowButton" name="ArrowButton" ui="SynthArrowButtonUI" subregion="true">
151.167 + <stateTypes/>
151.168 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.169 + <style>
151.170 + <textForeground/>
151.171 + <textBackground/>
151.172 + <background/>
151.173 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.174 + <uiproperties>
151.175 + <uiProperty name="size" type="INT" value="16"/>
151.176 + </uiproperties>
151.177 + </style>
151.178 + <backgroundStates>
151.179 + <state stateKeys="Enabled">
151.180 + <style>
151.181 + <textForeground/>
151.182 + <textBackground/>
151.183 + <background/>
151.184 + <uiproperties/>
151.185 + </style>
151.186 + <canvas>
151.187 + <size width="10" height="10"/>
151.188 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.189 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.190 + <layer name="Layer 1">
151.191 + <opacity>1.0</opacity>
151.192 + <fillOpacity>1.0</fillOpacity>
151.193 + <blendingMode>NORMAL</blendingMode>
151.194 + <locked>false</locked>
151.195 + <visible>true</visible>
151.196 + <shapes>
151.197 + </shapes>
151.198 + <effects/>
151.199 + </layer>
151.200 + </canvas>
151.201 + </state>
151.202 + </backgroundStates>
151.203 + <foregroundStates>
151.204 + <state stateKeys="Disabled">
151.205 + <style>
151.206 + <textForeground/>
151.207 + <textBackground/>
151.208 + <background/>
151.209 + <uiproperties/>
151.210 + </style>
151.211 + <canvas>
151.212 + <size width="10" height="10"/>
151.213 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.214 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.215 + <layer name="Layer 1">
151.216 + <opacity>1.0</opacity>
151.217 + <fillOpacity>1.0</fillOpacity>
151.218 + <blendingMode>NORMAL</blendingMode>
151.219 + <locked>false</locked>
151.220 + <visible>true</visible>
151.221 + <shapes>
151.222 + <path>
151.223 + <matte red="167" green="171" blue="178" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.57391655" brightnessOffset="0.1490196" alphaOffset="0"/>
151.224 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.225 + <points>
151.226 + <point x="8.0" y="2.0" cp1x="8.0" cp1y="2.0" cp2x="8.0" cp2y="2.0"/>
151.227 + <point x="2.0" y="5.0" cp1x="2.0" cp1y="5.0" cp2x="2.0" cp2y="5.0"/>
151.228 + <point x="8.0" y="8.0" cp1x="8.0" cp1y="8.0" cp2x="8.0" cp2y="8.0"/>
151.229 + </points>
151.230 + </path>
151.231 + </shapes>
151.232 + <effects/>
151.233 + </layer>
151.234 + </canvas>
151.235 + </state>
151.236 + <state stateKeys="Enabled">
151.237 + <style>
151.238 + <textForeground/>
151.239 + <textBackground/>
151.240 + <background/>
151.241 + <uiproperties/>
151.242 + </style>
151.243 + <canvas>
151.244 + <size width="10" height="10"/>
151.245 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.246 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.247 + <layer name="Layer 1">
151.248 + <opacity>1.0</opacity>
151.249 + <fillOpacity>1.0</fillOpacity>
151.250 + <blendingMode>NORMAL</blendingMode>
151.251 + <locked>false</locked>
151.252 + <visible>true</visible>
151.253 + <shapes>
151.254 + <path>
151.255 + <matte red="45" green="45" blue="45" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.37254906" alphaOffset="0"/>
151.256 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.257 + <points>
151.258 + <point x="8.0" y="2.0" cp1x="8.0" cp1y="2.0" cp2x="8.0" cp2y="2.0"/>
151.259 + <point x="2.0" y="5.0" cp1x="2.0" cp1y="5.0" cp2x="2.0" cp2y="5.0"/>
151.260 + <point x="8.0" y="8.0" cp1x="8.0" cp1y="8.0" cp2x="8.0" cp2y="8.0"/>
151.261 + </points>
151.262 + </path>
151.263 + </shapes>
151.264 + <effects/>
151.265 + </layer>
151.266 + </canvas>
151.267 + </state>
151.268 + </foregroundStates>
151.269 + <borderStates/>
151.270 + <regions/>
151.271 + </uiComponent>
151.272 + <uiComponent opaque="false" type="javax.swing.JButton" name="Button" ui="ButtonUI" subregion="false">
151.273 + <stateTypes/>
151.274 + <contentMargins top="6" bottom="6" left="14" right="14"/>
151.275 + <style>
151.276 + <textForeground/>
151.277 + <textBackground/>
151.278 + <background/>
151.279 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.280 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.281 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.282 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.283 + <uiproperties>
151.284 + <uiProperty name="defaultButtonFollowsFocus" type="BOOLEAN" value="false"/>
151.285 + </uiproperties>
151.286 + </style>
151.287 + <backgroundStates>
151.288 + <state stateKeys="Default">
151.289 + <style>
151.290 + <textForeground/>
151.291 + <textBackground/>
151.292 + <background/>
151.293 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.294 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.295 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.296 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.297 + <uiproperties/>
151.298 + </style>
151.299 + <canvas>
151.300 + <size width="104" height="33"/>
151.301 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.302 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.303 + <layer name="Button Layer">
151.304 + <opacity>1.0</opacity>
151.305 + <fillOpacity>1.0</fillOpacity>
151.306 + <blendingMode>NORMAL</blendingMode>
151.307 + <locked>false</locked>
151.308 + <visible>true</visible>
151.309 + <shapes>
151.310 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
151.311 + <gradient cycleMethod="NO_CYCLE">
151.312 + <stop position="0.0" midpoint="0.4">
151.313 + <matte red="246" green="248" blue="250" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
151.314 + </stop>
151.315 + <stop position="0.06" midpoint="0.4">
151.316 + <matte red="223" green="230" blue="237" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.5766426" brightnessOffset="0.38039213" alphaOffset="0"/>
151.317 + </stop>
151.318 + <stop position="0.6" midpoint="0.5">
151.319 + <matte red="163" green="184" blue="203" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
151.320 + </stop>
151.321 + <stop position="0.7" midpoint="0.6">
151.322 + <matte red="163" green="184" blue="203" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
151.323 + </stop>
151.324 + <stop position="0.96" midpoint="0.6">
151.325 + <matte red="193" green="214" blue="233" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.46404046" brightnessOffset="0.36470586" alphaOffset="0"/>
151.326 + </stop>
151.327 + <stop position="1.0" midpoint="0.5">
151.328 + <matte red="213" green="234" blue="253" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.47761154" brightnessOffset="0.44313723" alphaOffset="0"/>
151.329 + </stop>
151.330 + </gradient>
151.331 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.332 + </rectangle>
151.333 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
151.334 + <gradient cycleMethod="NO_CYCLE">
151.335 + <stop position="0.05" midpoint="0.5">
151.336 + <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
151.337 + </stop>
151.338 + <stop position="0.95" midpoint="0.5">
151.339 + <matte red="34" green="55" blue="74" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.095173776" brightnessOffset="-0.25882354" alphaOffset="0"/>
151.340 + </stop>
151.341 + </gradient>
151.342 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.343 + </rectangle>
151.344 + <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
151.345 + <matte red="92" green="94" blue="96" alpha="65" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-190"/>
151.346 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.347 + </rectangle>
151.348 + </shapes>
151.349 + <effects/>
151.350 + </layer>
151.351 + </canvas>
151.352 + </state>
151.353 + <state stateKeys="Default+Focused">
151.354 + <style>
151.355 + <textForeground/>
151.356 + <textBackground/>
151.357 + <background/>
151.358 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.359 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.360 + <uiproperties/>
151.361 + </style>
151.362 + <canvas>
151.363 + <size width="104" height="33"/>
151.364 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.365 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.366 + <layer name="Button Layer">
151.367 + <opacity>1.0</opacity>
151.368 + <fillOpacity>1.0</fillOpacity>
151.369 + <blendingMode>NORMAL</blendingMode>
151.370 + <locked>false</locked>
151.371 + <visible>true</visible>
151.372 + <shapes>
151.373 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
151.374 + <gradient cycleMethod="NO_CYCLE">
151.375 + <stop position="0.0" midpoint="0.4">
151.376 + <matte red="246" green="248" blue="250" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
151.377 + </stop>
151.378 + <stop position="0.06" midpoint="0.4">
151.379 + <matte red="223" green="230" blue="237" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.5766426" brightnessOffset="0.38039213" alphaOffset="0"/>
151.380 + </stop>
151.381 + <stop position="0.6" midpoint="0.5">
151.382 + <matte red="163" green="184" blue="203" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
151.383 + </stop>
151.384 + <stop position="0.7" midpoint="0.6">
151.385 + <matte red="163" green="184" blue="203" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
151.386 + </stop>
151.387 + <stop position="0.96" midpoint="0.6">
151.388 + <matte red="193" green="214" blue="233" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.46404046" brightnessOffset="0.36470586" alphaOffset="0"/>
151.389 + </stop>
151.390 + <stop position="1.0" midpoint="0.5">
151.391 + <matte red="213" green="234" blue="253" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.47761154" brightnessOffset="0.44313723" alphaOffset="0"/>
151.392 + </stop>
151.393 + </gradient>
151.394 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.395 + </rectangle>
151.396 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
151.397 + <gradient cycleMethod="NO_CYCLE">
151.398 + <stop position="0.05" midpoint="0.5">
151.399 + <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
151.400 + </stop>
151.401 + <stop position="0.95" midpoint="0.5">
151.402 + <matte red="34" green="55" blue="74" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.095173776" brightnessOffset="-0.25882354" alphaOffset="0"/>
151.403 + </stop>
151.404 + </gradient>
151.405 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.406 + </rectangle>
151.407 + <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="11.0">
151.408 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.409 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.410 + </rectangle>
151.411 + </shapes>
151.412 + <effects/>
151.413 + </layer>
151.414 + </canvas>
151.415 + </state>
151.416 + <state stateKeys="MouseOver+Default">
151.417 + <style>
151.418 + <textForeground/>
151.419 + <textBackground/>
151.420 + <background/>
151.421 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.422 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.423 + <uiproperties/>
151.424 + </style>
151.425 + <canvas>
151.426 + <size width="104" height="33"/>
151.427 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.428 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.429 + <layer name="Button Layer">
151.430 + <opacity>1.0</opacity>
151.431 + <fillOpacity>1.0</fillOpacity>
151.432 + <blendingMode>NORMAL</blendingMode>
151.433 + <locked>false</locked>
151.434 + <visible>true</visible>
151.435 + <shapes>
151.436 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
151.437 + <gradient cycleMethod="NO_CYCLE">
151.438 + <stop position="0.0" midpoint="0.4">
151.439 + <matte red="248" green="250" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
151.440 + </stop>
151.441 + <stop position="0.06" midpoint="0.4">
151.442 + <matte red="230" green="237" blue="243" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.5822163" brightnessOffset="0.40392154" alphaOffset="0"/>
151.443 + </stop>
151.444 + <stop position="0.6" midpoint="0.5">
151.445 + <matte red="182" green="203" blue="222" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
151.446 + </stop>
151.447 + <stop position="0.7" midpoint="0.6">
151.448 + <matte red="182" green="203" blue="222" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
151.449 + </stop>
151.450 + <stop position="0.96" midpoint="0.6">
151.451 + <matte red="212" green="233" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.47698414" brightnessOffset="0.43921566" alphaOffset="0"/>
151.452 + </stop>
151.453 + <stop position="1.0" midpoint="0.5">
151.454 + <matte red="232" green="253" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-0.06415892" saturationOffset="-0.5455182" brightnessOffset="0.45098037" alphaOffset="0"/>
151.455 + </stop>
151.456 + </gradient>
151.457 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.458 + </rectangle>
151.459 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
151.460 + <gradient cycleMethod="NO_CYCLE">
151.461 + <stop position="0.05" midpoint="0.5">
151.462 + <matte red="59" green="85" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.1769987" brightnessOffset="-0.12156865" alphaOffset="0"/>
151.463 + </stop>
151.464 + <stop position="0.95" midpoint="0.5">
151.465 + <matte red="0" green="5" blue="29" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.059279382" saturationOffset="0.3642857" brightnessOffset="-0.43529415" alphaOffset="0"/>
151.466 + </stop>
151.467 + </gradient>
151.468 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.469 + </rectangle>
151.470 + <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="9.0">
151.471 + <matte red="92" green="94" blue="96" alpha="65" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-190"/>
151.472 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.473 + </rectangle>
151.474 + </shapes>
151.475 + <effects/>
151.476 + </layer>
151.477 + </canvas>
151.478 + </state>
151.479 + <state stateKeys="MouseOver+Default+Focused">
151.480 + <style>
151.481 + <textForeground/>
151.482 + <textBackground/>
151.483 + <background/>
151.484 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.485 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.486 + <uiproperties/>
151.487 + </style>
151.488 + <canvas>
151.489 + <size width="104" height="33"/>
151.490 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.491 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.492 + <layer name="Button Layer">
151.493 + <opacity>1.0</opacity>
151.494 + <fillOpacity>1.0</fillOpacity>
151.495 + <blendingMode>NORMAL</blendingMode>
151.496 + <locked>false</locked>
151.497 + <visible>true</visible>
151.498 + <shapes>
151.499 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
151.500 + <gradient cycleMethod="NO_CYCLE">
151.501 + <stop position="0.0" midpoint="0.4">
151.502 + <matte red="248" green="250" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
151.503 + </stop>
151.504 + <stop position="0.06" midpoint="0.4">
151.505 + <matte red="230" green="237" blue="243" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.5822163" brightnessOffset="0.40392154" alphaOffset="0"/>
151.506 + </stop>
151.507 + <stop position="0.6" midpoint="0.5">
151.508 + <matte red="182" green="203" blue="222" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
151.509 + </stop>
151.510 + <stop position="0.7" midpoint="0.6">
151.511 + <matte red="182" green="203" blue="222" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
151.512 + </stop>
151.513 + <stop position="0.96" midpoint="0.6">
151.514 + <matte red="212" green="233" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.47698414" brightnessOffset="0.43921566" alphaOffset="0"/>
151.515 + </stop>
151.516 + <stop position="1.0" midpoint="0.5">
151.517 + <matte red="232" green="253" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-0.06415892" saturationOffset="-0.5455182" brightnessOffset="0.45098037" alphaOffset="0"/>
151.518 + </stop>
151.519 + </gradient>
151.520 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.521 + </rectangle>
151.522 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
151.523 + <gradient cycleMethod="NO_CYCLE">
151.524 + <stop position="0.05" midpoint="0.5">
151.525 + <matte red="59" green="85" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.1769987" brightnessOffset="-0.12156865" alphaOffset="0"/>
151.526 + </stop>
151.527 + <stop position="0.95" midpoint="0.5">
151.528 + <matte red="0" green="5" blue="29" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.059279382" saturationOffset="0.3642857" brightnessOffset="-0.43529415" alphaOffset="0"/>
151.529 + </stop>
151.530 + </gradient>
151.531 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.532 + </rectangle>
151.533 + <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="11.0">
151.534 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.535 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.536 + </rectangle>
151.537 + </shapes>
151.538 + <effects/>
151.539 + </layer>
151.540 + </canvas>
151.541 + </state>
151.542 + <state stateKeys="Pressed+Default">
151.543 + <style>
151.544 + <textForeground>
151.545 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.546 + </textForeground>
151.547 + <textBackground/>
151.548 + <background/>
151.549 + <inherit-textForeground>false</inherit-textForeground>
151.550 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.551 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.552 + <uiproperties/>
151.553 + </style>
151.554 + <canvas>
151.555 + <size width="104" height="33"/>
151.556 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.557 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.558 + <layer name="Button Layer">
151.559 + <opacity>1.0</opacity>
151.560 + <fillOpacity>1.0</fillOpacity>
151.561 + <blendingMode>NORMAL</blendingMode>
151.562 + <locked>false</locked>
151.563 + <visible>true</visible>
151.564 + <shapes>
151.565 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
151.566 + <gradient cycleMethod="NO_CYCLE">
151.567 + <stop position="0.0" midpoint="0.4">
151.568 + <matte red="143" green="169" blue="192" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
151.569 + </stop>
151.570 + <stop position="0.06" midpoint="0.4">
151.571 + <matte red="118" green="149" blue="178" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.001903832" saturationOffset="-0.29863563" brightnessOffset="0.1490196" alphaOffset="0"/>
151.572 + </stop>
151.573 + <stop position="0.6" midpoint="0.5">
151.574 + <matte red="51" green="98" blue="140" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.575 + </stop>
151.576 + <stop position="0.7" midpoint="0.6">
151.577 + <matte red="51" green="98" blue="140" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.578 + </stop>
151.579 + <stop position="0.96" midpoint="0.6">
151.580 + <matte red="91" green="137" blue="180" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0018727183" saturationOffset="-0.14126986" brightnessOffset="0.15686274" alphaOffset="0"/>
151.581 + </stop>
151.582 + <stop position="1.0" midpoint="0.5">
151.583 + <matte red="118" green="164" blue="206" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.20852983" brightnessOffset="0.2588235" alphaOffset="0"/>
151.584 + </stop>
151.585 + </gradient>
151.586 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.587 + </rectangle>
151.588 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
151.589 + <gradient cycleMethod="NO_CYCLE">
151.590 + <stop position="0.05" midpoint="0.5">
151.591 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.592 + </stop>
151.593 + <stop position="0.95" midpoint="0.5">
151.594 + <matte red="28" green="56" blue="81" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.018606722" brightnessOffset="-0.23137257" alphaOffset="0"/>
151.595 + </stop>
151.596 + </gradient>
151.597 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.598 + </rectangle>
151.599 + <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
151.600 + <matte red="255" green="255" blue="255" alpha="160" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-95"/>
151.601 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.602 + </rectangle>
151.603 + </shapes>
151.604 + <effects/>
151.605 + </layer>
151.606 + </canvas>
151.607 + </state>
151.608 + <state stateKeys="Pressed+Default+Focused">
151.609 + <style>
151.610 + <textForeground/>
151.611 + <textBackground/>
151.612 + <background/>
151.613 + <uiproperties/>
151.614 + </style>
151.615 + <canvas>
151.616 + <size width="104" height="33"/>
151.617 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.618 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.619 + <layer name="Button Layer">
151.620 + <opacity>1.0</opacity>
151.621 + <fillOpacity>1.0</fillOpacity>
151.622 + <blendingMode>NORMAL</blendingMode>
151.623 + <locked>false</locked>
151.624 + <visible>true</visible>
151.625 + <shapes>
151.626 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
151.627 + <gradient cycleMethod="NO_CYCLE">
151.628 + <stop position="0.0" midpoint="0.4">
151.629 + <matte red="143" green="169" blue="192" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
151.630 + </stop>
151.631 + <stop position="0.06" midpoint="0.4">
151.632 + <matte red="118" green="149" blue="178" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.001903832" saturationOffset="-0.29863563" brightnessOffset="0.1490196" alphaOffset="0"/>
151.633 + </stop>
151.634 + <stop position="0.6" midpoint="0.5">
151.635 + <matte red="51" green="98" blue="140" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.636 + </stop>
151.637 + <stop position="0.7" midpoint="0.6">
151.638 + <matte red="51" green="98" blue="140" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.639 + </stop>
151.640 + <stop position="0.96" midpoint="0.6">
151.641 + <matte red="91" green="137" blue="180" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0018727183" saturationOffset="-0.14126986" brightnessOffset="0.15686274" alphaOffset="0"/>
151.642 + </stop>
151.643 + <stop position="1.0" midpoint="0.5">
151.644 + <matte red="118" green="164" blue="206" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.20852983" brightnessOffset="0.2588235" alphaOffset="0"/>
151.645 + </stop>
151.646 + </gradient>
151.647 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.648 + </rectangle>
151.649 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
151.650 + <gradient cycleMethod="NO_CYCLE">
151.651 + <stop position="0.05" midpoint="0.5">
151.652 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.653 + </stop>
151.654 + <stop position="0.95" midpoint="0.5">
151.655 + <matte red="28" green="56" blue="81" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.018606722" brightnessOffset="-0.23137257" alphaOffset="0"/>
151.656 + </stop>
151.657 + </gradient>
151.658 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.659 + </rectangle>
151.660 + <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="11.0">
151.661 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.662 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.663 + </rectangle>
151.664 + </shapes>
151.665 + <effects/>
151.666 + </layer>
151.667 + </canvas>
151.668 + </state>
151.669 + <state stateKeys="Disabled">
151.670 + <style>
151.671 + <textForeground>
151.672 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.673 + </textForeground>
151.674 + <textBackground/>
151.675 + <background/>
151.676 + <inherit-textForeground>false</inherit-textForeground>
151.677 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.678 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.679 + <uiproperties/>
151.680 + </style>
151.681 + <canvas>
151.682 + <size width="104" height="33"/>
151.683 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.684 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.685 + <layer name="Button Layer">
151.686 + <opacity>1.0</opacity>
151.687 + <fillOpacity>1.0</fillOpacity>
151.688 + <blendingMode>NORMAL</blendingMode>
151.689 + <locked>false</locked>
151.690 + <visible>true</visible>
151.691 + <shapes>
151.692 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
151.693 + <gradient cycleMethod="NO_CYCLE">
151.694 + <stop position="0.0" midpoint="0.5">
151.695 + <matte red="227" green="229" blue="233" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08477524" brightnessOffset="0.16862744" alphaOffset="0"/>
151.696 + </stop>
151.697 + <stop position="0.06" midpoint="0.5">
151.698 + <matte red="223" green="226" blue="230" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.080091536" brightnessOffset="0.15686274" alphaOffset="0"/>
151.699 + </stop>
151.700 + <stop position="0.6" midpoint="0.5">
151.701 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.702 + </stop>
151.703 + <stop position="0.7" midpoint="0.5">
151.704 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.705 + </stop>
151.706 + <stop position="0.95" midpoint="0.5">
151.707 + <matte red="216" green="219" blue="225" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07052632" brightnessOffset="0.1372549" alphaOffset="0"/>
151.708 + </stop>
151.709 + <stop position="1.0" midpoint="0.5">
151.710 + <matte red="218" green="221" blue="227" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.070878744" brightnessOffset="0.14509803" alphaOffset="0"/>
151.711 + </stop>
151.712 + </gradient>
151.713 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.714 + </rectangle>
151.715 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
151.716 + <gradient cycleMethod="NO_CYCLE">
151.717 + <stop position="0.09" midpoint="0.5">
151.718 + <matte red="201" green="204" blue="210" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06766917" brightnessOffset="0.07843137" alphaOffset="0"/>
151.719 + </stop>
151.720 + <stop position="0.95" midpoint="0.5">
151.721 + <matte red="188" green="191" blue="197" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06484103" brightnessOffset="0.027450979" alphaOffset="0"/>
151.722 + </stop>
151.723 + </gradient>
151.724 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.725 + </rectangle>
151.726 + <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
151.727 + <matte red="92" green="94" blue="96" alpha="23" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-232"/>
151.728 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.729 + </rectangle>
151.730 + </shapes>
151.731 + <effects/>
151.732 + </layer>
151.733 + </canvas>
151.734 + </state>
151.735 + <state stateKeys="Enabled">
151.736 + <style>
151.737 + <textForeground/>
151.738 + <textBackground/>
151.739 + <background/>
151.740 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.741 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.742 + <uiproperties/>
151.743 + </style>
151.744 + <canvas>
151.745 + <size width="104" height="33"/>
151.746 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.747 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.748 + <layer name="Button Layer">
151.749 + <opacity>1.0</opacity>
151.750 + <fillOpacity>1.0</fillOpacity>
151.751 + <blendingMode>NORMAL</blendingMode>
151.752 + <locked>false</locked>
151.753 + <visible>true</visible>
151.754 + <shapes>
151.755 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
151.756 + <gradient cycleMethod="NO_CYCLE">
151.757 + <stop position="0.0" midpoint="0.4">
151.758 + <matte red="251" green="251" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10655806" brightnessOffset="0.24313724" alphaOffset="0"/>
151.759 + </stop>
151.760 + <stop position="0.06" midpoint="0.4">
151.761 + <matte red="241" green="242" blue="244" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.09823123" brightnessOffset="0.2117647" alphaOffset="0"/>
151.762 + </stop>
151.763 + <stop position="0.6" midpoint="0.5">
151.764 + <matte red="214" green="217" blue="223" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.765 + </stop>
151.766 + <stop position="0.7" midpoint="0.6">
151.767 + <matte red="214" green="217" blue="223" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.768 + </stop>
151.769 + <stop position="0.96" midpoint="0.6">
151.770 + <matte red="244" green="247" blue="253" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.0749532" brightnessOffset="0.24705881" alphaOffset="0"/>
151.771 + </stop>
151.772 + <stop position="1.0" midpoint="0.6">
151.773 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.774 + </stop>
151.775 + </gradient>
151.776 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.777 + </rectangle>
151.778 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
151.779 + <gradient cycleMethod="NO_CYCLE">
151.780 + <stop position="0.09" midpoint="0.5">
151.781 + <matte red="149" green="155" blue="158" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.055555522" saturationOffset="-0.05356429" brightnessOffset="-0.12549019" alphaOffset="0"/>
151.782 + </stop>
151.783 + <stop position="0.95" midpoint="0.5">
151.784 + <matte red="85" green="88" blue="94" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.0147816315" brightnessOffset="-0.3764706" alphaOffset="0"/>
151.785 + </stop>
151.786 + </gradient>
151.787 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.788 + </rectangle>
151.789 + <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
151.790 + <matte red="92" green="94" blue="96" alpha="65" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-190"/>
151.791 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.792 + </rectangle>
151.793 + </shapes>
151.794 + <effects/>
151.795 + </layer>
151.796 + </canvas>
151.797 + </state>
151.798 + <state stateKeys="Focused">
151.799 + <style>
151.800 + <textForeground/>
151.801 + <textBackground/>
151.802 + <background/>
151.803 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.804 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.805 + <uiproperties/>
151.806 + </style>
151.807 + <canvas>
151.808 + <size width="104" height="33"/>
151.809 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.810 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.811 + <layer name="Button Layer">
151.812 + <opacity>1.0</opacity>
151.813 + <fillOpacity>1.0</fillOpacity>
151.814 + <blendingMode>NORMAL</blendingMode>
151.815 + <locked>false</locked>
151.816 + <visible>true</visible>
151.817 + <shapes>
151.818 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
151.819 + <gradient cycleMethod="NO_CYCLE">
151.820 + <stop position="0.0" midpoint="0.5">
151.821 + <matte red="251" green="251" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10655806" brightnessOffset="0.24313724" alphaOffset="0"/>
151.822 + </stop>
151.823 + <stop position="0.06" midpoint="0.5">
151.824 + <matte red="241" green="242" blue="244" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.09823123" brightnessOffset="0.2117647" alphaOffset="0"/>
151.825 + </stop>
151.826 + <stop position="0.6" midpoint="0.5">
151.827 + <matte red="214" green="217" blue="223" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.828 + </stop>
151.829 + <stop position="0.7" midpoint="0.5">
151.830 + <matte red="214" green="217" blue="223" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.831 + </stop>
151.832 + <stop position="0.95" midpoint="0.5">
151.833 + <matte red="244" green="247" blue="253" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.0749532" brightnessOffset="0.24705881" alphaOffset="0"/>
151.834 + </stop>
151.835 + <stop position="1.0" midpoint="0.5">
151.836 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.837 + </stop>
151.838 + </gradient>
151.839 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.840 + </rectangle>
151.841 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
151.842 + <gradient cycleMethod="NO_CYCLE">
151.843 + <stop position="0.09" midpoint="0.5">
151.844 + <matte red="149" green="155" blue="158" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.055555522" saturationOffset="-0.05356429" brightnessOffset="-0.12549019" alphaOffset="0"/>
151.845 + </stop>
151.846 + <stop position="0.95" midpoint="0.5">
151.847 + <matte red="85" green="88" blue="94" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.0147816315" brightnessOffset="-0.3764706" alphaOffset="0"/>
151.848 + </stop>
151.849 + </gradient>
151.850 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.851 + </rectangle>
151.852 + <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="11.0">
151.853 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.854 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.855 + </rectangle>
151.856 + </shapes>
151.857 + <effects/>
151.858 + </layer>
151.859 + </canvas>
151.860 + </state>
151.861 + <state stateKeys="MouseOver">
151.862 + <style>
151.863 + <textForeground/>
151.864 + <textBackground/>
151.865 + <background/>
151.866 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.867 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.868 + <uiproperties/>
151.869 + </style>
151.870 + <canvas>
151.871 + <size width="104" height="33"/>
151.872 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.873 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.874 + <layer name="Button Layer">
151.875 + <opacity>1.0</opacity>
151.876 + <fillOpacity>1.0</fillOpacity>
151.877 + <blendingMode>NORMAL</blendingMode>
151.878 + <locked>false</locked>
151.879 + <visible>true</visible>
151.880 + <shapes>
151.881 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
151.882 + <gradient cycleMethod="NO_CYCLE">
151.883 + <stop position="0.0" midpoint="0.4">
151.884 + <matte red="253" green="253" blue="254" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10658931" brightnessOffset="0.25098038" alphaOffset="0"/>
151.885 + </stop>
151.886 + <stop position="0.06" midpoint="0.4">
151.887 + <matte red="247" green="248" blue="250" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.098526314" brightnessOffset="0.2352941" alphaOffset="0"/>
151.888 + </stop>
151.889 + <stop position="0.6" midpoint="0.5">
151.890 + <matte red="233" green="236" blue="242" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.891 + </stop>
151.892 + <stop position="0.7" midpoint="0.6">
151.893 + <matte red="233" green="236" blue="242" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.894 + </stop>
151.895 + <stop position="0.96" midpoint="0.5">
151.896 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.897 + </stop>
151.898 + <stop position="1.0" midpoint="0.5">
151.899 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.900 + </stop>
151.901 + </gradient>
151.902 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.903 + </rectangle>
151.904 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
151.905 + <gradient cycleMethod="NO_CYCLE">
151.906 + <stop position="0.09" midpoint="0.5">
151.907 + <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
151.908 + </stop>
151.909 + <stop position="0.95" midpoint="0.5">
151.910 + <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.11169591" brightnessOffset="-0.53333336" alphaOffset="0"/>
151.911 + </stop>
151.912 + </gradient>
151.913 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.914 + </rectangle>
151.915 + <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
151.916 + <matte red="92" green="94" blue="96" alpha="65" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-190"/>
151.917 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.918 + </rectangle>
151.919 + </shapes>
151.920 + <effects/>
151.921 + </layer>
151.922 + </canvas>
151.923 + </state>
151.924 + <state stateKeys="MouseOver+Focused">
151.925 + <style>
151.926 + <textForeground/>
151.927 + <textBackground/>
151.928 + <background/>
151.929 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.930 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.931 + <uiproperties/>
151.932 + </style>
151.933 + <canvas>
151.934 + <size width="104" height="33"/>
151.935 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.936 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.937 + <layer name="Button Layer">
151.938 + <opacity>1.0</opacity>
151.939 + <fillOpacity>1.0</fillOpacity>
151.940 + <blendingMode>NORMAL</blendingMode>
151.941 + <locked>false</locked>
151.942 + <visible>true</visible>
151.943 + <shapes>
151.944 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
151.945 + <gradient cycleMethod="NO_CYCLE">
151.946 + <stop position="0.0" midpoint="0.4">
151.947 + <matte red="253" green="253" blue="254" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10658931" brightnessOffset="0.25098038" alphaOffset="0"/>
151.948 + </stop>
151.949 + <stop position="0.06" midpoint="0.4">
151.950 + <matte red="247" green="248" blue="250" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.098526314" brightnessOffset="0.2352941" alphaOffset="0"/>
151.951 + </stop>
151.952 + <stop position="0.6" midpoint="0.5">
151.953 + <matte red="233" green="236" blue="242" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.954 + </stop>
151.955 + <stop position="0.7" midpoint="0.6">
151.956 + <matte red="233" green="236" blue="242" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.957 + </stop>
151.958 + <stop position="0.96" midpoint="0.5">
151.959 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.960 + </stop>
151.961 + <stop position="1.0" midpoint="0.5">
151.962 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.963 + </stop>
151.964 + </gradient>
151.965 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.966 + </rectangle>
151.967 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
151.968 + <gradient cycleMethod="NO_CYCLE">
151.969 + <stop position="0.09" midpoint="0.5">
151.970 + <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
151.971 + </stop>
151.972 + <stop position="0.95" midpoint="0.5">
151.973 + <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.11169591" brightnessOffset="-0.53333336" alphaOffset="0"/>
151.974 + </stop>
151.975 + </gradient>
151.976 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.977 + </rectangle>
151.978 + <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="11.0">
151.979 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.980 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.981 + </rectangle>
151.982 + </shapes>
151.983 + <effects/>
151.984 + </layer>
151.985 + </canvas>
151.986 + </state>
151.987 + <state stateKeys="Pressed">
151.988 + <style>
151.989 + <textForeground/>
151.990 + <textBackground/>
151.991 + <background/>
151.992 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.993 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.994 + <uiproperties/>
151.995 + </style>
151.996 + <canvas>
151.997 + <size width="104" height="33"/>
151.998 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.999 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.1000 + <layer name="Button Layer">
151.1001 + <opacity>1.0</opacity>
151.1002 + <fillOpacity>1.0</fillOpacity>
151.1003 + <blendingMode>NORMAL</blendingMode>
151.1004 + <locked>false</locked>
151.1005 + <visible>true</visible>
151.1006 + <shapes>
151.1007 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
151.1008 + <gradient cycleMethod="NO_CYCLE">
151.1009 + <stop position="0.0" midpoint="0.4">
151.1010 + <matte red="205" green="209" blue="216" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.05960039" brightnessOffset="0.10196078" alphaOffset="0"/>
151.1011 + </stop>
151.1012 + <stop position="0.06" midpoint="0.4">
151.1013 + <matte red="194" green="199" blue="207" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.04772438" brightnessOffset="0.06666666" alphaOffset="0"/>
151.1014 + </stop>
151.1015 + <stop position="0.6" midpoint="0.5">
151.1016 + <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.1017 + </stop>
151.1018 + <stop position="0.7" midpoint="0.6">
151.1019 + <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.1020 + </stop>
151.1021 + <stop position="0.96" midpoint="0.6">
151.1022 + <matte red="204" green="211" blue="224" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0212406" brightnessOffset="0.13333333" alphaOffset="0"/>
151.1023 + </stop>
151.1024 + <stop position="1.0" midpoint="0.5">
151.1025 + <matte red="231" green="237" blue="251" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.030845039" brightnessOffset="0.23921567" alphaOffset="0"/>
151.1026 + </stop>
151.1027 + </gradient>
151.1028 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1029 + </rectangle>
151.1030 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
151.1031 + <gradient cycleMethod="NO_CYCLE">
151.1032 + <stop position="0.05" midpoint="0.5">
151.1033 + <matte red="0" green="0" blue="7" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="0.8894737" brightnessOffset="-0.7176471" alphaOffset="0"/>
151.1034 + </stop>
151.1035 + <stop position="0.95" midpoint="0.5">
151.1036 + <matte red="96" green="100" blue="108" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="5.847961E-4" brightnessOffset="-0.32156864" alphaOffset="0"/>
151.1037 + </stop>
151.1038 + </gradient>
151.1039 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1040 + </rectangle>
151.1041 + <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
151.1042 + <matte red="245" green="250" blue="255" alpha="160" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.1043 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.1044 + </rectangle>
151.1045 + </shapes>
151.1046 + <effects/>
151.1047 + </layer>
151.1048 + </canvas>
151.1049 + </state>
151.1050 + <state stateKeys="Pressed+Focused">
151.1051 + <style>
151.1052 + <textForeground/>
151.1053 + <textBackground/>
151.1054 + <background/>
151.1055 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.1056 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.1057 + <uiproperties/>
151.1058 + </style>
151.1059 + <canvas>
151.1060 + <size width="104" height="33"/>
151.1061 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.1062 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.1063 + <layer name="Button Layer">
151.1064 + <opacity>1.0</opacity>
151.1065 + <fillOpacity>1.0</fillOpacity>
151.1066 + <blendingMode>NORMAL</blendingMode>
151.1067 + <locked>false</locked>
151.1068 + <visible>true</visible>
151.1069 + <shapes>
151.1070 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
151.1071 + <gradient cycleMethod="NO_CYCLE">
151.1072 + <stop position="0.0" midpoint="0.4">
151.1073 + <matte red="205" green="209" blue="216" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.05960039" brightnessOffset="0.10196078" alphaOffset="0"/>
151.1074 + </stop>
151.1075 + <stop position="0.06" midpoint="0.4">
151.1076 + <matte red="194" green="199" blue="207" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.04772438" brightnessOffset="0.06666666" alphaOffset="0"/>
151.1077 + </stop>
151.1078 + <stop position="0.6" midpoint="0.5">
151.1079 + <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.1080 + </stop>
151.1081 + <stop position="0.7" midpoint="0.6">
151.1082 + <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.1083 + </stop>
151.1084 + <stop position="0.96" midpoint="0.6">
151.1085 + <matte red="204" green="211" blue="224" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0212406" brightnessOffset="0.13333333" alphaOffset="0"/>
151.1086 + </stop>
151.1087 + <stop position="1.0" midpoint="0.5">
151.1088 + <matte red="231" green="237" blue="251" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.030845039" brightnessOffset="0.23921567" alphaOffset="0"/>
151.1089 + </stop>
151.1090 + </gradient>
151.1091 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1092 + </rectangle>
151.1093 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
151.1094 + <gradient cycleMethod="NO_CYCLE">
151.1095 + <stop position="0.05" midpoint="0.5">
151.1096 + <matte red="0" green="0" blue="7" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="0.8894737" brightnessOffset="-0.7176471" alphaOffset="0"/>
151.1097 + </stop>
151.1098 + <stop position="0.95" midpoint="0.5">
151.1099 + <matte red="96" green="100" blue="108" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="5.847961E-4" brightnessOffset="-0.32156864" alphaOffset="0"/>
151.1100 + </stop>
151.1101 + </gradient>
151.1102 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1103 + </rectangle>
151.1104 + <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="11.0">
151.1105 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.1106 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.1107 + </rectangle>
151.1108 + </shapes>
151.1109 + <effects/>
151.1110 + </layer>
151.1111 + </canvas>
151.1112 + </state>
151.1113 + </backgroundStates>
151.1114 + <foregroundStates/>
151.1115 + <borderStates/>
151.1116 + <regions/>
151.1117 + </uiComponent>
151.1118 + <uiComponent opaque="false" type="javax.swing.JToggleButton" name="ToggleButton" ui="ToggleButtonUI" subregion="false">
151.1119 + <stateTypes/>
151.1120 + <contentMargins top="6" bottom="6" left="14" right="14"/>
151.1121 + <style>
151.1122 + <textForeground/>
151.1123 + <textBackground/>
151.1124 + <background/>
151.1125 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.1126 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.1127 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.1128 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.1129 + <uiproperties/>
151.1130 + </style>
151.1131 + <backgroundStates>
151.1132 + <state stateKeys="Disabled">
151.1133 + <style>
151.1134 + <textForeground>
151.1135 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.1136 + </textForeground>
151.1137 + <textBackground/>
151.1138 + <background/>
151.1139 + <inherit-textForeground>false</inherit-textForeground>
151.1140 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.1141 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.1142 + <uiproperties/>
151.1143 + </style>
151.1144 + <canvas>
151.1145 + <size width="104" height="33"/>
151.1146 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.1147 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.1148 + <layer name="Button Layer">
151.1149 + <opacity>1.0</opacity>
151.1150 + <fillOpacity>1.0</fillOpacity>
151.1151 + <blendingMode>NORMAL</blendingMode>
151.1152 + <locked>false</locked>
151.1153 + <visible>true</visible>
151.1154 + <shapes>
151.1155 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
151.1156 + <gradient cycleMethod="NO_CYCLE">
151.1157 + <stop position="0.0" midpoint="0.5">
151.1158 + <matte red="227" green="229" blue="233" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08477524" brightnessOffset="0.16862744" alphaOffset="0"/>
151.1159 + </stop>
151.1160 + <stop position="0.06" midpoint="0.5">
151.1161 + <matte red="223" green="226" blue="230" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.080091536" brightnessOffset="0.15686274" alphaOffset="0"/>
151.1162 + </stop>
151.1163 + <stop position="0.6" midpoint="0.5">
151.1164 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.1165 + </stop>
151.1166 + <stop position="0.7" midpoint="0.5">
151.1167 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.1168 + </stop>
151.1169 + <stop position="0.95" midpoint="0.5">
151.1170 + <matte red="216" green="219" blue="225" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07052632" brightnessOffset="0.1372549" alphaOffset="0"/>
151.1171 + </stop>
151.1172 + <stop position="1.0" midpoint="0.5">
151.1173 + <matte red="218" green="221" blue="227" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.070878744" brightnessOffset="0.14509803" alphaOffset="0"/>
151.1174 + </stop>
151.1175 + </gradient>
151.1176 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1177 + </rectangle>
151.1178 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
151.1179 + <gradient cycleMethod="NO_CYCLE">
151.1180 + <stop position="0.09" midpoint="0.5">
151.1181 + <matte red="201" green="204" blue="210" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06766917" brightnessOffset="0.07843137" alphaOffset="0"/>
151.1182 + </stop>
151.1183 + <stop position="0.95" midpoint="0.5">
151.1184 + <matte red="188" green="191" blue="197" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06484103" brightnessOffset="0.027450979" alphaOffset="0"/>
151.1185 + </stop>
151.1186 + </gradient>
151.1187 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1188 + </rectangle>
151.1189 + <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
151.1190 + <matte red="92" green="94" blue="96" alpha="23" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-232"/>
151.1191 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.1192 + </rectangle>
151.1193 + </shapes>
151.1194 + <effects/>
151.1195 + </layer>
151.1196 + </canvas>
151.1197 + </state>
151.1198 + <state stateKeys="Enabled">
151.1199 + <style>
151.1200 + <textForeground/>
151.1201 + <textBackground/>
151.1202 + <background/>
151.1203 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.1204 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.1205 + <uiproperties/>
151.1206 + </style>
151.1207 + <canvas>
151.1208 + <size width="104" height="33"/>
151.1209 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.1210 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.1211 + <layer name="Button Layer">
151.1212 + <opacity>1.0</opacity>
151.1213 + <fillOpacity>1.0</fillOpacity>
151.1214 + <blendingMode>NORMAL</blendingMode>
151.1215 + <locked>false</locked>
151.1216 + <visible>true</visible>
151.1217 + <shapes>
151.1218 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
151.1219 + <gradient cycleMethod="NO_CYCLE">
151.1220 + <stop position="0.0" midpoint="0.4">
151.1221 + <matte red="251" green="251" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10655806" brightnessOffset="0.24313724" alphaOffset="0"/>
151.1222 + </stop>
151.1223 + <stop position="0.06" midpoint="0.4">
151.1224 + <matte red="241" green="242" blue="244" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.09823123" brightnessOffset="0.2117647" alphaOffset="0"/>
151.1225 + </stop>
151.1226 + <stop position="0.6" midpoint="0.5">
151.1227 + <matte red="214" green="217" blue="223" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.1228 + </stop>
151.1229 + <stop position="0.7" midpoint="0.6">
151.1230 + <matte red="214" green="217" blue="223" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.1231 + </stop>
151.1232 + <stop position="0.96" midpoint="0.6">
151.1233 + <matte red="244" green="247" blue="253" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.0749532" brightnessOffset="0.24705881" alphaOffset="0"/>
151.1234 + </stop>
151.1235 + <stop position="1.0" midpoint="0.6">
151.1236 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.1237 + </stop>
151.1238 + </gradient>
151.1239 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1240 + </rectangle>
151.1241 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
151.1242 + <gradient cycleMethod="NO_CYCLE">
151.1243 + <stop position="0.09" midpoint="0.5">
151.1244 + <matte red="149" green="155" blue="158" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.055555522" saturationOffset="-0.05356429" brightnessOffset="-0.12549019" alphaOffset="0"/>
151.1245 + </stop>
151.1246 + <stop position="0.95" midpoint="0.5">
151.1247 + <matte red="85" green="88" blue="94" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.0147816315" brightnessOffset="-0.3764706" alphaOffset="0"/>
151.1248 + </stop>
151.1249 + </gradient>
151.1250 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1251 + </rectangle>
151.1252 + <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
151.1253 + <matte red="92" green="94" blue="96" alpha="65" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-190"/>
151.1254 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.1255 + </rectangle>
151.1256 + </shapes>
151.1257 + <effects/>
151.1258 + </layer>
151.1259 + </canvas>
151.1260 + </state>
151.1261 + <state stateKeys="Focused">
151.1262 + <style>
151.1263 + <textForeground/>
151.1264 + <textBackground/>
151.1265 + <background/>
151.1266 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.1267 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.1268 + <uiproperties/>
151.1269 + </style>
151.1270 + <canvas>
151.1271 + <size width="104" height="33"/>
151.1272 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.1273 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.1274 + <layer name="Button Layer">
151.1275 + <opacity>1.0</opacity>
151.1276 + <fillOpacity>1.0</fillOpacity>
151.1277 + <blendingMode>NORMAL</blendingMode>
151.1278 + <locked>false</locked>
151.1279 + <visible>true</visible>
151.1280 + <shapes>
151.1281 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
151.1282 + <gradient cycleMethod="NO_CYCLE">
151.1283 + <stop position="0.0" midpoint="0.5">
151.1284 + <matte red="251" green="251" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10655806" brightnessOffset="0.24313724" alphaOffset="0"/>
151.1285 + </stop>
151.1286 + <stop position="0.06" midpoint="0.5">
151.1287 + <matte red="241" green="242" blue="244" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.09823123" brightnessOffset="0.2117647" alphaOffset="0"/>
151.1288 + </stop>
151.1289 + <stop position="0.6" midpoint="0.5">
151.1290 + <matte red="214" green="217" blue="223" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.1291 + </stop>
151.1292 + <stop position="0.7" midpoint="0.5">
151.1293 + <matte red="214" green="217" blue="223" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.1294 + </stop>
151.1295 + <stop position="0.95" midpoint="0.5">
151.1296 + <matte red="244" green="247" blue="253" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.0749532" brightnessOffset="0.24705881" alphaOffset="0"/>
151.1297 + </stop>
151.1298 + <stop position="1.0" midpoint="0.5">
151.1299 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.1300 + </stop>
151.1301 + </gradient>
151.1302 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1303 + </rectangle>
151.1304 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
151.1305 + <gradient cycleMethod="NO_CYCLE">
151.1306 + <stop position="0.09" midpoint="0.5">
151.1307 + <matte red="149" green="155" blue="158" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.055555522" saturationOffset="-0.05356429" brightnessOffset="-0.12549019" alphaOffset="0"/>
151.1308 + </stop>
151.1309 + <stop position="0.95" midpoint="0.5">
151.1310 + <matte red="85" green="88" blue="94" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.0147816315" brightnessOffset="-0.3764706" alphaOffset="0"/>
151.1311 + </stop>
151.1312 + </gradient>
151.1313 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1314 + </rectangle>
151.1315 + <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="11.0">
151.1316 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.1317 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.1318 + </rectangle>
151.1319 + </shapes>
151.1320 + <effects/>
151.1321 + </layer>
151.1322 + </canvas>
151.1323 + </state>
151.1324 + <state stateKeys="MouseOver">
151.1325 + <style>
151.1326 + <textForeground/>
151.1327 + <textBackground/>
151.1328 + <background/>
151.1329 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.1330 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.1331 + <uiproperties/>
151.1332 + </style>
151.1333 + <canvas>
151.1334 + <size width="104" height="33"/>
151.1335 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.1336 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.1337 + <layer name="Button Layer">
151.1338 + <opacity>1.0</opacity>
151.1339 + <fillOpacity>1.0</fillOpacity>
151.1340 + <blendingMode>NORMAL</blendingMode>
151.1341 + <locked>false</locked>
151.1342 + <visible>true</visible>
151.1343 + <shapes>
151.1344 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
151.1345 + <gradient cycleMethod="NO_CYCLE">
151.1346 + <stop position="0.0" midpoint="0.4">
151.1347 + <matte red="253" green="253" blue="254" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10658931" brightnessOffset="0.25098038" alphaOffset="0"/>
151.1348 + </stop>
151.1349 + <stop position="0.06" midpoint="0.4">
151.1350 + <matte red="247" green="248" blue="250" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.098526314" brightnessOffset="0.2352941" alphaOffset="0"/>
151.1351 + </stop>
151.1352 + <stop position="0.6" midpoint="0.5">
151.1353 + <matte red="233" green="236" blue="242" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.1354 + </stop>
151.1355 + <stop position="0.7" midpoint="0.6">
151.1356 + <matte red="233" green="236" blue="242" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.1357 + </stop>
151.1358 + <stop position="0.96" midpoint="0.5">
151.1359 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.1360 + </stop>
151.1361 + <stop position="1.0" midpoint="0.5">
151.1362 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.1363 + </stop>
151.1364 + </gradient>
151.1365 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1366 + </rectangle>
151.1367 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
151.1368 + <gradient cycleMethod="NO_CYCLE">
151.1369 + <stop position="0.09" midpoint="0.5">
151.1370 + <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
151.1371 + </stop>
151.1372 + <stop position="0.95" midpoint="0.5">
151.1373 + <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.11169591" brightnessOffset="-0.53333336" alphaOffset="0"/>
151.1374 + </stop>
151.1375 + </gradient>
151.1376 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1377 + </rectangle>
151.1378 + <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
151.1379 + <matte red="92" green="94" blue="96" alpha="65" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-190"/>
151.1380 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.1381 + </rectangle>
151.1382 + </shapes>
151.1383 + <effects/>
151.1384 + </layer>
151.1385 + </canvas>
151.1386 + </state>
151.1387 + <state stateKeys="MouseOver+Focused">
151.1388 + <style>
151.1389 + <textForeground/>
151.1390 + <textBackground/>
151.1391 + <background/>
151.1392 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.1393 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.1394 + <uiproperties/>
151.1395 + </style>
151.1396 + <canvas>
151.1397 + <size width="104" height="33"/>
151.1398 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.1399 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.1400 + <layer name="Button Layer">
151.1401 + <opacity>1.0</opacity>
151.1402 + <fillOpacity>1.0</fillOpacity>
151.1403 + <blendingMode>NORMAL</blendingMode>
151.1404 + <locked>false</locked>
151.1405 + <visible>true</visible>
151.1406 + <shapes>
151.1407 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
151.1408 + <gradient cycleMethod="NO_CYCLE">
151.1409 + <stop position="0.0" midpoint="0.4">
151.1410 + <matte red="253" green="253" blue="254" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10658931" brightnessOffset="0.25098038" alphaOffset="0"/>
151.1411 + </stop>
151.1412 + <stop position="0.06" midpoint="0.4">
151.1413 + <matte red="247" green="248" blue="250" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.098526314" brightnessOffset="0.2352941" alphaOffset="0"/>
151.1414 + </stop>
151.1415 + <stop position="0.6" midpoint="0.5">
151.1416 + <matte red="233" green="236" blue="242" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.1417 + </stop>
151.1418 + <stop position="0.7" midpoint="0.6">
151.1419 + <matte red="233" green="236" blue="242" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.1420 + </stop>
151.1421 + <stop position="0.96" midpoint="0.5">
151.1422 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.1423 + </stop>
151.1424 + <stop position="1.0" midpoint="0.5">
151.1425 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.1426 + </stop>
151.1427 + </gradient>
151.1428 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1429 + </rectangle>
151.1430 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
151.1431 + <gradient cycleMethod="NO_CYCLE">
151.1432 + <stop position="0.09" midpoint="0.5">
151.1433 + <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
151.1434 + </stop>
151.1435 + <stop position="0.95" midpoint="0.5">
151.1436 + <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.11169591" brightnessOffset="-0.53333336" alphaOffset="0"/>
151.1437 + </stop>
151.1438 + </gradient>
151.1439 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1440 + </rectangle>
151.1441 + <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="11.0">
151.1442 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.1443 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.1444 + </rectangle>
151.1445 + </shapes>
151.1446 + <effects/>
151.1447 + </layer>
151.1448 + </canvas>
151.1449 + </state>
151.1450 + <state stateKeys="Pressed">
151.1451 + <style>
151.1452 + <textForeground/>
151.1453 + <textBackground/>
151.1454 + <background/>
151.1455 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.1456 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.1457 + <uiproperties/>
151.1458 + </style>
151.1459 + <canvas>
151.1460 + <size width="104" height="33"/>
151.1461 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.1462 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.1463 + <layer name="Button Layer">
151.1464 + <opacity>1.0</opacity>
151.1465 + <fillOpacity>1.0</fillOpacity>
151.1466 + <blendingMode>NORMAL</blendingMode>
151.1467 + <locked>false</locked>
151.1468 + <visible>true</visible>
151.1469 + <shapes>
151.1470 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
151.1471 + <gradient cycleMethod="NO_CYCLE">
151.1472 + <stop position="0.0" midpoint="0.4">
151.1473 + <matte red="205" green="209" blue="216" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.05960039" brightnessOffset="0.10196078" alphaOffset="0"/>
151.1474 + </stop>
151.1475 + <stop position="0.06" midpoint="0.4">
151.1476 + <matte red="194" green="199" blue="207" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.04772438" brightnessOffset="0.06666666" alphaOffset="0"/>
151.1477 + </stop>
151.1478 + <stop position="0.6" midpoint="0.5">
151.1479 + <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.1480 + </stop>
151.1481 + <stop position="0.7" midpoint="0.6">
151.1482 + <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.1483 + </stop>
151.1484 + <stop position="0.96" midpoint="0.6">
151.1485 + <matte red="204" green="211" blue="224" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0212406" brightnessOffset="0.13333333" alphaOffset="0"/>
151.1486 + </stop>
151.1487 + <stop position="1.0" midpoint="0.5">
151.1488 + <matte red="231" green="237" blue="251" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.030845039" brightnessOffset="0.23921567" alphaOffset="0"/>
151.1489 + </stop>
151.1490 + </gradient>
151.1491 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1492 + </rectangle>
151.1493 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
151.1494 + <gradient cycleMethod="NO_CYCLE">
151.1495 + <stop position="0.05" midpoint="0.5">
151.1496 + <matte red="0" green="0" blue="7" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="0.8894737" brightnessOffset="-0.7176471" alphaOffset="0"/>
151.1497 + </stop>
151.1498 + <stop position="0.95" midpoint="0.5">
151.1499 + <matte red="96" green="100" blue="108" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="5.847961E-4" brightnessOffset="-0.32156864" alphaOffset="0"/>
151.1500 + </stop>
151.1501 + </gradient>
151.1502 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1503 + </rectangle>
151.1504 + <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
151.1505 + <matte red="245" green="250" blue="255" alpha="160" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.1506 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.1507 + </rectangle>
151.1508 + </shapes>
151.1509 + <effects/>
151.1510 + </layer>
151.1511 + </canvas>
151.1512 + </state>
151.1513 + <state stateKeys="Pressed+Focused">
151.1514 + <style>
151.1515 + <textForeground/>
151.1516 + <textBackground/>
151.1517 + <background/>
151.1518 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.1519 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.1520 + <uiproperties/>
151.1521 + </style>
151.1522 + <canvas>
151.1523 + <size width="104" height="33"/>
151.1524 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.1525 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.1526 + <layer name="Button Layer">
151.1527 + <opacity>1.0</opacity>
151.1528 + <fillOpacity>1.0</fillOpacity>
151.1529 + <blendingMode>NORMAL</blendingMode>
151.1530 + <locked>false</locked>
151.1531 + <visible>true</visible>
151.1532 + <shapes>
151.1533 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="7.0">
151.1534 + <gradient cycleMethod="NO_CYCLE">
151.1535 + <stop position="0.0" midpoint="0.4">
151.1536 + <matte red="205" green="209" blue="216" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.05960039" brightnessOffset="0.10196078" alphaOffset="0"/>
151.1537 + </stop>
151.1538 + <stop position="0.06" midpoint="0.4">
151.1539 + <matte red="194" green="199" blue="207" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.04772438" brightnessOffset="0.06666666" alphaOffset="0"/>
151.1540 + </stop>
151.1541 + <stop position="0.6" midpoint="0.5">
151.1542 + <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.1543 + </stop>
151.1544 + <stop position="0.7" midpoint="0.6">
151.1545 + <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.1546 + </stop>
151.1547 + <stop position="0.96" midpoint="0.6">
151.1548 + <matte red="204" green="211" blue="224" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0212406" brightnessOffset="0.13333333" alphaOffset="0"/>
151.1549 + </stop>
151.1550 + <stop position="1.0" midpoint="0.5">
151.1551 + <matte red="231" green="237" blue="251" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.030845039" brightnessOffset="0.23921567" alphaOffset="0"/>
151.1552 + </stop>
151.1553 + </gradient>
151.1554 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1555 + </rectangle>
151.1556 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="9.0">
151.1557 + <gradient cycleMethod="NO_CYCLE">
151.1558 + <stop position="0.05" midpoint="0.5">
151.1559 + <matte red="0" green="0" blue="7" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="0.8894737" brightnessOffset="-0.7176471" alphaOffset="0"/>
151.1560 + </stop>
151.1561 + <stop position="0.95" midpoint="0.5">
151.1562 + <matte red="96" green="100" blue="108" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="5.847961E-4" brightnessOffset="-0.32156864" alphaOffset="0"/>
151.1563 + </stop>
151.1564 + </gradient>
151.1565 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1566 + </rectangle>
151.1567 + <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="11.0">
151.1568 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.1569 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.1570 + </rectangle>
151.1571 + </shapes>
151.1572 + <effects/>
151.1573 + </layer>
151.1574 + </canvas>
151.1575 + </state>
151.1576 + <state stateKeys="Selected">
151.1577 + <style>
151.1578 + <textForeground/>
151.1579 + <textBackground/>
151.1580 + <background/>
151.1581 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.1582 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.1583 + <uiproperties/>
151.1584 + </style>
151.1585 + <canvas>
151.1586 + <size width="72" height="24"/>
151.1587 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.1588 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.1589 + <layer name="Layer 1">
151.1590 + <opacity>1.0</opacity>
151.1591 + <fillOpacity>1.0</fillOpacity>
151.1592 + <blendingMode>NORMAL</blendingMode>
151.1593 + <locked>false</locked>
151.1594 + <visible>true</visible>
151.1595 + <shapes>
151.1596 + <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="7.0">
151.1597 + <gradient cycleMethod="NO_CYCLE">
151.1598 + <stop position="0.0" midpoint="0.5">
151.1599 + <matte red="164" green="166" blue="172" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0138888955" saturationOffset="-0.06401469" brightnessOffset="-0.07058823" alphaOffset="0"/>
151.1600 + </stop>
151.1601 + <stop position="0.13368984" midpoint="0.5">
151.1602 + <matte red="190" green="193" blue="199" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06530018" brightnessOffset="0.035294116" alphaOffset="0"/>
151.1603 + </stop>
151.1604 + <stop position="1.0" midpoint="0.5">
151.1605 + <matte red="189" green="192" blue="198" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06507177" brightnessOffset="0.031372547" alphaOffset="0"/>
151.1606 + </stop>
151.1607 + </gradient>
151.1608 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1609 + </rectangle>
151.1610 + <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="9.0">
151.1611 + <gradient cycleMethod="NO_CYCLE">
151.1612 + <stop position="0.0" midpoint="0.5">
151.1613 + <matte red="125" green="127" blue="131" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06472479" brightnessOffset="-0.23137254" alphaOffset="0"/>
151.1614 + </stop>
151.1615 + <stop position="1.0" midpoint="0.5">
151.1616 + <matte red="164" green="166" blue="171" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.06959064" brightnessOffset="-0.0745098" alphaOffset="0"/>
151.1617 + </stop>
151.1618 + </gradient>
151.1619 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1620 + </rectangle>
151.1621 + <rectangle x1="2.0" x2="70.0" y1="3.0" y2="23.0" rounding="9.0">
151.1622 + <matte red="255" green="255" blue="255" alpha="169" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-86"/>
151.1623 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.1624 + </rectangle>
151.1625 + </shapes>
151.1626 + <effects/>
151.1627 + </layer>
151.1628 + <templateLayer fileName="1139ecfc04b.png">
151.1629 + <layer name="Template" type="template">
151.1630 + <opacity>1.0</opacity>
151.1631 + <fillOpacity>1.0</fillOpacity>
151.1632 + <blendingMode>NORMAL</blendingMode>
151.1633 + <locked>false</locked>
151.1634 + <visible>false</visible>
151.1635 + <shapes/>
151.1636 + <effects/>
151.1637 + </layer>
151.1638 + </templateLayer>
151.1639 + </canvas>
151.1640 + </state>
151.1641 + <state stateKeys="Selected+Focused">
151.1642 + <style>
151.1643 + <textForeground/>
151.1644 + <textBackground/>
151.1645 + <background/>
151.1646 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.1647 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.1648 + <uiproperties/>
151.1649 + </style>
151.1650 + <canvas>
151.1651 + <size width="72" height="24"/>
151.1652 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.1653 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.1654 + <layer name="Layer 1">
151.1655 + <opacity>1.0</opacity>
151.1656 + <fillOpacity>1.0</fillOpacity>
151.1657 + <blendingMode>NORMAL</blendingMode>
151.1658 + <locked>false</locked>
151.1659 + <visible>true</visible>
151.1660 + <shapes>
151.1661 + <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="7.0">
151.1662 + <gradient cycleMethod="NO_CYCLE">
151.1663 + <stop position="0.0" midpoint="0.5">
151.1664 + <matte red="164" green="166" blue="172" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0138888955" saturationOffset="-0.06401469" brightnessOffset="-0.07058823" alphaOffset="0"/>
151.1665 + </stop>
151.1666 + <stop position="0.13368984" midpoint="0.5">
151.1667 + <matte red="190" green="193" blue="199" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06530018" brightnessOffset="0.035294116" alphaOffset="0"/>
151.1668 + </stop>
151.1669 + <stop position="1.0" midpoint="0.5">
151.1670 + <matte red="189" green="192" blue="198" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06507177" brightnessOffset="0.031372547" alphaOffset="0"/>
151.1671 + </stop>
151.1672 + </gradient>
151.1673 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1674 + </rectangle>
151.1675 + <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="9.0">
151.1676 + <gradient cycleMethod="NO_CYCLE">
151.1677 + <stop position="0.0" midpoint="0.5">
151.1678 + <matte red="125" green="127" blue="131" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06472479" brightnessOffset="-0.23137254" alphaOffset="0"/>
151.1679 + </stop>
151.1680 + <stop position="1.0" midpoint="0.5">
151.1681 + <matte red="164" green="166" blue="171" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.06959064" brightnessOffset="-0.0745098" alphaOffset="0"/>
151.1682 + </stop>
151.1683 + </gradient>
151.1684 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1685 + </rectangle>
151.1686 + <rectangle x1="0.6" x2="71.4" y1="0.6" y2="23.4" rounding="11.0">
151.1687 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.1688 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.1689 + </rectangle>
151.1690 + </shapes>
151.1691 + <effects/>
151.1692 + </layer>
151.1693 + </canvas>
151.1694 + </state>
151.1695 + <state stateKeys="Pressed+Selected">
151.1696 + <style>
151.1697 + <textForeground/>
151.1698 + <textBackground/>
151.1699 + <background/>
151.1700 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.1701 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.1702 + <uiproperties/>
151.1703 + </style>
151.1704 + <canvas>
151.1705 + <size width="72" height="24"/>
151.1706 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.1707 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.1708 + <layer name="Layer 1">
151.1709 + <opacity>1.0</opacity>
151.1710 + <fillOpacity>1.0</fillOpacity>
151.1711 + <blendingMode>NORMAL</blendingMode>
151.1712 + <locked>false</locked>
151.1713 + <visible>true</visible>
151.1714 + <shapes>
151.1715 + <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="7.0">
151.1716 + <gradient cycleMethod="NO_CYCLE">
151.1717 + <stop position="0.0" midpoint="0.5">
151.1718 + <matte red="117" green="121" blue="126" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.018518567" saturationOffset="-0.03909774" brightnessOffset="-0.2509804" alphaOffset="0"/>
151.1719 + </stop>
151.1720 + <stop position="0.13368984" midpoint="0.5">
151.1721 + <matte red="145" green="149" blue="156" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.040013492" brightnessOffset="-0.13333333" alphaOffset="0"/>
151.1722 + </stop>
151.1723 + <stop position="1.0" midpoint="0.5">
151.1724 + <matte red="144" green="147" blue="155" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.01010108" saturationOffset="-0.039558575" brightnessOffset="-0.1372549" alphaOffset="0"/>
151.1725 + </stop>
151.1726 + </gradient>
151.1727 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1728 + </rectangle>
151.1729 + <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="9.0">
151.1730 + <gradient cycleMethod="NO_CYCLE">
151.1731 + <stop position="0.0" midpoint="0.5">
151.1732 + <matte red="66" green="68" blue="70" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.05338346" brightnessOffset="-0.47058824" alphaOffset="0"/>
151.1733 + </stop>
151.1734 + <stop position="1.0" midpoint="0.5">
151.1735 + <matte red="92" green="94" blue="98" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.049301825" brightnessOffset="-0.36078432" alphaOffset="0"/>
151.1736 + </stop>
151.1737 + </gradient>
151.1738 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1739 + </rectangle>
151.1740 + <rectangle x1="2.0" x2="70.0" y1="3.0" y2="23.0" rounding="9.0">
151.1741 + <matte red="255" green="255" blue="255" alpha="169" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-86"/>
151.1742 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.1743 + </rectangle>
151.1744 + </shapes>
151.1745 + <effects/>
151.1746 + </layer>
151.1747 + <templateLayer fileName="1139ed92ed8.png">
151.1748 + <layer name="Template" type="template">
151.1749 + <opacity>1.0</opacity>
151.1750 + <fillOpacity>1.0</fillOpacity>
151.1751 + <blendingMode>NORMAL</blendingMode>
151.1752 + <locked>false</locked>
151.1753 + <visible>false</visible>
151.1754 + <shapes/>
151.1755 + <effects/>
151.1756 + </layer>
151.1757 + </templateLayer>
151.1758 + </canvas>
151.1759 + </state>
151.1760 + <state stateKeys="Pressed+Selected+Focused">
151.1761 + <style>
151.1762 + <textForeground/>
151.1763 + <textBackground/>
151.1764 + <background/>
151.1765 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.1766 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.1767 + <uiproperties/>
151.1768 + </style>
151.1769 + <canvas>
151.1770 + <size width="72" height="24"/>
151.1771 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.1772 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.1773 + <layer name="Layer 1">
151.1774 + <opacity>1.0</opacity>
151.1775 + <fillOpacity>1.0</fillOpacity>
151.1776 + <blendingMode>NORMAL</blendingMode>
151.1777 + <locked>false</locked>
151.1778 + <visible>true</visible>
151.1779 + <shapes>
151.1780 + <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="7.0">
151.1781 + <gradient cycleMethod="NO_CYCLE">
151.1782 + <stop position="0.0" midpoint="0.5">
151.1783 + <matte red="117" green="121" blue="126" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.018518567" saturationOffset="-0.03909774" brightnessOffset="-0.2509804" alphaOffset="0"/>
151.1784 + </stop>
151.1785 + <stop position="0.13368984" midpoint="0.5">
151.1786 + <matte red="145" green="149" blue="156" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.040013492" brightnessOffset="-0.13333333" alphaOffset="0"/>
151.1787 + </stop>
151.1788 + <stop position="1.0" midpoint="0.5">
151.1789 + <matte red="144" green="147" blue="155" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.01010108" saturationOffset="-0.039558575" brightnessOffset="-0.1372549" alphaOffset="0"/>
151.1790 + </stop>
151.1791 + </gradient>
151.1792 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1793 + </rectangle>
151.1794 + <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="9.0">
151.1795 + <gradient cycleMethod="NO_CYCLE">
151.1796 + <stop position="0.0" midpoint="0.5">
151.1797 + <matte red="66" green="68" blue="70" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.05338346" brightnessOffset="-0.47058824" alphaOffset="0"/>
151.1798 + </stop>
151.1799 + <stop position="1.0" midpoint="0.5">
151.1800 + <matte red="92" green="94" blue="98" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.049301825" brightnessOffset="-0.36078432" alphaOffset="0"/>
151.1801 + </stop>
151.1802 + </gradient>
151.1803 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1804 + </rectangle>
151.1805 + <rectangle x1="0.6" x2="71.4" y1="0.6" y2="23.4" rounding="11.0">
151.1806 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.1807 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.1808 + </rectangle>
151.1809 + </shapes>
151.1810 + <effects/>
151.1811 + </layer>
151.1812 + </canvas>
151.1813 + </state>
151.1814 + <state stateKeys="MouseOver+Selected">
151.1815 + <style>
151.1816 + <textForeground/>
151.1817 + <textBackground/>
151.1818 + <background/>
151.1819 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.1820 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.1821 + <uiproperties/>
151.1822 + </style>
151.1823 + <canvas>
151.1824 + <size width="72" height="24"/>
151.1825 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.1826 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.1827 + <layer name="Layer 1">
151.1828 + <opacity>1.0</opacity>
151.1829 + <fillOpacity>1.0</fillOpacity>
151.1830 + <blendingMode>NORMAL</blendingMode>
151.1831 + <locked>false</locked>
151.1832 + <visible>true</visible>
151.1833 + <shapes>
151.1834 + <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="7.0">
151.1835 + <gradient cycleMethod="NO_CYCLE">
151.1836 + <stop position="0.0" midpoint="0.5">
151.1837 + <matte red="149" green="152" blue="157" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.0595709" brightnessOffset="-0.12941176" alphaOffset="0"/>
151.1838 + </stop>
151.1839 + <stop position="0.13368984" midpoint="0.5">
151.1840 + <matte red="173" green="176" blue="182" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.061075766" brightnessOffset="-0.031372547" alphaOffset="0"/>
151.1841 + </stop>
151.1842 + <stop position="1.0" midpoint="0.5">
151.1843 + <matte red="172" green="175" blue="181" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06080256" brightnessOffset="-0.035294116" alphaOffset="0"/>
151.1844 + </stop>
151.1845 + </gradient>
151.1846 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1847 + </rectangle>
151.1848 + <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="9.0">
151.1849 + <gradient cycleMethod="NO_CYCLE">
151.1850 + <stop position="0.0" midpoint="0.5">
151.1851 + <matte red="95" green="97" blue="100" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.060526315" brightnessOffset="-0.3529412" alphaOffset="0"/>
151.1852 + </stop>
151.1853 + <stop position="1.0" midpoint="0.5">
151.1854 + <matte red="124" green="126" blue="130" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.064372465" brightnessOffset="-0.2352941" alphaOffset="0"/>
151.1855 + </stop>
151.1856 + </gradient>
151.1857 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1858 + </rectangle>
151.1859 + <rectangle x1="2.0" x2="70.0" y1="3.0" y2="23.0" rounding="9.0">
151.1860 + <matte red="255" green="255" blue="255" alpha="169" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-86"/>
151.1861 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.1862 + </rectangle>
151.1863 + </shapes>
151.1864 + <effects/>
151.1865 + </layer>
151.1866 + <templateLayer fileName="1139eda6220.png">
151.1867 + <layer name="Template" type="template">
151.1868 + <opacity>1.0</opacity>
151.1869 + <fillOpacity>1.0</fillOpacity>
151.1870 + <blendingMode>NORMAL</blendingMode>
151.1871 + <locked>false</locked>
151.1872 + <visible>false</visible>
151.1873 + <shapes/>
151.1874 + <effects/>
151.1875 + </layer>
151.1876 + </templateLayer>
151.1877 + </canvas>
151.1878 + </state>
151.1879 + <state stateKeys="MouseOver+Selected+Focused">
151.1880 + <style>
151.1881 + <textForeground/>
151.1882 + <textBackground/>
151.1883 + <background/>
151.1884 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.1885 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.1886 + <uiproperties/>
151.1887 + </style>
151.1888 + <canvas>
151.1889 + <size width="72" height="24"/>
151.1890 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.1891 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.1892 + <layer name="Layer 1">
151.1893 + <opacity>1.0</opacity>
151.1894 + <fillOpacity>1.0</fillOpacity>
151.1895 + <blendingMode>NORMAL</blendingMode>
151.1896 + <locked>false</locked>
151.1897 + <visible>true</visible>
151.1898 + <shapes>
151.1899 + <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="7.0">
151.1900 + <gradient cycleMethod="NO_CYCLE">
151.1901 + <stop position="0.0" midpoint="0.5">
151.1902 + <matte red="149" green="152" blue="157" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.0595709" brightnessOffset="-0.12941176" alphaOffset="0"/>
151.1903 + </stop>
151.1904 + <stop position="0.13368984" midpoint="0.5">
151.1905 + <matte red="173" green="176" blue="182" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.061075766" brightnessOffset="-0.031372547" alphaOffset="0"/>
151.1906 + </stop>
151.1907 + <stop position="1.0" midpoint="0.5">
151.1908 + <matte red="172" green="175" blue="181" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06080256" brightnessOffset="-0.035294116" alphaOffset="0"/>
151.1909 + </stop>
151.1910 + </gradient>
151.1911 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1912 + </rectangle>
151.1913 + <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="9.0">
151.1914 + <gradient cycleMethod="NO_CYCLE">
151.1915 + <stop position="0.0" midpoint="0.5">
151.1916 + <matte red="95" green="97" blue="100" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.060526315" brightnessOffset="-0.3529412" alphaOffset="0"/>
151.1917 + </stop>
151.1918 + <stop position="1.0" midpoint="0.5">
151.1919 + <matte red="124" green="126" blue="130" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.064372465" brightnessOffset="-0.2352941" alphaOffset="0"/>
151.1920 + </stop>
151.1921 + </gradient>
151.1922 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1923 + </rectangle>
151.1924 + <rectangle x1="0.6" x2="71.4" y1="0.6" y2="23.4" rounding="11.0">
151.1925 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.1926 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.1927 + </rectangle>
151.1928 + </shapes>
151.1929 + <effects/>
151.1930 + </layer>
151.1931 + </canvas>
151.1932 + </state>
151.1933 + <state stateKeys="Disabled+Selected">
151.1934 + <style>
151.1935 + <textForeground>
151.1936 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.1937 + </textForeground>
151.1938 + <textBackground/>
151.1939 + <background/>
151.1940 + <inherit-textForeground>false</inherit-textForeground>
151.1941 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.1942 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.1943 + <uiproperties/>
151.1944 + </style>
151.1945 + <canvas>
151.1946 + <size width="72" height="24"/>
151.1947 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.1948 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.1949 + <layer name="Layer 1">
151.1950 + <opacity>1.0</opacity>
151.1951 + <fillOpacity>1.0</fillOpacity>
151.1952 + <blendingMode>NORMAL</blendingMode>
151.1953 + <locked>false</locked>
151.1954 + <visible>true</visible>
151.1955 + <shapes>
151.1956 + <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="7.0">
151.1957 + <gradient cycleMethod="NO_CYCLE">
151.1958 + <stop position="0.0" midpoint="0.5">
151.1959 + <matte red="203" green="206" blue="212" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06807348" brightnessOffset="0.086274505" alphaOffset="0"/>
151.1960 + </stop>
151.1961 + <stop position="0.13368984" midpoint="0.5">
151.1962 + <matte red="209" green="212" blue="218" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06924191" brightnessOffset="0.109803915" alphaOffset="0"/>
151.1963 + </stop>
151.1964 + <stop position="1.0" midpoint="0.5">
151.1965 + <matte red="209" green="212" blue="218" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06924191" brightnessOffset="0.109803915" alphaOffset="0"/>
151.1966 + </stop>
151.1967 + </gradient>
151.1968 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1969 + </rectangle>
151.1970 + <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="9.0">
151.1971 + <gradient cycleMethod="NO_CYCLE">
151.1972 + <stop position="0.0" midpoint="0.5">
151.1973 + <matte red="195" green="198" blue="204" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.066408664" brightnessOffset="0.054901958" alphaOffset="0"/>
151.1974 + </stop>
151.1975 + <stop position="1.0" midpoint="0.5">
151.1976 + <matte red="203" green="206" blue="212" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06807348" brightnessOffset="0.086274505" alphaOffset="0"/>
151.1977 + </stop>
151.1978 + </gradient>
151.1979 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.1980 + </rectangle>
151.1981 + <rectangle x1="2.0" x2="70.0" y1="3.0" y2="23.0" rounding="9.0">
151.1982 + <matte red="255" green="255" blue="255" alpha="35" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-220"/>
151.1983 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.1984 + </rectangle>
151.1985 + </shapes>
151.1986 + <effects/>
151.1987 + </layer>
151.1988 + <templateLayer fileName="1139edb5619.png">
151.1989 + <layer name="Template" type="template">
151.1990 + <opacity>1.0</opacity>
151.1991 + <fillOpacity>1.0</fillOpacity>
151.1992 + <blendingMode>NORMAL</blendingMode>
151.1993 + <locked>false</locked>
151.1994 + <visible>false</visible>
151.1995 + <shapes/>
151.1996 + <effects/>
151.1997 + </layer>
151.1998 + </templateLayer>
151.1999 + </canvas>
151.2000 + </state>
151.2001 + </backgroundStates>
151.2002 + <foregroundStates/>
151.2003 + <borderStates/>
151.2004 + <regions/>
151.2005 + </uiComponent>
151.2006 + <uiComponent opaque="false" type="javax.swing.JRadioButton" name="RadioButton" ui="RadioButtonUI" subregion="false">
151.2007 + <stateTypes/>
151.2008 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.2009 + <style>
151.2010 + <textForeground/>
151.2011 + <textBackground/>
151.2012 + <background/>
151.2013 + <uiproperties/>
151.2014 + </style>
151.2015 + <backgroundStates>
151.2016 + <state stateKeys="Disabled">
151.2017 + <style>
151.2018 + <textForeground>
151.2019 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.2020 + </textForeground>
151.2021 + <textBackground/>
151.2022 + <background/>
151.2023 + <inherit-textForeground>false</inherit-textForeground>
151.2024 + <uiproperties/>
151.2025 + </style>
151.2026 + <canvas>
151.2027 + <size width="104" height="33"/>
151.2028 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.2029 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.2030 + <layer name="Layer 1">
151.2031 + <opacity>1.0</opacity>
151.2032 + <fillOpacity>1.0</fillOpacity>
151.2033 + <blendingMode>NORMAL</blendingMode>
151.2034 + <locked>false</locked>
151.2035 + <visible>true</visible>
151.2036 + <shapes/>
151.2037 + <effects/>
151.2038 + </layer>
151.2039 + </canvas>
151.2040 + </state>
151.2041 + <state stateKeys="Enabled">
151.2042 + <style>
151.2043 + <textForeground/>
151.2044 + <textBackground/>
151.2045 + <background/>
151.2046 + <uiproperties/>
151.2047 + </style>
151.2048 + <canvas>
151.2049 + <size width="104" height="33"/>
151.2050 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.2051 + <stretchingInsets top="7" bottom="7" left="7" right="7"/>
151.2052 + <layer name="Layer 1">
151.2053 + <opacity>1.0</opacity>
151.2054 + <fillOpacity>1.0</fillOpacity>
151.2055 + <blendingMode>NORMAL</blendingMode>
151.2056 + <locked>false</locked>
151.2057 + <visible>true</visible>
151.2058 + <shapes/>
151.2059 + <effects/>
151.2060 + </layer>
151.2061 + </canvas>
151.2062 + </state>
151.2063 + </backgroundStates>
151.2064 + <foregroundStates/>
151.2065 + <borderStates/>
151.2066 + <regions>
151.2067 + <uiIconRegion name="Icon" subregion="true" key="icon">
151.2068 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.2069 + <style>
151.2070 + <textForeground/>
151.2071 + <textBackground/>
151.2072 + <background/>
151.2073 + <uiproperties/>
151.2074 + </style>
151.2075 + <backgroundStates>
151.2076 + <state stateKeys="Disabled">
151.2077 + <style>
151.2078 + <textForeground/>
151.2079 + <textBackground/>
151.2080 + <background/>
151.2081 + <uiproperties/>
151.2082 + </style>
151.2083 + <canvas>
151.2084 + <size width="18" height="18"/>
151.2085 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.2086 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.2087 + <layer name="Button">
151.2088 + <opacity>1.0</opacity>
151.2089 + <fillOpacity>1.0</fillOpacity>
151.2090 + <blendingMode>NORMAL</blendingMode>
151.2091 + <locked>false</locked>
151.2092 + <visible>true</visible>
151.2093 + <shapes>
151.2094 + <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
151.2095 + <gradient cycleMethod="NO_CYCLE">
151.2096 + <stop position="0.06344411" midpoint="0.5">
151.2097 + <matte red="226" green="228" blue="232" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08466425" brightnessOffset="0.16470587" alphaOffset="0"/>
151.2098 + </stop>
151.2099 + <stop position="0.36858007" midpoint="0.5">
151.2100 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.2101 + </stop>
151.2102 + <stop position="0.72809666" midpoint="0.5">
151.2103 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.2104 + </stop>
151.2105 + <stop position="0.82175225" midpoint="0.5">
151.2106 + <matte red="217" green="220" blue="226" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.070703305" brightnessOffset="0.14117646" alphaOffset="0"/>
151.2107 + </stop>
151.2108 + <stop position="1.0" midpoint="0.5">
151.2109 + <matte red="216" green="219" blue="225" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07052632" brightnessOffset="0.1372549" alphaOffset="0"/>
151.2110 + </stop>
151.2111 + </gradient>
151.2112 + <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
151.2113 + </ellipse>
151.2114 + <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
151.2115 + <gradient cycleMethod="NO_CYCLE">
151.2116 + <stop position="0.0" midpoint="0.5">
151.2117 + <matte red="201" green="204" blue="210" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06766917" brightnessOffset="0.07843137" alphaOffset="0"/>
151.2118 + </stop>
151.2119 + <stop position="1.0" midpoint="0.5">
151.2120 + <matte red="185" green="188" blue="194" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06413457" brightnessOffset="0.015686274" alphaOffset="0"/>
151.2121 + </stop>
151.2122 + </gradient>
151.2123 + <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
151.2124 + </ellipse>
151.2125 + </shapes>
151.2126 + <effects/>
151.2127 + </layer>
151.2128 + </canvas>
151.2129 + </state>
151.2130 + <state stateKeys="Enabled">
151.2131 + <style>
151.2132 + <textForeground/>
151.2133 + <textBackground/>
151.2134 + <background/>
151.2135 + <uiproperties/>
151.2136 + </style>
151.2137 + <canvas>
151.2138 + <size width="18" height="18"/>
151.2139 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.2140 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.2141 + <layer name="Button">
151.2142 + <opacity>1.0</opacity>
151.2143 + <fillOpacity>1.0</fillOpacity>
151.2144 + <blendingMode>NORMAL</blendingMode>
151.2145 + <locked>false</locked>
151.2146 + <visible>true</visible>
151.2147 + <shapes>
151.2148 + <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
151.2149 + <gradient cycleMethod="NO_CYCLE">
151.2150 + <stop position="0.06344411" midpoint="0.5">
151.2151 + <matte red="250" green="250" blue="251" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10654225" brightnessOffset="0.23921567" alphaOffset="0"/>
151.2152 + </stop>
151.2153 + <stop position="0.43674698" midpoint="0.5">
151.2154 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.2155 + </stop>
151.2156 + <stop position="0.52409637" midpoint="0.5">
151.2157 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.2158 + </stop>
151.2159 + <stop position="0.88554215" midpoint="0.5">
151.2160 + <matte red="225" green="228" blue="234" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07206477" brightnessOffset="0.17254901" alphaOffset="0"/>
151.2161 + </stop>
151.2162 + </gradient>
151.2163 + <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
151.2164 + </ellipse>
151.2165 + <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
151.2166 + <gradient cycleMethod="NO_CYCLE">
151.2167 + <stop position="0.0" midpoint="0.5">
151.2168 + <matte red="148" green="151" blue="157" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.053201474" brightnessOffset="-0.12941176" alphaOffset="0"/>
151.2169 + </stop>
151.2170 + <stop position="1.0" midpoint="0.5">
151.2171 + <matte red="68" green="71" blue="77" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.006356798" brightnessOffset="-0.44313726" alphaOffset="0"/>
151.2172 + </stop>
151.2173 + </gradient>
151.2174 + <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
151.2175 + </ellipse>
151.2176 + </shapes>
151.2177 + <effects/>
151.2178 + </layer>
151.2179 + <layer name="Shadow">
151.2180 + <opacity>1.0</opacity>
151.2181 + <fillOpacity>1.0</fillOpacity>
151.2182 + <blendingMode>NORMAL</blendingMode>
151.2183 + <locked>false</locked>
151.2184 + <visible>true</visible>
151.2185 + <shapes>
151.2186 + <ellipse x1="2.0" x2="16.0" y1="3.0" y2="17.0">
151.2187 + <matte red="169" green="176" blue="190" alpha="143" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-112"/>
151.2188 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.2189 + </ellipse>
151.2190 + </shapes>
151.2191 + <effects/>
151.2192 + </layer>
151.2193 + <templateLayer fileName="1138ddc021b.png">
151.2194 + <layer name="Template" type="template">
151.2195 + <opacity>1.0</opacity>
151.2196 + <fillOpacity>1.0</fillOpacity>
151.2197 + <blendingMode>NORMAL</blendingMode>
151.2198 + <locked>false</locked>
151.2199 + <visible>false</visible>
151.2200 + <shapes/>
151.2201 + <effects/>
151.2202 + </layer>
151.2203 + </templateLayer>
151.2204 + </canvas>
151.2205 + </state>
151.2206 + <state stateKeys="Focused">
151.2207 + <style>
151.2208 + <textForeground/>
151.2209 + <textBackground/>
151.2210 + <background/>
151.2211 + <uiproperties/>
151.2212 + </style>
151.2213 + <canvas>
151.2214 + <size width="18" height="18"/>
151.2215 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.2216 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.2217 + <layer name="Button">
151.2218 + <opacity>1.0</opacity>
151.2219 + <fillOpacity>1.0</fillOpacity>
151.2220 + <blendingMode>NORMAL</blendingMode>
151.2221 + <locked>false</locked>
151.2222 + <visible>true</visible>
151.2223 + <shapes>
151.2224 + <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
151.2225 + <gradient cycleMethod="NO_CYCLE">
151.2226 + <stop position="0.06344411" midpoint="0.5">
151.2227 + <matte red="250" green="250" blue="251" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10654225" brightnessOffset="0.23921567" alphaOffset="0"/>
151.2228 + </stop>
151.2229 + <stop position="0.43674698" midpoint="0.5">
151.2230 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.2231 + </stop>
151.2232 + <stop position="0.52409637" midpoint="0.5">
151.2233 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.2234 + </stop>
151.2235 + <stop position="0.88554215" midpoint="0.5">
151.2236 + <matte red="225" green="228" blue="234" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07206477" brightnessOffset="0.17254901" alphaOffset="0"/>
151.2237 + </stop>
151.2238 + </gradient>
151.2239 + <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
151.2240 + </ellipse>
151.2241 + <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
151.2242 + <gradient cycleMethod="NO_CYCLE">
151.2243 + <stop position="0.0" midpoint="0.5">
151.2244 + <matte red="148" green="151" blue="157" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.053201474" brightnessOffset="-0.12941176" alphaOffset="0"/>
151.2245 + </stop>
151.2246 + <stop position="1.0" midpoint="0.5">
151.2247 + <matte red="68" green="71" blue="77" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.006356798" brightnessOffset="-0.44313726" alphaOffset="0"/>
151.2248 + </stop>
151.2249 + </gradient>
151.2250 + <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
151.2251 + </ellipse>
151.2252 + <ellipse x1="0.6" x2="17.4" y1="0.6" y2="17.4">
151.2253 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.2254 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.2255 + </ellipse>
151.2256 + </shapes>
151.2257 + <effects/>
151.2258 + </layer>
151.2259 + </canvas>
151.2260 + </state>
151.2261 + <state stateKeys="MouseOver">
151.2262 + <style>
151.2263 + <textForeground/>
151.2264 + <textBackground/>
151.2265 + <background/>
151.2266 + <uiproperties/>
151.2267 + </style>
151.2268 + <canvas>
151.2269 + <size width="18" height="18"/>
151.2270 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.2271 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.2272 + <layer name="Button">
151.2273 + <opacity>1.0</opacity>
151.2274 + <fillOpacity>1.0</fillOpacity>
151.2275 + <blendingMode>NORMAL</blendingMode>
151.2276 + <locked>false</locked>
151.2277 + <visible>true</visible>
151.2278 + <shapes>
151.2279 + <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
151.2280 + <gradient cycleMethod="NO_CYCLE">
151.2281 + <stop position="0.06344411" midpoint="0.5">
151.2282 + <matte red="251" green="252" blue="252" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.111111104" saturationOffset="-0.10655806" brightnessOffset="0.24313724" alphaOffset="0"/>
151.2283 + </stop>
151.2284 + <stop position="0.36858007" midpoint="0.5">
151.2285 + <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.2286 + </stop>
151.2287 + <stop position="0.72809666" midpoint="0.5">
151.2288 + <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.2289 + </stop>
151.2290 + <stop position="0.82175225" midpoint="0.5">
151.2291 + <matte red="246" green="244" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.08585858" saturationOffset="-0.067389056" brightnessOffset="0.25490195" alphaOffset="0"/>
151.2292 + </stop>
151.2293 + <stop position="1.0" midpoint="0.5">
151.2294 + <matte red="235" green="236" blue="236" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.111111104" saturationOffset="-0.10628903" brightnessOffset="0.18039215" alphaOffset="0"/>
151.2295 + </stop>
151.2296 + </gradient>
151.2297 + <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
151.2298 + </ellipse>
151.2299 + <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
151.2300 + <gradient cycleMethod="NO_CYCLE">
151.2301 + <stop position="0.0" midpoint="0.5">
151.2302 + <matte red="122" green="126" blue="133" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.027819552" brightnessOffset="-0.2235294" alphaOffset="0"/>
151.2303 + </stop>
151.2304 + <stop position="1.0" midpoint="0.5">
151.2305 + <matte red="22" green="26" blue="34" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.24241486" brightnessOffset="-0.6117647" alphaOffset="0"/>
151.2306 + </stop>
151.2307 + </gradient>
151.2308 + <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
151.2309 + </ellipse>
151.2310 + </shapes>
151.2311 + <effects/>
151.2312 + </layer>
151.2313 + <layer name="Shadow">
151.2314 + <opacity>1.0</opacity>
151.2315 + <fillOpacity>1.0</fillOpacity>
151.2316 + <blendingMode>NORMAL</blendingMode>
151.2317 + <locked>false</locked>
151.2318 + <visible>true</visible>
151.2319 + <shapes>
151.2320 + <ellipse x1="2.0" x2="16.0" y1="3.0" y2="17.0">
151.2321 + <matte red="169" green="176" blue="190" alpha="143" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-112"/>
151.2322 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.2323 + </ellipse>
151.2324 + </shapes>
151.2325 + <effects/>
151.2326 + </layer>
151.2327 + <templateLayer fileName="1138de7a9a7.png">
151.2328 + <layer name="Template" type="template">
151.2329 + <opacity>1.0</opacity>
151.2330 + <fillOpacity>1.0</fillOpacity>
151.2331 + <blendingMode>NORMAL</blendingMode>
151.2332 + <locked>false</locked>
151.2333 + <visible>false</visible>
151.2334 + <shapes/>
151.2335 + <effects/>
151.2336 + </layer>
151.2337 + </templateLayer>
151.2338 + </canvas>
151.2339 + </state>
151.2340 + <state stateKeys="MouseOver+Focused">
151.2341 + <style>
151.2342 + <textForeground/>
151.2343 + <textBackground/>
151.2344 + <background/>
151.2345 + <uiproperties/>
151.2346 + </style>
151.2347 + <canvas>
151.2348 + <size width="18" height="18"/>
151.2349 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.2350 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.2351 + <layer name="Button">
151.2352 + <opacity>1.0</opacity>
151.2353 + <fillOpacity>1.0</fillOpacity>
151.2354 + <blendingMode>NORMAL</blendingMode>
151.2355 + <locked>false</locked>
151.2356 + <visible>true</visible>
151.2357 + <shapes>
151.2358 + <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
151.2359 + <gradient cycleMethod="NO_CYCLE">
151.2360 + <stop position="0.06344411" midpoint="0.5">
151.2361 + <matte red="251" green="252" blue="252" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.111111104" saturationOffset="-0.10655806" brightnessOffset="0.24313724" alphaOffset="0"/>
151.2362 + </stop>
151.2363 + <stop position="0.36858007" midpoint="0.5">
151.2364 + <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.2365 + </stop>
151.2366 + <stop position="0.72809666" midpoint="0.5">
151.2367 + <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.2368 + </stop>
151.2369 + <stop position="0.82175225" midpoint="0.5">
151.2370 + <matte red="246" green="244" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.08585858" saturationOffset="-0.067389056" brightnessOffset="0.25490195" alphaOffset="0"/>
151.2371 + </stop>
151.2372 + <stop position="1.0" midpoint="0.5">
151.2373 + <matte red="235" green="236" blue="236" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.111111104" saturationOffset="-0.10628903" brightnessOffset="0.18039215" alphaOffset="0"/>
151.2374 + </stop>
151.2375 + </gradient>
151.2376 + <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
151.2377 + </ellipse>
151.2378 + <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
151.2379 + <gradient cycleMethod="NO_CYCLE">
151.2380 + <stop position="0.0" midpoint="0.5">
151.2381 + <matte red="122" green="126" blue="133" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.027819552" brightnessOffset="-0.2235294" alphaOffset="0"/>
151.2382 + </stop>
151.2383 + <stop position="1.0" midpoint="0.5">
151.2384 + <matte red="22" green="26" blue="34" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.24241486" brightnessOffset="-0.6117647" alphaOffset="0"/>
151.2385 + </stop>
151.2386 + </gradient>
151.2387 + <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
151.2388 + </ellipse>
151.2389 + <ellipse x1="0.6" x2="17.4" y1="0.6" y2="17.4">
151.2390 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.2391 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.2392 + </ellipse>
151.2393 + </shapes>
151.2394 + <effects/>
151.2395 + </layer>
151.2396 + </canvas>
151.2397 + </state>
151.2398 + <state stateKeys="Pressed">
151.2399 + <style>
151.2400 + <textForeground/>
151.2401 + <textBackground/>
151.2402 + <background/>
151.2403 + <uiproperties/>
151.2404 + </style>
151.2405 + <canvas>
151.2406 + <size width="18" height="18"/>
151.2407 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.2408 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.2409 + <layer name="Button">
151.2410 + <opacity>1.0</opacity>
151.2411 + <fillOpacity>1.0</fillOpacity>
151.2412 + <blendingMode>NORMAL</blendingMode>
151.2413 + <locked>false</locked>
151.2414 + <visible>true</visible>
151.2415 + <shapes>
151.2416 + <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
151.2417 + <gradient cycleMethod="NO_CYCLE">
151.2418 + <stop position="0.06344411" midpoint="0.5">
151.2419 + <matte red="206" green="209" blue="215" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06866585" brightnessOffset="0.09803921" alphaOffset="0"/>
151.2420 + </stop>
151.2421 + <stop position="0.35240963" midpoint="0.5">
151.2422 + <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.2423 + </stop>
151.2424 + <stop position="0.5481928" midpoint="0.5">
151.2425 + <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.2426 + </stop>
151.2427 + <stop position="0.9487952" midpoint="0.5">
151.2428 + <matte red="192" green="198" blue="211" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.002924025" saturationOffset="-0.02047892" brightnessOffset="0.082352936" alphaOffset="0"/>
151.2429 + </stop>
151.2430 + </gradient>
151.2431 + <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
151.2432 + </ellipse>
151.2433 + <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
151.2434 + <gradient cycleMethod="NO_CYCLE">
151.2435 + <stop position="0.0" midpoint="0.5">
151.2436 + <matte red="13" green="13" blue="20" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="0.23947367" brightnessOffset="-0.6666667" alphaOffset="0"/>
151.2437 + </stop>
151.2438 + <stop position="1.0" midpoint="0.5">
151.2439 + <matte red="113" green="117" blue="118" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0777778" saturationOffset="-0.06815343" brightnessOffset="-0.28235295" alphaOffset="0"/>
151.2440 + </stop>
151.2441 + </gradient>
151.2442 + <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
151.2443 + </ellipse>
151.2444 + </shapes>
151.2445 + <effects/>
151.2446 + </layer>
151.2447 + <layer name="Shadow">
151.2448 + <opacity>1.0</opacity>
151.2449 + <fillOpacity>1.0</fillOpacity>
151.2450 + <blendingMode>NORMAL</blendingMode>
151.2451 + <locked>false</locked>
151.2452 + <visible>true</visible>
151.2453 + <shapes>
151.2454 + <ellipse x1="2.0" x2="16.0" y1="3.0" y2="17.0">
151.2455 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.2456 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.2457 + </ellipse>
151.2458 + </shapes>
151.2459 + <effects/>
151.2460 + </layer>
151.2461 + <templateLayer fileName="1138e896368.png">
151.2462 + <layer name="Template" type="template">
151.2463 + <opacity>1.0</opacity>
151.2464 + <fillOpacity>1.0</fillOpacity>
151.2465 + <blendingMode>NORMAL</blendingMode>
151.2466 + <locked>false</locked>
151.2467 + <visible>false</visible>
151.2468 + <shapes/>
151.2469 + <effects/>
151.2470 + </layer>
151.2471 + </templateLayer>
151.2472 + </canvas>
151.2473 + </state>
151.2474 + <state stateKeys="Pressed+Focused">
151.2475 + <style>
151.2476 + <textForeground/>
151.2477 + <textBackground/>
151.2478 + <background/>
151.2479 + <uiproperties/>
151.2480 + </style>
151.2481 + <canvas>
151.2482 + <size width="18" height="18"/>
151.2483 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.2484 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.2485 + <layer name="Button">
151.2486 + <opacity>1.0</opacity>
151.2487 + <fillOpacity>1.0</fillOpacity>
151.2488 + <blendingMode>NORMAL</blendingMode>
151.2489 + <locked>false</locked>
151.2490 + <visible>true</visible>
151.2491 + <shapes>
151.2492 + <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
151.2493 + <gradient cycleMethod="NO_CYCLE">
151.2494 + <stop position="0.06344411" midpoint="0.5">
151.2495 + <matte red="206" green="209" blue="215" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06866585" brightnessOffset="0.09803921" alphaOffset="0"/>
151.2496 + </stop>
151.2497 + <stop position="0.35240963" midpoint="0.5">
151.2498 + <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.2499 + </stop>
151.2500 + <stop position="0.5481928" midpoint="0.5">
151.2501 + <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.2502 + </stop>
151.2503 + <stop position="0.9487952" midpoint="0.5">
151.2504 + <matte red="192" green="198" blue="211" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.002924025" saturationOffset="-0.02047892" brightnessOffset="0.082352936" alphaOffset="0"/>
151.2505 + </stop>
151.2506 + </gradient>
151.2507 + <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
151.2508 + </ellipse>
151.2509 + <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
151.2510 + <gradient cycleMethod="NO_CYCLE">
151.2511 + <stop position="0.0" midpoint="0.5">
151.2512 + <matte red="13" green="13" blue="20" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="0.23947367" brightnessOffset="-0.6666667" alphaOffset="0"/>
151.2513 + </stop>
151.2514 + <stop position="1.0" midpoint="0.5">
151.2515 + <matte red="113" green="117" blue="118" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0777778" saturationOffset="-0.06815343" brightnessOffset="-0.28235295" alphaOffset="0"/>
151.2516 + </stop>
151.2517 + </gradient>
151.2518 + <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
151.2519 + </ellipse>
151.2520 + <ellipse x1="0.6" x2="17.4" y1="0.6" y2="17.4">
151.2521 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.2522 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.2523 + </ellipse>
151.2524 + </shapes>
151.2525 + <effects/>
151.2526 + </layer>
151.2527 + </canvas>
151.2528 + </state>
151.2529 + <state stateKeys="Selected">
151.2530 + <style>
151.2531 + <textForeground/>
151.2532 + <textBackground/>
151.2533 + <background/>
151.2534 + <uiproperties/>
151.2535 + </style>
151.2536 + <canvas>
151.2537 + <size width="18" height="18"/>
151.2538 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.2539 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.2540 + <layer name="Button">
151.2541 + <opacity>1.0</opacity>
151.2542 + <fillOpacity>1.0</fillOpacity>
151.2543 + <blendingMode>NORMAL</blendingMode>
151.2544 + <locked>false</locked>
151.2545 + <visible>true</visible>
151.2546 + <shapes>
151.2547 + <ellipse x1="6.0" x2="12.0" y1="6.0" y2="12.0">
151.2548 + <gradient cycleMethod="NO_CYCLE">
151.2549 + <stop position="0.0" midpoint="0.5">
151.2550 + <matte red="101" green="103" blue="105" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.07243107" brightnessOffset="-0.33333334" alphaOffset="0"/>
151.2551 + </stop>
151.2552 + <stop position="0.46385542" midpoint="0.5">
151.2553 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="0"/>
151.2554 + </stop>
151.2555 + <stop position="1.0" midpoint="0.5">
151.2556 + <matte red="27" green="30" blue="33" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="0.07129187" brightnessOffset="-0.6156863" alphaOffset="0"/>
151.2557 + </stop>
151.2558 + </gradient>
151.2559 + <paintPoints x1="0.5049019607843137" y1="0.0" x2="0.4950980392156863" y2="1.0"/>
151.2560 + </ellipse>
151.2561 + <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
151.2562 + <gradient cycleMethod="NO_CYCLE">
151.2563 + <stop position="0.0813253" midpoint="0.5">
151.2564 + <matte red="244" green="246" blue="248" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6195853" brightnessOffset="0.4235294" alphaOffset="0"/>
151.2565 + </stop>
151.2566 + <stop position="0.12048193" midpoint="0.5">
151.2567 + <matte red="217" green="225" blue="233" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.56704473" brightnessOffset="0.36470586" alphaOffset="0"/>
151.2568 + </stop>
151.2569 + <stop position="0.45783132" midpoint="0.5">
151.2570 + <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
151.2571 + </stop>
151.2572 + <stop position="0.77409637" midpoint="0.5">
151.2573 + <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
151.2574 + </stop>
151.2575 + <stop position="0.88554215" midpoint="0.5">
151.2576 + <matte red="174" green="195" blue="214" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.44879842" brightnessOffset="0.29019606" alphaOffset="0"/>
151.2577 + </stop>
151.2578 + </gradient>
151.2579 + <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
151.2580 + </ellipse>
151.2581 + <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
151.2582 + <gradient cycleMethod="NO_CYCLE">
151.2583 + <stop position="0.0" midpoint="0.5">
151.2584 + <matte red="100" green="120" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.36035198" brightnessOffset="-0.007843137" alphaOffset="0"/>
151.2585 + </stop>
151.2586 + <stop position="1.0" midpoint="0.5">
151.2587 + <matte red="20" green="40" blue="58" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="0.019458115" brightnessOffset="-0.32156867" alphaOffset="0"/>
151.2588 + </stop>
151.2589 + </gradient>
151.2590 + <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
151.2591 + </ellipse>
151.2592 + </shapes>
151.2593 + <effects/>
151.2594 + </layer>
151.2595 + <layer name="Shadow">
151.2596 + <opacity>1.0</opacity>
151.2597 + <fillOpacity>1.0</fillOpacity>
151.2598 + <blendingMode>NORMAL</blendingMode>
151.2599 + <locked>false</locked>
151.2600 + <visible>true</visible>
151.2601 + <shapes>
151.2602 + <ellipse x1="2.0" x2="16.0" y1="3.0" y2="17.0">
151.2603 + <matte red="169" green="176" blue="190" alpha="143" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-112"/>
151.2604 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.2605 + </ellipse>
151.2606 + </shapes>
151.2607 + <effects/>
151.2608 + </layer>
151.2609 + <templateLayer fileName="1138e15047c.png">
151.2610 + <layer name="Template" type="template">
151.2611 + <opacity>1.0</opacity>
151.2612 + <fillOpacity>1.0</fillOpacity>
151.2613 + <blendingMode>NORMAL</blendingMode>
151.2614 + <locked>false</locked>
151.2615 + <visible>false</visible>
151.2616 + <shapes/>
151.2617 + <effects/>
151.2618 + </layer>
151.2619 + </templateLayer>
151.2620 + </canvas>
151.2621 + </state>
151.2622 + <state stateKeys="Selected+Focused">
151.2623 + <style>
151.2624 + <textForeground/>
151.2625 + <textBackground/>
151.2626 + <background/>
151.2627 + <uiproperties/>
151.2628 + </style>
151.2629 + <canvas>
151.2630 + <size width="18" height="18"/>
151.2631 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.2632 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.2633 + <layer name="Button">
151.2634 + <opacity>1.0</opacity>
151.2635 + <fillOpacity>1.0</fillOpacity>
151.2636 + <blendingMode>NORMAL</blendingMode>
151.2637 + <locked>false</locked>
151.2638 + <visible>true</visible>
151.2639 + <shapes>
151.2640 + <ellipse x1="6.0" x2="12.0" y1="6.0" y2="12.0">
151.2641 + <gradient cycleMethod="NO_CYCLE">
151.2642 + <stop position="0.0" midpoint="0.5">
151.2643 + <matte red="101" green="103" blue="105" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.07243107" brightnessOffset="-0.33333334" alphaOffset="0"/>
151.2644 + </stop>
151.2645 + <stop position="0.46385542" midpoint="0.5">
151.2646 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="0"/>
151.2647 + </stop>
151.2648 + <stop position="1.0" midpoint="0.5">
151.2649 + <matte red="27" green="30" blue="33" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="0.07129187" brightnessOffset="-0.6156863" alphaOffset="0"/>
151.2650 + </stop>
151.2651 + </gradient>
151.2652 + <paintPoints x1="0.5049019607843137" y1="0.0" x2="0.4950980392156863" y2="1.0"/>
151.2653 + </ellipse>
151.2654 + <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
151.2655 + <gradient cycleMethod="NO_CYCLE">
151.2656 + <stop position="0.0813253" midpoint="0.5">
151.2657 + <matte red="244" green="246" blue="248" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6195853" brightnessOffset="0.4235294" alphaOffset="0"/>
151.2658 + </stop>
151.2659 + <stop position="0.12048193" midpoint="0.5">
151.2660 + <matte red="217" green="225" blue="233" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.56704473" brightnessOffset="0.36470586" alphaOffset="0"/>
151.2661 + </stop>
151.2662 + <stop position="0.45783132" midpoint="0.5">
151.2663 + <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
151.2664 + </stop>
151.2665 + <stop position="0.77409637" midpoint="0.5">
151.2666 + <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
151.2667 + </stop>
151.2668 + <stop position="0.88554215" midpoint="0.5">
151.2669 + <matte red="174" green="195" blue="214" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.44879842" brightnessOffset="0.29019606" alphaOffset="0"/>
151.2670 + </stop>
151.2671 + </gradient>
151.2672 + <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
151.2673 + </ellipse>
151.2674 + <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
151.2675 + <gradient cycleMethod="NO_CYCLE">
151.2676 + <stop position="0.0" midpoint="0.5">
151.2677 + <matte red="100" green="120" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.36035198" brightnessOffset="-0.007843137" alphaOffset="0"/>
151.2678 + </stop>
151.2679 + <stop position="1.0" midpoint="0.5">
151.2680 + <matte red="20" green="40" blue="58" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="0.019458115" brightnessOffset="-0.32156867" alphaOffset="0"/>
151.2681 + </stop>
151.2682 + </gradient>
151.2683 + <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
151.2684 + </ellipse>
151.2685 + <ellipse x1="0.6" x2="17.4" y1="0.6" y2="17.4">
151.2686 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.2687 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.2688 + </ellipse>
151.2689 + </shapes>
151.2690 + <effects/>
151.2691 + </layer>
151.2692 + </canvas>
151.2693 + </state>
151.2694 + <state stateKeys="Pressed+Selected">
151.2695 + <style>
151.2696 + <textForeground/>
151.2697 + <textBackground/>
151.2698 + <background/>
151.2699 + <uiproperties/>
151.2700 + </style>
151.2701 + <canvas>
151.2702 + <size width="18" height="18"/>
151.2703 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.2704 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.2705 + <layer name="Button">
151.2706 + <opacity>1.0</opacity>
151.2707 + <fillOpacity>1.0</fillOpacity>
151.2708 + <blendingMode>NORMAL</blendingMode>
151.2709 + <locked>false</locked>
151.2710 + <visible>true</visible>
151.2711 + <shapes>
151.2712 + <ellipse x1="6.0" x2="12.0" y1="6.0" y2="12.0">
151.2713 + <gradient cycleMethod="NO_CYCLE">
151.2714 + <stop position="0.0" midpoint="0.5">
151.2715 + <matte red="64" green="65" blue="66" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.080223285" brightnessOffset="-0.4862745" alphaOffset="0"/>
151.2716 + </stop>
151.2717 + <stop position="0.46385542" midpoint="0.5">
151.2718 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="0"/>
151.2719 + </stop>
151.2720 + <stop position="1.0" midpoint="0.5">
151.2721 + <matte red="27" green="30" blue="33" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="0.07129187" brightnessOffset="-0.6156863" alphaOffset="0"/>
151.2722 + </stop>
151.2723 + </gradient>
151.2724 + <paintPoints x1="0.5049019607843137" y1="0.0" x2="0.4950980392156863" y2="1.0"/>
151.2725 + </ellipse>
151.2726 + <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
151.2727 + <gradient cycleMethod="NO_CYCLE">
151.2728 + <stop position="0.039156627" midpoint="0.5">
151.2729 + <matte red="157" green="178" blue="196" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.4367347" brightnessOffset="0.21960783" alphaOffset="0"/>
151.2730 + </stop>
151.2731 + <stop position="0.11746988" midpoint="0.5">
151.2732 + <matte red="122" green="153" blue="180" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0010654926" saturationOffset="-0.31349206" brightnessOffset="0.15686274" alphaOffset="0"/>
151.2733 + </stop>
151.2734 + <stop position="0.45783132" midpoint="0.5">
151.2735 + <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.2736 + </stop>
151.2737 + <stop position="0.66566265" midpoint="0.5">
151.2738 + <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.2739 + </stop>
151.2740 + <stop position="0.88554215" midpoint="0.5">
151.2741 + <matte red="82" green="127" blue="168" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.05676E-4" saturationOffset="-0.12380952" brightnessOffset="0.109803915" alphaOffset="0"/>
151.2742 + </stop>
151.2743 + </gradient>
151.2744 + <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
151.2745 + </ellipse>
151.2746 + <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
151.2747 + <gradient cycleMethod="NO_CYCLE">
151.2748 + <stop position="0.0" midpoint="0.5">
151.2749 + <matte red="13" green="13" blue="13" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.49803925" alphaOffset="0"/>
151.2750 + </stop>
151.2751 + <stop position="1.0" midpoint="0.5">
151.2752 + <matte red="20" green="40" blue="58" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="0.019458115" brightnessOffset="-0.32156867" alphaOffset="0"/>
151.2753 + </stop>
151.2754 + <stop position="1.0" midpoint="0.5">
151.2755 + <matte red="49" green="75" blue="100" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0030477047" saturationOffset="-0.1257143" brightnessOffset="-0.15686277" alphaOffset="0"/>
151.2756 + </stop>
151.2757 + </gradient>
151.2758 + <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
151.2759 + </ellipse>
151.2760 + </shapes>
151.2761 + <effects/>
151.2762 + </layer>
151.2763 + <layer name="Shadow">
151.2764 + <opacity>1.0</opacity>
151.2765 + <fillOpacity>1.0</fillOpacity>
151.2766 + <blendingMode>NORMAL</blendingMode>
151.2767 + <locked>false</locked>
151.2768 + <visible>true</visible>
151.2769 + <shapes>
151.2770 + <ellipse x1="2.0" x2="16.0" y1="3.0" y2="17.0">
151.2771 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.2772 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.2773 + </ellipse>
151.2774 + </shapes>
151.2775 + <effects/>
151.2776 + </layer>
151.2777 + <templateLayer fileName="1138e817331.png">
151.2778 + <layer name="Template" type="template">
151.2779 + <opacity>1.0</opacity>
151.2780 + <fillOpacity>1.0</fillOpacity>
151.2781 + <blendingMode>NORMAL</blendingMode>
151.2782 + <locked>false</locked>
151.2783 + <visible>false</visible>
151.2784 + <shapes/>
151.2785 + <effects/>
151.2786 + </layer>
151.2787 + </templateLayer>
151.2788 + </canvas>
151.2789 + </state>
151.2790 + <state stateKeys="Pressed+Selected+Focused">
151.2791 + <style>
151.2792 + <textForeground/>
151.2793 + <textBackground/>
151.2794 + <background/>
151.2795 + <uiproperties/>
151.2796 + </style>
151.2797 + <canvas>
151.2798 + <size width="18" height="18"/>
151.2799 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.2800 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.2801 + <layer name="Button">
151.2802 + <opacity>1.0</opacity>
151.2803 + <fillOpacity>1.0</fillOpacity>
151.2804 + <blendingMode>NORMAL</blendingMode>
151.2805 + <locked>false</locked>
151.2806 + <visible>true</visible>
151.2807 + <shapes>
151.2808 + <ellipse x1="6.0" x2="12.0" y1="6.0" y2="12.0">
151.2809 + <gradient cycleMethod="NO_CYCLE">
151.2810 + <stop position="0.0" midpoint="0.5">
151.2811 + <matte red="64" green="65" blue="66" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.080223285" brightnessOffset="-0.4862745" alphaOffset="0"/>
151.2812 + </stop>
151.2813 + <stop position="0.46385542" midpoint="0.5">
151.2814 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="0"/>
151.2815 + </stop>
151.2816 + <stop position="1.0" midpoint="0.5">
151.2817 + <matte red="27" green="30" blue="33" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="0.07129187" brightnessOffset="-0.6156863" alphaOffset="0"/>
151.2818 + </stop>
151.2819 + </gradient>
151.2820 + <paintPoints x1="0.5049019607843137" y1="0.0" x2="0.4950980392156863" y2="1.0"/>
151.2821 + </ellipse>
151.2822 + <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
151.2823 + <gradient cycleMethod="NO_CYCLE">
151.2824 + <stop position="0.039156627" midpoint="0.5">
151.2825 + <matte red="157" green="178" blue="196" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.4367347" brightnessOffset="0.21960783" alphaOffset="0"/>
151.2826 + </stop>
151.2827 + <stop position="0.11746988" midpoint="0.5">
151.2828 + <matte red="122" green="153" blue="180" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0010654926" saturationOffset="-0.31349206" brightnessOffset="0.15686274" alphaOffset="0"/>
151.2829 + </stop>
151.2830 + <stop position="0.45783132" midpoint="0.5">
151.2831 + <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.2832 + </stop>
151.2833 + <stop position="0.66566265" midpoint="0.5">
151.2834 + <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.2835 + </stop>
151.2836 + <stop position="0.88554215" midpoint="0.5">
151.2837 + <matte red="82" green="127" blue="168" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.05676E-4" saturationOffset="-0.12380952" brightnessOffset="0.109803915" alphaOffset="0"/>
151.2838 + </stop>
151.2839 + </gradient>
151.2840 + <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
151.2841 + </ellipse>
151.2842 + <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
151.2843 + <gradient cycleMethod="NO_CYCLE">
151.2844 + <stop position="0.0" midpoint="0.5">
151.2845 + <matte red="13" green="13" blue="13" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.49803925" alphaOffset="0"/>
151.2846 + </stop>
151.2847 + <stop position="1.0" midpoint="0.5">
151.2848 + <matte red="20" green="40" blue="58" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="0.019458115" brightnessOffset="-0.32156867" alphaOffset="0"/>
151.2849 + </stop>
151.2850 + <stop position="1.0" midpoint="0.5">
151.2851 + <matte red="49" green="75" blue="100" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0030477047" saturationOffset="-0.1257143" brightnessOffset="-0.15686277" alphaOffset="0"/>
151.2852 + </stop>
151.2853 + </gradient>
151.2854 + <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
151.2855 + </ellipse>
151.2856 + <ellipse x1="0.6" x2="17.4" y1="0.6" y2="17.4">
151.2857 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.2858 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.2859 + </ellipse>
151.2860 + </shapes>
151.2861 + <effects/>
151.2862 + </layer>
151.2863 + </canvas>
151.2864 + </state>
151.2865 + <state stateKeys="MouseOver+Selected">
151.2866 + <style>
151.2867 + <textForeground/>
151.2868 + <textBackground/>
151.2869 + <background/>
151.2870 + <uiproperties/>
151.2871 + </style>
151.2872 + <canvas>
151.2873 + <size width="18" height="18"/>
151.2874 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.2875 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.2876 + <layer name="Button">
151.2877 + <opacity>1.0</opacity>
151.2878 + <fillOpacity>1.0</fillOpacity>
151.2879 + <blendingMode>NORMAL</blendingMode>
151.2880 + <locked>false</locked>
151.2881 + <visible>true</visible>
151.2882 + <shapes>
151.2883 + <ellipse x1="6.0" x2="12.0" y1="6.0" y2="12.0">
151.2884 + <gradient cycleMethod="NO_CYCLE">
151.2885 + <stop position="0.0" midpoint="0.5">
151.2886 + <matte red="101" green="103" blue="105" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.07243107" brightnessOffset="-0.33333334" alphaOffset="0"/>
151.2887 + </stop>
151.2888 + <stop position="0.46385542" midpoint="0.5">
151.2889 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="0"/>
151.2890 + </stop>
151.2891 + <stop position="1.0" midpoint="0.5">
151.2892 + <matte red="27" green="30" blue="33" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="0.07129187" brightnessOffset="-0.6156863" alphaOffset="0"/>
151.2893 + </stop>
151.2894 + </gradient>
151.2895 + <paintPoints x1="0.5049019607843137" y1="0.0" x2="0.4950980392156863" y2="1.0"/>
151.2896 + </ellipse>
151.2897 + <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
151.2898 + <gradient cycleMethod="NO_CYCLE">
151.2899 + <stop position="0.0813253" midpoint="0.5">
151.2900 + <matte red="245" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.011985004" saturationOffset="-0.6157143" brightnessOffset="0.43137252" alphaOffset="0"/>
151.2901 + </stop>
151.2902 + <stop position="0.12048193" midpoint="0.5">
151.2903 + <matte red="225" green="233" blue="241" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.56932425" brightnessOffset="0.3960784" alphaOffset="0"/>
151.2904 + </stop>
151.2905 + <stop position="0.28313252" midpoint="0.5">
151.2906 + <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
151.2907 + </stop>
151.2908 + <stop position="0.7018072" midpoint="0.5">
151.2909 + <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
151.2910 + </stop>
151.2911 + <stop position="0.810241" midpoint="0.5">
151.2912 + <matte red="195" green="216" blue="235" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.46550155" brightnessOffset="0.372549" alphaOffset="0"/>
151.2913 + </stop>
151.2914 + <stop position="0.88554215" midpoint="0.5">
151.2915 + <matte red="190" green="209" blue="227" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0024294257" saturationOffset="-0.47271872" brightnessOffset="0.34117645" alphaOffset="0"/>
151.2916 + </stop>
151.2917 + </gradient>
151.2918 + <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
151.2919 + </ellipse>
151.2920 + <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
151.2921 + <gradient cycleMethod="NO_CYCLE">
151.2922 + <stop position="0.0" midpoint="0.5">
151.2923 + <matte red="62" green="87" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-6.374717E-4" saturationOffset="-0.20452163" brightnessOffset="-0.12156865" alphaOffset="0"/>
151.2924 + </stop>
151.2925 + <stop position="1.0" midpoint="0.5">
151.2926 + <matte red="11" green="11" blue="11" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.5058824" alphaOffset="0"/>
151.2927 + </stop>
151.2928 + </gradient>
151.2929 + <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
151.2930 + </ellipse>
151.2931 + </shapes>
151.2932 + <effects/>
151.2933 + </layer>
151.2934 + <layer name="Shadow">
151.2935 + <opacity>1.0</opacity>
151.2936 + <fillOpacity>1.0</fillOpacity>
151.2937 + <blendingMode>NORMAL</blendingMode>
151.2938 + <locked>false</locked>
151.2939 + <visible>true</visible>
151.2940 + <shapes>
151.2941 + <ellipse x1="2.0" x2="16.0" y1="3.0" y2="17.0">
151.2942 + <matte red="169" green="176" blue="190" alpha="143" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-112"/>
151.2943 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.2944 + </ellipse>
151.2945 + </shapes>
151.2946 + <effects/>
151.2947 + </layer>
151.2948 + <templateLayer fileName="1138e7b96f2.png">
151.2949 + <layer name="Template" type="template">
151.2950 + <opacity>1.0</opacity>
151.2951 + <fillOpacity>1.0</fillOpacity>
151.2952 + <blendingMode>NORMAL</blendingMode>
151.2953 + <locked>false</locked>
151.2954 + <visible>false</visible>
151.2955 + <shapes/>
151.2956 + <effects/>
151.2957 + </layer>
151.2958 + </templateLayer>
151.2959 + </canvas>
151.2960 + </state>
151.2961 + <state stateKeys="MouseOver+Selected+Focused">
151.2962 + <style>
151.2963 + <textForeground/>
151.2964 + <textBackground/>
151.2965 + <background/>
151.2966 + <uiproperties/>
151.2967 + </style>
151.2968 + <canvas>
151.2969 + <size width="18" height="18"/>
151.2970 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.2971 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.2972 + <layer name="Button">
151.2973 + <opacity>1.0</opacity>
151.2974 + <fillOpacity>1.0</fillOpacity>
151.2975 + <blendingMode>NORMAL</blendingMode>
151.2976 + <locked>false</locked>
151.2977 + <visible>true</visible>
151.2978 + <shapes>
151.2979 + <ellipse x1="6.0" x2="12.0" y1="6.0" y2="12.0">
151.2980 + <gradient cycleMethod="NO_CYCLE">
151.2981 + <stop position="0.0" midpoint="0.5">
151.2982 + <matte red="101" green="103" blue="105" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.07243107" brightnessOffset="-0.33333334" alphaOffset="0"/>
151.2983 + </stop>
151.2984 + <stop position="0.46385542" midpoint="0.5">
151.2985 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="0"/>
151.2986 + </stop>
151.2987 + <stop position="1.0" midpoint="0.5">
151.2988 + <matte red="27" green="30" blue="33" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="0.07129187" brightnessOffset="-0.6156863" alphaOffset="0"/>
151.2989 + </stop>
151.2990 + </gradient>
151.2991 + <paintPoints x1="0.5049019607843137" y1="0.0" x2="0.4950980392156863" y2="1.0"/>
151.2992 + </ellipse>
151.2993 + <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
151.2994 + <gradient cycleMethod="NO_CYCLE">
151.2995 + <stop position="0.0813253" midpoint="0.5">
151.2996 + <matte red="245" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.011985004" saturationOffset="-0.6157143" brightnessOffset="0.43137252" alphaOffset="0"/>
151.2997 + </stop>
151.2998 + <stop position="0.12048193" midpoint="0.5">
151.2999 + <matte red="225" green="233" blue="241" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.56932425" brightnessOffset="0.3960784" alphaOffset="0"/>
151.3000 + </stop>
151.3001 + <stop position="0.28313252" midpoint="0.5">
151.3002 + <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
151.3003 + </stop>
151.3004 + <stop position="0.7018072" midpoint="0.5">
151.3005 + <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
151.3006 + </stop>
151.3007 + <stop position="0.810241" midpoint="0.5">
151.3008 + <matte red="195" green="216" blue="235" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.46550155" brightnessOffset="0.372549" alphaOffset="0"/>
151.3009 + </stop>
151.3010 + <stop position="0.88554215" midpoint="0.5">
151.3011 + <matte red="190" green="209" blue="227" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0024294257" saturationOffset="-0.47271872" brightnessOffset="0.34117645" alphaOffset="0"/>
151.3012 + </stop>
151.3013 + </gradient>
151.3014 + <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
151.3015 + </ellipse>
151.3016 + <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
151.3017 + <gradient cycleMethod="NO_CYCLE">
151.3018 + <stop position="0.0" midpoint="0.5">
151.3019 + <matte red="62" green="87" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-6.374717E-4" saturationOffset="-0.20452163" brightnessOffset="-0.12156865" alphaOffset="0"/>
151.3020 + </stop>
151.3021 + <stop position="1.0" midpoint="0.5">
151.3022 + <matte red="11" green="11" blue="11" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.5058824" alphaOffset="0"/>
151.3023 + </stop>
151.3024 + </gradient>
151.3025 + <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
151.3026 + </ellipse>
151.3027 + <ellipse x1="0.6" x2="17.4" y1="0.6" y2="17.4">
151.3028 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.3029 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.3030 + </ellipse>
151.3031 + </shapes>
151.3032 + <effects/>
151.3033 + </layer>
151.3034 + </canvas>
151.3035 + </state>
151.3036 + <state stateKeys="Disabled+Selected">
151.3037 + <style>
151.3038 + <textForeground/>
151.3039 + <textBackground/>
151.3040 + <background/>
151.3041 + <uiproperties/>
151.3042 + </style>
151.3043 + <canvas>
151.3044 + <size width="18" height="18"/>
151.3045 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.3046 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.3047 + <layer name="Button">
151.3048 + <opacity>1.0</opacity>
151.3049 + <fillOpacity>1.0</fillOpacity>
151.3050 + <blendingMode>NORMAL</blendingMode>
151.3051 + <locked>false</locked>
151.3052 + <visible>true</visible>
151.3053 + <shapes>
151.3054 + <ellipse x1="6.0" x2="12.0" y1="6.0" y2="12.0">
151.3055 + <gradient cycleMethod="NO_CYCLE">
151.3056 + <stop position="0.0" midpoint="0.5">
151.3057 + <matte red="181" green="185" blue="191" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.058170296" brightnessOffset="0.0039215684" alphaOffset="0"/>
151.3058 + </stop>
151.3059 + <stop position="0.46385542" midpoint="0.5">
151.3060 + <matte red="163" green="168" blue="175" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.04195489" brightnessOffset="-0.058823526" alphaOffset="0"/>
151.3061 + </stop>
151.3062 + <stop position="1.0" midpoint="0.5">
151.3063 + <matte red="170" green="175" blue="188" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.009259284" saturationOffset="-0.0147816315" brightnessOffset="-0.007843137" alphaOffset="0"/>
151.3064 + </stop>
151.3065 + </gradient>
151.3066 + <paintPoints x1="0.5049019607843137" y1="0.0" x2="0.4950980392156863" y2="1.0"/>
151.3067 + </ellipse>
151.3068 + <ellipse x1="3.0" x2="15.0" y1="3.0" y2="15.0">
151.3069 + <gradient cycleMethod="NO_CYCLE">
151.3070 + <stop position="0.0813253" midpoint="0.5">
151.3071 + <matte red="219" green="223" blue="230" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.5878882" brightnessOffset="0.35294116" alphaOffset="0"/>
151.3072 + </stop>
151.3073 + <stop position="0.45783132" midpoint="0.5">
151.3074 + <matte red="204" green="210" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56722116" brightnessOffset="0.3098039" alphaOffset="0"/>
151.3075 + </stop>
151.3076 + <stop position="0.88554215" midpoint="0.5">
151.3077 + <matte red="206" green="212" blue="221" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.567841" brightnessOffset="0.31764704" alphaOffset="0"/>
151.3078 + </stop>
151.3079 + </gradient>
151.3080 + <paintPoints x1="0.49754901960784303" y1="0.004901960784313727" x2="0.507352941176471" y2="1.0"/>
151.3081 + </ellipse>
151.3082 + <ellipse x1="2.0" x2="16.0" y1="2.0" y2="16.0">
151.3083 + <gradient cycleMethod="NO_CYCLE">
151.3084 + <stop position="0.0" midpoint="0.5">
151.3085 + <matte red="191" green="198" blue="206" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.010237217" saturationOffset="-0.56289876" brightnessOffset="0.2588235" alphaOffset="0"/>
151.3086 + </stop>
151.3087 + <stop position="1.0" midpoint="0.5">
151.3088 + <matte red="176" green="182" blue="190" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.016586483" saturationOffset="-0.5620301" brightnessOffset="0.19607842" alphaOffset="0"/>
151.3089 + </stop>
151.3090 + </gradient>
151.3091 + <paintPoints x1="0.49789915966386533" y1="-0.0042016806722689065" x2="0.5000000000000002" y2="0.9978991596638656"/>
151.3092 + </ellipse>
151.3093 + </shapes>
151.3094 + <effects/>
151.3095 + </layer>
151.3096 + <templateLayer fileName="1138e83122d.png">
151.3097 + <layer name="Template" type="template">
151.3098 + <opacity>1.0</opacity>
151.3099 + <fillOpacity>1.0</fillOpacity>
151.3100 + <blendingMode>NORMAL</blendingMode>
151.3101 + <locked>false</locked>
151.3102 + <visible>false</visible>
151.3103 + <shapes/>
151.3104 + <effects/>
151.3105 + </layer>
151.3106 + </templateLayer>
151.3107 + </canvas>
151.3108 + </state>
151.3109 + </backgroundStates>
151.3110 + <foregroundStates/>
151.3111 + <borderStates/>
151.3112 + <regions/>
151.3113 + </uiIconRegion>
151.3114 + </regions>
151.3115 + </uiComponent>
151.3116 + <uiComponent opaque="false" type="javax.swing.JCheckBox" name="CheckBox" ui="CheckBoxUI" subregion="false">
151.3117 + <stateTypes/>
151.3118 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.3119 + <style>
151.3120 + <textForeground/>
151.3121 + <textBackground/>
151.3122 + <background/>
151.3123 + <uiproperties/>
151.3124 + </style>
151.3125 + <backgroundStates>
151.3126 + <state stateKeys="Disabled">
151.3127 + <style>
151.3128 + <textForeground>
151.3129 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.3130 + </textForeground>
151.3131 + <textBackground/>
151.3132 + <background/>
151.3133 + <inherit-textForeground>false</inherit-textForeground>
151.3134 + <uiproperties/>
151.3135 + </style>
151.3136 + <canvas>
151.3137 + <size width="104" height="33"/>
151.3138 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.3139 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.3140 + <layer name="Layer 1">
151.3141 + <opacity>1.0</opacity>
151.3142 + <fillOpacity>1.0</fillOpacity>
151.3143 + <blendingMode>NORMAL</blendingMode>
151.3144 + <locked>false</locked>
151.3145 + <visible>true</visible>
151.3146 + <shapes/>
151.3147 + <effects/>
151.3148 + </layer>
151.3149 + </canvas>
151.3150 + </state>
151.3151 + <state stateKeys="Enabled">
151.3152 + <style>
151.3153 + <textForeground/>
151.3154 + <textBackground/>
151.3155 + <background/>
151.3156 + <uiproperties/>
151.3157 + </style>
151.3158 + <canvas>
151.3159 + <size width="104" height="33"/>
151.3160 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.3161 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.3162 + <layer name="Layer 1">
151.3163 + <opacity>1.0</opacity>
151.3164 + <fillOpacity>1.0</fillOpacity>
151.3165 + <blendingMode>NORMAL</blendingMode>
151.3166 + <locked>false</locked>
151.3167 + <visible>true</visible>
151.3168 + <shapes/>
151.3169 + <effects/>
151.3170 + </layer>
151.3171 + </canvas>
151.3172 + </state>
151.3173 + </backgroundStates>
151.3174 + <foregroundStates/>
151.3175 + <borderStates/>
151.3176 + <regions>
151.3177 + <uiIconRegion name="Icon" subregion="true" key="icon">
151.3178 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.3179 + <style>
151.3180 + <textForeground/>
151.3181 + <textBackground/>
151.3182 + <background/>
151.3183 + <uiproperties/>
151.3184 + </style>
151.3185 + <backgroundStates>
151.3186 + <state stateKeys="Disabled">
151.3187 + <style>
151.3188 + <textForeground/>
151.3189 + <textBackground/>
151.3190 + <background/>
151.3191 + <uiproperties/>
151.3192 + </style>
151.3193 + <canvas>
151.3194 + <size width="18" height="18"/>
151.3195 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.3196 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.3197 + <layer name="Layer 1">
151.3198 + <opacity>1.0</opacity>
151.3199 + <fillOpacity>1.0</fillOpacity>
151.3200 + <blendingMode>NORMAL</blendingMode>
151.3201 + <locked>false</locked>
151.3202 + <visible>true</visible>
151.3203 + <shapes>
151.3204 + <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
151.3205 + <gradient cycleMethod="NO_CYCLE">
151.3206 + <stop position="0.0" midpoint="0.5">
151.3207 + <matte red="227" green="229" blue="233" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.60996324" brightnessOffset="0.36470586" alphaOffset="0"/>
151.3208 + </stop>
151.3209 + <stop position="0.64457834" midpoint="0.5">
151.3210 + <matte red="214" green="217" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.02551502" saturationOffset="-0.5996783" brightnessOffset="0.3215686" alphaOffset="0"/>
151.3211 + </stop>
151.3212 + <stop position="1.0" midpoint="0.5">
151.3213 + <matte red="219" green="222" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.59624064" brightnessOffset="0.34509802" alphaOffset="0"/>
151.3214 + </stop>
151.3215 + </gradient>
151.3216 + <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
151.3217 + </rectangle>
151.3218 + <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
151.3219 + <gradient cycleMethod="NO_CYCLE">
151.3220 + <stop position="0.0" midpoint="0.5">
151.3221 + <matte red="201" green="204" blue="210" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06766917" brightnessOffset="0.07843137" alphaOffset="0"/>
151.3222 + </stop>
151.3223 + <stop position="1.0" midpoint="0.5">
151.3224 + <matte red="188" green="191" blue="197" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06484103" brightnessOffset="0.027450979" alphaOffset="0"/>
151.3225 + </stop>
151.3226 + </gradient>
151.3227 + <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
151.3228 + </rectangle>
151.3229 + </shapes>
151.3230 + <effects/>
151.3231 + </layer>
151.3232 + </canvas>
151.3233 + </state>
151.3234 + <state stateKeys="Enabled">
151.3235 + <style>
151.3236 + <textForeground/>
151.3237 + <textBackground/>
151.3238 + <background/>
151.3239 + <uiproperties/>
151.3240 + </style>
151.3241 + <canvas>
151.3242 + <size width="18" height="18"/>
151.3243 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.3244 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.3245 + <layer name="Layer 1">
151.3246 + <opacity>1.0</opacity>
151.3247 + <fillOpacity>1.0</fillOpacity>
151.3248 + <blendingMode>NORMAL</blendingMode>
151.3249 + <locked>false</locked>
151.3250 + <visible>true</visible>
151.3251 + <shapes>
151.3252 + <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
151.3253 + <gradient cycleMethod="NO_CYCLE">
151.3254 + <stop position="0.0" midpoint="0.5">
151.3255 + <matte red="251" green="251" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.63174605" brightnessOffset="0.43921566" alphaOffset="0"/>
151.3256 + </stop>
151.3257 + <stop position="0.64457834" midpoint="0.5">
151.3258 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5953556" brightnessOffset="0.32549018" alphaOffset="0"/>
151.3259 + </stop>
151.3260 + <stop position="1.0" midpoint="0.5">
151.3261 + <matte red="239" green="242" blue="248" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.59942394" brightnessOffset="0.4235294" alphaOffset="0"/>
151.3262 + </stop>
151.3263 + </gradient>
151.3264 + <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
151.3265 + </rectangle>
151.3266 + <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
151.3267 + <gradient cycleMethod="NO_CYCLE">
151.3268 + <stop position="0.0" midpoint="0.5">
151.3269 + <matte red="149" green="152" blue="158" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.05356429" brightnessOffset="-0.12549019" alphaOffset="0"/>
151.3270 + </stop>
151.3271 + <stop position="1.0" midpoint="0.5">
151.3272 + <matte red="86" green="89" blue="95" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.015789472" brightnessOffset="-0.37254903" alphaOffset="0"/>
151.3273 + </stop>
151.3274 + </gradient>
151.3275 + <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
151.3276 + </rectangle>
151.3277 + <rectangle x1="2.0" x2="16.0" y1="11.0" y2="17.0" rounding="5.176470588235279">
151.3278 + <matte red="169" green="176" blue="190" alpha="166" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-89"/>
151.3279 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.3280 + </rectangle>
151.3281 + </shapes>
151.3282 + <effects/>
151.3283 + </layer>
151.3284 + <templateLayer fileName="1138ec6661e.png">
151.3285 + <layer name="Template" type="template">
151.3286 + <opacity>1.0</opacity>
151.3287 + <fillOpacity>1.0</fillOpacity>
151.3288 + <blendingMode>NORMAL</blendingMode>
151.3289 + <locked>false</locked>
151.3290 + <visible>false</visible>
151.3291 + <shapes/>
151.3292 + <effects/>
151.3293 + </layer>
151.3294 + </templateLayer>
151.3295 + </canvas>
151.3296 + </state>
151.3297 + <state stateKeys="Focused">
151.3298 + <style>
151.3299 + <textForeground/>
151.3300 + <textBackground/>
151.3301 + <background/>
151.3302 + <uiproperties/>
151.3303 + </style>
151.3304 + <canvas>
151.3305 + <size width="18" height="18"/>
151.3306 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.3307 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.3308 + <layer name="Layer 1">
151.3309 + <opacity>1.0</opacity>
151.3310 + <fillOpacity>1.0</fillOpacity>
151.3311 + <blendingMode>NORMAL</blendingMode>
151.3312 + <locked>false</locked>
151.3313 + <visible>true</visible>
151.3314 + <shapes>
151.3315 + <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
151.3316 + <gradient cycleMethod="NO_CYCLE">
151.3317 + <stop position="0.0" midpoint="0.5">
151.3318 + <matte red="251" green="251" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.63174605" brightnessOffset="0.43921566" alphaOffset="0"/>
151.3319 + </stop>
151.3320 + <stop position="0.64457834" midpoint="0.5">
151.3321 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5953556" brightnessOffset="0.32549018" alphaOffset="0"/>
151.3322 + </stop>
151.3323 + <stop position="1.0" midpoint="0.5">
151.3324 + <matte red="239" green="242" blue="248" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.59942394" brightnessOffset="0.4235294" alphaOffset="0"/>
151.3325 + </stop>
151.3326 + </gradient>
151.3327 + <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
151.3328 + </rectangle>
151.3329 + <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
151.3330 + <gradient cycleMethod="NO_CYCLE">
151.3331 + <stop position="0.0" midpoint="0.5">
151.3332 + <matte red="149" green="152" blue="158" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.05356429" brightnessOffset="-0.12549019" alphaOffset="0"/>
151.3333 + </stop>
151.3334 + <stop position="1.0" midpoint="0.5">
151.3335 + <matte red="86" green="89" blue="95" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.015789472" brightnessOffset="-0.37254903" alphaOffset="0"/>
151.3336 + </stop>
151.3337 + </gradient>
151.3338 + <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
151.3339 + </rectangle>
151.3340 + <rectangle x1="0.6" x2="17.4" y1="0.6" y2="17.4" rounding="7.999999999999999">
151.3341 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.3342 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.3343 + </rectangle>
151.3344 + </shapes>
151.3345 + <effects/>
151.3346 + </layer>
151.3347 + </canvas>
151.3348 + </state>
151.3349 + <state stateKeys="MouseOver">
151.3350 + <style>
151.3351 + <textForeground/>
151.3352 + <textBackground/>
151.3353 + <background/>
151.3354 + <uiproperties/>
151.3355 + </style>
151.3356 + <canvas>
151.3357 + <size width="18" height="18"/>
151.3358 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.3359 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.3360 + <layer name="Layer 1">
151.3361 + <opacity>1.0</opacity>
151.3362 + <fillOpacity>1.0</fillOpacity>
151.3363 + <blendingMode>NORMAL</blendingMode>
151.3364 + <locked>false</locked>
151.3365 + <visible>true</visible>
151.3366 + <shapes>
151.3367 + <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
151.3368 + <gradient cycleMethod="NO_CYCLE">
151.3369 + <stop position="0.0" midpoint="0.5">
151.3370 + <matte red="253" green="253" blue="254" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.6317773" brightnessOffset="0.4470588" alphaOffset="0"/>
151.3371 + </stop>
151.3372 + <stop position="0.64457834" midpoint="0.5">
151.3373 + <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5985242" brightnessOffset="0.39999998" alphaOffset="0"/>
151.3374 + </stop>
151.3375 + <stop position="1.0" midpoint="0.5">
151.3376 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.3377 + </stop>
151.3378 + </gradient>
151.3379 + <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
151.3380 + </rectangle>
151.3381 + <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
151.3382 + <gradient cycleMethod="NO_CYCLE">
151.3383 + <stop position="0.0" midpoint="0.5">
151.3384 + <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
151.3385 + </stop>
151.3386 + <stop position="1.0" midpoint="0.5">
151.3387 + <matte red="44" green="47" blue="55" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.01010108" saturationOffset="0.08947369" brightnessOffset="-0.5294118" alphaOffset="0"/>
151.3388 + </stop>
151.3389 + </gradient>
151.3390 + <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
151.3391 + </rectangle>
151.3392 + <rectangle x1="2.0" x2="16.0" y1="11.0" y2="17.0" rounding="5.176470588235279">
151.3393 + <matte red="169" green="176" blue="190" alpha="166" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-89"/>
151.3394 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.3395 + </rectangle>
151.3396 + </shapes>
151.3397 + <effects/>
151.3398 + </layer>
151.3399 + </canvas>
151.3400 + </state>
151.3401 + <state stateKeys="MouseOver+Focused">
151.3402 + <style>
151.3403 + <textForeground/>
151.3404 + <textBackground/>
151.3405 + <background/>
151.3406 + <uiproperties/>
151.3407 + </style>
151.3408 + <canvas>
151.3409 + <size width="18" height="18"/>
151.3410 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.3411 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.3412 + <layer name="Layer 1">
151.3413 + <opacity>1.0</opacity>
151.3414 + <fillOpacity>1.0</fillOpacity>
151.3415 + <blendingMode>NORMAL</blendingMode>
151.3416 + <locked>false</locked>
151.3417 + <visible>true</visible>
151.3418 + <shapes>
151.3419 + <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
151.3420 + <gradient cycleMethod="NO_CYCLE">
151.3421 + <stop position="0.0" midpoint="0.5">
151.3422 + <matte red="253" green="253" blue="254" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.6317773" brightnessOffset="0.4470588" alphaOffset="0"/>
151.3423 + </stop>
151.3424 + <stop position="0.64457834" midpoint="0.5">
151.3425 + <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5985242" brightnessOffset="0.39999998" alphaOffset="0"/>
151.3426 + </stop>
151.3427 + <stop position="1.0" midpoint="0.5">
151.3428 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.3429 + </stop>
151.3430 + </gradient>
151.3431 + <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
151.3432 + </rectangle>
151.3433 + <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
151.3434 + <gradient cycleMethod="NO_CYCLE">
151.3435 + <stop position="0.0" midpoint="0.5">
151.3436 + <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
151.3437 + </stop>
151.3438 + <stop position="1.0" midpoint="0.5">
151.3439 + <matte red="44" green="47" blue="55" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.01010108" saturationOffset="0.08947369" brightnessOffset="-0.5294118" alphaOffset="0"/>
151.3440 + </stop>
151.3441 + </gradient>
151.3442 + <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
151.3443 + </rectangle>
151.3444 + <rectangle x1="0.6" x2="17.4" y1="0.6" y2="17.4" rounding="7.999999999999999">
151.3445 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.3446 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.3447 + </rectangle>
151.3448 + </shapes>
151.3449 + <effects/>
151.3450 + </layer>
151.3451 + </canvas>
151.3452 + </state>
151.3453 + <state stateKeys="Pressed">
151.3454 + <style>
151.3455 + <textForeground/>
151.3456 + <textBackground/>
151.3457 + <background/>
151.3458 + <uiproperties/>
151.3459 + </style>
151.3460 + <canvas>
151.3461 + <size width="18" height="18"/>
151.3462 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.3463 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.3464 + <layer name="Layer 1">
151.3465 + <opacity>1.0</opacity>
151.3466 + <fillOpacity>1.0</fillOpacity>
151.3467 + <blendingMode>NORMAL</blendingMode>
151.3468 + <locked>false</locked>
151.3469 + <visible>true</visible>
151.3470 + <shapes>
151.3471 + <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
151.3472 + <gradient cycleMethod="NO_CYCLE">
151.3473 + <stop position="0.0" midpoint="0.5">
151.3474 + <matte red="205" green="209" blue="216" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.5847884" brightnessOffset="0.2980392" alphaOffset="0"/>
151.3475 + </stop>
151.3476 + <stop position="0.64457834" midpoint="0.5">
151.3477 + <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="-0.52701867" brightnessOffset="0.17254901" alphaOffset="0"/>
151.3478 + </stop>
151.3479 + <stop position="1.0" midpoint="0.5">
151.3480 + <matte red="184" green="191" blue="204" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="-0.5376751" brightnessOffset="0.25098038" alphaOffset="0"/>
151.3481 + </stop>
151.3482 + </gradient>
151.3483 + <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
151.3484 + </rectangle>
151.3485 + <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
151.3486 + <gradient cycleMethod="NO_CYCLE">
151.3487 + <stop position="0.0" midpoint="0.5">
151.3488 + <matte red="0" green="0" blue="7" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="0.8894737" brightnessOffset="-0.7176471" alphaOffset="0"/>
151.3489 + </stop>
151.3490 + <stop position="1.0" midpoint="0.5">
151.3491 + <matte red="95" green="99" blue="107" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0016232133" brightnessOffset="-0.3254902" alphaOffset="0"/>
151.3492 + </stop>
151.3493 + </gradient>
151.3494 + <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
151.3495 + </rectangle>
151.3496 + <rectangle x1="2.0" x2="16.0" y1="11.0" y2="17.0" rounding="5.176470588235279">
151.3497 + <matte red="169" green="176" blue="190" alpha="166" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-89"/>
151.3498 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.3499 + </rectangle>
151.3500 + </shapes>
151.3501 + <effects/>
151.3502 + </layer>
151.3503 + </canvas>
151.3504 + </state>
151.3505 + <state stateKeys="Pressed+Focused">
151.3506 + <style>
151.3507 + <textForeground/>
151.3508 + <textBackground/>
151.3509 + <background/>
151.3510 + <uiproperties/>
151.3511 + </style>
151.3512 + <canvas>
151.3513 + <size width="18" height="18"/>
151.3514 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.3515 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.3516 + <layer name="Layer 1">
151.3517 + <opacity>1.0</opacity>
151.3518 + <fillOpacity>1.0</fillOpacity>
151.3519 + <blendingMode>NORMAL</blendingMode>
151.3520 + <locked>false</locked>
151.3521 + <visible>true</visible>
151.3522 + <shapes>
151.3523 + <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
151.3524 + <gradient cycleMethod="NO_CYCLE">
151.3525 + <stop position="0.0" midpoint="0.5">
151.3526 + <matte red="205" green="209" blue="216" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.5847884" brightnessOffset="0.2980392" alphaOffset="0"/>
151.3527 + </stop>
151.3528 + <stop position="0.64457834" midpoint="0.5">
151.3529 + <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="-0.52701867" brightnessOffset="0.17254901" alphaOffset="0"/>
151.3530 + </stop>
151.3531 + <stop position="1.0" midpoint="0.5">
151.3532 + <matte red="184" green="191" blue="204" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="-0.5376751" brightnessOffset="0.25098038" alphaOffset="0"/>
151.3533 + </stop>
151.3534 + </gradient>
151.3535 + <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
151.3536 + </rectangle>
151.3537 + <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
151.3538 + <gradient cycleMethod="NO_CYCLE">
151.3539 + <stop position="0.0" midpoint="0.5">
151.3540 + <matte red="0" green="0" blue="7" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="0.8894737" brightnessOffset="-0.7176471" alphaOffset="0"/>
151.3541 + </stop>
151.3542 + <stop position="1.0" midpoint="0.5">
151.3543 + <matte red="95" green="99" blue="107" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0016232133" brightnessOffset="-0.3254902" alphaOffset="0"/>
151.3544 + </stop>
151.3545 + </gradient>
151.3546 + <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
151.3547 + </rectangle>
151.3548 + <rectangle x1="0.6" x2="17.4" y1="0.6" y2="17.4" rounding="7.999999999999999">
151.3549 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.3550 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.3551 + </rectangle>
151.3552 + </shapes>
151.3553 + <effects/>
151.3554 + </layer>
151.3555 + </canvas>
151.3556 + </state>
151.3557 + <state stateKeys="Selected">
151.3558 + <style>
151.3559 + <textForeground/>
151.3560 + <textBackground/>
151.3561 + <background/>
151.3562 + <uiproperties/>
151.3563 + </style>
151.3564 + <canvas>
151.3565 + <size width="18" height="18"/>
151.3566 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.3567 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.3568 + <layer name="Layer 2">
151.3569 + <opacity>1.0</opacity>
151.3570 + <fillOpacity>1.0</fillOpacity>
151.3571 + <blendingMode>NORMAL</blendingMode>
151.3572 + <locked>false</locked>
151.3573 + <visible>true</visible>
151.3574 + <shapes>
151.3575 + <path>
151.3576 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.3577 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.3578 + <points>
151.3579 + <point x="5.029411764705882" y="8.058823529411764" cp1x="5.029411764705882" cp1y="8.058823529411764" cp2x="5.029411764705882" cp2y="8.058823529411764"/>
151.3580 + <point x="7.029411764705882" y="8.058823529411764" cp1x="7.029411764705882" cp1y="8.058823529411764" cp2x="7.029411764705882" cp2y="8.058823529411764"/>
151.3581 + <point x="8.441176470588236" y="11.058823529411764" cp1x="8.441176470588236" cp1y="11.058823529411764" cp2x="8.441176470588236" cp2y="11.058823529411764"/>
151.3582 + <point x="11.588235294117647" y="3.117647058823529" cp1x="11.588235294117647" cp1y="3.117647058823529" cp2x="11.588235294117647" cp2y="3.117647058823529"/>
151.3583 + <point x="14.0" y="3.0882352941176467" cp1x="14.0" cp1y="3.0882352941176467" cp2x="14.0" cp2y="3.0882352941176467"/>
151.3584 + <point x="8.941176470588236" y="13.029411764705882" cp1x="8.941176470588236" cp1y="13.029411764705882" cp2x="8.941176470588236" cp2y="13.029411764705882"/>
151.3585 + <point x="8.058823529411764" y="13.029411764705882" cp1x="8.058823529411764" cp1y="13.029411764705882" cp2x="8.058823529411764" cp2y="13.029411764705882"/>
151.3586 + </points>
151.3587 + </path>
151.3588 + </shapes>
151.3589 + <effects/>
151.3590 + </layer>
151.3591 + <layer name="Layer 1">
151.3592 + <opacity>1.0</opacity>
151.3593 + <fillOpacity>1.0</fillOpacity>
151.3594 + <blendingMode>NORMAL</blendingMode>
151.3595 + <locked>false</locked>
151.3596 + <visible>true</visible>
151.3597 + <shapes>
151.3598 + <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
151.3599 + <gradient cycleMethod="NO_CYCLE">
151.3600 + <stop position="0.0" midpoint="0.5">
151.3601 + <matte red="246" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
151.3602 + </stop>
151.3603 + <stop position="0.64457834" midpoint="0.5">
151.3604 + <matte red="166" green="187" blue="206" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.44153953" brightnessOffset="0.2588235" alphaOffset="0"/>
151.3605 + </stop>
151.3606 + <stop position="1.0" midpoint="0.5">
151.3607 + <matte red="188" green="209" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4602757" brightnessOffset="0.34509802" alphaOffset="0"/>
151.3608 + </stop>
151.3609 + </gradient>
151.3610 + <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
151.3611 + </rectangle>
151.3612 + <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
151.3613 + <gradient cycleMethod="NO_CYCLE">
151.3614 + <stop position="0.0" midpoint="0.5">
151.3615 + <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
151.3616 + </stop>
151.3617 + <stop position="1.0" midpoint="0.5">
151.3618 + <matte red="35" green="56" blue="75" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.10238093" brightnessOffset="-0.25490198" alphaOffset="0"/>
151.3619 + </stop>
151.3620 + </gradient>
151.3621 + <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
151.3622 + </rectangle>
151.3623 + <rectangle x1="2.0" x2="16.0" y1="11.0" y2="17.0" rounding="5.176470588235279">
151.3624 + <matte red="169" green="176" blue="190" alpha="166" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-89"/>
151.3625 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.3626 + </rectangle>
151.3627 + </shapes>
151.3628 + <effects/>
151.3629 + </layer>
151.3630 + <templateLayer fileName="1138ed19809.png">
151.3631 + <layer name="Template" type="template">
151.3632 + <opacity>1.0</opacity>
151.3633 + <fillOpacity>1.0</fillOpacity>
151.3634 + <blendingMode>NORMAL</blendingMode>
151.3635 + <locked>false</locked>
151.3636 + <visible>true</visible>
151.3637 + <shapes/>
151.3638 + <effects/>
151.3639 + </layer>
151.3640 + </templateLayer>
151.3641 + </canvas>
151.3642 + </state>
151.3643 + <state stateKeys="Selected+Focused">
151.3644 + <style>
151.3645 + <textForeground/>
151.3646 + <textBackground/>
151.3647 + <background/>
151.3648 + <uiproperties/>
151.3649 + </style>
151.3650 + <canvas>
151.3651 + <size width="18" height="18"/>
151.3652 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.3653 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.3654 + <layer name="Layer 2">
151.3655 + <opacity>1.0</opacity>
151.3656 + <fillOpacity>1.0</fillOpacity>
151.3657 + <blendingMode>NORMAL</blendingMode>
151.3658 + <locked>false</locked>
151.3659 + <visible>true</visible>
151.3660 + <shapes>
151.3661 + <path>
151.3662 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.3663 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.3664 + <points>
151.3665 + <point x="5.029411764705882" y="8.058823529411764" cp1x="5.029411764705882" cp1y="8.058823529411764" cp2x="5.029411764705882" cp2y="8.058823529411764"/>
151.3666 + <point x="7.029411764705882" y="8.058823529411764" cp1x="7.029411764705882" cp1y="8.058823529411764" cp2x="7.029411764705882" cp2y="8.058823529411764"/>
151.3667 + <point x="8.441176470588236" y="11.058823529411764" cp1x="8.441176470588236" cp1y="11.058823529411764" cp2x="8.441176470588236" cp2y="11.058823529411764"/>
151.3668 + <point x="11.588235294117647" y="3.117647058823529" cp1x="11.588235294117647" cp1y="3.117647058823529" cp2x="11.588235294117647" cp2y="3.117647058823529"/>
151.3669 + <point x="14.0" y="3.0882352941176467" cp1x="14.0" cp1y="3.0882352941176467" cp2x="14.0" cp2y="3.0882352941176467"/>
151.3670 + <point x="8.941176470588236" y="13.029411764705882" cp1x="8.941176470588236" cp1y="13.029411764705882" cp2x="8.941176470588236" cp2y="13.029411764705882"/>
151.3671 + <point x="8.058823529411764" y="13.029411764705882" cp1x="8.058823529411764" cp1y="13.029411764705882" cp2x="8.058823529411764" cp2y="13.029411764705882"/>
151.3672 + </points>
151.3673 + </path>
151.3674 + </shapes>
151.3675 + <effects/>
151.3676 + </layer>
151.3677 + <layer name="Layer 1">
151.3678 + <opacity>1.0</opacity>
151.3679 + <fillOpacity>1.0</fillOpacity>
151.3680 + <blendingMode>NORMAL</blendingMode>
151.3681 + <locked>false</locked>
151.3682 + <visible>true</visible>
151.3683 + <shapes>
151.3684 + <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
151.3685 + <gradient cycleMethod="NO_CYCLE">
151.3686 + <stop position="0.0" midpoint="0.5">
151.3687 + <matte red="246" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
151.3688 + </stop>
151.3689 + <stop position="0.64457834" midpoint="0.5">
151.3690 + <matte red="166" green="187" blue="206" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.44153953" brightnessOffset="0.2588235" alphaOffset="0"/>
151.3691 + </stop>
151.3692 + <stop position="1.0" midpoint="0.5">
151.3693 + <matte red="188" green="209" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4602757" brightnessOffset="0.34509802" alphaOffset="0"/>
151.3694 + </stop>
151.3695 + </gradient>
151.3696 + <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
151.3697 + </rectangle>
151.3698 + <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
151.3699 + <gradient cycleMethod="NO_CYCLE">
151.3700 + <stop position="0.0" midpoint="0.5">
151.3701 + <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
151.3702 + </stop>
151.3703 + <stop position="1.0" midpoint="0.5">
151.3704 + <matte red="35" green="56" blue="75" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.10238093" brightnessOffset="-0.25490198" alphaOffset="0"/>
151.3705 + </stop>
151.3706 + </gradient>
151.3707 + <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
151.3708 + </rectangle>
151.3709 + <rectangle x1="0.6" x2="17.4" y1="0.6" y2="17.4" rounding="7.999999999999999">
151.3710 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.3711 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.3712 + </rectangle>
151.3713 + </shapes>
151.3714 + <effects/>
151.3715 + </layer>
151.3716 + </canvas>
151.3717 + </state>
151.3718 + <state stateKeys="Pressed+Selected">
151.3719 + <style>
151.3720 + <textForeground/>
151.3721 + <textBackground/>
151.3722 + <background/>
151.3723 + <uiproperties/>
151.3724 + </style>
151.3725 + <canvas>
151.3726 + <size width="18" height="18"/>
151.3727 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.3728 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.3729 + <layer name="Layer 2">
151.3730 + <opacity>1.0</opacity>
151.3731 + <fillOpacity>1.0</fillOpacity>
151.3732 + <blendingMode>NORMAL</blendingMode>
151.3733 + <locked>false</locked>
151.3734 + <visible>true</visible>
151.3735 + <shapes>
151.3736 + <path>
151.3737 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.3738 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.3739 + <points>
151.3740 + <point x="5.029411764705882" y="8.058823529411764" cp1x="5.029411764705882" cp1y="8.058823529411764" cp2x="5.029411764705882" cp2y="8.058823529411764"/>
151.3741 + <point x="7.029411764705882" y="8.058823529411764" cp1x="7.029411764705882" cp1y="8.058823529411764" cp2x="7.029411764705882" cp2y="8.058823529411764"/>
151.3742 + <point x="8.441176470588236" y="11.058823529411764" cp1x="8.441176470588236" cp1y="11.058823529411764" cp2x="8.441176470588236" cp2y="11.058823529411764"/>
151.3743 + <point x="11.588235294117647" y="3.117647058823529" cp1x="11.588235294117647" cp1y="3.117647058823529" cp2x="11.588235294117647" cp2y="3.117647058823529"/>
151.3744 + <point x="14.0" y="3.0882352941176467" cp1x="14.0" cp1y="3.0882352941176467" cp2x="14.0" cp2y="3.0882352941176467"/>
151.3745 + <point x="8.941176470588236" y="13.029411764705882" cp1x="8.941176470588236" cp1y="13.029411764705882" cp2x="8.941176470588236" cp2y="13.029411764705882"/>
151.3746 + <point x="8.058823529411764" y="13.029411764705882" cp1x="8.058823529411764" cp1y="13.029411764705882" cp2x="8.058823529411764" cp2y="13.029411764705882"/>
151.3747 + </points>
151.3748 + </path>
151.3749 + </shapes>
151.3750 + <effects/>
151.3751 + </layer>
151.3752 + <layer name="Layer 1">
151.3753 + <opacity>1.0</opacity>
151.3754 + <fillOpacity>1.0</fillOpacity>
151.3755 + <blendingMode>NORMAL</blendingMode>
151.3756 + <locked>false</locked>
151.3757 + <visible>true</visible>
151.3758 + <shapes>
151.3759 + <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
151.3760 + <gradient cycleMethod="NO_CYCLE">
151.3761 + <stop position="0.0" midpoint="0.5">
151.3762 + <matte red="143" green="169" blue="192" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
151.3763 + </stop>
151.3764 + <stop position="0.11550152" midpoint="0.5">
151.3765 + <matte red="115" green="148" blue="176" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0021489263" saturationOffset="-0.2891234" brightnessOffset="0.14117646" alphaOffset="0"/>
151.3766 + </stop>
151.3767 + <stop position="0.64457834" midpoint="0.5">
151.3768 + <matte red="51" green="98" blue="134" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.006362498" saturationOffset="-0.016311288" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.3769 + </stop>
151.3770 + <stop position="1.0" midpoint="0.5">
151.3771 + <matte red="106" green="153" blue="195" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.17930403" brightnessOffset="0.21568626" alphaOffset="0"/>
151.3772 + </stop>
151.3773 + </gradient>
151.3774 + <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
151.3775 + </rectangle>
151.3776 + <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
151.3777 + <gradient cycleMethod="NO_CYCLE">
151.3778 + <stop position="0.0" midpoint="0.5">
151.3779 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.3780 + </stop>
151.3781 + <stop position="1.0" midpoint="0.5">
151.3782 + <matte red="27" green="55" blue="80" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.026785731" brightnessOffset="-0.23529413" alphaOffset="0"/>
151.3783 + </stop>
151.3784 + </gradient>
151.3785 + <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
151.3786 + </rectangle>
151.3787 + <rectangle x1="2.0" x2="16.0" y1="11.0" y2="17.0" rounding="5.176470588235279">
151.3788 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.3789 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.3790 + </rectangle>
151.3791 + </shapes>
151.3792 + <effects/>
151.3793 + </layer>
151.3794 + </canvas>
151.3795 + </state>
151.3796 + <state stateKeys="Pressed+Selected+Focused">
151.3797 + <style>
151.3798 + <textForeground/>
151.3799 + <textBackground/>
151.3800 + <background/>
151.3801 + <uiproperties/>
151.3802 + </style>
151.3803 + <canvas>
151.3804 + <size width="18" height="18"/>
151.3805 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.3806 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.3807 + <layer name="Layer 2">
151.3808 + <opacity>1.0</opacity>
151.3809 + <fillOpacity>1.0</fillOpacity>
151.3810 + <blendingMode>NORMAL</blendingMode>
151.3811 + <locked>false</locked>
151.3812 + <visible>true</visible>
151.3813 + <shapes>
151.3814 + <path>
151.3815 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.3816 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.3817 + <points>
151.3818 + <point x="5.029411764705882" y="8.058823529411764" cp1x="5.029411764705882" cp1y="8.058823529411764" cp2x="5.029411764705882" cp2y="8.058823529411764"/>
151.3819 + <point x="7.029411764705882" y="8.058823529411764" cp1x="7.029411764705882" cp1y="8.058823529411764" cp2x="7.029411764705882" cp2y="8.058823529411764"/>
151.3820 + <point x="8.441176470588236" y="11.058823529411764" cp1x="8.441176470588236" cp1y="11.058823529411764" cp2x="8.441176470588236" cp2y="11.058823529411764"/>
151.3821 + <point x="11.588235294117647" y="3.117647058823529" cp1x="11.588235294117647" cp1y="3.117647058823529" cp2x="11.588235294117647" cp2y="3.117647058823529"/>
151.3822 + <point x="14.0" y="3.0882352941176467" cp1x="14.0" cp1y="3.0882352941176467" cp2x="14.0" cp2y="3.0882352941176467"/>
151.3823 + <point x="8.941176470588236" y="13.029411764705882" cp1x="8.941176470588236" cp1y="13.029411764705882" cp2x="8.941176470588236" cp2y="13.029411764705882"/>
151.3824 + <point x="8.058823529411764" y="13.029411764705882" cp1x="8.058823529411764" cp1y="13.029411764705882" cp2x="8.058823529411764" cp2y="13.029411764705882"/>
151.3825 + </points>
151.3826 + </path>
151.3827 + </shapes>
151.3828 + <effects/>
151.3829 + </layer>
151.3830 + <layer name="Layer 1">
151.3831 + <opacity>1.0</opacity>
151.3832 + <fillOpacity>1.0</fillOpacity>
151.3833 + <blendingMode>NORMAL</blendingMode>
151.3834 + <locked>false</locked>
151.3835 + <visible>true</visible>
151.3836 + <shapes>
151.3837 + <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
151.3838 + <gradient cycleMethod="NO_CYCLE">
151.3839 + <stop position="0.0" midpoint="0.5">
151.3840 + <matte red="143" green="169" blue="192" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
151.3841 + </stop>
151.3842 + <stop position="0.11550152" midpoint="0.5">
151.3843 + <matte red="115" green="148" blue="176" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0021489263" saturationOffset="-0.2891234" brightnessOffset="0.14117646" alphaOffset="0"/>
151.3844 + </stop>
151.3845 + <stop position="0.64457834" midpoint="0.5">
151.3846 + <matte red="51" green="98" blue="134" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.006362498" saturationOffset="-0.016311288" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.3847 + </stop>
151.3848 + <stop position="1.0" midpoint="0.5">
151.3849 + <matte red="106" green="153" blue="195" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.17930403" brightnessOffset="0.21568626" alphaOffset="0"/>
151.3850 + </stop>
151.3851 + </gradient>
151.3852 + <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
151.3853 + </rectangle>
151.3854 + <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
151.3855 + <gradient cycleMethod="NO_CYCLE">
151.3856 + <stop position="0.0" midpoint="0.5">
151.3857 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.3858 + </stop>
151.3859 + <stop position="1.0" midpoint="0.5">
151.3860 + <matte red="27" green="55" blue="80" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.026785731" brightnessOffset="-0.23529413" alphaOffset="0"/>
151.3861 + </stop>
151.3862 + </gradient>
151.3863 + <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
151.3864 + </rectangle>
151.3865 + <rectangle x1="0.6" x2="17.4" y1="0.6" y2="17.4" rounding="7.999999999999999">
151.3866 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.3867 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.3868 + </rectangle>
151.3869 + </shapes>
151.3870 + <effects/>
151.3871 + </layer>
151.3872 + </canvas>
151.3873 + </state>
151.3874 + <state stateKeys="MouseOver+Selected">
151.3875 + <style>
151.3876 + <textForeground/>
151.3877 + <textBackground/>
151.3878 + <background/>
151.3879 + <uiproperties/>
151.3880 + </style>
151.3881 + <canvas>
151.3882 + <size width="18" height="18"/>
151.3883 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.3884 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.3885 + <layer name="Layer 2">
151.3886 + <opacity>1.0</opacity>
151.3887 + <fillOpacity>1.0</fillOpacity>
151.3888 + <blendingMode>NORMAL</blendingMode>
151.3889 + <locked>false</locked>
151.3890 + <visible>true</visible>
151.3891 + <shapes>
151.3892 + <path>
151.3893 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.3894 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.3895 + <points>
151.3896 + <point x="5.029411764705882" y="8.058823529411764" cp1x="5.029411764705882" cp1y="8.058823529411764" cp2x="5.029411764705882" cp2y="8.058823529411764"/>
151.3897 + <point x="7.029411764705882" y="8.058823529411764" cp1x="7.029411764705882" cp1y="8.058823529411764" cp2x="7.029411764705882" cp2y="8.058823529411764"/>
151.3898 + <point x="8.441176470588236" y="11.058823529411764" cp1x="8.441176470588236" cp1y="11.058823529411764" cp2x="8.441176470588236" cp2y="11.058823529411764"/>
151.3899 + <point x="11.588235294117647" y="3.117647058823529" cp1x="11.588235294117647" cp1y="3.117647058823529" cp2x="11.588235294117647" cp2y="3.117647058823529"/>
151.3900 + <point x="14.0" y="3.0882352941176467" cp1x="14.0" cp1y="3.0882352941176467" cp2x="14.0" cp2y="3.0882352941176467"/>
151.3901 + <point x="8.941176470588236" y="13.029411764705882" cp1x="8.941176470588236" cp1y="13.029411764705882" cp2x="8.941176470588236" cp2y="13.029411764705882"/>
151.3902 + <point x="8.058823529411764" y="13.029411764705882" cp1x="8.058823529411764" cp1y="13.029411764705882" cp2x="8.058823529411764" cp2y="13.029411764705882"/>
151.3903 + </points>
151.3904 + </path>
151.3905 + </shapes>
151.3906 + <effects/>
151.3907 + </layer>
151.3908 + <layer name="Layer 1">
151.3909 + <opacity>1.0</opacity>
151.3910 + <fillOpacity>1.0</fillOpacity>
151.3911 + <blendingMode>NORMAL</blendingMode>
151.3912 + <locked>false</locked>
151.3913 + <visible>true</visible>
151.3914 + <shapes>
151.3915 + <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
151.3916 + <gradient cycleMethod="NO_CYCLE">
151.3917 + <stop position="0.0" midpoint="0.5">
151.3918 + <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
151.3919 + </stop>
151.3920 + <stop position="0.64457834" midpoint="0.5">
151.3921 + <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
151.3922 + </stop>
151.3923 + <stop position="1.0" midpoint="0.5">
151.3924 + <matte red="207" green="228" blue="247" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.47377098" brightnessOffset="0.41960782" alphaOffset="0"/>
151.3925 + </stop>
151.3926 + </gradient>
151.3927 + <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
151.3928 + </rectangle>
151.3929 + <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
151.3930 + <gradient cycleMethod="NO_CYCLE">
151.3931 + <stop position="0.0" midpoint="0.5">
151.3932 + <matte red="59" green="85" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.1769987" brightnessOffset="-0.12156865" alphaOffset="0"/>
151.3933 + </stop>
151.3934 + <stop position="1.0" midpoint="0.5">
151.3935 + <matte red="0" green="6" blue="30" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.05468172" saturationOffset="0.3642857" brightnessOffset="-0.43137258" alphaOffset="0"/>
151.3936 + </stop>
151.3937 + </gradient>
151.3938 + <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
151.3939 + </rectangle>
151.3940 + <rectangle x1="2.0" x2="16.0" y1="11.0" y2="17.0" rounding="5.176470588235279">
151.3941 + <matte red="169" green="176" blue="190" alpha="166" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-89"/>
151.3942 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.3943 + </rectangle>
151.3944 + </shapes>
151.3945 + <effects/>
151.3946 + </layer>
151.3947 + </canvas>
151.3948 + </state>
151.3949 + <state stateKeys="MouseOver+Selected+Focused">
151.3950 + <style>
151.3951 + <textForeground/>
151.3952 + <textBackground/>
151.3953 + <background/>
151.3954 + <uiproperties/>
151.3955 + </style>
151.3956 + <canvas>
151.3957 + <size width="18" height="18"/>
151.3958 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.3959 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.3960 + <layer name="Layer 2">
151.3961 + <opacity>1.0</opacity>
151.3962 + <fillOpacity>1.0</fillOpacity>
151.3963 + <blendingMode>NORMAL</blendingMode>
151.3964 + <locked>false</locked>
151.3965 + <visible>true</visible>
151.3966 + <shapes>
151.3967 + <path>
151.3968 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.3969 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.3970 + <points>
151.3971 + <point x="5.029411764705882" y="8.058823529411764" cp1x="5.029411764705882" cp1y="8.058823529411764" cp2x="5.029411764705882" cp2y="8.058823529411764"/>
151.3972 + <point x="7.029411764705882" y="8.058823529411764" cp1x="7.029411764705882" cp1y="8.058823529411764" cp2x="7.029411764705882" cp2y="8.058823529411764"/>
151.3973 + <point x="8.441176470588236" y="11.058823529411764" cp1x="8.441176470588236" cp1y="11.058823529411764" cp2x="8.441176470588236" cp2y="11.058823529411764"/>
151.3974 + <point x="11.588235294117647" y="3.117647058823529" cp1x="11.588235294117647" cp1y="3.117647058823529" cp2x="11.588235294117647" cp2y="3.117647058823529"/>
151.3975 + <point x="14.0" y="3.0882352941176467" cp1x="14.0" cp1y="3.0882352941176467" cp2x="14.0" cp2y="3.0882352941176467"/>
151.3976 + <point x="8.941176470588236" y="13.029411764705882" cp1x="8.941176470588236" cp1y="13.029411764705882" cp2x="8.941176470588236" cp2y="13.029411764705882"/>
151.3977 + <point x="8.058823529411764" y="13.029411764705882" cp1x="8.058823529411764" cp1y="13.029411764705882" cp2x="8.058823529411764" cp2y="13.029411764705882"/>
151.3978 + </points>
151.3979 + </path>
151.3980 + </shapes>
151.3981 + <effects/>
151.3982 + </layer>
151.3983 + <layer name="Layer 1">
151.3984 + <opacity>1.0</opacity>
151.3985 + <fillOpacity>1.0</fillOpacity>
151.3986 + <blendingMode>NORMAL</blendingMode>
151.3987 + <locked>false</locked>
151.3988 + <visible>true</visible>
151.3989 + <shapes>
151.3990 + <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
151.3991 + <gradient cycleMethod="NO_CYCLE">
151.3992 + <stop position="0.0" midpoint="0.5">
151.3993 + <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
151.3994 + </stop>
151.3995 + <stop position="0.64457834" midpoint="0.5">
151.3996 + <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
151.3997 + </stop>
151.3998 + <stop position="1.0" midpoint="0.5">
151.3999 + <matte red="207" green="228" blue="247" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.47377098" brightnessOffset="0.41960782" alphaOffset="0"/>
151.4000 + </stop>
151.4001 + </gradient>
151.4002 + <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
151.4003 + </rectangle>
151.4004 + <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
151.4005 + <gradient cycleMethod="NO_CYCLE">
151.4006 + <stop position="0.0" midpoint="0.5">
151.4007 + <matte red="59" green="85" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.1769987" brightnessOffset="-0.12156865" alphaOffset="0"/>
151.4008 + </stop>
151.4009 + <stop position="1.0" midpoint="0.5">
151.4010 + <matte red="0" green="6" blue="30" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.05468172" saturationOffset="0.3642857" brightnessOffset="-0.43137258" alphaOffset="0"/>
151.4011 + </stop>
151.4012 + </gradient>
151.4013 + <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
151.4014 + </rectangle>
151.4015 + <rectangle x1="0.6" x2="17.4" y1="0.6" y2="17.4" rounding="7.999999999999999">
151.4016 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.4017 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.4018 + </rectangle>
151.4019 + </shapes>
151.4020 + <effects/>
151.4021 + </layer>
151.4022 + </canvas>
151.4023 + </state>
151.4024 + <state stateKeys="Disabled+Selected">
151.4025 + <style>
151.4026 + <textForeground/>
151.4027 + <textBackground/>
151.4028 + <background/>
151.4029 + <uiproperties/>
151.4030 + </style>
151.4031 + <canvas>
151.4032 + <size width="18" height="18"/>
151.4033 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.4034 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.4035 + <layer name="Layer 2">
151.4036 + <opacity>1.0</opacity>
151.4037 + <fillOpacity>1.0</fillOpacity>
151.4038 + <blendingMode>NORMAL</blendingMode>
151.4039 + <locked>false</locked>
151.4040 + <visible>true</visible>
151.4041 + <shapes>
151.4042 + <path>
151.4043 + <matte red="166" green="170" blue="177" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.5735674" brightnessOffset="0.14509803" alphaOffset="0"/>
151.4044 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.4045 + <points>
151.4046 + <point x="5.029411764705882" y="8.058823529411764" cp1x="5.029411764705882" cp1y="8.058823529411764" cp2x="5.029411764705882" cp2y="8.058823529411764"/>
151.4047 + <point x="7.029411764705882" y="8.058823529411764" cp1x="7.029411764705882" cp1y="8.058823529411764" cp2x="7.029411764705882" cp2y="8.058823529411764"/>
151.4048 + <point x="8.441176470588236" y="11.058823529411764" cp1x="8.441176470588236" cp1y="11.058823529411764" cp2x="8.441176470588236" cp2y="11.058823529411764"/>
151.4049 + <point x="11.588235294117647" y="3.117647058823529" cp1x="11.588235294117647" cp1y="3.117647058823529" cp2x="11.588235294117647" cp2y="3.117647058823529"/>
151.4050 + <point x="14.0" y="3.0882352941176467" cp1x="14.0" cp1y="3.0882352941176467" cp2x="14.0" cp2y="3.0882352941176467"/>
151.4051 + <point x="8.941176470588236" y="13.029411764705882" cp1x="8.941176470588236" cp1y="13.029411764705882" cp2x="8.941176470588236" cp2y="13.029411764705882"/>
151.4052 + <point x="8.058823529411764" y="13.029411764705882" cp1x="8.058823529411764" cp1y="13.029411764705882" cp2x="8.058823529411764" cp2y="13.029411764705882"/>
151.4053 + </points>
151.4054 + </path>
151.4055 + </shapes>
151.4056 + <effects/>
151.4057 + </layer>
151.4058 + <layer name="Layer 1">
151.4059 + <opacity>1.0</opacity>
151.4060 + <fillOpacity>1.0</fillOpacity>
151.4061 + <blendingMode>NORMAL</blendingMode>
151.4062 + <locked>false</locked>
151.4063 + <visible>true</visible>
151.4064 + <shapes>
151.4065 + <rectangle x1="3.0" x2="15.0" y1="3.0" y2="15.0" rounding="3.764705882352935">
151.4066 + <gradient cycleMethod="NO_CYCLE">
151.4067 + <stop position="0.0" midpoint="0.5">
151.4068 + <matte red="220" green="224" blue="230" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.59223604" brightnessOffset="0.35294116" alphaOffset="0"/>
151.4069 + </stop>
151.4070 + <stop position="0.64457834" midpoint="0.5">
151.4071 + <matte red="204" green="210" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56722116" brightnessOffset="0.3098039" alphaOffset="0"/>
151.4072 + </stop>
151.4073 + <stop position="1.0" midpoint="0.5">
151.4074 + <matte red="209" green="215" blue="224" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56875" brightnessOffset="0.32941175" alphaOffset="0"/>
151.4075 + </stop>
151.4076 + </gradient>
151.4077 + <paintPoints x1="0.25" y1="0.0" x2="0.2500000000000003" y2="0.9975490196078431"/>
151.4078 + </rectangle>
151.4079 + <rectangle x1="2.0" x2="16.0" y1="2.0" y2="16.0" rounding="3.705882352941174">
151.4080 + <gradient cycleMethod="NO_CYCLE">
151.4081 + <stop position="0.0" midpoint="0.5">
151.4082 + <matte red="191" green="197" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.03771078" brightnessOffset="0.062745094" alphaOffset="0"/>
151.4083 + </stop>
151.4084 + <stop position="1.0" midpoint="0.5">
151.4085 + <matte red="178" green="185" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.02222222" saturationOffset="-0.032806106" brightnessOffset="0.011764705" alphaOffset="0"/>
151.4086 + </stop>
151.4087 + </gradient>
151.4088 + <paintPoints x1="0.25" y1="0.0" x2="0.25210084033613445" y2="0.9957983193277311"/>
151.4089 + </rectangle>
151.4090 + </shapes>
151.4091 + <effects/>
151.4092 + </layer>
151.4093 + </canvas>
151.4094 + </state>
151.4095 + </backgroundStates>
151.4096 + <foregroundStates/>
151.4097 + <borderStates/>
151.4098 + <regions/>
151.4099 + </uiIconRegion>
151.4100 + </regions>
151.4101 + </uiComponent>
151.4102 + <uiComponent opaque="false" type="javax.swing.JColorChooser" name="ColorChooser" ui="ColorChooserUI" subregion="false">
151.4103 + <stateTypes/>
151.4104 + <contentMargins top="5" bottom="0" left="0" right="0"/>
151.4105 + <style>
151.4106 + <textForeground/>
151.4107 + <textBackground/>
151.4108 + <background/>
151.4109 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.4110 + <cacheMode>NO_CACHING</cacheMode>
151.4111 + <uiproperties>
151.4112 + <uiProperty name="swatchesDefaultRecentColor" type="COLOR">
151.4113 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.4114 + </uiProperty>
151.4115 + </uiproperties>
151.4116 + </style>
151.4117 + <backgroundStates/>
151.4118 + <foregroundStates/>
151.4119 + <borderStates/>
151.4120 + <regions>
151.4121 + <uiComponent opaque="false" componentName="ColorChooser.previewPanelHolder" type="javax.swing.JPanel" name="Panel" ui="PanelUI" subregion="true">
151.4122 + <stateTypes/>
151.4123 + <contentMargins top="0" bottom="10" left="5" right="5"/>
151.4124 + <style>
151.4125 + <textForeground/>
151.4126 + <textBackground/>
151.4127 + <background/>
151.4128 + <uiproperties/>
151.4129 + </style>
151.4130 + <backgroundStates>
151.4131 + <state stateKeys="Enabled">
151.4132 + <style>
151.4133 + <textForeground/>
151.4134 + <textBackground/>
151.4135 + <background/>
151.4136 + <uiproperties/>
151.4137 + </style>
151.4138 + <canvas>
151.4139 + <size width="100" height="30"/>
151.4140 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.4141 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.4142 + <layer name="Layer 1">
151.4143 + <opacity>1.0</opacity>
151.4144 + <fillOpacity>1.0</fillOpacity>
151.4145 + <blendingMode>NORMAL</blendingMode>
151.4146 + <locked>false</locked>
151.4147 + <visible>true</visible>
151.4148 + <shapes/>
151.4149 + <effects/>
151.4150 + </layer>
151.4151 + </canvas>
151.4152 + </state>
151.4153 + </backgroundStates>
151.4154 + <foregroundStates/>
151.4155 + <borderStates/>
151.4156 + <regions>
151.4157 + <uiComponent opaque="false" componentName="OptionPane.label" type="javax.swing.JLabel" name="Label" ui="LabelUI" subregion="true">
151.4158 + <stateTypes/>
151.4159 + <contentMargins top="0" bottom="10" left="10" right="10"/>
151.4160 + <style>
151.4161 + <textForeground/>
151.4162 + <textBackground/>
151.4163 + <background/>
151.4164 + <uiproperties/>
151.4165 + </style>
151.4166 + <backgroundStates>
151.4167 + <state stateKeys="Enabled">
151.4168 + <style>
151.4169 + <textForeground/>
151.4170 + <textBackground/>
151.4171 + <background/>
151.4172 + <uiproperties/>
151.4173 + </style>
151.4174 + <canvas>
151.4175 + <size width="100" height="30"/>
151.4176 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.4177 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.4178 + <layer name="Layer 1">
151.4179 + <opacity>1.0</opacity>
151.4180 + <fillOpacity>1.0</fillOpacity>
151.4181 + <blendingMode>NORMAL</blendingMode>
151.4182 + <locked>false</locked>
151.4183 + <visible>true</visible>
151.4184 + <shapes/>
151.4185 + <effects/>
151.4186 + </layer>
151.4187 + </canvas>
151.4188 + </state>
151.4189 + </backgroundStates>
151.4190 + <foregroundStates/>
151.4191 + <borderStates/>
151.4192 + <regions/>
151.4193 + </uiComponent>
151.4194 + </regions>
151.4195 + </uiComponent>
151.4196 + </regions>
151.4197 + </uiComponent>
151.4198 + <uiComponent opaque="false" type="javax.swing.JComboBox" name="ComboBox" ui="ComboBoxUI" subregion="false">
151.4199 + <stateTypes>
151.4200 + <stateType key="Enabled"/>
151.4201 + <stateType key="MouseOver"/>
151.4202 + <stateType key="Pressed"/>
151.4203 + <stateType key="Selected"/>
151.4204 + <stateType key="Disabled"/>
151.4205 + <stateType key="Focused"/>
151.4206 + <stateType key="Editable">
151.4207 + <codeSnippet><![CDATA[
151.4208 + return ((JComboBox)c).isEditable();]]></codeSnippet>
151.4209 + </stateType>
151.4210 + </stateTypes>
151.4211 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.4212 + <style>
151.4213 + <textForeground/>
151.4214 + <textBackground/>
151.4215 + <background/>
151.4216 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.4217 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.4218 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.4219 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.4220 + <uiproperties>
151.4221 + <uiProperty name="forceOpaque" type="BOOLEAN" value="true"/>
151.4222 + <uiProperty name="buttonWhenNotEditable" type="BOOLEAN" value="true"/>
151.4223 + <uiProperty name="rendererUseListColors" type="BOOLEAN" value="false"/>
151.4224 + <uiProperty name="pressedWhenPopupVisible" type="BOOLEAN" value="true"/>
151.4225 + <uiProperty name="squareButton" type="BOOLEAN" value="false"/>
151.4226 + <uiProperty name="popupInsets" type="INSETS">
151.4227 + <insets top="-2" bottom="0" left="2" right="2"/>
151.4228 + </uiProperty>
151.4229 + <uiProperty name="padding" type="INSETS">
151.4230 + <insets top="3" bottom="3" left="3" right="3"/>
151.4231 + </uiProperty>
151.4232 + </uiproperties>
151.4233 + </style>
151.4234 + <backgroundStates>
151.4235 + <state stateKeys="Disabled">
151.4236 + <style>
151.4237 + <textForeground/>
151.4238 + <textBackground/>
151.4239 + <background/>
151.4240 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.4241 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.4242 + <uiproperties/>
151.4243 + </style>
151.4244 + <canvas>
151.4245 + <size width="83" height="24"/>
151.4246 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.4247 + <stretchingInsets top="8" bottom="8" left="9" right="19"/>
151.4248 + <layer name="Layer 1">
151.4249 + <opacity>1.0</opacity>
151.4250 + <fillOpacity>1.0</fillOpacity>
151.4251 + <blendingMode>NORMAL</blendingMode>
151.4252 + <locked>false</locked>
151.4253 + <visible>true</visible>
151.4254 + <shapes>
151.4255 + <path>
151.4256 + <gradient cycleMethod="NO_CYCLE">
151.4257 + <stop position="0.0" midpoint="0.5">
151.4258 + <matte red="220" green="224" blue="230" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.59223604" brightnessOffset="0.35294116" alphaOffset="0"/>
151.4259 + </stop>
151.4260 + <stop position="0.34375" midpoint="0.5">
151.4261 + <matte red="210" green="215" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.02391243" saturationOffset="-0.5774183" brightnessOffset="0.32549018" alphaOffset="0"/>
151.4262 + </stop>
151.4263 + <stop position="0.6193182" midpoint="0.5">
151.4264 + <matte red="204" green="210" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56722116" brightnessOffset="0.3098039" alphaOffset="0"/>
151.4265 + </stop>
151.4266 + <stop position="1.0" midpoint="0.5">
151.4267 + <matte red="206" green="212" blue="221" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.567841" brightnessOffset="0.31764704" alphaOffset="0"/>
151.4268 + </stop>
151.4269 + </gradient>
151.4270 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4271 + <points>
151.4272 + <point x="64.25" y="3.0" cp1x="64.25" cp1y="3.0" cp2x="64.25" cp2y="3.0"/>
151.4273 + <point x="75.0" y="3.0" cp1x="75.0" cp1y="3.0" cp2x="79.0" cp2y="3.0"/>
151.4274 + <point x="80.0" y="8.0" cp1x="80.0" cp1y="4.0" cp2x="80.0" cp2y="8.0"/>
151.4275 + <point x="80.0" y="16.0" cp1x="80.0" cp1y="16.0" cp2x="80.0" cp2y="20.0"/>
151.4276 + <point x="75.0" y="21.0" cp1x="79.0" cp1y="21.0" cp2x="75.0" cp2y="21.0"/>
151.4277 + <point x="64.25" y="21.0" cp1x="64.25" cp1y="21.0" cp2x="64.25" cp2y="21.0"/>
151.4278 + </points>
151.4279 + </path>
151.4280 + <path>
151.4281 + <gradient cycleMethod="NO_CYCLE">
151.4282 + <stop position="0.0" midpoint="0.5">
151.4283 + <matte red="191" green="197" blue="206" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56289876" brightnessOffset="0.2588235" alphaOffset="0"/>
151.4284 + </stop>
151.4285 + <stop position="1.0" midpoint="0.5">
151.4286 + <matte red="178" green="185" blue="193" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.010237217" saturationOffset="-0.55799407" brightnessOffset="0.20784312" alphaOffset="0"/>
151.4287 + </stop>
151.4288 + </gradient>
151.4289 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4290 + <points>
151.4291 + <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
151.4292 + <point x="76.0" y="2.0" cp1x="76.0" cp1y="2.0" cp2x="79.0" cp2y="2.0"/>
151.4293 + <point x="81.0" y="7.0" cp1x="81.0" cp1y="4.0" cp2x="81.0" cp2y="7.0"/>
151.4294 + <point x="81.0" y="17.0" cp1x="81.0" cp1y="17.0" cp2x="81.0" cp2y="20.0"/>
151.4295 + <point x="76.0" y="22.0" cp1x="79.0" cp1y="22.0" cp2x="76.0" cp2y="22.0"/>
151.4296 + <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
151.4297 + </points>
151.4298 + </path>
151.4299 + <path>
151.4300 + <gradient cycleMethod="NO_CYCLE">
151.4301 + <stop position="0.0" midpoint="0.5">
151.4302 + <matte red="227" green="229" blue="233" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.60996324" brightnessOffset="0.36470586" alphaOffset="0"/>
151.4303 + </stop>
151.4304 + <stop position="0.4005682" midpoint="0.5">
151.4305 + <matte red="219" green="221" blue="226" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.040395975" saturationOffset="-0.60474086" brightnessOffset="0.33725488" alphaOffset="0"/>
151.4306 + </stop>
151.4307 + <stop position="0.66477275" midpoint="0.5">
151.4308 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5953556" brightnessOffset="0.32549018" alphaOffset="0"/>
151.4309 + </stop>
151.4310 + <stop position="1.0" midpoint="0.5">
151.4311 + <matte red="216" green="219" blue="225" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5957143" brightnessOffset="0.3333333" alphaOffset="0"/>
151.4312 + </stop>
151.4313 + </gradient>
151.4314 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4315 + <points>
151.4316 + <point x="8.0" y="3.0" cp1x="4.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
151.4317 + <point x="64.0" y="3.0" cp1x="64.0" cp1y="3.0" cp2x="64.0" cp2y="3.0"/>
151.4318 + <point x="64.0" y="21.0" cp1x="64.0" cp1y="21.0" cp2x="64.0" cp2y="21.0"/>
151.4319 + <point x="8.0" y="21.0" cp1x="8.0" cp1y="21.0" cp2x="4.0" cp2y="21.0"/>
151.4320 + <point x="3.0" y="16.0" cp1x="3.0" cp1y="20.0" cp2x="3.0" cp2y="16.0"/>
151.4321 + <point x="3.0" y="7.0" cp1x="3.0" cp1y="7.0" cp2x="3.0" cp2y="4.0"/>
151.4322 + </points>
151.4323 + </path>
151.4324 + <path>
151.4325 + <gradient cycleMethod="NO_CYCLE">
151.4326 + <stop position="0.0" midpoint="0.5">
151.4327 + <matte red="201" green="204" blue="210" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5928571" brightnessOffset="0.2745098" alphaOffset="0"/>
151.4328 + </stop>
151.4329 + <stop position="1.0" midpoint="0.5">
151.4330 + <matte red="188" green="191" blue="197" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.590029" brightnessOffset="0.2235294" alphaOffset="0"/>
151.4331 + </stop>
151.4332 + </gradient>
151.4333 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4334 + <points>
151.4335 + <point x="2.0" y="7.0" cp1x="2.0" cp1y="4.0" cp2x="2.0" cp2y="7.0"/>
151.4336 + <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="20.0"/>
151.4337 + <point x="7.0" y="22.0" cp1x="4.0" cp1y="22.0" cp2x="7.0" cp2y="22.0"/>
151.4338 + <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
151.4339 + <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
151.4340 + <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="4.0" cp2y="2.0"/>
151.4341 + </points>
151.4342 + </path>
151.4343 + <path>
151.4344 + <matte red="0" green="0" blue="0" alpha="8" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-247"/>
151.4345 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.4346 + <points>
151.4347 + <point x="2.0" y="16.0" cp1x="2.0" cp1y="16.0" cp2x="2.0" cp2y="16.0"/>
151.4348 + <point x="2.0" y="18.0" cp1x="2.0" cp1y="18.0" cp2x="2.0" cp2y="21.0"/>
151.4349 + <point x="7.0" y="23.0" cp1x="4.0" cp1y="23.0" cp2x="7.0" cp2y="23.0"/>
151.4350 + <point x="76.0" y="23.0" cp1x="76.0" cp1y="23.0" cp2x="79.0" cp2y="23.0"/>
151.4351 + <point x="81.0" y="18.0" cp1x="81.0" cp1y="21.0" cp2x="81.0" cp2y="18.0"/>
151.4352 + <point x="81.0" y="16.0" cp1x="81.0" cp1y="16.0" cp2x="81.0" cp2y="16.0"/>
151.4353 + </points>
151.4354 + </path>
151.4355 + </shapes>
151.4356 + <effects/>
151.4357 + </layer>
151.4358 + <templateLayer fileName="113cff8896a.png">
151.4359 + <layer name="Template" type="template">
151.4360 + <opacity>1.0</opacity>
151.4361 + <fillOpacity>1.0</fillOpacity>
151.4362 + <blendingMode>NORMAL</blendingMode>
151.4363 + <locked>false</locked>
151.4364 + <visible>false</visible>
151.4365 + <shapes/>
151.4366 + <effects/>
151.4367 + </layer>
151.4368 + </templateLayer>
151.4369 + </canvas>
151.4370 + </state>
151.4371 + <state stateKeys="Disabled+Pressed">
151.4372 + <style>
151.4373 + <textForeground/>
151.4374 + <textBackground/>
151.4375 + <background/>
151.4376 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.4377 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.4378 + <uiproperties/>
151.4379 + </style>
151.4380 + <canvas>
151.4381 + <size width="83" height="24"/>
151.4382 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.4383 + <stretchingInsets top="8" bottom="8" left="9" right="19"/>
151.4384 + <layer name="Layer 1">
151.4385 + <opacity>1.0</opacity>
151.4386 + <fillOpacity>1.0</fillOpacity>
151.4387 + <blendingMode>NORMAL</blendingMode>
151.4388 + <locked>false</locked>
151.4389 + <visible>true</visible>
151.4390 + <shapes>
151.4391 + <path>
151.4392 + <gradient cycleMethod="NO_CYCLE">
151.4393 + <stop position="0.0" midpoint="0.5">
151.4394 + <matte red="220" green="224" blue="230" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.59223604" brightnessOffset="0.35294116" alphaOffset="0"/>
151.4395 + </stop>
151.4396 + <stop position="0.34375" midpoint="0.5">
151.4397 + <matte red="210" green="215" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.02391243" saturationOffset="-0.5774183" brightnessOffset="0.32549018" alphaOffset="0"/>
151.4398 + </stop>
151.4399 + <stop position="0.6193182" midpoint="0.5">
151.4400 + <matte red="204" green="210" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56722116" brightnessOffset="0.3098039" alphaOffset="0"/>
151.4401 + </stop>
151.4402 + <stop position="1.0" midpoint="0.5">
151.4403 + <matte red="206" green="212" blue="221" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.567841" brightnessOffset="0.31764704" alphaOffset="0"/>
151.4404 + </stop>
151.4405 + </gradient>
151.4406 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4407 + <points>
151.4408 + <point x="64.25" y="3.0" cp1x="64.25" cp1y="3.0" cp2x="64.25" cp2y="3.0"/>
151.4409 + <point x="75.0" y="3.0" cp1x="75.0" cp1y="3.0" cp2x="79.0" cp2y="3.0"/>
151.4410 + <point x="80.0" y="8.0" cp1x="80.0" cp1y="4.0" cp2x="80.0" cp2y="8.0"/>
151.4411 + <point x="80.0" y="16.0" cp1x="80.0" cp1y="16.0" cp2x="80.0" cp2y="20.0"/>
151.4412 + <point x="75.0" y="21.0" cp1x="79.0" cp1y="21.0" cp2x="75.0" cp2y="21.0"/>
151.4413 + <point x="64.25" y="21.0" cp1x="64.25" cp1y="21.0" cp2x="64.25" cp2y="21.0"/>
151.4414 + </points>
151.4415 + </path>
151.4416 + <path>
151.4417 + <gradient cycleMethod="NO_CYCLE">
151.4418 + <stop position="0.0" midpoint="0.5">
151.4419 + <matte red="191" green="197" blue="206" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56289876" brightnessOffset="0.2588235" alphaOffset="0"/>
151.4420 + </stop>
151.4421 + <stop position="1.0" midpoint="0.5">
151.4422 + <matte red="178" green="185" blue="193" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.010237217" saturationOffset="-0.55799407" brightnessOffset="0.20784312" alphaOffset="0"/>
151.4423 + </stop>
151.4424 + </gradient>
151.4425 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4426 + <points>
151.4427 + <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
151.4428 + <point x="76.0" y="2.0" cp1x="76.0" cp1y="2.0" cp2x="79.0" cp2y="2.0"/>
151.4429 + <point x="81.0" y="7.0" cp1x="81.0" cp1y="4.0" cp2x="81.0" cp2y="7.0"/>
151.4430 + <point x="81.0" y="17.0" cp1x="81.0" cp1y="17.0" cp2x="81.0" cp2y="20.0"/>
151.4431 + <point x="76.0" y="22.0" cp1x="79.0" cp1y="22.0" cp2x="76.0" cp2y="22.0"/>
151.4432 + <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
151.4433 + </points>
151.4434 + </path>
151.4435 + <path>
151.4436 + <gradient cycleMethod="NO_CYCLE">
151.4437 + <stop position="0.0" midpoint="0.5">
151.4438 + <matte red="227" green="229" blue="233" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.60996324" brightnessOffset="0.36470586" alphaOffset="0"/>
151.4439 + </stop>
151.4440 + <stop position="0.4005682" midpoint="0.5">
151.4441 + <matte red="219" green="221" blue="226" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.040395975" saturationOffset="-0.60474086" brightnessOffset="0.33725488" alphaOffset="0"/>
151.4442 + </stop>
151.4443 + <stop position="0.66477275" midpoint="0.5">
151.4444 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5953556" brightnessOffset="0.32549018" alphaOffset="0"/>
151.4445 + </stop>
151.4446 + <stop position="1.0" midpoint="0.5">
151.4447 + <matte red="216" green="219" blue="225" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5957143" brightnessOffset="0.3333333" alphaOffset="0"/>
151.4448 + </stop>
151.4449 + </gradient>
151.4450 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4451 + <points>
151.4452 + <point x="8.0" y="3.0" cp1x="4.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
151.4453 + <point x="64.0" y="3.0" cp1x="64.0" cp1y="3.0" cp2x="64.0" cp2y="3.0"/>
151.4454 + <point x="64.0" y="21.0" cp1x="64.0" cp1y="21.0" cp2x="64.0" cp2y="21.0"/>
151.4455 + <point x="8.0" y="21.0" cp1x="8.0" cp1y="21.0" cp2x="4.0" cp2y="21.0"/>
151.4456 + <point x="3.0" y="16.0" cp1x="3.0" cp1y="20.0" cp2x="3.0" cp2y="16.0"/>
151.4457 + <point x="3.0" y="7.0" cp1x="3.0" cp1y="7.0" cp2x="3.0" cp2y="4.0"/>
151.4458 + </points>
151.4459 + </path>
151.4460 + <path>
151.4461 + <gradient cycleMethod="NO_CYCLE">
151.4462 + <stop position="0.0" midpoint="0.5">
151.4463 + <matte red="201" green="204" blue="210" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5928571" brightnessOffset="0.2745098" alphaOffset="0"/>
151.4464 + </stop>
151.4465 + <stop position="1.0" midpoint="0.5">
151.4466 + <matte red="188" green="191" blue="197" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.590029" brightnessOffset="0.2235294" alphaOffset="0"/>
151.4467 + </stop>
151.4468 + </gradient>
151.4469 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4470 + <points>
151.4471 + <point x="2.0" y="7.0" cp1x="2.0" cp1y="4.0" cp2x="2.0" cp2y="7.0"/>
151.4472 + <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="20.0"/>
151.4473 + <point x="7.0" y="22.0" cp1x="4.0" cp1y="22.0" cp2x="7.0" cp2y="22.0"/>
151.4474 + <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
151.4475 + <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
151.4476 + <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="4.0" cp2y="2.0"/>
151.4477 + </points>
151.4478 + </path>
151.4479 + <path>
151.4480 + <matte red="0" green="0" blue="0" alpha="8" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-247"/>
151.4481 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.4482 + <points>
151.4483 + <point x="2.0" y="16.0" cp1x="2.0" cp1y="16.0" cp2x="2.0" cp2y="16.0"/>
151.4484 + <point x="2.0" y="18.0" cp1x="2.0" cp1y="18.0" cp2x="2.0" cp2y="21.0"/>
151.4485 + <point x="7.0" y="23.0" cp1x="4.0" cp1y="23.0" cp2x="7.0" cp2y="23.0"/>
151.4486 + <point x="76.0" y="23.0" cp1x="76.0" cp1y="23.0" cp2x="79.0" cp2y="23.0"/>
151.4487 + <point x="81.0" y="18.0" cp1x="81.0" cp1y="21.0" cp2x="81.0" cp2y="18.0"/>
151.4488 + <point x="81.0" y="16.0" cp1x="81.0" cp1y="16.0" cp2x="81.0" cp2y="16.0"/>
151.4489 + </points>
151.4490 + </path>
151.4491 + </shapes>
151.4492 + <effects/>
151.4493 + </layer>
151.4494 + <templateLayer fileName="113cff8896a.png">
151.4495 + <layer name="Template" type="template">
151.4496 + <opacity>1.0</opacity>
151.4497 + <fillOpacity>1.0</fillOpacity>
151.4498 + <blendingMode>NORMAL</blendingMode>
151.4499 + <locked>false</locked>
151.4500 + <visible>false</visible>
151.4501 + <shapes/>
151.4502 + <effects/>
151.4503 + </layer>
151.4504 + </templateLayer>
151.4505 + </canvas>
151.4506 + </state>
151.4507 + <state stateKeys="Enabled">
151.4508 + <style>
151.4509 + <textForeground/>
151.4510 + <textBackground/>
151.4511 + <background/>
151.4512 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.4513 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.4514 + <uiproperties/>
151.4515 + </style>
151.4516 + <canvas>
151.4517 + <size width="83" height="24"/>
151.4518 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.4519 + <stretchingInsets top="8" bottom="8" left="9" right="19"/>
151.4520 + <layer name="Layer 1">
151.4521 + <opacity>1.0</opacity>
151.4522 + <fillOpacity>1.0</fillOpacity>
151.4523 + <blendingMode>NORMAL</blendingMode>
151.4524 + <locked>false</locked>
151.4525 + <visible>true</visible>
151.4526 + <shapes>
151.4527 + <path>
151.4528 + <gradient cycleMethod="NO_CYCLE">
151.4529 + <stop position="0.0" midpoint="0.5">
151.4530 + <matte red="246" green="248" blue="250" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
151.4531 + </stop>
151.4532 + <stop position="0.34375" midpoint="0.5">
151.4533 + <matte red="179" green="197" blue="212" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-0.0028941035" saturationOffset="-0.4800539" brightnessOffset="0.28235292" alphaOffset="0"/>
151.4534 + </stop>
151.4535 + <stop position="0.6193182" midpoint="0.5">
151.4536 + <matte red="163" green="184" blue="203" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
151.4537 + </stop>
151.4538 + <stop position="1.0" midpoint="0.5">
151.4539 + <matte red="191" green="212" blue="231" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4625541" brightnessOffset="0.35686272" alphaOffset="0"/>
151.4540 + </stop>
151.4541 + </gradient>
151.4542 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4543 + <points>
151.4544 + <point x="64.25" y="3.0" cp1x="64.25" cp1y="3.0" cp2x="64.25" cp2y="3.0"/>
151.4545 + <point x="75.0" y="3.0" cp1x="75.0" cp1y="3.0" cp2x="79.0" cp2y="3.0"/>
151.4546 + <point x="80.0" y="8.0" cp1x="80.0" cp1y="4.0" cp2x="80.0" cp2y="8.0"/>
151.4547 + <point x="80.0" y="16.0" cp1x="80.0" cp1y="16.0" cp2x="80.0" cp2y="20.0"/>
151.4548 + <point x="75.0" y="21.0" cp1x="79.0" cp1y="21.0" cp2x="75.0" cp2y="21.0"/>
151.4549 + <point x="64.25" y="21.0" cp1x="64.25" cp1y="21.0" cp2x="64.25" cp2y="21.0"/>
151.4550 + </points>
151.4551 + </path>
151.4552 + <path>
151.4553 + <gradient cycleMethod="NO_CYCLE">
151.4554 + <stop position="0.0" midpoint="0.5">
151.4555 + <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
151.4556 + </stop>
151.4557 + <stop position="1.0" midpoint="0.5">
151.4558 + <matte red="34" green="55" blue="74" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.095173776" brightnessOffset="-0.25882354" alphaOffset="0"/>
151.4559 + </stop>
151.4560 + </gradient>
151.4561 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4562 + <points>
151.4563 + <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
151.4564 + <point x="76.0" y="2.0" cp1x="76.0" cp1y="2.0" cp2x="79.0" cp2y="2.0"/>
151.4565 + <point x="81.0" y="7.0" cp1x="81.0" cp1y="4.0" cp2x="81.0" cp2y="7.0"/>
151.4566 + <point x="81.0" y="17.0" cp1x="81.0" cp1y="17.0" cp2x="81.0" cp2y="20.0"/>
151.4567 + <point x="76.0" y="22.0" cp1x="79.0" cp1y="22.0" cp2x="76.0" cp2y="22.0"/>
151.4568 + <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
151.4569 + </points>
151.4570 + </path>
151.4571 + <path>
151.4572 + <gradient cycleMethod="NO_CYCLE">
151.4573 + <stop position="0.0" midpoint="0.5">
151.4574 + <matte red="251" green="251" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.63174605" brightnessOffset="0.43921566" alphaOffset="0"/>
151.4575 + </stop>
151.4576 + <stop position="0.4005682" midpoint="0.5">
151.4577 + <matte red="224" green="226" blue="231" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.040395975" saturationOffset="-0.6054113" brightnessOffset="0.35686272" alphaOffset="0"/>
151.4578 + </stop>
151.4579 + <stop position="0.66477275" midpoint="0.5">
151.4580 + <matte red="214" green="217" blue="223" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5953556" brightnessOffset="0.32549018" alphaOffset="0"/>
151.4581 + </stop>
151.4582 + <stop position="1.0" midpoint="0.5">
151.4583 + <matte red="242" green="245" blue="251" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5998577" brightnessOffset="0.4352941" alphaOffset="0"/>
151.4584 + </stop>
151.4585 + </gradient>
151.4586 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4587 + <points>
151.4588 + <point x="8.0" y="3.0" cp1x="4.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
151.4589 + <point x="64.0" y="3.0" cp1x="64.0" cp1y="3.0" cp2x="64.0" cp2y="3.0"/>
151.4590 + <point x="64.0" y="21.0" cp1x="64.0" cp1y="21.0" cp2x="64.0" cp2y="21.0"/>
151.4591 + <point x="8.0" y="21.0" cp1x="8.0" cp1y="21.0" cp2x="4.0" cp2y="21.0"/>
151.4592 + <point x="3.0" y="16.0" cp1x="3.0" cp1y="20.0" cp2x="3.0" cp2y="16.0"/>
151.4593 + <point x="3.0" y="7.0" cp1x="3.0" cp1y="7.0" cp2x="3.0" cp2y="4.0"/>
151.4594 + </points>
151.4595 + </path>
151.4596 + <path>
151.4597 + <gradient cycleMethod="NO_CYCLE">
151.4598 + <stop position="0.0" midpoint="0.5">
151.4599 + <matte red="149" green="152" blue="158" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5787523" brightnessOffset="0.07058823" alphaOffset="0"/>
151.4600 + </stop>
151.4601 + <stop position="1.0" midpoint="0.5">
151.4602 + <matte red="85" green="88" blue="94" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5399696" brightnessOffset="-0.18039218" alphaOffset="0"/>
151.4603 + </stop>
151.4604 + </gradient>
151.4605 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4606 + <points>
151.4607 + <point x="2.0" y="7.0" cp1x="2.0" cp1y="4.0" cp2x="2.0" cp2y="7.0"/>
151.4608 + <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="20.0"/>
151.4609 + <point x="7.0" y="22.0" cp1x="4.0" cp1y="22.0" cp2x="7.0" cp2y="22.0"/>
151.4610 + <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
151.4611 + <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
151.4612 + <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="4.0" cp2y="2.0"/>
151.4613 + </points>
151.4614 + </path>
151.4615 + <path>
151.4616 + <matte red="119" green="124" blue="134" alpha="79" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="-0.22" alphaOffset="-176"/>
151.4617 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.4618 + <points>
151.4619 + <point x="2.0" y="16.0" cp1x="2.0" cp1y="16.0" cp2x="2.0" cp2y="16.0"/>
151.4620 + <point x="2.0" y="18.0" cp1x="2.0" cp1y="18.0" cp2x="2.0" cp2y="21.0"/>
151.4621 + <point x="7.0" y="23.0" cp1x="4.0" cp1y="23.0" cp2x="7.0" cp2y="23.0"/>
151.4622 + <point x="76.0" y="23.0" cp1x="76.0" cp1y="23.0" cp2x="79.0" cp2y="23.0"/>
151.4623 + <point x="81.0" y="18.0" cp1x="81.0" cp1y="21.0" cp2x="81.0" cp2y="18.0"/>
151.4624 + <point x="81.0" y="16.0" cp1x="81.0" cp1y="16.0" cp2x="81.0" cp2y="16.0"/>
151.4625 + </points>
151.4626 + </path>
151.4627 + </shapes>
151.4628 + <effects/>
151.4629 + </layer>
151.4630 + <templateLayer fileName="113cfe59bd4.png">
151.4631 + <layer name="Template" type="template">
151.4632 + <opacity>1.0</opacity>
151.4633 + <fillOpacity>1.0</fillOpacity>
151.4634 + <blendingMode>NORMAL</blendingMode>
151.4635 + <locked>false</locked>
151.4636 + <visible>false</visible>
151.4637 + <shapes/>
151.4638 + <effects/>
151.4639 + </layer>
151.4640 + </templateLayer>
151.4641 + </canvas>
151.4642 + </state>
151.4643 + <state stateKeys="Focused">
151.4644 + <style>
151.4645 + <textForeground/>
151.4646 + <textBackground/>
151.4647 + <background/>
151.4648 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.4649 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.4650 + <uiproperties/>
151.4651 + </style>
151.4652 + <canvas>
151.4653 + <size width="83" height="24"/>
151.4654 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.4655 + <stretchingInsets top="8" bottom="8" left="9" right="19"/>
151.4656 + <layer name="Layer 1">
151.4657 + <opacity>1.0</opacity>
151.4658 + <fillOpacity>1.0</fillOpacity>
151.4659 + <blendingMode>NORMAL</blendingMode>
151.4660 + <locked>false</locked>
151.4661 + <visible>true</visible>
151.4662 + <shapes>
151.4663 + <path>
151.4664 + <gradient cycleMethod="NO_CYCLE">
151.4665 + <stop position="0.0" midpoint="0.5">
151.4666 + <matte red="246" green="248" blue="250" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
151.4667 + </stop>
151.4668 + <stop position="0.34375" midpoint="0.5">
151.4669 + <matte red="179" green="197" blue="212" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-0.0028941035" saturationOffset="-0.4800539" brightnessOffset="0.28235292" alphaOffset="0"/>
151.4670 + </stop>
151.4671 + <stop position="0.6193182" midpoint="0.5">
151.4672 + <matte red="163" green="184" blue="203" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
151.4673 + </stop>
151.4674 + <stop position="1.0" midpoint="0.5">
151.4675 + <matte red="191" green="212" blue="231" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4625541" brightnessOffset="0.35686272" alphaOffset="0"/>
151.4676 + </stop>
151.4677 + </gradient>
151.4678 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4679 + <points>
151.4680 + <point x="64.25" y="3.0" cp1x="64.25" cp1y="3.0" cp2x="64.25" cp2y="3.0"/>
151.4681 + <point x="75.0" y="3.0" cp1x="75.0" cp1y="3.0" cp2x="79.0" cp2y="3.0"/>
151.4682 + <point x="80.0" y="8.0" cp1x="80.0" cp1y="4.0" cp2x="80.0" cp2y="8.0"/>
151.4683 + <point x="80.0" y="16.0" cp1x="80.0" cp1y="16.0" cp2x="80.0" cp2y="20.0"/>
151.4684 + <point x="75.0" y="21.0" cp1x="79.0" cp1y="21.0" cp2x="75.0" cp2y="21.0"/>
151.4685 + <point x="64.25" y="21.0" cp1x="64.25" cp1y="21.0" cp2x="64.25" cp2y="21.0"/>
151.4686 + </points>
151.4687 + </path>
151.4688 + <path>
151.4689 + <gradient cycleMethod="NO_CYCLE">
151.4690 + <stop position="0.0" midpoint="0.5">
151.4691 + <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
151.4692 + </stop>
151.4693 + <stop position="1.0" midpoint="0.5">
151.4694 + <matte red="34" green="55" blue="74" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.095173776" brightnessOffset="-0.25882354" alphaOffset="0"/>
151.4695 + </stop>
151.4696 + </gradient>
151.4697 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4698 + <points>
151.4699 + <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
151.4700 + <point x="76.0" y="2.0" cp1x="76.0" cp1y="2.0" cp2x="79.0" cp2y="2.0"/>
151.4701 + <point x="81.0" y="7.0" cp1x="81.0" cp1y="4.0" cp2x="81.0" cp2y="7.0"/>
151.4702 + <point x="81.0" y="17.0" cp1x="81.0" cp1y="17.0" cp2x="81.0" cp2y="20.0"/>
151.4703 + <point x="76.0" y="22.0" cp1x="79.0" cp1y="22.0" cp2x="76.0" cp2y="22.0"/>
151.4704 + <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
151.4705 + </points>
151.4706 + </path>
151.4707 + <path>
151.4708 + <gradient cycleMethod="NO_CYCLE">
151.4709 + <stop position="0.0" midpoint="0.5">
151.4710 + <matte red="251" green="251" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.63174605" brightnessOffset="0.43921566" alphaOffset="0"/>
151.4711 + </stop>
151.4712 + <stop position="0.4005682" midpoint="0.5">
151.4713 + <matte red="224" green="226" blue="231" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.040395975" saturationOffset="-0.6054113" brightnessOffset="0.35686272" alphaOffset="0"/>
151.4714 + </stop>
151.4715 + <stop position="0.66477275" midpoint="0.5">
151.4716 + <matte red="214" green="217" blue="223" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5953556" brightnessOffset="0.32549018" alphaOffset="0"/>
151.4717 + </stop>
151.4718 + <stop position="1.0" midpoint="0.5">
151.4719 + <matte red="242" green="245" blue="251" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5998577" brightnessOffset="0.4352941" alphaOffset="0"/>
151.4720 + </stop>
151.4721 + </gradient>
151.4722 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4723 + <points>
151.4724 + <point x="8.0" y="3.0" cp1x="4.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
151.4725 + <point x="64.0" y="3.0" cp1x="64.0" cp1y="3.0" cp2x="64.0" cp2y="3.0"/>
151.4726 + <point x="64.0" y="21.0" cp1x="64.0" cp1y="21.0" cp2x="64.0" cp2y="21.0"/>
151.4727 + <point x="8.0" y="21.0" cp1x="8.0" cp1y="21.0" cp2x="4.0" cp2y="21.0"/>
151.4728 + <point x="3.0" y="16.0" cp1x="3.0" cp1y="20.0" cp2x="3.0" cp2y="16.0"/>
151.4729 + <point x="3.0" y="7.0" cp1x="3.0" cp1y="7.0" cp2x="3.0" cp2y="4.0"/>
151.4730 + </points>
151.4731 + </path>
151.4732 + <path>
151.4733 + <gradient cycleMethod="NO_CYCLE">
151.4734 + <stop position="0.0" midpoint="0.5">
151.4735 + <matte red="149" green="152" blue="158" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5787523" brightnessOffset="0.07058823" alphaOffset="0"/>
151.4736 + </stop>
151.4737 + <stop position="1.0" midpoint="0.5">
151.4738 + <matte red="85" green="88" blue="94" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5399696" brightnessOffset="-0.18039218" alphaOffset="0"/>
151.4739 + </stop>
151.4740 + </gradient>
151.4741 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4742 + <points>
151.4743 + <point x="2.0" y="7.0" cp1x="2.0" cp1y="4.0" cp2x="2.0" cp2y="7.0"/>
151.4744 + <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="20.0"/>
151.4745 + <point x="7.0" y="22.0" cp1x="4.0" cp1y="22.0" cp2x="7.0" cp2y="22.0"/>
151.4746 + <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
151.4747 + <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
151.4748 + <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="4.0" cp2y="2.0"/>
151.4749 + </points>
151.4750 + </path>
151.4751 + <rectangle x1="0.6" x2="82.4" y1="0.6" y2="23.4" rounding="13.0">
151.4752 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.4753 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.4754 + </rectangle>
151.4755 + </shapes>
151.4756 + <effects/>
151.4757 + </layer>
151.4758 + </canvas>
151.4759 + </state>
151.4760 + <state stateKeys="MouseOver+Focused">
151.4761 + <style>
151.4762 + <textForeground/>
151.4763 + <textBackground/>
151.4764 + <background/>
151.4765 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.4766 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.4767 + <uiproperties/>
151.4768 + </style>
151.4769 + <canvas>
151.4770 + <size width="83" height="24"/>
151.4771 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.4772 + <stretchingInsets top="8" bottom="8" left="9" right="19"/>
151.4773 + <layer name="Layer 1">
151.4774 + <opacity>1.0</opacity>
151.4775 + <fillOpacity>1.0</fillOpacity>
151.4776 + <blendingMode>NORMAL</blendingMode>
151.4777 + <locked>false</locked>
151.4778 + <visible>true</visible>
151.4779 + <shapes>
151.4780 + <path>
151.4781 + <gradient cycleMethod="NO_CYCLE">
151.4782 + <stop position="0.0" midpoint="0.5">
151.4783 + <matte red="248" green="250" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
151.4784 + </stop>
151.4785 + <stop position="0.34375" midpoint="0.5">
151.4786 + <matte red="200" green="216" blue="230" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-8.738637E-4" saturationOffset="-0.50527954" brightnessOffset="0.35294116" alphaOffset="0"/>
151.4787 + </stop>
151.4788 + <stop position="0.6193182" midpoint="0.5">
151.4789 + <matte red="182" green="203" blue="222" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
151.4790 + </stop>
151.4791 + <stop position="1.0" midpoint="0.5">
151.4792 + <matte red="191" green="212" blue="231" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4625541" brightnessOffset="0.35686272" alphaOffset="0"/>
151.4793 + </stop>
151.4794 + <stop position="1.0" midpoint="0.5">
151.4795 + <matte red="210" green="231" blue="250" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4757143" brightnessOffset="0.43137252" alphaOffset="0"/>
151.4796 + </stop>
151.4797 + </gradient>
151.4798 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4799 + <points>
151.4800 + <point x="64.25" y="3.0" cp1x="64.25" cp1y="3.0" cp2x="64.25" cp2y="3.0"/>
151.4801 + <point x="75.0" y="3.0" cp1x="75.0" cp1y="3.0" cp2x="79.0" cp2y="3.0"/>
151.4802 + <point x="80.0" y="8.0" cp1x="80.0" cp1y="4.0" cp2x="80.0" cp2y="8.0"/>
151.4803 + <point x="80.0" y="16.0" cp1x="80.0" cp1y="16.0" cp2x="80.0" cp2y="20.0"/>
151.4804 + <point x="75.0" y="21.0" cp1x="79.0" cp1y="21.0" cp2x="75.0" cp2y="21.0"/>
151.4805 + <point x="64.25" y="21.0" cp1x="64.25" cp1y="21.0" cp2x="64.25" cp2y="21.0"/>
151.4806 + </points>
151.4807 + </path>
151.4808 + <path>
151.4809 + <gradient cycleMethod="NO_CYCLE">
151.4810 + <stop position="0.0" midpoint="0.5">
151.4811 + <matte red="59" green="85" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.1769987" brightnessOffset="-0.12156865" alphaOffset="0"/>
151.4812 + </stop>
151.4813 + <stop position="1.0" midpoint="0.5">
151.4814 + <matte red="0" green="5" blue="29" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.059279382" saturationOffset="0.3642857" brightnessOffset="-0.43529415" alphaOffset="0"/>
151.4815 + </stop>
151.4816 + </gradient>
151.4817 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4818 + <points>
151.4819 + <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
151.4820 + <point x="76.0" y="2.0" cp1x="76.0" cp1y="2.0" cp2x="79.0" cp2y="2.0"/>
151.4821 + <point x="81.0" y="7.0" cp1x="81.0" cp1y="4.0" cp2x="81.0" cp2y="7.0"/>
151.4822 + <point x="81.0" y="17.0" cp1x="81.0" cp1y="17.0" cp2x="81.0" cp2y="20.0"/>
151.4823 + <point x="76.0" y="22.0" cp1x="79.0" cp1y="22.0" cp2x="76.0" cp2y="22.0"/>
151.4824 + <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
151.4825 + </points>
151.4826 + </path>
151.4827 + <path>
151.4828 + <gradient cycleMethod="NO_CYCLE">
151.4829 + <stop position="0.0" midpoint="0.5">
151.4830 + <matte red="253" green="253" blue="254" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.6317773" brightnessOffset="0.4470588" alphaOffset="0"/>
151.4831 + </stop>
151.4832 + <stop position="0.4005682" midpoint="0.5">
151.4833 + <matte red="240" green="242" blue="246" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.6113241" brightnessOffset="0.41568625" alphaOffset="0"/>
151.4834 + </stop>
151.4835 + <stop position="0.66477275" midpoint="0.5">
151.4836 + <matte red="233" green="236" blue="242" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5985242" brightnessOffset="0.39999998" alphaOffset="0"/>
151.4837 + </stop>
151.4838 + <stop position="1.0" midpoint="0.5">
151.4839 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.4840 + </stop>
151.4841 + </gradient>
151.4842 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4843 + <points>
151.4844 + <point x="8.0" y="3.0" cp1x="4.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
151.4845 + <point x="64.0" y="3.0" cp1x="64.0" cp1y="3.0" cp2x="64.0" cp2y="3.0"/>
151.4846 + <point x="64.0" y="21.0" cp1x="64.0" cp1y="21.0" cp2x="64.0" cp2y="21.0"/>
151.4847 + <point x="8.0" y="21.0" cp1x="8.0" cp1y="21.0" cp2x="4.0" cp2y="21.0"/>
151.4848 + <point x="3.0" y="16.0" cp1x="3.0" cp1y="20.0" cp2x="3.0" cp2y="16.0"/>
151.4849 + <point x="3.0" y="7.0" cp1x="3.0" cp1y="7.0" cp2x="3.0" cp2y="4.0"/>
151.4850 + </points>
151.4851 + </path>
151.4852 + <path>
151.4853 + <gradient cycleMethod="NO_CYCLE">
151.4854 + <stop position="0.0" midpoint="0.5">
151.4855 + <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.54616207" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.4856 + </stop>
151.4857 + <stop position="1.0" midpoint="0.5">
151.4858 + <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.41349208" brightnessOffset="-0.33725494" alphaOffset="0"/>
151.4859 + </stop>
151.4860 + </gradient>
151.4861 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4862 + <points>
151.4863 + <point x="2.0" y="7.0" cp1x="2.0" cp1y="4.0" cp2x="2.0" cp2y="7.0"/>
151.4864 + <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="20.0"/>
151.4865 + <point x="7.0" y="22.0" cp1x="4.0" cp1y="22.0" cp2x="7.0" cp2y="22.0"/>
151.4866 + <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
151.4867 + <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
151.4868 + <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="4.0" cp2y="2.0"/>
151.4869 + </points>
151.4870 + </path>
151.4871 + <rectangle x1="0.6" x2="82.4" y1="0.6" y2="23.4" rounding="13.0">
151.4872 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.4873 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.4874 + </rectangle>
151.4875 + </shapes>
151.4876 + <effects/>
151.4877 + </layer>
151.4878 + <templateLayer fileName="113cffce35a.png">
151.4879 + <layer name="Template" type="template">
151.4880 + <opacity>1.0</opacity>
151.4881 + <fillOpacity>1.0</fillOpacity>
151.4882 + <blendingMode>NORMAL</blendingMode>
151.4883 + <locked>false</locked>
151.4884 + <visible>false</visible>
151.4885 + <shapes/>
151.4886 + <effects/>
151.4887 + </layer>
151.4888 + </templateLayer>
151.4889 + </canvas>
151.4890 + </state>
151.4891 + <state stateKeys="MouseOver">
151.4892 + <style>
151.4893 + <textForeground/>
151.4894 + <textBackground/>
151.4895 + <background/>
151.4896 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.4897 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.4898 + <uiproperties/>
151.4899 + </style>
151.4900 + <canvas>
151.4901 + <size width="83" height="24"/>
151.4902 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.4903 + <stretchingInsets top="8" bottom="8" left="9" right="19"/>
151.4904 + <layer name="Layer 1">
151.4905 + <opacity>1.0</opacity>
151.4906 + <fillOpacity>1.0</fillOpacity>
151.4907 + <blendingMode>NORMAL</blendingMode>
151.4908 + <locked>false</locked>
151.4909 + <visible>true</visible>
151.4910 + <shapes>
151.4911 + <path>
151.4912 + <gradient cycleMethod="NO_CYCLE">
151.4913 + <stop position="0.0" midpoint="0.5">
151.4914 + <matte red="248" green="250" blue="252" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
151.4915 + </stop>
151.4916 + <stop position="0.34375" midpoint="0.5">
151.4917 + <matte red="200" green="216" blue="230" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-8.738637E-4" saturationOffset="-0.50527954" brightnessOffset="0.35294116" alphaOffset="0"/>
151.4918 + </stop>
151.4919 + <stop position="0.6193182" midpoint="0.5">
151.4920 + <matte red="182" green="203" blue="222" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
151.4921 + </stop>
151.4922 + <stop position="1.0" midpoint="0.5">
151.4923 + <matte red="191" green="212" blue="231" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4625541" brightnessOffset="0.35686272" alphaOffset="0"/>
151.4924 + </stop>
151.4925 + <stop position="1.0" midpoint="0.5">
151.4926 + <matte red="210" green="231" blue="250" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4757143" brightnessOffset="0.43137252" alphaOffset="0"/>
151.4927 + </stop>
151.4928 + </gradient>
151.4929 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4930 + <points>
151.4931 + <point x="64.25" y="3.0" cp1x="64.25" cp1y="3.0" cp2x="64.25" cp2y="3.0"/>
151.4932 + <point x="75.0" y="3.0" cp1x="75.0" cp1y="3.0" cp2x="79.0" cp2y="3.0"/>
151.4933 + <point x="80.0" y="8.0" cp1x="80.0" cp1y="4.0" cp2x="80.0" cp2y="8.0"/>
151.4934 + <point x="80.0" y="16.0" cp1x="80.0" cp1y="16.0" cp2x="80.0" cp2y="20.0"/>
151.4935 + <point x="75.0" y="21.0" cp1x="79.0" cp1y="21.0" cp2x="75.0" cp2y="21.0"/>
151.4936 + <point x="64.25" y="21.0" cp1x="64.25" cp1y="21.0" cp2x="64.25" cp2y="21.0"/>
151.4937 + </points>
151.4938 + </path>
151.4939 + <path>
151.4940 + <gradient cycleMethod="NO_CYCLE">
151.4941 + <stop position="0.0" midpoint="0.5">
151.4942 + <matte red="59" green="85" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.1769987" brightnessOffset="-0.12156865" alphaOffset="0"/>
151.4943 + </stop>
151.4944 + <stop position="1.0" midpoint="0.5">
151.4945 + <matte red="0" green="5" blue="29" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.059279382" saturationOffset="0.3642857" brightnessOffset="-0.43529415" alphaOffset="0"/>
151.4946 + </stop>
151.4947 + </gradient>
151.4948 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4949 + <points>
151.4950 + <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
151.4951 + <point x="76.0" y="2.0" cp1x="76.0" cp1y="2.0" cp2x="79.0" cp2y="2.0"/>
151.4952 + <point x="81.0" y="7.0" cp1x="81.0" cp1y="4.0" cp2x="81.0" cp2y="7.0"/>
151.4953 + <point x="81.0" y="17.0" cp1x="81.0" cp1y="17.0" cp2x="81.0" cp2y="20.0"/>
151.4954 + <point x="76.0" y="22.0" cp1x="79.0" cp1y="22.0" cp2x="76.0" cp2y="22.0"/>
151.4955 + <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
151.4956 + </points>
151.4957 + </path>
151.4958 + <path>
151.4959 + <gradient cycleMethod="NO_CYCLE">
151.4960 + <stop position="0.0" midpoint="0.5">
151.4961 + <matte red="253" green="253" blue="254" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.6317773" brightnessOffset="0.4470588" alphaOffset="0"/>
151.4962 + </stop>
151.4963 + <stop position="0.4005682" midpoint="0.5">
151.4964 + <matte red="240" green="242" blue="246" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.6113241" brightnessOffset="0.41568625" alphaOffset="0"/>
151.4965 + </stop>
151.4966 + <stop position="0.66477275" midpoint="0.5">
151.4967 + <matte red="233" green="236" blue="242" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5985242" brightnessOffset="0.39999998" alphaOffset="0"/>
151.4968 + </stop>
151.4969 + <stop position="1.0" midpoint="0.5">
151.4970 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.4971 + </stop>
151.4972 + </gradient>
151.4973 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4974 + <points>
151.4975 + <point x="8.0" y="3.0" cp1x="4.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
151.4976 + <point x="64.0" y="3.0" cp1x="64.0" cp1y="3.0" cp2x="64.0" cp2y="3.0"/>
151.4977 + <point x="64.0" y="21.0" cp1x="64.0" cp1y="21.0" cp2x="64.0" cp2y="21.0"/>
151.4978 + <point x="8.0" y="21.0" cp1x="8.0" cp1y="21.0" cp2x="4.0" cp2y="21.0"/>
151.4979 + <point x="3.0" y="16.0" cp1x="3.0" cp1y="20.0" cp2x="3.0" cp2y="16.0"/>
151.4980 + <point x="3.0" y="7.0" cp1x="3.0" cp1y="7.0" cp2x="3.0" cp2y="4.0"/>
151.4981 + </points>
151.4982 + </path>
151.4983 + <path>
151.4984 + <gradient cycleMethod="NO_CYCLE">
151.4985 + <stop position="0.0" midpoint="0.5">
151.4986 + <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.54616207" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.4987 + </stop>
151.4988 + <stop position="1.0" midpoint="0.5">
151.4989 + <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.41349208" brightnessOffset="-0.33725494" alphaOffset="0"/>
151.4990 + </stop>
151.4991 + </gradient>
151.4992 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.4993 + <points>
151.4994 + <point x="2.0" y="7.0" cp1x="2.0" cp1y="4.0" cp2x="2.0" cp2y="7.0"/>
151.4995 + <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="20.0"/>
151.4996 + <point x="7.0" y="22.0" cp1x="4.0" cp1y="22.0" cp2x="7.0" cp2y="22.0"/>
151.4997 + <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
151.4998 + <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
151.4999 + <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="4.0" cp2y="2.0"/>
151.5000 + </points>
151.5001 + </path>
151.5002 + <path>
151.5003 + <matte red="119" green="124" blue="134" alpha="79" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="-0.22" alphaOffset="-176"/>
151.5004 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.5005 + <points>
151.5006 + <point x="2.0" y="16.0" cp1x="2.0" cp1y="16.0" cp2x="2.0" cp2y="16.0"/>
151.5007 + <point x="2.0" y="18.0" cp1x="2.0" cp1y="18.0" cp2x="2.0" cp2y="21.0"/>
151.5008 + <point x="7.0" y="23.0" cp1x="4.0" cp1y="23.0" cp2x="7.0" cp2y="23.0"/>
151.5009 + <point x="76.0" y="23.0" cp1x="76.0" cp1y="23.0" cp2x="79.0" cp2y="23.0"/>
151.5010 + <point x="81.0" y="18.0" cp1x="81.0" cp1y="21.0" cp2x="81.0" cp2y="18.0"/>
151.5011 + <point x="81.0" y="16.0" cp1x="81.0" cp1y="16.0" cp2x="81.0" cp2y="16.0"/>
151.5012 + </points>
151.5013 + </path>
151.5014 + </shapes>
151.5015 + <effects/>
151.5016 + </layer>
151.5017 + <templateLayer fileName="113cffce35a.png">
151.5018 + <layer name="Template" type="template">
151.5019 + <opacity>1.0</opacity>
151.5020 + <fillOpacity>1.0</fillOpacity>
151.5021 + <blendingMode>NORMAL</blendingMode>
151.5022 + <locked>false</locked>
151.5023 + <visible>false</visible>
151.5024 + <shapes/>
151.5025 + <effects/>
151.5026 + </layer>
151.5027 + </templateLayer>
151.5028 + </canvas>
151.5029 + </state>
151.5030 + <state stateKeys="Pressed+Focused">
151.5031 + <style>
151.5032 + <textForeground/>
151.5033 + <textBackground/>
151.5034 + <background/>
151.5035 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.5036 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.5037 + <uiproperties/>
151.5038 + </style>
151.5039 + <canvas>
151.5040 + <size width="83" height="24"/>
151.5041 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.5042 + <stretchingInsets top="8" bottom="8" left="9" right="19"/>
151.5043 + <layer name="Layer 1">
151.5044 + <opacity>1.0</opacity>
151.5045 + <fillOpacity>1.0</fillOpacity>
151.5046 + <blendingMode>NORMAL</blendingMode>
151.5047 + <locked>false</locked>
151.5048 + <visible>true</visible>
151.5049 + <shapes>
151.5050 + <path>
151.5051 + <gradient cycleMethod="NO_CYCLE">
151.5052 + <stop position="0.0" midpoint="0.5">
151.5053 + <matte red="143" green="169" blue="192" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
151.5054 + </stop>
151.5055 + <stop position="0.34375" midpoint="0.5">
151.5056 + <matte red="76" green="117" blue="154" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="4.081726E-4" saturationOffset="-0.12922078" brightnessOffset="0.054901958" alphaOffset="0"/>
151.5057 + </stop>
151.5058 + <stop position="0.6193182" midpoint="0.5">
151.5059 + <matte red="53" green="100" blue="142" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.00895375" brightnessOffset="0.007843137" alphaOffset="0"/>
151.5060 + </stop>
151.5061 + <stop position="1.0" midpoint="0.5">
151.5062 + <matte red="96" green="146" blue="189" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-0.0015907288" saturationOffset="-0.1436508" brightnessOffset="0.19215685" alphaOffset="0"/>
151.5063 + </stop>
151.5064 + </gradient>
151.5065 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.5066 + <points>
151.5067 + <point x="64.25" y="3.0" cp1x="64.25" cp1y="3.0" cp2x="64.25" cp2y="3.0"/>
151.5068 + <point x="75.0" y="3.0" cp1x="75.0" cp1y="3.0" cp2x="79.0" cp2y="3.0"/>
151.5069 + <point x="80.0" y="8.0" cp1x="80.0" cp1y="4.0" cp2x="80.0" cp2y="8.0"/>
151.5070 + <point x="80.0" y="16.0" cp1x="80.0" cp1y="16.0" cp2x="80.0" cp2y="20.0"/>
151.5071 + <point x="75.0" y="21.0" cp1x="79.0" cp1y="21.0" cp2x="75.0" cp2y="21.0"/>
151.5072 + <point x="64.25" y="21.0" cp1x="64.25" cp1y="21.0" cp2x="64.25" cp2y="21.0"/>
151.5073 + </points>
151.5074 + </path>
151.5075 + <path>
151.5076 + <gradient cycleMethod="NO_CYCLE">
151.5077 + <stop position="0.0" midpoint="0.5">
151.5078 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.5079 + </stop>
151.5080 + <stop position="1.0" midpoint="0.5">
151.5081 + <matte red="28" green="56" blue="81" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.018606722" brightnessOffset="-0.23137257" alphaOffset="0"/>
151.5082 + </stop>
151.5083 + </gradient>
151.5084 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.5085 + <points>
151.5086 + <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
151.5087 + <point x="76.0" y="2.0" cp1x="76.0" cp1y="2.0" cp2x="79.0" cp2y="2.0"/>
151.5088 + <point x="81.0" y="7.0" cp1x="81.0" cp1y="4.0" cp2x="81.0" cp2y="7.0"/>
151.5089 + <point x="81.0" y="17.0" cp1x="81.0" cp1y="17.0" cp2x="81.0" cp2y="20.0"/>
151.5090 + <point x="76.0" y="22.0" cp1x="79.0" cp1y="22.0" cp2x="76.0" cp2y="22.0"/>
151.5091 + <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
151.5092 + </points>
151.5093 + </path>
151.5094 + <path>
151.5095 + <gradient cycleMethod="NO_CYCLE">
151.5096 + <stop position="0.0" midpoint="0.5">
151.5097 + <matte red="205" green="209" blue="216" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.5847884" brightnessOffset="0.2980392" alphaOffset="0"/>
151.5098 + </stop>
151.5099 + <stop position="0.4005682" midpoint="0.5">
151.5100 + <matte red="172" green="179" blue="191" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.026611507" saturationOffset="-0.53623784" brightnessOffset="0.19999999" alphaOffset="0"/>
151.5101 + </stop>
151.5102 + <stop position="0.66477275" midpoint="0.5">
151.5103 + <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="-0.52701867" brightnessOffset="0.17254901" alphaOffset="0"/>
151.5104 + </stop>
151.5105 + <stop position="1.0" midpoint="0.5">
151.5106 + <matte red="202" green="208" blue="222" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.03801495" saturationOffset="-0.5456242" brightnessOffset="0.3215686" alphaOffset="0"/>
151.5107 + </stop>
151.5108 + </gradient>
151.5109 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.5110 + <points>
151.5111 + <point x="8.0" y="3.0" cp1x="4.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
151.5112 + <point x="64.0" y="3.0" cp1x="64.0" cp1y="3.0" cp2x="64.0" cp2y="3.0"/>
151.5113 + <point x="64.0" y="21.0" cp1x="64.0" cp1y="21.0" cp2x="64.0" cp2y="21.0"/>
151.5114 + <point x="8.0" y="21.0" cp1x="8.0" cp1y="21.0" cp2x="4.0" cp2y="21.0"/>
151.5115 + <point x="3.0" y="16.0" cp1x="3.0" cp1y="20.0" cp2x="3.0" cp2y="16.0"/>
151.5116 + <point x="3.0" y="7.0" cp1x="3.0" cp1y="7.0" cp2x="3.0" cp2y="4.0"/>
151.5117 + </points>
151.5118 + </path>
151.5119 + <path>
151.5120 + <gradient cycleMethod="NO_CYCLE">
151.5121 + <stop position="0.0" midpoint="0.5">
151.5122 + <matte red="0" green="0" blue="7" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.52156866" alphaOffset="0"/>
151.5123 + </stop>
151.5124 + <stop position="1.0" midpoint="0.5">
151.5125 + <matte red="96" green="100" blue="108" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5246032" brightnessOffset="-0.12549022" alphaOffset="0"/>
151.5126 + </stop>
151.5127 + </gradient>
151.5128 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.5129 + <points>
151.5130 + <point x="2.0" y="7.0" cp1x="2.0" cp1y="4.0" cp2x="2.0" cp2y="7.0"/>
151.5131 + <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="20.0"/>
151.5132 + <point x="7.0" y="22.0" cp1x="4.0" cp1y="22.0" cp2x="7.0" cp2y="22.0"/>
151.5133 + <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
151.5134 + <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
151.5135 + <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="4.0" cp2y="2.0"/>
151.5136 + </points>
151.5137 + </path>
151.5138 + <rectangle x1="0.6" x2="82.4" y1="0.6" y2="23.4" rounding="13.0">
151.5139 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.5140 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.5141 + </rectangle>
151.5142 + </shapes>
151.5143 + <effects/>
151.5144 + </layer>
151.5145 + <templateLayer fileName="113cfff3c26.png">
151.5146 + <layer name="Template" type="template">
151.5147 + <opacity>1.0</opacity>
151.5148 + <fillOpacity>1.0</fillOpacity>
151.5149 + <blendingMode>NORMAL</blendingMode>
151.5150 + <locked>false</locked>
151.5151 + <visible>false</visible>
151.5152 + <shapes/>
151.5153 + <effects/>
151.5154 + </layer>
151.5155 + </templateLayer>
151.5156 + </canvas>
151.5157 + </state>
151.5158 + <state stateKeys="Pressed">
151.5159 + <style>
151.5160 + <textForeground/>
151.5161 + <textBackground/>
151.5162 + <background/>
151.5163 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.5164 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.5165 + <uiproperties/>
151.5166 + </style>
151.5167 + <canvas>
151.5168 + <size width="83" height="24"/>
151.5169 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.5170 + <stretchingInsets top="8" bottom="8" left="9" right="19"/>
151.5171 + <layer name="Layer 1">
151.5172 + <opacity>1.0</opacity>
151.5173 + <fillOpacity>1.0</fillOpacity>
151.5174 + <blendingMode>NORMAL</blendingMode>
151.5175 + <locked>false</locked>
151.5176 + <visible>true</visible>
151.5177 + <shapes>
151.5178 + <path>
151.5179 + <gradient cycleMethod="NO_CYCLE">
151.5180 + <stop position="0.0" midpoint="0.5">
151.5181 + <matte red="143" green="169" blue="192" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
151.5182 + </stop>
151.5183 + <stop position="0.34375" midpoint="0.5">
151.5184 + <matte red="76" green="117" blue="154" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="4.081726E-4" saturationOffset="-0.12922078" brightnessOffset="0.054901958" alphaOffset="0"/>
151.5185 + </stop>
151.5186 + <stop position="0.6193182" midpoint="0.5">
151.5187 + <matte red="53" green="100" blue="142" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.00895375" brightnessOffset="0.007843137" alphaOffset="0"/>
151.5188 + </stop>
151.5189 + <stop position="1.0" midpoint="0.5">
151.5190 + <matte red="96" green="146" blue="189" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-0.0015907288" saturationOffset="-0.1436508" brightnessOffset="0.19215685" alphaOffset="0"/>
151.5191 + </stop>
151.5192 + </gradient>
151.5193 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.5194 + <points>
151.5195 + <point x="64.25" y="3.0" cp1x="64.25" cp1y="3.0" cp2x="64.25" cp2y="3.0"/>
151.5196 + <point x="75.0" y="3.0" cp1x="75.0" cp1y="3.0" cp2x="79.0" cp2y="3.0"/>
151.5197 + <point x="80.0" y="8.0" cp1x="80.0" cp1y="4.0" cp2x="80.0" cp2y="8.0"/>
151.5198 + <point x="80.0" y="16.0" cp1x="80.0" cp1y="16.0" cp2x="80.0" cp2y="20.0"/>
151.5199 + <point x="75.0" y="21.0" cp1x="79.0" cp1y="21.0" cp2x="75.0" cp2y="21.0"/>
151.5200 + <point x="64.25" y="21.0" cp1x="64.25" cp1y="21.0" cp2x="64.25" cp2y="21.0"/>
151.5201 + </points>
151.5202 + </path>
151.5203 + <path>
151.5204 + <gradient cycleMethod="NO_CYCLE">
151.5205 + <stop position="0.0" midpoint="0.5">
151.5206 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.5207 + </stop>
151.5208 + <stop position="1.0" midpoint="0.5">
151.5209 + <matte red="28" green="56" blue="81" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.018606722" brightnessOffset="-0.23137257" alphaOffset="0"/>
151.5210 + </stop>
151.5211 + </gradient>
151.5212 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.5213 + <points>
151.5214 + <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
151.5215 + <point x="76.0" y="2.0" cp1x="76.0" cp1y="2.0" cp2x="79.0" cp2y="2.0"/>
151.5216 + <point x="81.0" y="7.0" cp1x="81.0" cp1y="4.0" cp2x="81.0" cp2y="7.0"/>
151.5217 + <point x="81.0" y="17.0" cp1x="81.0" cp1y="17.0" cp2x="81.0" cp2y="20.0"/>
151.5218 + <point x="76.0" y="22.0" cp1x="79.0" cp1y="22.0" cp2x="76.0" cp2y="22.0"/>
151.5219 + <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
151.5220 + </points>
151.5221 + </path>
151.5222 + <path>
151.5223 + <gradient cycleMethod="NO_CYCLE">
151.5224 + <stop position="0.0" midpoint="0.5">
151.5225 + <matte red="205" green="209" blue="216" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.5847884" brightnessOffset="0.2980392" alphaOffset="0"/>
151.5226 + </stop>
151.5227 + <stop position="0.4005682" midpoint="0.5">
151.5228 + <matte red="172" green="179" blue="191" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.026611507" saturationOffset="-0.53623784" brightnessOffset="0.19999999" alphaOffset="0"/>
151.5229 + </stop>
151.5230 + <stop position="0.66477275" midpoint="0.5">
151.5231 + <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="-0.52701867" brightnessOffset="0.17254901" alphaOffset="0"/>
151.5232 + </stop>
151.5233 + <stop position="1.0" midpoint="0.5">
151.5234 + <matte red="202" green="208" blue="222" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.03801495" saturationOffset="-0.5456242" brightnessOffset="0.3215686" alphaOffset="0"/>
151.5235 + </stop>
151.5236 + </gradient>
151.5237 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.5238 + <points>
151.5239 + <point x="8.0" y="3.0" cp1x="4.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
151.5240 + <point x="64.0" y="3.0" cp1x="64.0" cp1y="3.0" cp2x="64.0" cp2y="3.0"/>
151.5241 + <point x="64.0" y="21.0" cp1x="64.0" cp1y="21.0" cp2x="64.0" cp2y="21.0"/>
151.5242 + <point x="8.0" y="21.0" cp1x="8.0" cp1y="21.0" cp2x="4.0" cp2y="21.0"/>
151.5243 + <point x="3.0" y="16.0" cp1x="3.0" cp1y="20.0" cp2x="3.0" cp2y="16.0"/>
151.5244 + <point x="3.0" y="7.0" cp1x="3.0" cp1y="7.0" cp2x="3.0" cp2y="4.0"/>
151.5245 + </points>
151.5246 + </path>
151.5247 + <path>
151.5248 + <gradient cycleMethod="NO_CYCLE">
151.5249 + <stop position="0.0" midpoint="0.5">
151.5250 + <matte red="0" green="0" blue="7" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.52156866" alphaOffset="0"/>
151.5251 + </stop>
151.5252 + <stop position="1.0" midpoint="0.5">
151.5253 + <matte red="96" green="100" blue="108" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5246032" brightnessOffset="-0.12549022" alphaOffset="0"/>
151.5254 + </stop>
151.5255 + </gradient>
151.5256 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.5257 + <points>
151.5258 + <point x="2.0" y="7.0" cp1x="2.0" cp1y="4.0" cp2x="2.0" cp2y="7.0"/>
151.5259 + <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="20.0"/>
151.5260 + <point x="7.0" y="22.0" cp1x="4.0" cp1y="22.0" cp2x="7.0" cp2y="22.0"/>
151.5261 + <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
151.5262 + <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
151.5263 + <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="4.0" cp2y="2.0"/>
151.5264 + </points>
151.5265 + </path>
151.5266 + <path>
151.5267 + <matte red="255" green="255" blue="255" alpha="172" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-83"/>
151.5268 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.5269 + <points>
151.5270 + <point x="2.0" y="16.0" cp1x="2.0" cp1y="16.0" cp2x="2.0" cp2y="16.0"/>
151.5271 + <point x="2.0" y="18.0" cp1x="2.0" cp1y="18.0" cp2x="2.0" cp2y="21.0"/>
151.5272 + <point x="7.0" y="23.0" cp1x="4.0" cp1y="23.0" cp2x="7.0" cp2y="23.0"/>
151.5273 + <point x="76.0" y="23.0" cp1x="76.0" cp1y="23.0" cp2x="79.0" cp2y="23.0"/>
151.5274 + <point x="81.0" y="18.0" cp1x="81.0" cp1y="21.0" cp2x="81.0" cp2y="18.0"/>
151.5275 + <point x="81.0" y="16.0" cp1x="81.0" cp1y="16.0" cp2x="81.0" cp2y="16.0"/>
151.5276 + </points>
151.5277 + </path>
151.5278 + </shapes>
151.5279 + <effects/>
151.5280 + </layer>
151.5281 + <templateLayer fileName="113cfff3c26.png">
151.5282 + <layer name="Template" type="template">
151.5283 + <opacity>1.0</opacity>
151.5284 + <fillOpacity>1.0</fillOpacity>
151.5285 + <blendingMode>NORMAL</blendingMode>
151.5286 + <locked>false</locked>
151.5287 + <visible>false</visible>
151.5288 + <shapes/>
151.5289 + <effects/>
151.5290 + </layer>
151.5291 + </templateLayer>
151.5292 + </canvas>
151.5293 + </state>
151.5294 + <state stateKeys="Enabled+Selected">
151.5295 + <style>
151.5296 + <textForeground/>
151.5297 + <textBackground/>
151.5298 + <background/>
151.5299 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.5300 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.5301 + <uiproperties/>
151.5302 + </style>
151.5303 + <canvas>
151.5304 + <size width="83" height="24"/>
151.5305 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.5306 + <stretchingInsets top="8" bottom="8" left="9" right="19"/>
151.5307 + <layer name="Layer 1">
151.5308 + <opacity>1.0</opacity>
151.5309 + <fillOpacity>1.0</fillOpacity>
151.5310 + <blendingMode>NORMAL</blendingMode>
151.5311 + <locked>false</locked>
151.5312 + <visible>true</visible>
151.5313 + <shapes>
151.5314 + <path>
151.5315 + <gradient cycleMethod="NO_CYCLE">
151.5316 + <stop position="0.0" midpoint="0.5">
151.5317 + <matte red="143" green="169" blue="192" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
151.5318 + </stop>
151.5319 + <stop position="0.34375" midpoint="0.5">
151.5320 + <matte red="76" green="117" blue="154" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="4.081726E-4" saturationOffset="-0.12922078" brightnessOffset="0.054901958" alphaOffset="0"/>
151.5321 + </stop>
151.5322 + <stop position="0.6193182" midpoint="0.5">
151.5323 + <matte red="53" green="100" blue="142" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.00895375" brightnessOffset="0.007843137" alphaOffset="0"/>
151.5324 + </stop>
151.5325 + <stop position="1.0" midpoint="0.5">
151.5326 + <matte red="96" green="146" blue="189" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="-0.0015907288" saturationOffset="-0.1436508" brightnessOffset="0.19215685" alphaOffset="0"/>
151.5327 + </stop>
151.5328 + </gradient>
151.5329 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.5330 + <points>
151.5331 + <point x="64.25" y="3.0" cp1x="64.25" cp1y="3.0" cp2x="64.25" cp2y="3.0"/>
151.5332 + <point x="75.0" y="3.0" cp1x="75.0" cp1y="3.0" cp2x="79.0" cp2y="3.0"/>
151.5333 + <point x="80.0" y="8.0" cp1x="80.0" cp1y="4.0" cp2x="80.0" cp2y="8.0"/>
151.5334 + <point x="80.0" y="16.0" cp1x="80.0" cp1y="16.0" cp2x="80.0" cp2y="20.0"/>
151.5335 + <point x="75.0" y="21.0" cp1x="79.0" cp1y="21.0" cp2x="75.0" cp2y="21.0"/>
151.5336 + <point x="64.25" y="21.0" cp1x="64.25" cp1y="21.0" cp2x="64.25" cp2y="21.0"/>
151.5337 + </points>
151.5338 + </path>
151.5339 + <path>
151.5340 + <gradient cycleMethod="NO_CYCLE">
151.5341 + <stop position="0.0" midpoint="0.5">
151.5342 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.5343 + </stop>
151.5344 + <stop position="1.0" midpoint="0.5">
151.5345 + <matte red="28" green="56" blue="81" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.018606722" brightnessOffset="-0.23137257" alphaOffset="0"/>
151.5346 + </stop>
151.5347 + </gradient>
151.5348 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.5349 + <points>
151.5350 + <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
151.5351 + <point x="76.0" y="2.0" cp1x="76.0" cp1y="2.0" cp2x="79.0" cp2y="2.0"/>
151.5352 + <point x="81.0" y="7.0" cp1x="81.0" cp1y="4.0" cp2x="81.0" cp2y="7.0"/>
151.5353 + <point x="81.0" y="17.0" cp1x="81.0" cp1y="17.0" cp2x="81.0" cp2y="20.0"/>
151.5354 + <point x="76.0" y="22.0" cp1x="79.0" cp1y="22.0" cp2x="76.0" cp2y="22.0"/>
151.5355 + <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
151.5356 + </points>
151.5357 + </path>
151.5358 + <path>
151.5359 + <gradient cycleMethod="NO_CYCLE">
151.5360 + <stop position="0.0" midpoint="0.5">
151.5361 + <matte red="205" green="209" blue="216" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.5847884" brightnessOffset="0.2980392" alphaOffset="0"/>
151.5362 + </stop>
151.5363 + <stop position="0.4005682" midpoint="0.5">
151.5364 + <matte red="172" green="179" blue="191" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.026611507" saturationOffset="-0.53623784" brightnessOffset="0.19999999" alphaOffset="0"/>
151.5365 + </stop>
151.5366 + <stop position="0.66477275" midpoint="0.5">
151.5367 + <matte red="164" green="171" blue="184" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="-0.52701867" brightnessOffset="0.17254901" alphaOffset="0"/>
151.5368 + </stop>
151.5369 + <stop position="1.0" midpoint="0.5">
151.5370 + <matte red="202" green="208" blue="222" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusBase" hueOffset="0.03801495" saturationOffset="-0.5456242" brightnessOffset="0.3215686" alphaOffset="0"/>
151.5371 + </stop>
151.5372 + </gradient>
151.5373 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.5374 + <points>
151.5375 + <point x="8.0" y="3.0" cp1x="4.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
151.5376 + <point x="64.0" y="3.0" cp1x="64.0" cp1y="3.0" cp2x="64.0" cp2y="3.0"/>
151.5377 + <point x="64.0" y="21.0" cp1x="64.0" cp1y="21.0" cp2x="64.0" cp2y="21.0"/>
151.5378 + <point x="8.0" y="21.0" cp1x="8.0" cp1y="21.0" cp2x="4.0" cp2y="21.0"/>
151.5379 + <point x="3.0" y="16.0" cp1x="3.0" cp1y="20.0" cp2x="3.0" cp2y="16.0"/>
151.5380 + <point x="3.0" y="7.0" cp1x="3.0" cp1y="7.0" cp2x="3.0" cp2y="4.0"/>
151.5381 + </points>
151.5382 + </path>
151.5383 + <path>
151.5384 + <gradient cycleMethod="NO_CYCLE">
151.5385 + <stop position="0.0" midpoint="0.5">
151.5386 + <matte red="0" green="0" blue="7" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.52156866" alphaOffset="0"/>
151.5387 + </stop>
151.5388 + <stop position="1.0" midpoint="0.5">
151.5389 + <matte red="96" green="100" blue="108" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5246032" brightnessOffset="-0.12549022" alphaOffset="0"/>
151.5390 + </stop>
151.5391 + </gradient>
151.5392 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.5393 + <points>
151.5394 + <point x="2.0" y="7.0" cp1x="2.0" cp1y="4.0" cp2x="2.0" cp2y="7.0"/>
151.5395 + <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="20.0"/>
151.5396 + <point x="7.0" y="22.0" cp1x="4.0" cp1y="22.0" cp2x="7.0" cp2y="22.0"/>
151.5397 + <point x="64.0" y="22.0" cp1x="64.0" cp1y="22.0" cp2x="64.0" cp2y="22.0"/>
151.5398 + <point x="64.0" y="2.0" cp1x="64.0" cp1y="2.0" cp2x="64.0" cp2y="2.0"/>
151.5399 + <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="4.0" cp2y="2.0"/>
151.5400 + </points>
151.5401 + </path>
151.5402 + <path>
151.5403 + <matte red="255" green="255" blue="255" alpha="167" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-88"/>
151.5404 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.5405 + <points>
151.5406 + <point x="2.0" y="16.0" cp1x="2.0" cp1y="16.0" cp2x="2.0" cp2y="16.0"/>
151.5407 + <point x="2.0" y="18.0" cp1x="2.0" cp1y="18.0" cp2x="2.0" cp2y="21.0"/>
151.5408 + <point x="7.0" y="23.0" cp1x="4.0" cp1y="23.0" cp2x="7.0" cp2y="23.0"/>
151.5409 + <point x="76.0" y="23.0" cp1x="76.0" cp1y="23.0" cp2x="79.0" cp2y="23.0"/>
151.5410 + <point x="81.0" y="18.0" cp1x="81.0" cp1y="21.0" cp2x="81.0" cp2y="18.0"/>
151.5411 + <point x="81.0" y="16.0" cp1x="81.0" cp1y="16.0" cp2x="81.0" cp2y="16.0"/>
151.5412 + </points>
151.5413 + </path>
151.5414 + </shapes>
151.5415 + <effects/>
151.5416 + </layer>
151.5417 + <templateLayer fileName="113cfff3c26.png">
151.5418 + <layer name="Template" type="template">
151.5419 + <opacity>1.0</opacity>
151.5420 + <fillOpacity>1.0</fillOpacity>
151.5421 + <blendingMode>NORMAL</blendingMode>
151.5422 + <locked>false</locked>
151.5423 + <visible>false</visible>
151.5424 + <shapes/>
151.5425 + <effects/>
151.5426 + </layer>
151.5427 + </templateLayer>
151.5428 + </canvas>
151.5429 + </state>
151.5430 + <state stateKeys="Disabled+Editable">
151.5431 + <style>
151.5432 + <textForeground/>
151.5433 + <textBackground/>
151.5434 + <background/>
151.5435 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.5436 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.5437 + <uiproperties/>
151.5438 + </style>
151.5439 + <canvas>
151.5440 + <size width="79" height="21"/>
151.5441 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.5442 + <stretchingInsets top="6" bottom="6" left="5" right="17"/>
151.5443 + <layer name="Layer 1">
151.5444 + <opacity>1.0</opacity>
151.5445 + <fillOpacity>1.0</fillOpacity>
151.5446 + <blendingMode>NORMAL</blendingMode>
151.5447 + <locked>false</locked>
151.5448 + <visible>true</visible>
151.5449 + <shapes>
151.5450 + <rectangle x1="30.0" x2="30.0" y1="10.0" y2="10.0" rounding="0.0">
151.5451 + <matte red="51" green="53" blue="57" alpha="64" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.005263157" brightnessOffset="-0.52156866" alphaOffset="-191"/>
151.5452 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.5453 + </rectangle>
151.5454 + </shapes>
151.5455 + <effects/>
151.5456 + </layer>
151.5457 + </canvas>
151.5458 + </state>
151.5459 + <state stateKeys="Enabled+Editable">
151.5460 + <style>
151.5461 + <textForeground/>
151.5462 + <textBackground/>
151.5463 + <background/>
151.5464 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.5465 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.5466 + <uiproperties/>
151.5467 + </style>
151.5468 + <canvas>
151.5469 + <size width="79" height="21"/>
151.5470 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.5471 + <stretchingInsets top="6" bottom="6" left="5" right="17"/>
151.5472 + <layer name="Layer 1">
151.5473 + <opacity>1.0</opacity>
151.5474 + <fillOpacity>1.0</fillOpacity>
151.5475 + <blendingMode>NORMAL</blendingMode>
151.5476 + <locked>false</locked>
151.5477 + <visible>true</visible>
151.5478 + <shapes>
151.5479 + <rectangle x1="30.0" x2="30.0" y1="10.0" y2="10.0" rounding="0.0">
151.5480 + <matte red="51" green="53" blue="57" alpha="64" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.005263157" brightnessOffset="-0.52156866" alphaOffset="-191"/>
151.5481 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.5482 + </rectangle>
151.5483 + </shapes>
151.5484 + <effects/>
151.5485 + </layer>
151.5486 + </canvas>
151.5487 + </state>
151.5488 + <state stateKeys="Focused+Editable">
151.5489 + <style>
151.5490 + <textForeground/>
151.5491 + <textBackground/>
151.5492 + <background/>
151.5493 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.5494 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.5495 + <uiproperties/>
151.5496 + </style>
151.5497 + <canvas>
151.5498 + <size width="142" height="27"/>
151.5499 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.5500 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.5501 + <layer name="Layer 1">
151.5502 + <opacity>1.0</opacity>
151.5503 + <fillOpacity>1.0</fillOpacity>
151.5504 + <blendingMode>NORMAL</blendingMode>
151.5505 + <locked>false</locked>
151.5506 + <visible>true</visible>
151.5507 + <shapes>
151.5508 + <path>
151.5509 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.5510 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.5511 + <points>
151.5512 + <point x="0.6" y="0.6" cp1x="0.6" cp1y="0.6" cp2x="0.6" cp2y="0.6"/>
151.5513 + <point x="136.4" y="0.6" cp1x="136.4" cp1y="0.6" cp2x="139.4" cp2y="0.6"/>
151.5514 + <point x="141.4" y="6.6" cp1x="141.4" cp1y="3.6" cp2x="141.4" cp2y="6.6"/>
151.5515 + <point x="141.4" y="21.4" cp1x="141.4" cp1y="21.4" cp2x="141.4" cp2y="24.4"/>
151.5516 + <point x="136.4" y="26.4" cp1x="139.4" cp1y="26.4" cp2x="136.4" cp2y="26.4"/>
151.5517 + <point x="0.6" y="26.4" cp1x="0.6" cp1y="26.4" cp2x="0.6" cp2y="26.4"/>
151.5518 + </points>
151.5519 + </path>
151.5520 + </shapes>
151.5521 + <effects/>
151.5522 + </layer>
151.5523 + <templateLayer fileName="114d94654dc.png">
151.5524 + <layer name="Template" type="template">
151.5525 + <opacity>1.0</opacity>
151.5526 + <fillOpacity>1.0</fillOpacity>
151.5527 + <blendingMode>NORMAL</blendingMode>
151.5528 + <locked>false</locked>
151.5529 + <visible>true</visible>
151.5530 + <shapes/>
151.5531 + <effects/>
151.5532 + </layer>
151.5533 + </templateLayer>
151.5534 + </canvas>
151.5535 + </state>
151.5536 + <state stateKeys="MouseOver+Editable">
151.5537 + <style>
151.5538 + <textForeground/>
151.5539 + <textBackground/>
151.5540 + <background/>
151.5541 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.5542 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.5543 + <uiproperties/>
151.5544 + </style>
151.5545 + <canvas>
151.5546 + <size width="79" height="21"/>
151.5547 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.5548 + <stretchingInsets top="4" bottom="5" left="5" right="17"/>
151.5549 + <layer name="Layer 1">
151.5550 + <opacity>1.0</opacity>
151.5551 + <fillOpacity>1.0</fillOpacity>
151.5552 + <blendingMode>NORMAL</blendingMode>
151.5553 + <locked>false</locked>
151.5554 + <visible>true</visible>
151.5555 + <shapes>
151.5556 + <rectangle x1="30.0" x2="30.0" y1="10.0" y2="10.0" rounding="0.0">
151.5557 + <matte red="51" green="53" blue="57" alpha="64" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.005263157" brightnessOffset="-0.52156866" alphaOffset="-191"/>
151.5558 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.5559 + </rectangle>
151.5560 + </shapes>
151.5561 + <effects/>
151.5562 + </layer>
151.5563 + </canvas>
151.5564 + </state>
151.5565 + <state stateKeys="Pressed+Editable">
151.5566 + <style>
151.5567 + <textForeground/>
151.5568 + <textBackground/>
151.5569 + <background/>
151.5570 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.5571 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.5572 + <uiproperties/>
151.5573 + </style>
151.5574 + <canvas>
151.5575 + <size width="79" height="21"/>
151.5576 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.5577 + <stretchingInsets top="4" bottom="5" left="5" right="17"/>
151.5578 + <layer name="Layer 1">
151.5579 + <opacity>1.0</opacity>
151.5580 + <fillOpacity>1.0</fillOpacity>
151.5581 + <blendingMode>NORMAL</blendingMode>
151.5582 + <locked>false</locked>
151.5583 + <visible>true</visible>
151.5584 + <shapes>
151.5585 + <rectangle x1="30.0" x2="30.0" y1="10.0" y2="10.0" rounding="0.0">
151.5586 + <matte red="51" green="53" blue="57" alpha="64" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.005263157" brightnessOffset="-0.52156866" alphaOffset="-191"/>
151.5587 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.5588 + </rectangle>
151.5589 + </shapes>
151.5590 + <effects/>
151.5591 + </layer>
151.5592 + </canvas>
151.5593 + </state>
151.5594 + </backgroundStates>
151.5595 + <foregroundStates/>
151.5596 + <borderStates/>
151.5597 + <regions>
151.5598 + <uiComponent opaque="false" componentName="ComboBox.textField" type="javax.swing.JTextField" name="TextField" ui="TextFieldUI" subregion="true">
151.5599 + <stateTypes/>
151.5600 + <contentMargins top="0" bottom="0" left="6" right="3"/>
151.5601 + <style>
151.5602 + <textForeground/>
151.5603 + <textBackground/>
151.5604 + <background/>
151.5605 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.5606 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.5607 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.5608 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.5609 + <uiproperties/>
151.5610 + </style>
151.5611 + <backgroundStates>
151.5612 + <state stateKeys="Disabled">
151.5613 + <style>
151.5614 + <textForeground>
151.5615 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.5616 + </textForeground>
151.5617 + <textBackground/>
151.5618 + <background/>
151.5619 + <inherit-textForeground>false</inherit-textForeground>
151.5620 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.5621 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.5622 + <uiproperties/>
151.5623 + </style>
151.5624 + <canvas>
151.5625 + <size width="64" height="24"/>
151.5626 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.5627 + <stretchingInsets top="5" bottom="3" left="3" right="1"/>
151.5628 + <layer name="Layer 1">
151.5629 + <opacity>1.0</opacity>
151.5630 + <fillOpacity>1.0</fillOpacity>
151.5631 + <blendingMode>NORMAL</blendingMode>
151.5632 + <locked>false</locked>
151.5633 + <visible>true</visible>
151.5634 + <shapes>
151.5635 + <rectangle x1="3.0" x2="64.0" y1="5.0" y2="21.0" rounding="0.0">
151.5636 + <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.016586483" saturationOffset="-0.6051466" brightnessOffset="0.3490196" alphaOffset="0"/>
151.5637 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.5638 + </rectangle>
151.5639 + <rectangle x1="2.0" x2="64.0" y1="5.0" y2="22.0" rounding="0.0">
151.5640 + <matte red="208" green="210" blue="215" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.040395975" saturationOffset="-0.60315615" brightnessOffset="0.29411763" alphaOffset="0"/>
151.5641 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.5642 + </rectangle>
151.5643 + <rectangle x1="3.0" x2="64.0" y1="3.0" y2="5.0" rounding="0.0">
151.5644 + <gradient cycleMethod="NO_CYCLE">
151.5645 + <stop position="0.0" midpoint="0.5">
151.5646 + <matte red="220" green="222" blue="227" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07968931" brightnessOffset="0.14509803" alphaOffset="0"/>
151.5647 + </stop>
151.5648 + <stop position="1.0" midpoint="0.5">
151.5649 + <matte red="212" green="214" blue="219" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07856284" brightnessOffset="0.11372548" alphaOffset="0"/>
151.5650 + </stop>
151.5651 + </gradient>
151.5652 + <paintPoints x1="0.5" y1="1.0" x2="0.5" y2="0.0"/>
151.5653 + </rectangle>
151.5654 + <rectangle x1="2.0" x2="64.0" y1="2.0" y2="5.0" rounding="0.0">
151.5655 + <gradient cycleMethod="NO_CYCLE">
151.5656 + <stop position="0.0" midpoint="0.5">
151.5657 + <matte red="199" green="202" blue="207" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.07187897" brightnessOffset="0.06666666" alphaOffset="0"/>
151.5658 + </stop>
151.5659 + <stop position="1.0" midpoint="0.5">
151.5660 + <matte red="202" green="204" blue="209" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07703349" brightnessOffset="0.0745098" alphaOffset="0"/>
151.5661 + </stop>
151.5662 + </gradient>
151.5663 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.5664 + </rectangle>
151.5665 + <rectangle x1="2.0" x2="64.0" y1="22.0" y2="23.0" rounding="0.0">
151.5666 + <matte red="0" green="0" blue="0" alpha="18" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-237"/>
151.5667 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.5668 + </rectangle>
151.5669 + </shapes>
151.5670 + <effects/>
151.5671 + </layer>
151.5672 + <templateLayer fileName="113cfe4e021.png">
151.5673 + <layer name="Template" type="template">
151.5674 + <opacity>1.0</opacity>
151.5675 + <fillOpacity>1.0</fillOpacity>
151.5676 + <blendingMode>NORMAL</blendingMode>
151.5677 + <locked>false</locked>
151.5678 + <visible>false</visible>
151.5679 + <shapes/>
151.5680 + <effects/>
151.5681 + </layer>
151.5682 + </templateLayer>
151.5683 + </canvas>
151.5684 + </state>
151.5685 + <state stateKeys="Enabled">
151.5686 + <style>
151.5687 + <textForeground/>
151.5688 + <textBackground/>
151.5689 + <background/>
151.5690 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.5691 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.5692 + <uiproperties/>
151.5693 + </style>
151.5694 + <canvas>
151.5695 + <size width="64" height="24"/>
151.5696 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.5697 + <stretchingInsets top="5" bottom="3" left="3" right="1"/>
151.5698 + <layer name="Layer 1">
151.5699 + <opacity>1.0</opacity>
151.5700 + <fillOpacity>1.0</fillOpacity>
151.5701 + <blendingMode>NORMAL</blendingMode>
151.5702 + <locked>false</locked>
151.5703 + <visible>true</visible>
151.5704 + <shapes>
151.5705 + <rectangle x1="3.0" x2="64.0" y1="5.0" y2="21.0" rounding="0.0">
151.5706 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.5707 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.5708 + </rectangle>
151.5709 + <rectangle x1="2.0" x2="64.0" y1="5.0" y2="22.0" rounding="0.0">
151.5710 + <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
151.5711 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.5712 + </rectangle>
151.5713 + <rectangle x1="3.0" x2="64.0" y1="3.0" y2="5.0" rounding="0.0">
151.5714 + <gradient cycleMethod="NO_CYCLE">
151.5715 + <stop position="0.1" midpoint="0.5">
151.5716 + <matte red="203" green="203" blue="204" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.6666667" saturationOffset="0.004901961" brightnessOffset="-0.19999999" alphaOffset="0"/>
151.5717 + </stop>
151.5718 + <stop position="0.9" midpoint="0.5">
151.5719 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.5720 + </stop>
151.5721 + </gradient>
151.5722 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.5723 + </rectangle>
151.5724 + <rectangle x1="2.0" x2="64.0" y1="2.0" y2="5.0" rounding="0.0">
151.5725 + <gradient cycleMethod="NO_CYCLE">
151.5726 + <stop position="0.0" midpoint="0.5">
151.5727 + <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
151.5728 + </stop>
151.5729 + <stop position="0.99147725" midpoint="0.5">
151.5730 + <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
151.5731 + </stop>
151.5732 + </gradient>
151.5733 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.5734 + </rectangle>
151.5735 + <rectangle x1="2.0" x2="64.0" y1="22.0" y2="23.0" rounding="0.0">
151.5736 + <matte red="0" green="0" blue="0" alpha="18" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-237"/>
151.5737 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.5738 + </rectangle>
151.5739 + </shapes>
151.5740 + <effects/>
151.5741 + </layer>
151.5742 + <templateLayer fileName="113cfe52151.png">
151.5743 + <layer name="Template" type="template">
151.5744 + <opacity>1.0</opacity>
151.5745 + <fillOpacity>1.0</fillOpacity>
151.5746 + <blendingMode>NORMAL</blendingMode>
151.5747 + <locked>false</locked>
151.5748 + <visible>false</visible>
151.5749 + <shapes/>
151.5750 + <effects/>
151.5751 + </layer>
151.5752 + </templateLayer>
151.5753 + </canvas>
151.5754 + </state>
151.5755 + <state stateKeys="Selected">
151.5756 + <style>
151.5757 + <textForeground>
151.5758 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.5759 + </textForeground>
151.5760 + <textBackground/>
151.5761 + <background/>
151.5762 + <inherit-textForeground>false</inherit-textForeground>
151.5763 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.5764 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.5765 + <uiproperties/>
151.5766 + </style>
151.5767 + <canvas>
151.5768 + <size width="64" height="24"/>
151.5769 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.5770 + <stretchingInsets top="5" bottom="3" left="3" right="1"/>
151.5771 + <layer name="Layer 1">
151.5772 + <opacity>1.0</opacity>
151.5773 + <fillOpacity>1.0</fillOpacity>
151.5774 + <blendingMode>NORMAL</blendingMode>
151.5775 + <locked>false</locked>
151.5776 + <visible>true</visible>
151.5777 + <shapes>
151.5778 + <rectangle x1="3.0" x2="64.0" y1="5.0" y2="21.0" rounding="0.0">
151.5779 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.5780 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.5781 + </rectangle>
151.5782 + <rectangle x1="2.0" x2="64.0" y1="5.0" y2="22.0" rounding="0.0">
151.5783 + <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
151.5784 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.5785 + </rectangle>
151.5786 + <rectangle x1="3.0" x2="64.0" y1="3.0" y2="5.0" rounding="0.0">
151.5787 + <gradient cycleMethod="NO_CYCLE">
151.5788 + <stop position="0.1" midpoint="0.5">
151.5789 + <matte red="203" green="203" blue="204" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.6666667" saturationOffset="0.004901961" brightnessOffset="-0.19999999" alphaOffset="0"/>
151.5790 + </stop>
151.5791 + <stop position="0.9" midpoint="0.5">
151.5792 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.5793 + </stop>
151.5794 + </gradient>
151.5795 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.5796 + </rectangle>
151.5797 + <rectangle x1="2.0" x2="64.0" y1="2.0" y2="5.0" rounding="0.0">
151.5798 + <gradient cycleMethod="NO_CYCLE">
151.5799 + <stop position="0.0" midpoint="0.5">
151.5800 + <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
151.5801 + </stop>
151.5802 + <stop position="0.99147725" midpoint="0.5">
151.5803 + <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
151.5804 + </stop>
151.5805 + </gradient>
151.5806 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.5807 + </rectangle>
151.5808 + <rectangle x1="2.0" x2="64.0" y1="22.0" y2="23.0" rounding="0.0">
151.5809 + <matte red="0" green="0" blue="0" alpha="18" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-237"/>
151.5810 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.5811 + </rectangle>
151.5812 + </shapes>
151.5813 + <effects/>
151.5814 + </layer>
151.5815 + </canvas>
151.5816 + </state>
151.5817 + </backgroundStates>
151.5818 + <foregroundStates/>
151.5819 + <borderStates/>
151.5820 + <regions/>
151.5821 + </uiComponent>
151.5822 + <uiComponent opaque="false" componentName="ComboBox.arrowButton" type="javax.swing.plaf.synth.SynthArrowButton" name="ArrowButton" ui="ArrowButtonUI" subregion="true">
151.5823 + <stateTypes>
151.5824 + <stateType key="Enabled"/>
151.5825 + <stateType key="MouseOver"/>
151.5826 + <stateType key="Pressed"/>
151.5827 + <stateType key="Disabled"/>
151.5828 + <stateType key="Editable">
151.5829 + <codeSnippet><![CDATA[
151.5830 + Component parent = c.getParent();
151.5831 + return parent instanceof JComboBox && ((JComboBox)parent).isEditable();]]></codeSnippet>
151.5832 + </stateType>
151.5833 + </stateTypes>
151.5834 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.5835 + <style>
151.5836 + <textForeground/>
151.5837 + <textBackground/>
151.5838 + <background/>
151.5839 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.5840 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.5841 + <uiproperties>
151.5842 + <uiProperty name="size" type="INT" value="19"/>
151.5843 + </uiproperties>
151.5844 + </style>
151.5845 + <backgroundStates>
151.5846 + <state stateKeys="Disabled">
151.5847 + <style>
151.5848 + <textForeground/>
151.5849 + <textBackground/>
151.5850 + <background/>
151.5851 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.5852 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.5853 + <uiproperties/>
151.5854 + </style>
151.5855 + <canvas>
151.5856 + <size width="20" height="24"/>
151.5857 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.5858 + <stretchingInsets top="3" bottom="4" left="1" right="5"/>
151.5859 + <layer name="Layer 1">
151.5860 + <opacity>1.0</opacity>
151.5861 + <fillOpacity>1.0</fillOpacity>
151.5862 + <blendingMode>NORMAL</blendingMode>
151.5863 + <locked>false</locked>
151.5864 + <visible>true</visible>
151.5865 + <shapes/>
151.5866 + <effects/>
151.5867 + </layer>
151.5868 + </canvas>
151.5869 + </state>
151.5870 + <state stateKeys="Enabled">
151.5871 + <style>
151.5872 + <textForeground/>
151.5873 + <textBackground/>
151.5874 + <background/>
151.5875 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.5876 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.5877 + <uiproperties/>
151.5878 + </style>
151.5879 + <canvas>
151.5880 + <size width="20" height="24"/>
151.5881 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.5882 + <stretchingInsets top="1" bottom="4" left="1" right="6"/>
151.5883 + <layer name="Layer 1">
151.5884 + <opacity>1.0</opacity>
151.5885 + <fillOpacity>1.0</fillOpacity>
151.5886 + <blendingMode>NORMAL</blendingMode>
151.5887 + <locked>false</locked>
151.5888 + <visible>true</visible>
151.5889 + <shapes/>
151.5890 + <effects/>
151.5891 + </layer>
151.5892 + </canvas>
151.5893 + </state>
151.5894 + <state stateKeys="Enabled+MouseOver">
151.5895 + <style>
151.5896 + <textForeground/>
151.5897 + <textBackground/>
151.5898 + <background/>
151.5899 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.5900 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.5901 + <uiproperties/>
151.5902 + </style>
151.5903 + <canvas>
151.5904 + <size width="20" height="24"/>
151.5905 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.5906 + <stretchingInsets top="3" bottom="4" left="1" right="6"/>
151.5907 + <layer name="Layer 1">
151.5908 + <opacity>1.0</opacity>
151.5909 + <fillOpacity>1.0</fillOpacity>
151.5910 + <blendingMode>NORMAL</blendingMode>
151.5911 + <locked>false</locked>
151.5912 + <visible>true</visible>
151.5913 + <shapes/>
151.5914 + <effects/>
151.5915 + </layer>
151.5916 + </canvas>
151.5917 + </state>
151.5918 + <state stateKeys="Enabled+Pressed">
151.5919 + <style>
151.5920 + <textForeground/>
151.5921 + <textBackground/>
151.5922 + <background/>
151.5923 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.5924 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.5925 + <uiproperties/>
151.5926 + </style>
151.5927 + <canvas>
151.5928 + <size width="20" height="24"/>
151.5929 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.5930 + <stretchingInsets top="3" bottom="4" left="1" right="6"/>
151.5931 + <layer name="Layer 1">
151.5932 + <opacity>1.0</opacity>
151.5933 + <fillOpacity>1.0</fillOpacity>
151.5934 + <blendingMode>NORMAL</blendingMode>
151.5935 + <locked>false</locked>
151.5936 + <visible>true</visible>
151.5937 + <shapes/>
151.5938 + <effects/>
151.5939 + </layer>
151.5940 + </canvas>
151.5941 + </state>
151.5942 + <state stateKeys="Disabled+Editable">
151.5943 + <style>
151.5944 + <textForeground/>
151.5945 + <textBackground/>
151.5946 + <background/>
151.5947 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.5948 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.5949 + <uiproperties/>
151.5950 + </style>
151.5951 + <canvas>
151.5952 + <size width="20" height="24"/>
151.5953 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.5954 + <stretchingInsets top="8" bottom="8" left="1" right="8"/>
151.5955 + <layer name="Layer 1">
151.5956 + <opacity>1.0</opacity>
151.5957 + <fillOpacity>1.0</fillOpacity>
151.5958 + <blendingMode>NORMAL</blendingMode>
151.5959 + <locked>false</locked>
151.5960 + <visible>true</visible>
151.5961 + <shapes>
151.5962 + <path>
151.5963 + <gradient cycleMethod="NO_CYCLE">
151.5964 + <stop position="0.0" midpoint="0.5">
151.5965 + <matte red="220" green="224" blue="230" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.59223604" brightnessOffset="0.35294116" alphaOffset="0"/>
151.5966 + </stop>
151.5967 + <stop position="0.34375" midpoint="0.5">
151.5968 + <matte red="210" green="215" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.02391243" saturationOffset="-0.5774183" brightnessOffset="0.32549018" alphaOffset="0"/>
151.5969 + </stop>
151.5970 + <stop position="0.6193182" midpoint="0.5">
151.5971 + <matte red="204" green="210" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56722116" brightnessOffset="0.3098039" alphaOffset="0"/>
151.5972 + </stop>
151.5973 + <stop position="1.0" midpoint="0.5">
151.5974 + <matte red="206" green="212" blue="221" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.567841" brightnessOffset="0.31764704" alphaOffset="0"/>
151.5975 + </stop>
151.5976 + </gradient>
151.5977 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.5978 + <points>
151.5979 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
151.5980 + <point x="12.0" y="3.0" cp1x="12.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
151.5981 + <point x="17.0" y="8.0" cp1x="17.0" cp1y="4.0" cp2x="17.0" cp2y="8.0"/>
151.5982 + <point x="17.0" y="16.0" cp1x="17.0" cp1y="16.0" cp2x="17.0" cp2y="20.0"/>
151.5983 + <point x="12.0" y="21.0" cp1x="16.0" cp1y="21.0" cp2x="12.0" cp2y="21.0"/>
151.5984 + <point x="1.0" y="21.0" cp1x="1.0" cp1y="21.0" cp2x="1.0" cp2y="21.0"/>
151.5985 + </points>
151.5986 + </path>
151.5987 + <path>
151.5988 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.5989 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.5990 + <points>
151.5991 + <point x="0.8529411764705883" y="21.11764705882353" cp1x="0.8529411764705883" cp1y="21.11764705882353" cp2x="0.8529411764705883" cp2y="21.11764705882353"/>
151.5992 + </points>
151.5993 + </path>
151.5994 + <path>
151.5995 + <gradient cycleMethod="NO_CYCLE">
151.5996 + <stop position="0.0" midpoint="0.5">
151.5997 + <matte red="191" green="197" blue="206" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56289876" brightnessOffset="0.2588235" alphaOffset="0"/>
151.5998 + </stop>
151.5999 + <stop position="1.0" midpoint="0.5">
151.6000 + <matte red="178" green="185" blue="193" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.010237217" saturationOffset="-0.55799407" brightnessOffset="0.20784312" alphaOffset="0"/>
151.6001 + </stop>
151.6002 + </gradient>
151.6003 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.6004 + <points>
151.6005 + <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
151.6006 + <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.0" cp2y="2.0"/>
151.6007 + <point x="18.0" y="7.0" cp1x="18.0" cp1y="4.0" cp2x="18.0" cp2y="7.0"/>
151.6008 + <point x="18.0" y="17.0" cp1x="18.0" cp1y="17.0" cp2x="18.0" cp2y="20.0"/>
151.6009 + <point x="13.0" y="22.0" cp1x="16.0" cp1y="22.0" cp2x="13.0" cp2y="22.0"/>
151.6010 + <point x="0.0" y="22.0" cp1x="0.0" cp1y="22.0" cp2x="0.0" cp2y="22.0"/>
151.6011 + </points>
151.6012 + </path>
151.6013 + <path>
151.6014 + <matte red="0" green="0" blue="0" alpha="8" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-247"/>
151.6015 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.6016 + <points>
151.6017 + <point x="0.0" y="16.0" cp1x="0.0" cp1y="16.0" cp2x="0.0" cp2y="16.0"/>
151.6018 + <point x="18.0" y="16.0" cp1x="18.0" cp1y="16.0" cp2x="18.0" cp2y="16.0"/>
151.6019 + <point x="18.0" y="18.0" cp1x="18.0" cp1y="18.0" cp2x="18.0" cp2y="22.0"/>
151.6020 + <point x="13.0" y="23.0" cp1x="16.0" cp1y="23.0" cp2x="13.0" cp2y="23.0"/>
151.6021 + <point x="0.0" y="23.0" cp1x="0.0" cp1y="23.0" cp2x="0.0" cp2y="23.0"/>
151.6022 + </points>
151.6023 + </path>
151.6024 + </shapes>
151.6025 + <effects/>
151.6026 + </layer>
151.6027 + <templateLayer fileName="113c77d1eb8.png">
151.6028 + <layer name="Template" type="template">
151.6029 + <opacity>1.0</opacity>
151.6030 + <fillOpacity>1.0</fillOpacity>
151.6031 + <blendingMode>NORMAL</blendingMode>
151.6032 + <locked>false</locked>
151.6033 + <visible>false</visible>
151.6034 + <shapes/>
151.6035 + <effects/>
151.6036 + </layer>
151.6037 + </templateLayer>
151.6038 + </canvas>
151.6039 + </state>
151.6040 + <state stateKeys="Enabled+Editable">
151.6041 + <style>
151.6042 + <textForeground/>
151.6043 + <textBackground/>
151.6044 + <background/>
151.6045 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.6046 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.6047 + <uiproperties/>
151.6048 + </style>
151.6049 + <canvas>
151.6050 + <size width="20" height="24"/>
151.6051 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.6052 + <stretchingInsets top="8" bottom="8" left="1" right="8"/>
151.6053 + <layer name="Layer 1">
151.6054 + <opacity>1.0</opacity>
151.6055 + <fillOpacity>1.0</fillOpacity>
151.6056 + <blendingMode>NORMAL</blendingMode>
151.6057 + <locked>false</locked>
151.6058 + <visible>true</visible>
151.6059 + <shapes>
151.6060 + <path>
151.6061 + <gradient cycleMethod="NO_CYCLE">
151.6062 + <stop position="0.0" midpoint="0.2754491">
151.6063 + <matte red="246" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
151.6064 + </stop>
151.6065 + <stop position="0.44652405" midpoint="0.5">
151.6066 + <matte red="174" green="192" blue="209" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0023007393" saturationOffset="-0.46825016" brightnessOffset="0.27058822" alphaOffset="0"/>
151.6067 + </stop>
151.6068 + <stop position="0.64171124" midpoint="0.5">
151.6069 + <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
151.6070 + </stop>
151.6071 + <stop position="1.0" midpoint="0.5">
151.6072 + <matte red="191" green="212" blue="231" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4625541" brightnessOffset="0.35686272" alphaOffset="0"/>
151.6073 + </stop>
151.6074 + </gradient>
151.6075 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.6076 + <points>
151.6077 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
151.6078 + <point x="12.0" y="3.0" cp1x="12.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
151.6079 + <point x="17.0" y="8.0" cp1x="17.0" cp1y="4.0" cp2x="17.0" cp2y="8.0"/>
151.6080 + <point x="17.0" y="16.0" cp1x="17.0" cp1y="16.0" cp2x="17.0" cp2y="20.0"/>
151.6081 + <point x="12.0" y="21.0" cp1x="16.0" cp1y="21.0" cp2x="12.0" cp2y="21.0"/>
151.6082 + <point x="1.0" y="21.0" cp1x="1.0" cp1y="21.0" cp2x="1.0" cp2y="21.0"/>
151.6083 + </points>
151.6084 + </path>
151.6085 + <path>
151.6086 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.6087 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.6088 + <points>
151.6089 + <point x="0.8529411764705883" y="21.11764705882353" cp1x="0.8529411764705883" cp1y="21.11764705882353" cp2x="0.8529411764705883" cp2y="21.11764705882353"/>
151.6090 + </points>
151.6091 + </path>
151.6092 + <path>
151.6093 + <gradient cycleMethod="NO_CYCLE">
151.6094 + <stop position="0.0" midpoint="0.5">
151.6095 + <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
151.6096 + </stop>
151.6097 + <stop position="1.0" midpoint="0.5">
151.6098 + <matte red="34" green="55" blue="74" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.095173776" brightnessOffset="-0.25882354" alphaOffset="0"/>
151.6099 + </stop>
151.6100 + </gradient>
151.6101 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.6102 + <points>
151.6103 + <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
151.6104 + <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.0" cp2y="2.0"/>
151.6105 + <point x="18.0" y="7.0" cp1x="18.0" cp1y="4.0" cp2x="18.0" cp2y="7.0"/>
151.6106 + <point x="18.0" y="17.0" cp1x="18.0" cp1y="17.0" cp2x="18.0" cp2y="20.0"/>
151.6107 + <point x="13.0" y="22.0" cp1x="16.0" cp1y="22.0" cp2x="13.0" cp2y="22.0"/>
151.6108 + <point x="0.0" y="22.0" cp1x="0.0" cp1y="22.0" cp2x="0.0" cp2y="22.0"/>
151.6109 + </points>
151.6110 + </path>
151.6111 + <path>
151.6112 + <matte red="0" green="0" blue="0" alpha="64" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-191"/>
151.6113 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.6114 + <points>
151.6115 + <point x="0.0" y="16.0" cp1x="0.0" cp1y="16.0" cp2x="0.0" cp2y="16.0"/>
151.6116 + <point x="18.0" y="16.0" cp1x="18.0" cp1y="16.0" cp2x="18.0" cp2y="16.0"/>
151.6117 + <point x="18.0" y="18.0" cp1x="18.0" cp1y="18.0" cp2x="18.0" cp2y="22.0"/>
151.6118 + <point x="13.0" y="23.0" cp1x="16.0" cp1y="23.0" cp2x="13.0" cp2y="23.0"/>
151.6119 + <point x="0.0" y="23.0" cp1x="0.0" cp1y="23.0" cp2x="0.0" cp2y="23.0"/>
151.6120 + </points>
151.6121 + </path>
151.6122 + </shapes>
151.6123 + <effects/>
151.6124 + </layer>
151.6125 + <templateLayer fileName="113c761dccf.png">
151.6126 + <layer name="Template" type="template">
151.6127 + <opacity>1.0</opacity>
151.6128 + <fillOpacity>1.0</fillOpacity>
151.6129 + <blendingMode>NORMAL</blendingMode>
151.6130 + <locked>false</locked>
151.6131 + <visible>false</visible>
151.6132 + <shapes/>
151.6133 + <effects/>
151.6134 + </layer>
151.6135 + </templateLayer>
151.6136 + </canvas>
151.6137 + </state>
151.6138 + <state stateKeys="MouseOver+Editable">
151.6139 + <style>
151.6140 + <textForeground/>
151.6141 + <textBackground/>
151.6142 + <background/>
151.6143 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.6144 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.6145 + <uiproperties/>
151.6146 + </style>
151.6147 + <canvas>
151.6148 + <size width="20" height="24"/>
151.6149 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.6150 + <stretchingInsets top="8" bottom="8" left="1" right="8"/>
151.6151 + <layer name="Layer 1">
151.6152 + <opacity>1.0</opacity>
151.6153 + <fillOpacity>1.0</fillOpacity>
151.6154 + <blendingMode>NORMAL</blendingMode>
151.6155 + <locked>false</locked>
151.6156 + <visible>true</visible>
151.6157 + <shapes>
151.6158 + <path>
151.6159 + <gradient cycleMethod="NO_CYCLE">
151.6160 + <stop position="0.0" midpoint="0.2754491">
151.6161 + <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
151.6162 + </stop>
151.6163 + <stop position="0.44652405" midpoint="0.5">
151.6164 + <matte red="191" green="209" blue="226" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0023007393" saturationOffset="-0.48084703" brightnessOffset="0.33725488" alphaOffset="0"/>
151.6165 + </stop>
151.6166 + <stop position="0.64171124" midpoint="0.5">
151.6167 + <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
151.6168 + </stop>
151.6169 + <stop position="0.98395723" midpoint="0.5">
151.6170 + <matte red="210" green="231" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4757143" brightnessOffset="0.43137252" alphaOffset="0"/>
151.6171 + </stop>
151.6172 + </gradient>
151.6173 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.6174 + <points>
151.6175 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
151.6176 + <point x="12.0" y="3.0" cp1x="12.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
151.6177 + <point x="17.0" y="8.0" cp1x="17.0" cp1y="4.0" cp2x="17.0" cp2y="8.0"/>
151.6178 + <point x="17.0" y="16.0" cp1x="17.0" cp1y="16.0" cp2x="17.0" cp2y="20.0"/>
151.6179 + <point x="12.0" y="21.0" cp1x="16.0" cp1y="21.0" cp2x="12.0" cp2y="21.0"/>
151.6180 + <point x="1.0" y="21.0" cp1x="1.0" cp1y="21.0" cp2x="1.0" cp2y="21.0"/>
151.6181 + </points>
151.6182 + </path>
151.6183 + <path>
151.6184 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.6185 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.6186 + <points>
151.6187 + <point x="0.8529411764705883" y="21.11764705882353" cp1x="0.8529411764705883" cp1y="21.11764705882353" cp2x="0.8529411764705883" cp2y="21.11764705882353"/>
151.6188 + </points>
151.6189 + </path>
151.6190 + <path>
151.6191 + <gradient cycleMethod="NO_CYCLE">
151.6192 + <stop position="0.0" midpoint="0.5">
151.6193 + <matte red="59" green="85" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.1769987" brightnessOffset="-0.12156865" alphaOffset="0"/>
151.6194 + </stop>
151.6195 + <stop position="1.0" midpoint="0.5">
151.6196 + <matte red="0" green="5" blue="29" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.059279382" saturationOffset="0.3642857" brightnessOffset="-0.43529415" alphaOffset="0"/>
151.6197 + </stop>
151.6198 + </gradient>
151.6199 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.6200 + <points>
151.6201 + <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
151.6202 + <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.0" cp2y="2.0"/>
151.6203 + <point x="18.0" y="7.0" cp1x="18.0" cp1y="4.0" cp2x="18.0" cp2y="7.0"/>
151.6204 + <point x="18.0" y="17.0" cp1x="18.0" cp1y="17.0" cp2x="18.0" cp2y="20.0"/>
151.6205 + <point x="13.0" y="22.0" cp1x="16.0" cp1y="22.0" cp2x="13.0" cp2y="22.0"/>
151.6206 + <point x="0.0" y="22.0" cp1x="0.0" cp1y="22.0" cp2x="0.0" cp2y="22.0"/>
151.6207 + </points>
151.6208 + </path>
151.6209 + <path>
151.6210 + <matte red="0" green="0" blue="0" alpha="64" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-191"/>
151.6211 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.6212 + <points>
151.6213 + <point x="0.0" y="16.0" cp1x="0.0" cp1y="16.0" cp2x="0.0" cp2y="16.0"/>
151.6214 + <point x="18.0" y="16.0" cp1x="18.0" cp1y="16.0" cp2x="18.0" cp2y="16.0"/>
151.6215 + <point x="18.0" y="18.0" cp1x="18.0" cp1y="18.0" cp2x="18.0" cp2y="22.0"/>
151.6216 + <point x="13.0" y="23.0" cp1x="16.0" cp1y="23.0" cp2x="13.0" cp2y="23.0"/>
151.6217 + <point x="0.0" y="23.0" cp1x="0.0" cp1y="23.0" cp2x="0.0" cp2y="23.0"/>
151.6218 + </points>
151.6219 + </path>
151.6220 + </shapes>
151.6221 + <effects/>
151.6222 + </layer>
151.6223 + <templateLayer fileName="113c77f1a58.png">
151.6224 + <layer name="Template" type="template">
151.6225 + <opacity>1.0</opacity>
151.6226 + <fillOpacity>1.0</fillOpacity>
151.6227 + <blendingMode>NORMAL</blendingMode>
151.6228 + <locked>false</locked>
151.6229 + <visible>false</visible>
151.6230 + <shapes/>
151.6231 + <effects/>
151.6232 + </layer>
151.6233 + </templateLayer>
151.6234 + </canvas>
151.6235 + </state>
151.6236 + <state stateKeys="Pressed+Editable">
151.6237 + <style>
151.6238 + <textForeground/>
151.6239 + <textBackground/>
151.6240 + <background/>
151.6241 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.6242 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.6243 + <uiproperties/>
151.6244 + </style>
151.6245 + <canvas>
151.6246 + <size width="20" height="24"/>
151.6247 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.6248 + <stretchingInsets top="8" bottom="8" left="1" right="8"/>
151.6249 + <layer name="Layer 1">
151.6250 + <opacity>1.0</opacity>
151.6251 + <fillOpacity>1.0</fillOpacity>
151.6252 + <blendingMode>NORMAL</blendingMode>
151.6253 + <locked>false</locked>
151.6254 + <visible>true</visible>
151.6255 + <shapes>
151.6256 + <path>
151.6257 + <gradient cycleMethod="NO_CYCLE">
151.6258 + <stop position="0.0" midpoint="0.2754491">
151.6259 + <matte red="143" green="169" blue="192" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
151.6260 + </stop>
151.6261 + <stop position="0.44652405" midpoint="0.5">
151.6262 + <matte red="63" green="107" blue="147" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="7.13408E-4" saturationOffset="-0.064285696" brightnessOffset="0.027450979" alphaOffset="0"/>
151.6263 + </stop>
151.6264 + <stop position="0.64171124" midpoint="0.5">
151.6265 + <matte red="53" green="100" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.00895375" brightnessOffset="0.007843137" alphaOffset="0"/>
151.6266 + </stop>
151.6267 + <stop position="1.0" midpoint="0.5">
151.6268 + <matte red="89" green="135" blue="177" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.13853917" brightnessOffset="0.14509803" alphaOffset="0"/>
151.6269 + </stop>
151.6270 + </gradient>
151.6271 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.6272 + <points>
151.6273 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
151.6274 + <point x="12.0" y="3.0" cp1x="12.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
151.6275 + <point x="17.0" y="8.0" cp1x="17.0" cp1y="4.0" cp2x="17.0" cp2y="8.0"/>
151.6276 + <point x="17.0" y="16.0" cp1x="17.0" cp1y="16.0" cp2x="17.0" cp2y="20.0"/>
151.6277 + <point x="12.0" y="21.0" cp1x="16.0" cp1y="21.0" cp2x="12.0" cp2y="21.0"/>
151.6278 + <point x="1.0" y="21.0" cp1x="1.0" cp1y="21.0" cp2x="1.0" cp2y="21.0"/>
151.6279 + </points>
151.6280 + </path>
151.6281 + <path>
151.6282 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.6283 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.6284 + <points>
151.6285 + <point x="0.8529411764705883" y="21.11764705882353" cp1x="0.8529411764705883" cp1y="21.11764705882353" cp2x="0.8529411764705883" cp2y="21.11764705882353"/>
151.6286 + </points>
151.6287 + </path>
151.6288 + <path>
151.6289 + <gradient cycleMethod="NO_CYCLE">
151.6290 + <stop position="0.0" midpoint="0.5">
151.6291 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.6292 + </stop>
151.6293 + <stop position="1.0" midpoint="0.5">
151.6294 + <matte red="28" green="56" blue="81" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.018606722" brightnessOffset="-0.23137257" alphaOffset="0"/>
151.6295 + </stop>
151.6296 + </gradient>
151.6297 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.6298 + <points>
151.6299 + <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
151.6300 + <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.0" cp2y="2.0"/>
151.6301 + <point x="18.0" y="7.0" cp1x="18.0" cp1y="4.0" cp2x="18.0" cp2y="7.0"/>
151.6302 + <point x="18.0" y="17.0" cp1x="18.0" cp1y="17.0" cp2x="18.0" cp2y="20.0"/>
151.6303 + <point x="13.0" y="22.0" cp1x="16.0" cp1y="22.0" cp2x="13.0" cp2y="22.0"/>
151.6304 + <point x="0.0" y="22.0" cp1x="0.0" cp1y="22.0" cp2x="0.0" cp2y="22.0"/>
151.6305 + </points>
151.6306 + </path>
151.6307 + <path>
151.6308 + <matte red="0" green="0" blue="0" alpha="64" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-191"/>
151.6309 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.6310 + <points>
151.6311 + <point x="0.0" y="16.0" cp1x="0.0" cp1y="16.0" cp2x="0.0" cp2y="16.0"/>
151.6312 + <point x="18.0" y="16.0" cp1x="18.0" cp1y="16.0" cp2x="18.0" cp2y="16.0"/>
151.6313 + <point x="18.0" y="18.0" cp1x="18.0" cp1y="18.0" cp2x="18.0" cp2y="22.0"/>
151.6314 + <point x="13.0" y="23.0" cp1x="16.0" cp1y="23.0" cp2x="13.0" cp2y="23.0"/>
151.6315 + <point x="0.0" y="23.0" cp1x="0.0" cp1y="23.0" cp2x="0.0" cp2y="23.0"/>
151.6316 + </points>
151.6317 + </path>
151.6318 + </shapes>
151.6319 + <effects/>
151.6320 + </layer>
151.6321 + <templateLayer fileName="114d8d17d13.png">
151.6322 + <layer name="Template" type="template">
151.6323 + <opacity>1.0</opacity>
151.6324 + <fillOpacity>1.0</fillOpacity>
151.6325 + <blendingMode>NORMAL</blendingMode>
151.6326 + <locked>false</locked>
151.6327 + <visible>false</visible>
151.6328 + <shapes/>
151.6329 + <effects/>
151.6330 + </layer>
151.6331 + </templateLayer>
151.6332 + </canvas>
151.6333 + </state>
151.6334 + <state stateKeys="Selected+Editable">
151.6335 + <style>
151.6336 + <textForeground/>
151.6337 + <textBackground/>
151.6338 + <background/>
151.6339 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.6340 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.6341 + <uiproperties/>
151.6342 + </style>
151.6343 + <canvas>
151.6344 + <size width="20" height="24"/>
151.6345 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.6346 + <stretchingInsets top="8" bottom="8" left="1" right="8"/>
151.6347 + <layer name="Layer 1">
151.6348 + <opacity>1.0</opacity>
151.6349 + <fillOpacity>1.0</fillOpacity>
151.6350 + <blendingMode>NORMAL</blendingMode>
151.6351 + <locked>false</locked>
151.6352 + <visible>true</visible>
151.6353 + <shapes>
151.6354 + <path>
151.6355 + <gradient cycleMethod="NO_CYCLE">
151.6356 + <stop position="0.0" midpoint="0.2754491">
151.6357 + <matte red="143" green="169" blue="192" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
151.6358 + </stop>
151.6359 + <stop position="0.44652405" midpoint="0.5">
151.6360 + <matte red="63" green="107" blue="147" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="7.13408E-4" saturationOffset="-0.064285696" brightnessOffset="0.027450979" alphaOffset="0"/>
151.6361 + </stop>
151.6362 + <stop position="0.64171124" midpoint="0.5">
151.6363 + <matte red="53" green="100" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.00895375" brightnessOffset="0.007843137" alphaOffset="0"/>
151.6364 + </stop>
151.6365 + <stop position="1.0" midpoint="0.5">
151.6366 + <matte red="89" green="135" blue="177" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.13853917" brightnessOffset="0.14509803" alphaOffset="0"/>
151.6367 + </stop>
151.6368 + </gradient>
151.6369 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.6370 + <points>
151.6371 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
151.6372 + <point x="12.0" y="3.0" cp1x="12.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
151.6373 + <point x="17.0" y="8.0" cp1x="17.0" cp1y="4.0" cp2x="17.0" cp2y="8.0"/>
151.6374 + <point x="17.0" y="16.0" cp1x="17.0" cp1y="16.0" cp2x="17.0" cp2y="20.0"/>
151.6375 + <point x="12.0" y="21.0" cp1x="16.0" cp1y="21.0" cp2x="12.0" cp2y="21.0"/>
151.6376 + <point x="1.0" y="21.0" cp1x="1.0" cp1y="21.0" cp2x="1.0" cp2y="21.0"/>
151.6377 + </points>
151.6378 + </path>
151.6379 + <path>
151.6380 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.6381 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.6382 + <points>
151.6383 + <point x="0.8529411764705883" y="21.11764705882353" cp1x="0.8529411764705883" cp1y="21.11764705882353" cp2x="0.8529411764705883" cp2y="21.11764705882353"/>
151.6384 + </points>
151.6385 + </path>
151.6386 + <path>
151.6387 + <gradient cycleMethod="NO_CYCLE">
151.6388 + <stop position="0.0" midpoint="0.5">
151.6389 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.6390 + </stop>
151.6391 + <stop position="1.0" midpoint="0.5">
151.6392 + <matte red="28" green="56" blue="81" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.018606722" brightnessOffset="-0.23137257" alphaOffset="0"/>
151.6393 + </stop>
151.6394 + </gradient>
151.6395 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.6396 + <points>
151.6397 + <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
151.6398 + <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.0" cp2y="2.0"/>
151.6399 + <point x="18.0" y="7.0" cp1x="18.0" cp1y="4.0" cp2x="18.0" cp2y="7.0"/>
151.6400 + <point x="18.0" y="17.0" cp1x="18.0" cp1y="17.0" cp2x="18.0" cp2y="20.0"/>
151.6401 + <point x="13.0" y="22.0" cp1x="16.0" cp1y="22.0" cp2x="13.0" cp2y="22.0"/>
151.6402 + <point x="0.0" y="22.0" cp1x="0.0" cp1y="22.0" cp2x="0.0" cp2y="22.0"/>
151.6403 + </points>
151.6404 + </path>
151.6405 + <path>
151.6406 + <matte red="0" green="0" blue="0" alpha="64" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-191"/>
151.6407 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.6408 + <points>
151.6409 + <point x="0.0" y="16.0" cp1x="0.0" cp1y="16.0" cp2x="0.0" cp2y="16.0"/>
151.6410 + <point x="18.0" y="16.0" cp1x="18.0" cp1y="16.0" cp2x="18.0" cp2y="16.0"/>
151.6411 + <point x="18.0" y="18.0" cp1x="18.0" cp1y="18.0" cp2x="18.0" cp2y="22.0"/>
151.6412 + <point x="13.0" y="23.0" cp1x="16.0" cp1y="23.0" cp2x="13.0" cp2y="23.0"/>
151.6413 + <point x="0.0" y="23.0" cp1x="0.0" cp1y="23.0" cp2x="0.0" cp2y="23.0"/>
151.6414 + </points>
151.6415 + </path>
151.6416 + </shapes>
151.6417 + <effects/>
151.6418 + </layer>
151.6419 + <templateLayer fileName="113c7808b08.png">
151.6420 + <layer name="Template" type="template">
151.6421 + <opacity>1.0</opacity>
151.6422 + <fillOpacity>1.0</fillOpacity>
151.6423 + <blendingMode>NORMAL</blendingMode>
151.6424 + <locked>false</locked>
151.6425 + <visible>false</visible>
151.6426 + <shapes/>
151.6427 + <effects/>
151.6428 + </layer>
151.6429 + </templateLayer>
151.6430 + </canvas>
151.6431 + </state>
151.6432 + </backgroundStates>
151.6433 + <foregroundStates>
151.6434 + <state stateKeys="Enabled" inverted="true">
151.6435 + <style>
151.6436 + <textForeground/>
151.6437 + <textBackground/>
151.6438 + <background/>
151.6439 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.6440 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.6441 + <uiproperties/>
151.6442 + </style>
151.6443 + <canvas>
151.6444 + <size width="24" height="19"/>
151.6445 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.6446 + <stretchingInsets top="6" bottom="6" left="9" right="10"/>
151.6447 + <layer name="Arrow">
151.6448 + <opacity>1.0</opacity>
151.6449 + <fillOpacity>1.0</fillOpacity>
151.6450 + <blendingMode>NORMAL</blendingMode>
151.6451 + <locked>false</locked>
151.6452 + <visible>true</visible>
151.6453 + <shapes>
151.6454 + <path>
151.6455 + <gradient cycleMethod="NO_CYCLE">
151.6456 + <stop position="0.0" midpoint="0.5">
151.6457 + <matte red="45" green="45" blue="45" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.37254906" alphaOffset="0"/>
151.6458 + </stop>
151.6459 + <stop position="1.0" midpoint="0.5">
151.6460 + <matte red="6" green="6" blue="6" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.5254902" alphaOffset="0"/>
151.6461 + </stop>
151.6462 + </gradient>
151.6463 + <paintPoints x1="1.0" y1="0.5" x2="0.0" y2="0.5"/>
151.6464 + <points>
151.6465 + <point x="8.996323529411764" y="8.531250000000004" cp1x="8.996323529411764" cp1y="8.531250000000004" cp2x="8.996323529411764" cp2y="8.531250000000004"/>
151.6466 + <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
151.6467 + <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
151.6468 + </points>
151.6469 + </path>
151.6470 + </shapes>
151.6471 + <effects/>
151.6472 + </layer>
151.6473 + <templateLayer fileName="114d842ecfd.png">
151.6474 + <layer name="Template" type="template">
151.6475 + <opacity>1.0</opacity>
151.6476 + <fillOpacity>1.0</fillOpacity>
151.6477 + <blendingMode>NORMAL</blendingMode>
151.6478 + <locked>false</locked>
151.6479 + <visible>false</visible>
151.6480 + <shapes/>
151.6481 + <effects/>
151.6482 + </layer>
151.6483 + </templateLayer>
151.6484 + </canvas>
151.6485 + </state>
151.6486 + <state stateKeys="MouseOver" inverted="true">
151.6487 + <style>
151.6488 + <textForeground/>
151.6489 + <textBackground/>
151.6490 + <background/>
151.6491 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.6492 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.6493 + <uiproperties/>
151.6494 + </style>
151.6495 + <canvas>
151.6496 + <size width="24" height="19"/>
151.6497 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.6498 + <stretchingInsets top="6" bottom="6" left="9" right="10"/>
151.6499 + <layer name="Arrow">
151.6500 + <opacity>1.0</opacity>
151.6501 + <fillOpacity>1.0</fillOpacity>
151.6502 + <blendingMode>NORMAL</blendingMode>
151.6503 + <locked>false</locked>
151.6504 + <visible>true</visible>
151.6505 + <shapes>
151.6506 + <path>
151.6507 + <gradient cycleMethod="NO_CYCLE">
151.6508 + <stop position="0.0" midpoint="0.5">
151.6509 + <matte red="45" green="45" blue="45" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.37254906" alphaOffset="0"/>
151.6510 + </stop>
151.6511 + <stop position="1.0" midpoint="0.5">
151.6512 + <matte red="6" green="6" blue="6" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.5254902" alphaOffset="0"/>
151.6513 + </stop>
151.6514 + </gradient>
151.6515 + <paintPoints x1="1.0" y1="0.5" x2="0.0" y2="0.5"/>
151.6516 + <points>
151.6517 + <point x="9.03125" y="8.46875" cp1x="9.03125" cp1y="8.46875" cp2x="9.03125" cp2y="8.46875"/>
151.6518 + <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
151.6519 + <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
151.6520 + </points>
151.6521 + </path>
151.6522 + </shapes>
151.6523 + <effects/>
151.6524 + </layer>
151.6525 + <templateLayer fileName="114d842ecfd.png">
151.6526 + <layer name="Template" type="template">
151.6527 + <opacity>1.0</opacity>
151.6528 + <fillOpacity>1.0</fillOpacity>
151.6529 + <blendingMode>NORMAL</blendingMode>
151.6530 + <locked>false</locked>
151.6531 + <visible>false</visible>
151.6532 + <shapes/>
151.6533 + <effects/>
151.6534 + </layer>
151.6535 + </templateLayer>
151.6536 + </canvas>
151.6537 + </state>
151.6538 + <state stateKeys="Disabled" inverted="true">
151.6539 + <style>
151.6540 + <textForeground/>
151.6541 + <textBackground/>
151.6542 + <background/>
151.6543 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.6544 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.6545 + <uiproperties/>
151.6546 + </style>
151.6547 + <canvas>
151.6548 + <size width="24" height="19"/>
151.6549 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.6550 + <stretchingInsets top="6" bottom="6" left="9" right="10"/>
151.6551 + <layer name="Arrow">
151.6552 + <opacity>1.0</opacity>
151.6553 + <fillOpacity>1.0</fillOpacity>
151.6554 + <blendingMode>NORMAL</blendingMode>
151.6555 + <locked>false</locked>
151.6556 + <visible>true</visible>
151.6557 + <shapes>
151.6558 + <path>
151.6559 + <matte red="167" green="171" blue="178" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.57391655" brightnessOffset="0.1490196" alphaOffset="0"/>
151.6560 + <paintPoints x1="1.0" y1="0.5" x2="0.0" y2="0.5"/>
151.6561 + <points>
151.6562 + <point x="9.058823529411764" y="8.531250000000004" cp1x="9.058823529411764" cp1y="8.531250000000004" cp2x="9.058823529411764" cp2y="8.531250000000004"/>
151.6563 + <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
151.6564 + <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
151.6565 + </points>
151.6566 + </path>
151.6567 + </shapes>
151.6568 + <effects/>
151.6569 + </layer>
151.6570 + <templateLayer fileName="114d85fec10.png">
151.6571 + <layer name="Template" type="template">
151.6572 + <opacity>1.0</opacity>
151.6573 + <fillOpacity>1.0</fillOpacity>
151.6574 + <blendingMode>NORMAL</blendingMode>
151.6575 + <locked>false</locked>
151.6576 + <visible>false</visible>
151.6577 + <shapes/>
151.6578 + <effects/>
151.6579 + </layer>
151.6580 + </templateLayer>
151.6581 + </canvas>
151.6582 + </state>
151.6583 + <state stateKeys="Pressed" inverted="true">
151.6584 + <style>
151.6585 + <textForeground/>
151.6586 + <textBackground/>
151.6587 + <background/>
151.6588 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.6589 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.6590 + <uiproperties/>
151.6591 + </style>
151.6592 + <canvas>
151.6593 + <size width="24" height="19"/>
151.6594 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.6595 + <stretchingInsets top="6" bottom="6" left="9" right="10"/>
151.6596 + <layer name="Arrow">
151.6597 + <opacity>1.0</opacity>
151.6598 + <fillOpacity>1.0</fillOpacity>
151.6599 + <blendingMode>NORMAL</blendingMode>
151.6600 + <locked>false</locked>
151.6601 + <visible>true</visible>
151.6602 + <shapes>
151.6603 + <path>
151.6604 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.6605 + <paintPoints x1="1.0" y1="0.5" x2="0.0" y2="0.5"/>
151.6606 + <points>
151.6607 + <point x="9.121323529411764" y="8.468750000000004" cp1x="9.121323529411764" cp1y="8.468750000000004" cp2x="9.121323529411764" cp2y="8.468750000000004"/>
151.6608 + <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
151.6609 + <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
151.6610 + </points>
151.6611 + </path>
151.6612 + </shapes>
151.6613 + <effects/>
151.6614 + </layer>
151.6615 + <templateLayer fileName="114d861c1b2.png">
151.6616 + <layer name="Template" type="template">
151.6617 + <opacity>1.0</opacity>
151.6618 + <fillOpacity>1.0</fillOpacity>
151.6619 + <blendingMode>NORMAL</blendingMode>
151.6620 + <locked>false</locked>
151.6621 + <visible>false</visible>
151.6622 + <shapes/>
151.6623 + <effects/>
151.6624 + </layer>
151.6625 + </templateLayer>
151.6626 + </canvas>
151.6627 + </state>
151.6628 + <state stateKeys="Selected" inverted="true">
151.6629 + <style>
151.6630 + <textForeground/>
151.6631 + <textBackground/>
151.6632 + <background/>
151.6633 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.6634 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.6635 + <uiproperties/>
151.6636 + </style>
151.6637 + <canvas>
151.6638 + <size width="24" height="19"/>
151.6639 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.6640 + <stretchingInsets top="6" bottom="6" left="9" right="10"/>
151.6641 + <layer name="Arrow">
151.6642 + <opacity>1.0</opacity>
151.6643 + <fillOpacity>1.0</fillOpacity>
151.6644 + <blendingMode>NORMAL</blendingMode>
151.6645 + <locked>false</locked>
151.6646 + <visible>true</visible>
151.6647 + <shapes>
151.6648 + <path>
151.6649 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.6650 + <paintPoints x1="1.0" y1="0.5" x2="0.0" y2="0.5"/>
151.6651 + <points>
151.6652 + <point x="9.058823529411764" y="8.531250000000004" cp1x="9.058823529411764" cp1y="8.531250000000004" cp2x="9.058823529411764" cp2y="8.531250000000004"/>
151.6653 + <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
151.6654 + <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
151.6655 + </points>
151.6656 + </path>
151.6657 + </shapes>
151.6658 + <effects/>
151.6659 + </layer>
151.6660 + <templateLayer fileName="114d861c1b2.png">
151.6661 + <layer name="Template" type="template">
151.6662 + <opacity>1.0</opacity>
151.6663 + <fillOpacity>1.0</fillOpacity>
151.6664 + <blendingMode>NORMAL</blendingMode>
151.6665 + <locked>false</locked>
151.6666 + <visible>false</visible>
151.6667 + <shapes/>
151.6668 + <effects/>
151.6669 + </layer>
151.6670 + </templateLayer>
151.6671 + </canvas>
151.6672 + </state>
151.6673 + </foregroundStates>
151.6674 + <borderStates/>
151.6675 + <regions/>
151.6676 + </uiComponent>
151.6677 + <uiComponent opaque="true" componentName="ComboBox.listRenderer" type="javax.swing.JLabel" name="Label" ui="LabelUI" subregion="true">
151.6678 + <stateTypes/>
151.6679 + <contentMargins top="2" bottom="2" left="4" right="4"/>
151.6680 + <style>
151.6681 + <textForeground/>
151.6682 + <textBackground/>
151.6683 + <background>
151.6684 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.6685 + </background>
151.6686 + <inherit-background>false</inherit-background>
151.6687 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.6688 + <cacheMode>NO_CACHING</cacheMode>
151.6689 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.6690 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.6691 + <uiproperties/>
151.6692 + </style>
151.6693 + <backgroundStates>
151.6694 + <state stateKeys="Disabled">
151.6695 + <style>
151.6696 + <textForeground>
151.6697 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.6698 + </textForeground>
151.6699 + <textBackground/>
151.6700 + <background/>
151.6701 + <inherit-textForeground>false</inherit-textForeground>
151.6702 + <uiproperties/>
151.6703 + </style>
151.6704 + <canvas>
151.6705 + <size width="100" height="30"/>
151.6706 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.6707 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.6708 + <layer name="Layer 1">
151.6709 + <opacity>1.0</opacity>
151.6710 + <fillOpacity>1.0</fillOpacity>
151.6711 + <blendingMode>NORMAL</blendingMode>
151.6712 + <locked>false</locked>
151.6713 + <visible>true</visible>
151.6714 + <shapes/>
151.6715 + <effects/>
151.6716 + </layer>
151.6717 + </canvas>
151.6718 + </state>
151.6719 + <state stateKeys="Selected">
151.6720 + <style>
151.6721 + <textForeground>
151.6722 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.6723 + </textForeground>
151.6724 + <textBackground/>
151.6725 + <background>
151.6726 + <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.6727 + </background>
151.6728 + <inherit-textForeground>false</inherit-textForeground>
151.6729 + <inherit-background>false</inherit-background>
151.6730 + <uiproperties/>
151.6731 + </style>
151.6732 + <canvas>
151.6733 + <size width="100" height="30"/>
151.6734 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.6735 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.6736 + <layer name="Layer 1">
151.6737 + <opacity>1.0</opacity>
151.6738 + <fillOpacity>1.0</fillOpacity>
151.6739 + <blendingMode>NORMAL</blendingMode>
151.6740 + <locked>false</locked>
151.6741 + <visible>true</visible>
151.6742 + <shapes/>
151.6743 + <effects/>
151.6744 + </layer>
151.6745 + </canvas>
151.6746 + </state>
151.6747 + </backgroundStates>
151.6748 + <foregroundStates/>
151.6749 + <borderStates/>
151.6750 + <regions/>
151.6751 + </uiComponent>
151.6752 + <uiComponent opaque="false" componentName="ComboBox.renderer" type="javax.swing.JLabel" name="Label" ui="LabelUI" subregion="true">
151.6753 + <stateTypes/>
151.6754 + <contentMargins top="2" bottom="2" left="4" right="4"/>
151.6755 + <style>
151.6756 + <textForeground/>
151.6757 + <textBackground/>
151.6758 + <background/>
151.6759 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.6760 + <cacheMode>NO_CACHING</cacheMode>
151.6761 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.6762 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.6763 + <uiproperties/>
151.6764 + </style>
151.6765 + <backgroundStates>
151.6766 + <state stateKeys="Disabled">
151.6767 + <style>
151.6768 + <textForeground>
151.6769 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.6770 + </textForeground>
151.6771 + <textBackground/>
151.6772 + <background/>
151.6773 + <inherit-textForeground>false</inherit-textForeground>
151.6774 + <uiproperties/>
151.6775 + </style>
151.6776 + <canvas>
151.6777 + <size width="100" height="30"/>
151.6778 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.6779 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.6780 + <layer name="Layer 1">
151.6781 + <opacity>1.0</opacity>
151.6782 + <fillOpacity>1.0</fillOpacity>
151.6783 + <blendingMode>NORMAL</blendingMode>
151.6784 + <locked>false</locked>
151.6785 + <visible>true</visible>
151.6786 + <shapes/>
151.6787 + <effects/>
151.6788 + </layer>
151.6789 + </canvas>
151.6790 + </state>
151.6791 + <state stateKeys="Selected">
151.6792 + <style>
151.6793 + <textForeground>
151.6794 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.6795 + </textForeground>
151.6796 + <textBackground/>
151.6797 + <background>
151.6798 + <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.6799 + </background>
151.6800 + <inherit-textForeground>false</inherit-textForeground>
151.6801 + <inherit-background>false</inherit-background>
151.6802 + <uiproperties/>
151.6803 + </style>
151.6804 + <canvas>
151.6805 + <size width="100" height="30"/>
151.6806 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.6807 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.6808 + <layer name="Layer 1">
151.6809 + <opacity>1.0</opacity>
151.6810 + <fillOpacity>1.0</fillOpacity>
151.6811 + <blendingMode>NORMAL</blendingMode>
151.6812 + <locked>false</locked>
151.6813 + <visible>true</visible>
151.6814 + <shapes/>
151.6815 + <effects/>
151.6816 + </layer>
151.6817 + </canvas>
151.6818 + </state>
151.6819 + </backgroundStates>
151.6820 + <foregroundStates/>
151.6821 + <borderStates/>
151.6822 + <regions/>
151.6823 + </uiComponent>
151.6824 + </regions>
151.6825 + </uiComponent>
151.6826 + <uiComponent opaque="false" componentName="ComboBox.scrollPane" type="javax.swing.JScrollPane" name="ScrollPane" ui="ScrollPaneUI" subregion="false">
151.6827 + <stateTypes/>
151.6828 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.6829 + <style>
151.6830 + <textForeground/>
151.6831 + <textBackground/>
151.6832 + <background/>
151.6833 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.6834 + <cacheMode>NO_CACHING</cacheMode>
151.6835 + <uiproperties/>
151.6836 + </style>
151.6837 + <backgroundStates>
151.6838 + <state stateKeys="Enabled">
151.6839 + <style>
151.6840 + <textForeground/>
151.6841 + <textBackground/>
151.6842 + <background/>
151.6843 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.6844 + <uiproperties/>
151.6845 + </style>
151.6846 + <canvas>
151.6847 + <size width="100" height="30"/>
151.6848 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.6849 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.6850 + <layer name="Layer 1">
151.6851 + <opacity>1.0</opacity>
151.6852 + <fillOpacity>1.0</fillOpacity>
151.6853 + <blendingMode>NORMAL</blendingMode>
151.6854 + <locked>false</locked>
151.6855 + <visible>true</visible>
151.6856 + <shapes/>
151.6857 + <effects/>
151.6858 + </layer>
151.6859 + </canvas>
151.6860 + </state>
151.6861 + </backgroundStates>
151.6862 + <foregroundStates/>
151.6863 + <borderStates/>
151.6864 + <regions/>
151.6865 + </uiComponent>
151.6866 + <uiComponent opaque="true" type="javax.swing.JFileChooser" name="FileChooser" ui="FileChooserUI" subregion="false">
151.6867 + <stateTypes/>
151.6868 + <contentMargins top="10" bottom="10" left="10" right="10"/>
151.6869 + <style>
151.6870 + <textForeground/>
151.6871 + <textBackground/>
151.6872 + <background/>
151.6873 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.6874 + <cacheMode>NO_CACHING</cacheMode>
151.6875 + <uiproperties>
151.6876 + <uiProperty name="usesSingleFilePane" type="BOOLEAN" value="true"/>
151.6877 + </uiproperties>
151.6878 + </style>
151.6879 + <backgroundStates>
151.6880 + <state stateKeys="Enabled">
151.6881 + <style>
151.6882 + <textForeground/>
151.6883 + <textBackground/>
151.6884 + <background/>
151.6885 + <uiproperties/>
151.6886 + </style>
151.6887 + <canvas>
151.6888 + <size width="100" height="30"/>
151.6889 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.6890 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.6891 + <layer name="Layer 1">
151.6892 + <opacity>1.0</opacity>
151.6893 + <fillOpacity>1.0</fillOpacity>
151.6894 + <blendingMode>NORMAL</blendingMode>
151.6895 + <locked>false</locked>
151.6896 + <visible>true</visible>
151.6897 + <shapes>
151.6898 + <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
151.6899 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="control" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.6900 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.6901 + </rectangle>
151.6902 + </shapes>
151.6903 + <effects/>
151.6904 + </layer>
151.6905 + </canvas>
151.6906 + </state>
151.6907 + </backgroundStates>
151.6908 + <foregroundStates/>
151.6909 + <borderStates/>
151.6910 + <regions>
151.6911 + <uiIconRegion name="fileIcon" subregion="true" key="fileIcon">
151.6912 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.6913 + <style>
151.6914 + <textForeground/>
151.6915 + <textBackground/>
151.6916 + <background/>
151.6917 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.6918 + <uiproperties/>
151.6919 + </style>
151.6920 + <backgroundStates>
151.6921 + <state stateKeys="Enabled">
151.6922 + <style>
151.6923 + <textForeground/>
151.6924 + <textBackground/>
151.6925 + <background/>
151.6926 + <uiproperties/>
151.6927 + </style>
151.6928 + <canvas>
151.6929 + <size width="16" height="16"/>
151.6930 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.6931 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.6932 + <layer name="Button">
151.6933 + <opacity>1.0</opacity>
151.6934 + <fillOpacity>1.0</fillOpacity>
151.6935 + <blendingMode>NORMAL</blendingMode>
151.6936 + <locked>false</locked>
151.6937 + <visible>true</visible>
151.6938 + <shapes>
151.6939 + <path>
151.6940 + <matte red="255" green="255" blue="255" alpha="128" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-127"/>
151.6941 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.6942 + <points>
151.6943 + <point x="10.0" y="2.0" cp1x="10.0" cp1y="2.0" cp2x="10.0" cp2y="2.0"/>
151.6944 + <point x="10.0" y="1.0" cp1x="10.0" cp1y="1.0" cp2x="10.0" cp2y="1.0"/>
151.6945 + <point x="2.0" y="1.0" cp1x="2.0" cp1y="1.0" cp2x="2.0" cp2y="1.0"/>
151.6946 + <point x="2.0" y="15.0" cp1x="2.0" cp1y="15.0" cp2x="2.0" cp2y="15.0"/>
151.6947 + <point x="14.0" y="15.0" cp1x="14.0" cp1y="15.0" cp2x="14.0" cp2y="15.0"/>
151.6948 + <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
151.6949 + <point x="13.0" y="5.0" cp1x="13.0" cp1y="5.0" cp2x="13.0" cp2y="5.0"/>
151.6950 + <point x="13.0" y="14.0" cp1x="13.0" cp1y="14.0" cp2x="13.0" cp2y="14.0"/>
151.6951 + <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
151.6952 + <point x="3.0" y="2.0" cp1x="3.0" cp1y="2.0" cp2x="3.0" cp2y="2.0"/>
151.6953 + </points>
151.6954 + </path>
151.6955 + <path>
151.6956 + <matte red="138" green="157" blue="176" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.4198052" brightnessOffset="0.14117646" alphaOffset="0"/>
151.6957 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.6958 + <points>
151.6959 + <point x="10.0" y="1.0" cp1x="10.0" cp1y="1.0" cp2x="10.0" cp2y="1.0"/>
151.6960 + <point x="8.74074074074074" y="1.0" cp1x="8.74074074074074" cp1y="1.0" cp2x="8.74074074074074" cp2y="1.0"/>
151.6961 + <point x="8.777777777777777" y="6.222222222222219" cp1x="8.777777777777777" cp1y="6.222222222222219" cp2x="8.777777777777777" cp2y="6.222222222222219"/>
151.6962 + <point x="14.0" y="6.2037037037037" cp1x="14.0" cp1y="6.2037037037037" cp2x="14.0" cp2y="6.2037037037037"/>
151.6963 + <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
151.6964 + <point x="10.0" y="5.0" cp1x="10.0" cp1y="5.0" cp2x="10.0" cp2y="5.0"/>
151.6965 + </points>
151.6966 + </path>
151.6967 + <path>
151.6968 + <gradient cycleMethod="NO_CYCLE">
151.6969 + <stop position="0.0" midpoint="0.5">
151.6970 + <matte red="202" green="215" blue="229" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0077680945" saturationOffset="-0.51781034" brightnessOffset="0.3490196" alphaOffset="0"/>
151.6971 + </stop>
151.6972 + <stop position="1.0" midpoint="0.5">
151.6973 + <matte red="238" green="242" blue="247" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.013940871" saturationOffset="-0.599277" brightnessOffset="0.41960782" alphaOffset="0"/>
151.6974 + </stop>
151.6975 + </gradient>
151.6976 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.6977 + <points>
151.6978 + <point x="10.0" y="1.0" cp1x="10.0" cp1y="1.0" cp2x="10.0" cp2y="1.0"/>
151.6979 + <point x="2.0" y="1.0" cp1x="2.0" cp1y="1.0" cp2x="2.0" cp2y="1.0"/>
151.6980 + <point x="2.0" y="15.0" cp1x="2.0" cp1y="15.0" cp2x="2.0" cp2y="15.0"/>
151.6981 + <point x="14.0" y="15.0" cp1x="14.0" cp1y="15.0" cp2x="14.0" cp2y="15.0"/>
151.6982 + <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
151.6983 + <point x="10.0" y="5.0" cp1x="10.0" cp1y="5.0" cp2x="10.0" cp2y="5.0"/>
151.6984 + </points>
151.6985 + </path>
151.6986 + <path>
151.6987 + <gradient cycleMethod="NO_CYCLE">
151.6988 + <stop position="0.0" midpoint="0.5">
151.6989 + <matte red="236" green="245" blue="253" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.032679737" saturationOffset="-0.043332636" brightnessOffset="0.24705881" alphaOffset="0"/>
151.6990 + </stop>
151.6991 + <stop position="1.0" midpoint="0.5">
151.6992 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.6993 + </stop>
151.6994 + </gradient>
151.6995 + <paintPoints x1="0.04629629629629636" y1="0.9675925925925929" x2="0.48611111111111094" y2="0.5324074074074074"/>
151.6996 + <points>
151.6997 + <point x="10.0" y="1.0" cp1x="10.0" cp1y="1.0" cp2x="10.0" cp2y="1.0"/>
151.6998 + <point x="10.0" y="5.0" cp1x="10.0" cp1y="5.0" cp2x="10.0" cp2y="5.0"/>
151.6999 + <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
151.7000 + </points>
151.7001 + </path>
151.7002 + <rectangle x1="2.0" x2="14.0" y1="15.0" y2="16.0" rounding="0.0">
151.7003 + <matte red="97" green="98" blue="102" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7004 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7005 + </rectangle>
151.7006 + <path>
151.7007 + <matte red="149" green="151" blue="156" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.065654516" brightnessOffset="-0.13333333" alphaOffset="0"/>
151.7008 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7009 + <points>
151.7010 + <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
151.7011 + <point x="1.0" y="16.0" cp1x="1.0" cp1y="16.0" cp2x="1.0" cp2y="16.0"/>
151.7012 + <point x="2.0" y="16.0" cp1x="2.0" cp1y="16.0" cp2x="2.0" cp2y="16.0"/>
151.7013 + <point x="2.0" y="1.0" cp1x="2.0" cp1y="1.0" cp2x="2.0" cp2y="1.0"/>
151.7014 + <point x="10.518518518518523" y="0.9999999999999999" cp1x="10.518518518518523" cp1y="0.9999999999999999" cp2x="10.518518518518523" cp2y="0.9999999999999999"/>
151.7015 + <point x="14.000000000000002" y="4.5" cp1x="14.000000000000002" cp1y="4.5" cp2x="14.000000000000002" cp2y="4.5"/>
151.7016 + <point x="14.0" y="16.0" cp1x="14.0" cp1y="16.0" cp2x="14.0" cp2y="16.0"/>
151.7017 + <point x="15.0" y="16.0" cp1x="15.0" cp1y="16.0" cp2x="15.0" cp2y="16.0"/>
151.7018 + <point x="15.0" y="4.444444444444441" cp1x="15.0" cp1y="4.444444444444441" cp2x="15.0" cp2y="4.444444444444441"/>
151.7019 + <point x="10.722222222222225" y="0.0" cp1x="10.722222222222225" cp1y="0.0" cp2x="10.722222222222225" cp2y="0.0"/>
151.7020 + </points>
151.7021 + </path>
151.7022 + </shapes>
151.7023 + <effects/>
151.7024 + </layer>
151.7025 + </canvas>
151.7026 + </state>
151.7027 + </backgroundStates>
151.7028 + <foregroundStates/>
151.7029 + <borderStates/>
151.7030 + <regions/>
151.7031 + </uiIconRegion>
151.7032 + <uiIconRegion name="directoryIcon" subregion="true" key="directoryIcon">
151.7033 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.7034 + <style>
151.7035 + <textForeground/>
151.7036 + <textBackground/>
151.7037 + <background/>
151.7038 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.7039 + <uiproperties/>
151.7040 + </style>
151.7041 + <backgroundStates>
151.7042 + <state stateKeys="Enabled">
151.7043 + <style>
151.7044 + <textForeground/>
151.7045 + <textBackground/>
151.7046 + <background/>
151.7047 + <uiproperties/>
151.7048 + </style>
151.7049 + <canvas>
151.7050 + <size width="16" height="16"/>
151.7051 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.7052 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.7053 + <layer name="Button">
151.7054 + <opacity>1.0</opacity>
151.7055 + <fillOpacity>1.0</fillOpacity>
151.7056 + <blendingMode>NORMAL</blendingMode>
151.7057 + <locked>false</locked>
151.7058 + <visible>true</visible>
151.7059 + <shapes>
151.7060 + <path>
151.7061 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7062 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7063 + <points>
151.7064 + <point x="12.0" y="12.0" cp1x="12.0" cp1y="12.0" cp2x="12.0" cp2y="12.0"/>
151.7065 + </points>
151.7066 + </path>
151.7067 + <path>
151.7068 + <gradient cycleMethod="NO_CYCLE">
151.7069 + <stop position="0.0" midpoint="0.5">
151.7070 + <matte red="100" green="122" blue="143" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0027436614" saturationOffset="-0.335015" brightnessOffset="0.011764705" alphaOffset="0"/>
151.7071 + </stop>
151.7072 + <stop position="0.25449103" midpoint="0.5">
151.7073 + <matte red="111" green="130" blue="148" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0024294257" saturationOffset="-0.3857143" brightnessOffset="0.031372547" alphaOffset="0"/>
151.7074 + </stop>
151.7075 + <stop position="1.0" midpoint="0.5">
151.7076 + <matte red="76" green="91" blue="105" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0018081069" saturationOffset="-0.3595238" brightnessOffset="-0.13725492" alphaOffset="0"/>
151.7077 + </stop>
151.7078 + </gradient>
151.7079 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.7080 + <points>
151.7081 + <point x="13.0" y="5.0" cp1x="13.0" cp1y="5.0" cp2x="13.0" cp2y="5.0"/>
151.7082 + <point x="13.0" y="4.0" cp1x="13.0" cp1y="4.0" cp2x="13.0" cp2y="4.0"/>
151.7083 + <point x="3.7407407407407405" y="3.9999999999999996" cp1x="3.7407407407407405" cp1y="3.9999999999999996" cp2x="3.7407407407407405" cp2y="3.9999999999999996"/>
151.7084 + <point x="2.0185185185185137" y="10.05555555555555" cp1x="2.0185185185185137" cp1y="10.05555555555555" cp2x="2.0185185185185137" cp2y="10.05555555555555"/>
151.7085 + <point x="2.0" y="14.0" cp1x="2.0" cp1y="14.0" cp2x="2.0" cp2y="14.0"/>
151.7086 + <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
151.7087 + <point x="2.9629629629629632" y="12.129629629629632" cp1x="2.9629629629629632" cp1y="12.129629629629632" cp2x="2.9629629629629632" cp2y="12.129629629629632"/>
151.7088 + <point x="4.579999999999991" y="4.98" cp1x="4.579999999999991" cp1y="4.98" cp2x="4.579999999999991" cp2y="4.98"/>
151.7089 + </points>
151.7090 + </path>
151.7091 + <path>
151.7092 + <gradient cycleMethod="NO_CYCLE">
151.7093 + <stop position="0.0" midpoint="0.5">
151.7094 + <matte red="72" green="97" blue="120" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0012094378" saturationOffset="-0.23571429" brightnessOffset="-0.0784314" alphaOffset="0"/>
151.7095 + </stop>
151.7096 + <stop position="1.0" midpoint="0.5">
151.7097 + <matte red="35" green="55" blue="73" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.115166366" brightnessOffset="-0.2627451" alphaOffset="0"/>
151.7098 + </stop>
151.7099 + </gradient>
151.7100 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.7101 + <points>
151.7102 + <point x="16.0" y="4.0" cp1x="16.0" cp1y="4.0" cp2x="16.0" cp2y="4.0"/>
151.7103 + <point x="16.0" y="5.0" cp1x="16.0" cp1y="5.0" cp2x="16.0" cp2y="5.0"/>
151.7104 + <point x="13.0" y="5.0" cp1x="13.0" cp1y="5.0" cp2x="13.0" cp2y="5.0"/>
151.7105 + <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="13.0" cp2y="3.0"/>
151.7106 + <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
151.7107 + <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="7.0" cp2y="2.0"/>
151.7108 + <point x="7.0" y="1.0" cp1x="7.0" cp1y="1.0" cp2x="7.0" cp2y="1.0"/>
151.7109 + <point x="2.9444444444444438" y="1.0185185185185186" cp1x="2.9444444444444438" cp1y="1.0185185185185186" cp2x="2.9444444444444438" cp2y="1.0185185185185186"/>
151.7110 + <point x="2.9814814814814814" y="1.7407407407407403" cp1x="2.9814814814814814" cp1y="1.7407407407407403" cp2x="2.9814814814814814" cp2y="1.7407407407407403"/>
151.7111 + <point x="1.7407407407407407" y="3.0" cp1x="1.7407407407407407" cp1y="3.0" cp2x="1.7407407407407407" cp2y="3.0"/>
151.7112 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
151.7113 + <point x="1.0" y="14.0" cp1x="1.0" cp1y="14.0" cp2x="1.0" cp2y="14.0"/>
151.7114 + <point x="14.0" y="14.0" cp1x="14.0" cp1y="14.0" cp2x="14.0" cp2y="14.0"/>
151.7115 + <point x="14.0" y="7.0" cp1x="14.0" cp1y="7.0" cp2x="14.0" cp2y="7.0"/>
151.7116 + <point x="14.87037037037037" y="5.962962962962965" cp1x="14.87037037037037" cp1y="5.962962962962965" cp2x="14.87037037037037" cp2y="5.962962962962965"/>
151.7117 + <point x="15.0" y="5.0" cp1x="15.0" cp1y="5.0" cp2x="15.0" cp2y="5.0"/>
151.7118 + <point x="16.0" y="5.0" cp1x="16.0" cp1y="5.0" cp2x="16.0" cp2y="5.0"/>
151.7119 + <point x="15.462962962962967" y="6.129629629629629" cp1x="15.462962962962967" cp1y="6.129629629629629" cp2x="15.462962962962967" cp2y="6.129629629629629"/>
151.7120 + <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
151.7121 + <point x="15.0" y="14.0" cp1x="15.0" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
151.7122 + <point x="14.0" y="15.0" cp1x="14.0" cp1y="15.0" cp2x="14.0" cp2y="15.0"/>
151.7123 + <point x="1.0" y="15.0" cp1x="1.0" cp1y="15.0" cp2x="1.0" cp2y="15.0"/>
151.7124 + <point x="0.0" y="14.0" cp1x="0.0" cp1y="14.0" cp2x="0.0" cp2y="14.0"/>
151.7125 + <point x="0.0" y="3.25925925925926" cp1x="0.0" cp1y="3.25925925925926" cp2x="0.0" cp2y="3.25925925925926"/>
151.7126 + <point x="3.1851851851851856" y="0.0" cp1x="3.1851851851851856" cp1y="0.0" cp2x="3.1851851851851856" cp2y="0.0"/>
151.7127 + <point x="7.0" y="0.0" cp1x="7.0" cp1y="0.0" cp2x="7.0" cp2y="0.0"/>
151.7128 + <point x="8.55555555555555" y="2.0000000000000004" cp1x="8.55555555555555" cp1y="2.0000000000000004" cp2x="8.55555555555555" cp2y="2.0000000000000004"/>
151.7129 + <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="13.0" cp2y="2.0"/>
151.7130 + <point x="14.0" y="3.0" cp1x="14.0" cp1y="3.0" cp2x="14.0" cp2y="3.0"/>
151.7131 + <point x="14.0" y="4.0" cp1x="14.0" cp1y="4.0" cp2x="14.0" cp2y="4.0"/>
151.7132 + </points>
151.7133 + </path>
151.7134 + </shapes>
151.7135 + <effects/>
151.7136 + </layer>
151.7137 + <layer name="Layer 3">
151.7138 + <opacity>1.0</opacity>
151.7139 + <fillOpacity>1.0</fillOpacity>
151.7140 + <blendingMode>NORMAL</blendingMode>
151.7141 + <locked>false</locked>
151.7142 + <visible>true</visible>
151.7143 + <shapes>
151.7144 + <rectangle x1="8.0" x2="13.0" y1="3.0" y2="4.0" rounding="0.0">
151.7145 + <matte red="255" green="255" blue="255" alpha="155" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-100"/>
151.7146 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7147 + </rectangle>
151.7148 + <rectangle x1="3.0" x2="7.0" y1="1.0" y2="2.0" rounding="0.0">
151.7149 + <matte red="255" green="255" blue="255" alpha="205" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-50"/>
151.7150 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7151 + </rectangle>
151.7152 + <rectangle x1="1.0" x2="2.0" y1="3.0" y2="4.0" rounding="0.0">
151.7153 + <matte red="255" green="255" blue="255" alpha="130" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-125"/>
151.7154 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7155 + </rectangle>
151.7156 + <path>
151.7157 + <gradient cycleMethod="NO_CYCLE">
151.7158 + <stop position="0.0" midpoint="0.5">
151.7159 + <matte red="202" green="215" blue="229" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0077680945" saturationOffset="-0.51781034" brightnessOffset="0.3490196" alphaOffset="0"/>
151.7160 + </stop>
151.7161 + <stop position="1.0" midpoint="0.5">
151.7162 + <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
151.7163 + </stop>
151.7164 + </gradient>
151.7165 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.7166 + <points>
151.7167 + <point x="1.0" y="14.0" cp1x="1.0" cp1y="14.0" cp2x="1.0" cp2y="14.0"/>
151.7168 + <point x="2.0" y="14.0" cp1x="2.0" cp1y="14.0" cp2x="2.0" cp2y="14.0"/>
151.7169 + <point x="2.041666666666667" y="10.187499999999998" cp1x="2.041666666666667" cp1y="10.187499999999998" cp2x="2.041666666666667" cp2y="10.187499999999998"/>
151.7170 + <point x="3.979166666666668" y="4.0" cp1x="3.979166666666668" cp1y="4.0" cp2x="3.979166666666668" cp2y="4.0"/>
151.7171 + <point x="13.0" y="4.0" cp1x="13.0" cp1y="4.0" cp2x="13.0" cp2y="4.0"/>
151.7172 + <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="13.0" cp2y="3.0"/>
151.7173 + <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
151.7174 + <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="7.0" cp2y="2.0"/>
151.7175 + <point x="7.0" y="1.0" cp1x="7.0" cp1y="1.0" cp2x="7.0" cp2y="1.0"/>
151.7176 + <point x="3.0" y="1.0" cp1x="3.0" cp1y="1.0" cp2x="3.0" cp2y="1.0"/>
151.7177 + <point x="3.0" y="2.0" cp1x="3.0" cp1y="2.0" cp2x="3.0" cp2y="2.0"/>
151.7178 + <point x="2.0" y="3.0" cp1x="2.0" cp1y="3.0" cp2x="2.0" cp2y="3.0"/>
151.7179 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
151.7180 + </points>
151.7181 + </path>
151.7182 + <path>
151.7183 + <gradient cycleMethod="NO_CYCLE">
151.7184 + <stop position="0.04191617" midpoint="0.5">
151.7185 + <matte red="178" green="198" blue="216" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.45978838" brightnessOffset="0.2980392" alphaOffset="0"/>
151.7186 + </stop>
151.7187 + <stop position="0.16467066" midpoint="0.5">
151.7188 + <matte red="134" green="162" blue="188" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.34848025" brightnessOffset="0.18823528" alphaOffset="0"/>
151.7189 + </stop>
151.7190 + <stop position="0.3263473" midpoint="0.5">
151.7191 + <matte red="111" green="139" blue="165" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.30844158" brightnessOffset="0.09803921" alphaOffset="0"/>
151.7192 + </stop>
151.7193 + <stop position="1.0" midpoint="0.5">
151.7194 + <matte red="95" green="123" blue="149" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.27329817" brightnessOffset="0.035294116" alphaOffset="0"/>
151.7195 + </stop>
151.7196 + </gradient>
151.7197 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.7198 + <points>
151.7199 + <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
151.7200 + <point x="3.0185185185185186" y="10.055555555555559" cp1x="3.0185185185185186" cp1y="10.055555555555559" cp2x="3.0185185185185186" cp2y="10.055555555555559"/>
151.7201 + <point x="4.0" y="5.0" cp1x="4.0" cp1y="5.0" cp2x="4.0" cp2y="5.0"/>
151.7202 + <point x="15.0" y="5.0" cp1x="15.0" cp1y="5.0" cp2x="15.0" cp2y="5.0"/>
151.7203 + <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
151.7204 + <point x="14.0" y="14.0" cp1x="14.0" cp1y="14.0" cp2x="14.0" cp2y="14.0"/>
151.7205 + </points>
151.7206 + </path>
151.7207 + <path>
151.7208 + <matte red="121" green="126" blue="136" alpha="156" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="-0.21" alphaOffset="-99"/>
151.7209 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7210 + <points>
151.7211 + <point x="0.0" y="13.0" cp1x="0.0" cp1y="13.0" cp2x="0.0" cp2y="13.0"/>
151.7212 + <point x="0.0" y="14.0" cp1x="0.0" cp1y="14.0" cp2x="0.0" cp2y="14.0"/>
151.7213 + <point x="1.0" y="16.0" cp1x="1.0" cp1y="16.0" cp2x="1.0" cp2y="16.0"/>
151.7214 + <point x="14.0" y="16.0" cp1x="14.0" cp1y="16.0" cp2x="14.0" cp2y="16.0"/>
151.7215 + <point x="15.0" y="14.0" cp1x="15.0" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
151.7216 + <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
151.7217 + </points>
151.7218 + </path>
151.7219 + </shapes>
151.7220 + <effects/>
151.7221 + </layer>
151.7222 + </canvas>
151.7223 + </state>
151.7224 + </backgroundStates>
151.7225 + <foregroundStates/>
151.7226 + <borderStates/>
151.7227 + <regions/>
151.7228 + </uiIconRegion>
151.7229 + <uiIconRegion name="upFolderIcon" subregion="true" key="upFolderIcon">
151.7230 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.7231 + <style>
151.7232 + <textForeground/>
151.7233 + <textBackground/>
151.7234 + <background/>
151.7235 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.7236 + <uiproperties/>
151.7237 + </style>
151.7238 + <backgroundStates>
151.7239 + <state stateKeys="Enabled">
151.7240 + <style>
151.7241 + <textForeground/>
151.7242 + <textBackground/>
151.7243 + <background/>
151.7244 + <uiproperties/>
151.7245 + </style>
151.7246 + <canvas>
151.7247 + <size width="16" height="16"/>
151.7248 + <nextLayerNameIndex>12</nextLayerNameIndex>
151.7249 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.7250 + <layer name="Icon">
151.7251 + <opacity>1.0</opacity>
151.7252 + <fillOpacity>1.0</fillOpacity>
151.7253 + <blendingMode>NORMAL</blendingMode>
151.7254 + <locked>false</locked>
151.7255 + <visible>true</visible>
151.7256 + <shapes>
151.7257 + <path>
151.7258 + <gradient cycleMethod="NO_CYCLE">
151.7259 + <stop position="0.0" midpoint="0.5">
151.7260 + <matte red="154" green="211" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.006044388" saturationOffset="-0.23963585" brightnessOffset="0.45098037" alphaOffset="0"/>
151.7261 + </stop>
151.7262 + <stop position="1.0" midpoint="0.5">
151.7263 + <matte red="85" green="175" blue="244" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0063245893" saturationOffset="0.01592505" brightnessOffset="0.4078431" alphaOffset="0"/>
151.7264 + </stop>
151.7265 + </gradient>
151.7266 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.7267 + <points>
151.7268 + <point x="10.0" y="9.0" cp1x="10.0" cp1y="9.0" cp2x="10.0" cp2y="9.0"/>
151.7269 + <point x="10.0" y="5.0" cp1x="10.0" cp1y="5.0" cp2x="10.0" cp2y="5.0"/>
151.7270 + <point x="7.3478260869565215" y="5.0" cp1x="7.3478260869565215" cp1y="5.0" cp2x="7.3478260869565215" cp2y="5.0"/>
151.7271 + <point x="10.978260869565217" y="1.2826086956521732" cp1x="10.978260869565217" cp1y="1.2826086956521732" cp2x="10.978260869565217" cp2y="1.2826086956521732"/>
151.7272 + <point x="14.304347826086948" y="4.999999999999999" cp1x="14.304347826086948" cp1y="4.999999999999999" cp2x="14.304347826086948" cp2y="4.999999999999999"/>
151.7273 + <point x="12.0" y="5.0" cp1x="12.0" cp1y="5.0" cp2x="12.0" cp2y="5.0"/>
151.7274 + <point x="12.0" y="9.0" cp1x="12.0" cp1y="9.0" cp2x="12.0" cp2y="9.0"/>
151.7275 + </points>
151.7276 + </path>
151.7277 + <path>
151.7278 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.7279 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.7280 + <points>
151.7281 + <point x="6.630434782608702" y="4.978260869565218" cp1x="6.630434782608702" cp1y="4.978260869565218" cp2x="6.630434782608702" cp2y="4.978260869565218"/>
151.7282 + <point x="10.0" y="5.0" cp1x="10.0" cp1y="5.0" cp2x="10.0" cp2y="5.0"/>
151.7283 + <point x="10.0" y="9.0" cp1x="10.0" cp1y="9.0" cp2x="10.0" cp2y="9.0"/>
151.7284 + <point x="12.0" y="9.0" cp1x="12.0" cp1y="9.0" cp2x="12.0" cp2y="9.0"/>
151.7285 + <point x="12.0" y="5.0" cp1x="12.0" cp1y="5.0" cp2x="12.0" cp2y="5.0"/>
151.7286 + <point x="15.326086956521742" y="5.0" cp1x="15.326086956521742" cp1y="5.0" cp2x="15.326086956521742" cp2y="5.0"/>
151.7287 + <point x="11.0" y="0.6521739130434785" cp1x="11.0" cp1y="0.6521739130434785" cp2x="11.0" cp2y="0.6521739130434785"/>
151.7288 + </points>
151.7289 + </path>
151.7290 + <path>
151.7291 + <gradient cycleMethod="NO_CYCLE">
151.7292 + <stop position="0.0" midpoint="0.5">
151.7293 + <matte red="0" green="100" blue="177" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0061469674" saturationOffset="0.3642857" brightnessOffset="0.14509803" alphaOffset="0"/>
151.7294 + </stop>
151.7295 + <stop position="1.0" midpoint="0.5">
151.7296 + <matte red="0" green="58" blue="117" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0053939223" saturationOffset="0.3642857" brightnessOffset="-0.0901961" alphaOffset="0"/>
151.7297 + </stop>
151.7298 + </gradient>
151.7299 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.7300 + <points>
151.7301 + <point x="6.0" y="6.0" cp1x="6.0" cp1y="6.0" cp2x="6.0" cp2y="6.0"/>
151.7302 + <point x="6.0" y="4.565217391304342" cp1x="6.0" cp1y="4.565217391304342" cp2x="6.0" cp2y="4.565217391304342"/>
151.7303 + <point x="10.673913043478265" y="0.0" cp1x="10.673913043478265" cp1y="0.0" cp2x="10.673913043478265" cp2y="0.0"/>
151.7304 + <point x="11.304347826086955" y="-8.326672684688674E-17" cp1x="11.304347826086955" cp1y="-8.326672684688674E-17" cp2x="11.304347826086955" cp2y="-8.326672684688674E-17"/>
151.7305 + <point x="15.978260869565217" y="4.565217391304343" cp1x="15.978260869565217" cp1y="4.565217391304343" cp2x="15.978260869565217" cp2y="4.565217391304343"/>
151.7306 + <point x="16.0" y="6.0" cp1x="16.0" cp1y="6.0" cp2x="16.0" cp2y="6.0"/>
151.7307 + <point x="13.0" y="6.0" cp1x="13.0" cp1y="6.0" cp2x="13.0" cp2y="6.0"/>
151.7308 + <point x="13.0" y="9.0" cp1x="13.0" cp1y="9.0" cp2x="13.0" cp2y="9.0"/>
151.7309 + <point x="12.0" y="10.0" cp1x="12.0" cp1y="10.0" cp2x="12.0" cp2y="10.0"/>
151.7310 + <point x="10.0" y="10.0" cp1x="10.0" cp1y="10.0" cp2x="10.0" cp2y="10.0"/>
151.7311 + <point x="9.0" y="9.0" cp1x="9.0" cp1y="9.0" cp2x="9.0" cp2y="9.0"/>
151.7312 + <point x="9.0" y="6.0" cp1x="9.0" cp1y="6.0" cp2x="9.0" cp2y="6.0"/>
151.7313 + </points>
151.7314 + </path>
151.7315 + <path>
151.7316 + <matte red="120" green="125" blue="135" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="5.847961E-4" brightnessOffset="-0.21568626" alphaOffset="0"/>
151.7317 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7318 + <points>
151.7319 + <point x="6.021739130434783" y="6.521739130434782" cp1x="6.021739130434783" cp1y="6.521739130434782" cp2x="6.021739130434783" cp2y="6.521739130434782"/>
151.7320 + <point x="6.0" y="5.369565217391304" cp1x="6.0" cp1y="5.369565217391304" cp2x="6.0" cp2y="5.369565217391304"/>
151.7321 + <point x="16.0" y="5.58695652173913" cp1x="16.0" cp1y="5.58695652173913" cp2x="16.0" cp2y="5.58695652173913"/>
151.7322 + <point x="14.891304347826086" y="6.499999999999999" cp1x="14.891304347826086" cp1y="6.499999999999999" cp2x="14.891304347826086" cp2y="6.499999999999999"/>
151.7323 + <point x="12.956521739130434" y="6.91304347826087" cp1x="12.956521739130434" cp1y="6.91304347826087" cp2x="12.956521739130434" cp2y="6.91304347826087"/>
151.7324 + <point x="12.91304347826087" y="9.34782608695652" cp1x="12.91304347826087" cp1y="9.34782608695652" cp2x="12.91304347826087" cp2y="9.34782608695652"/>
151.7325 + <point x="11.869565217391303" y="10.608695652173914" cp1x="11.869565217391303" cp1y="10.608695652173914" cp2x="11.869565217391303" cp2y="10.608695652173914"/>
151.7326 + <point x="10.217391304347826" y="10.543478260869566" cp1x="10.217391304347826" cp1y="10.543478260869566" cp2x="10.217391304347826" cp2y="10.543478260869566"/>
151.7327 + <point x="9.26086956521739" y="9.34782608695652" cp1x="9.26086956521739" cp1y="9.34782608695652" cp2x="9.26086956521739" cp2y="9.34782608695652"/>
151.7328 + <point x="9.26086956521739" y="6.869565217391304" cp1x="9.26086956521739" cp1y="6.869565217391304" cp2x="9.26086956521739" cp2y="6.869565217391304"/>
151.7329 + </points>
151.7330 + </path>
151.7331 + <path>
151.7332 + <gradient cycleMethod="NO_CYCLE">
151.7333 + <stop position="0.0" midpoint="0.5">
151.7334 + <matte red="178" green="198" blue="216" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.45978838" brightnessOffset="0.2980392" alphaOffset="0"/>
151.7335 + </stop>
151.7336 + <stop position="0.13068181" midpoint="0.5">
151.7337 + <matte red="134" green="162" blue="188" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.34848025" brightnessOffset="0.18823528" alphaOffset="0"/>
151.7338 + </stop>
151.7339 + <stop position="0.48863637" midpoint="0.5">
151.7340 + <matte red="98" green="126" blue="152" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.28045115" brightnessOffset="0.04705882" alphaOffset="0"/>
151.7341 + </stop>
151.7342 + <stop position="1.0" midpoint="0.5">
151.7343 + <matte red="95" green="123" blue="149" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.27329817" brightnessOffset="0.035294116" alphaOffset="0"/>
151.7344 + </stop>
151.7345 + </gradient>
151.7346 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.7347 + <points>
151.7348 + <point x="3.0" y="15.0" cp1x="3.0" cp1y="15.0" cp2x="3.0" cp2y="15.0"/>
151.7349 + <point x="3.0" y="11.0" cp1x="3.0" cp1y="11.0" cp2x="3.0" cp2y="11.0"/>
151.7350 + <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
151.7351 + <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
151.7352 + <point x="14.0" y="11.0" cp1x="14.0" cp1y="11.0" cp2x="14.0" cp2y="11.0"/>
151.7353 + <point x="14.0" y="15.0" cp1x="14.0" cp1y="15.0" cp2x="14.0" cp2y="15.0"/>
151.7354 + </points>
151.7355 + </path>
151.7356 + <path>
151.7357 + <gradient cycleMethod="NO_CYCLE">
151.7358 + <stop position="0.0" midpoint="0.5">
151.7359 + <matte red="87" green="112" blue="135" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0012094378" saturationOffset="-0.28015873" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.7360 + </stop>
151.7361 + <stop position="1.0" midpoint="0.5">
151.7362 + <matte red="30" green="50" blue="69" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.00254488" saturationOffset="-0.07049692" brightnessOffset="-0.2784314" alphaOffset="0"/>
151.7363 + </stop>
151.7364 + </gradient>
151.7365 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.7366 + <points>
151.7367 + <point x="2.0" y="11.0" cp1x="2.0" cp1y="11.0" cp2x="2.0" cp2y="11.0"/>
151.7368 + <point x="3.0" y="6.0" cp1x="3.0" cp1y="6.0" cp2x="3.0" cp2y="6.0"/>
151.7369 + <point x="4.0" y="5.0" cp1x="4.0" cp1y="5.0" cp2x="4.0" cp2y="5.0"/>
151.7370 + <point x="15.0" y="5.0" cp1x="15.0" cp1y="5.0" cp2x="15.0" cp2y="5.0"/>
151.7371 + <point x="15.0" y="15.0" cp1x="15.0" cp1y="15.0" cp2x="15.0" cp2y="15.0"/>
151.7372 + <point x="13.0" y="16.0" cp1x="13.0" cp1y="16.0" cp2x="13.0" cp2y="16.0"/>
151.7373 + <point x="2.0" y="16.0" cp1x="2.0" cp1y="16.0" cp2x="2.0" cp2y="16.0"/>
151.7374 + </points>
151.7375 + </path>
151.7376 + <path>
151.7377 + <gradient cycleMethod="NO_CYCLE">
151.7378 + <stop position="0.0" midpoint="0.5">
151.7379 + <matte red="244" green="247" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6117143" brightnessOffset="0.43137252" alphaOffset="0"/>
151.7380 + </stop>
151.7381 + <stop position="0.09659091" midpoint="0.5">
151.7382 + <matte red="202" green="215" blue="229" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0077680945" saturationOffset="-0.51781034" brightnessOffset="0.3490196" alphaOffset="0"/>
151.7383 + </stop>
151.7384 + <stop position="1.0" midpoint="0.5">
151.7385 + <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
151.7386 + </stop>
151.7387 + </gradient>
151.7388 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.7389 + <points>
151.7390 + <point x="1.0" y="15.0" cp1x="1.0" cp1y="15.0" cp2x="1.0" cp2y="15.0"/>
151.7391 + <point x="1.0" y="4.0" cp1x="1.0" cp1y="4.0" cp2x="1.0" cp2y="4.0"/>
151.7392 + <point x="2.0" y="4.0" cp1x="2.0" cp1y="4.0" cp2x="2.0" cp2y="4.0"/>
151.7393 + <point x="3.0" y="3.0" cp1x="3.0" cp1y="3.0" cp2x="3.0" cp2y="3.0"/>
151.7394 + <point x="3.0" y="2.0" cp1x="3.0" cp1y="2.0" cp2x="3.0" cp2y="2.0"/>
151.7395 + <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="7.0" cp2y="2.0"/>
151.7396 + <point x="7.0" y="3.0" cp1x="7.0" cp1y="3.0" cp2x="7.0" cp2y="3.0"/>
151.7397 + <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
151.7398 + <point x="8.0" y="15.0" cp1x="8.0" cp1y="15.0" cp2x="8.0" cp2y="15.0"/>
151.7399 + </points>
151.7400 + </path>
151.7401 + <path>
151.7402 + <gradient cycleMethod="NO_CYCLE">
151.7403 + <stop position="0.0" midpoint="0.5">
151.7404 + <matte red="122" green="136" blue="150" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.44904763" brightnessOffset="0.039215684" alphaOffset="0"/>
151.7405 + </stop>
151.7406 + <stop position="0.1278409" midpoint="0.5">
151.7407 + <matte red="109" green="123" blue="136" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.43718487" brightnessOffset="-0.015686274" alphaOffset="0"/>
151.7408 + </stop>
151.7409 + <stop position="0.91477275" midpoint="0.5">
151.7410 + <matte red="59" green="69" blue="78" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.39212453" brightnessOffset="-0.24313727" alphaOffset="0"/>
151.7411 + </stop>
151.7412 + </gradient>
151.7413 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.7414 + <points>
151.7415 + <point x="0.0" y="15.0" cp1x="0.0" cp1y="15.0" cp2x="0.0" cp2y="15.0"/>
151.7416 + <point x="1.0" y="16.0" cp1x="1.0" cp1y="16.0" cp2x="1.0" cp2y="16.0"/>
151.7417 + <point x="14.0" y="16.0" cp1x="14.0" cp1y="16.0" cp2x="14.0" cp2y="16.0"/>
151.7418 + <point x="15.0" y="15.0" cp1x="15.0" cp1y="15.0" cp2x="15.0" cp2y="15.0"/>
151.7419 + <point x="15.0" y="10.0" cp1x="15.0" cp1y="10.0" cp2x="15.0" cp2y="10.0"/>
151.7420 + <point x="16.0" y="7.0" cp1x="16.0" cp1y="7.0" cp2x="16.0" cp2y="7.0"/>
151.7421 + <point x="16.0" y="5.0" cp1x="16.0" cp1y="5.0" cp2x="16.0" cp2y="5.0"/>
151.7422 + <point x="8.0" y="5.0" cp1x="8.0" cp1y="5.0" cp2x="8.0" cp2y="5.0"/>
151.7423 + <point x="8.0" y="2.0" cp1x="8.0" cp1y="2.0" cp2x="8.0" cp2y="2.0"/>
151.7424 + <point x="7.0" y="1.0" cp1x="7.0" cp1y="1.0" cp2x="7.0" cp2y="1.0"/>
151.7425 + <point x="3.0" y="1.0" cp1x="3.0" cp1y="1.0" cp2x="3.0" cp2y="1.0"/>
151.7426 + <point x="2.0" y="2.0" cp1x="2.0" cp1y="2.0" cp2x="2.0" cp2y="2.0"/>
151.7427 + <point x="2.0" y="3.0" cp1x="2.0" cp1y="3.0" cp2x="2.0" cp2y="3.0"/>
151.7428 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
151.7429 + <point x="0.0" y="4.0" cp1x="0.0" cp1y="4.0" cp2x="0.0" cp2y="4.0"/>
151.7430 + </points>
151.7431 + </path>
151.7432 + </shapes>
151.7433 + <effects/>
151.7434 + </layer>
151.7435 + <templateLayer fileName="11498ffda35.png">
151.7436 + <layer name="Template" type="template">
151.7437 + <opacity>1.0</opacity>
151.7438 + <fillOpacity>1.0</fillOpacity>
151.7439 + <blendingMode>NORMAL</blendingMode>
151.7440 + <locked>false</locked>
151.7441 + <visible>false</visible>
151.7442 + <shapes/>
151.7443 + <effects/>
151.7444 + </layer>
151.7445 + </templateLayer>
151.7446 + </canvas>
151.7447 + </state>
151.7448 + </backgroundStates>
151.7449 + <foregroundStates/>
151.7450 + <borderStates/>
151.7451 + <regions/>
151.7452 + </uiIconRegion>
151.7453 + <uiIconRegion name="newFolderIcon" subregion="true" key="newFolderIcon">
151.7454 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.7455 + <style>
151.7456 + <textForeground/>
151.7457 + <textBackground/>
151.7458 + <background/>
151.7459 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.7460 + <uiproperties/>
151.7461 + </style>
151.7462 + <backgroundStates>
151.7463 + <state stateKeys="Enabled">
151.7464 + <style>
151.7465 + <textForeground/>
151.7466 + <textBackground/>
151.7467 + <background/>
151.7468 + <uiproperties/>
151.7469 + </style>
151.7470 + <canvas>
151.7471 + <size width="16" height="16"/>
151.7472 + <nextLayerNameIndex>5</nextLayerNameIndex>
151.7473 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.7474 + <layer name="Layer 4">
151.7475 + <opacity>1.0</opacity>
151.7476 + <fillOpacity>1.0</fillOpacity>
151.7477 + <blendingMode>NORMAL</blendingMode>
151.7478 + <locked>false</locked>
151.7479 + <visible>true</visible>
151.7480 + <shapes>
151.7481 + <path>
151.7482 + <radialGradient cycleMethod="NO_CYCLE">
151.7483 + <stop position="0.11290322" midpoint="0.5">
151.7484 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7485 + </stop>
151.7486 + <stop position="0.23548387" midpoint="0.5">
151.7487 + <matte red="252" green="255" blue="92" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7488 + </stop>
151.7489 + <stop position="0.38709676" midpoint="0.5">
151.7490 + <matte red="252" green="255" blue="92" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7491 + </stop>
151.7492 + <stop position="0.57096773" midpoint="0.5">
151.7493 + <matte red="253" green="191" blue="4" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7494 + </stop>
151.7495 + </radialGradient>
151.7496 + <paintPoints x1="0.5" y1="1.0" x2="0.4491017940819012" y2="0.46327683734537634"/>
151.7497 + <points>
151.7498 + <point x="2.9230769230769225" y="3.307692307692308" cp1x="2.9230769230769225" cp1y="3.307692307692308" cp2x="2.9230769230769225" cp2y="3.307692307692308"/>
151.7499 + <point x="3.4423076923076916" y="2.8461538461538463" cp1x="3.4423076923076916" cp1y="2.8461538461538463" cp2x="3.4423076923076916" cp2y="2.8461538461538463"/>
151.7500 + <point x="4.9423076923076925" y="4.038461538461538" cp1x="4.9423076923076925" cp1y="4.038461538461538" cp2x="4.9423076923076925" cp2y="4.038461538461538"/>
151.7501 + <point x="5.211538461538462" y="2.153846153846154" cp1x="5.211538461538462" cp1y="2.153846153846154" cp2x="5.211538461538462" cp2y="2.153846153846154"/>
151.7502 + <point x="5.76923076923077" y="2.1923076923076925" cp1x="5.76923076923077" cp1y="2.1923076923076925" cp2x="5.76923076923077" cp2y="2.1923076923076925"/>
151.7503 + <point x="6.134615384615385" y="4.038461538461538" cp1x="6.134615384615385" cp1y="4.038461538461538" cp2x="6.134615384615385" cp2y="4.038461538461538"/>
151.7504 + <point x="7.403846153846154" y="2.9807692307692313" cp1x="7.403846153846154" cp1y="2.9807692307692313" cp2x="7.403846153846154" cp2y="2.9807692307692313"/>
151.7505 + <point x="7.980769230769231" y="3.5192307692307696" cp1x="7.980769230769231" cp1y="3.5192307692307696" cp2x="7.980769230769231" cp2y="3.5192307692307696"/>
151.7506 + <point x="6.903846153846154" y="4.6923076923076925" cp1x="6.903846153846154" cp1y="4.6923076923076925" cp2x="6.903846153846154" cp2y="4.6923076923076925"/>
151.7507 + <point x="8.750000000000007" y="5.153846153846154" cp1x="8.750000000000007" cp1y="5.153846153846154" cp2x="8.750000000000007" cp2y="5.153846153846154"/>
151.7508 + <point x="8.769230769230775" y="5.8076923076923075" cp1x="8.769230769230775" cp1y="5.8076923076923075" cp2x="8.769230769230775" cp2y="5.8076923076923075"/>
151.7509 + <point x="6.538461538461539" y="6.057692307692308" cp1x="6.538461538461539" cp1y="6.057692307692308" cp2x="6.538461538461539" cp2y="6.057692307692308"/>
151.7510 + <point x="7.826923076923079" y="7.346153846153846" cp1x="7.826923076923079" cp1y="7.346153846153846" cp2x="7.826923076923079" cp2y="7.346153846153846"/>
151.7511 + <point x="7.442307692307692" y="7.884615384615384" cp1x="7.442307692307692" cp1y="7.884615384615384" cp2x="7.442307692307692" cp2y="7.884615384615384"/>
151.7512 + <point x="6.115384615384617" y="6.634615384615385" cp1x="6.115384615384617" cp1y="6.634615384615385" cp2x="6.115384615384617" cp2y="6.634615384615385"/>
151.7513 + <point x="5.884615384615385" y="8.961538461538462" cp1x="5.884615384615385" cp1y="8.961538461538462" cp2x="5.884615384615385" cp2y="8.961538461538462"/>
151.7514 + <point x="5.25" y="8.961538461538462" cp1x="5.25" cp1y="8.961538461538462" cp2x="5.25" cp2y="8.961538461538462"/>
151.7515 + <point x="4.884615384615385" y="6.730769230769231" cp1x="4.884615384615385" cp1y="6.730769230769231" cp2x="4.884615384615385" cp2y="6.730769230769231"/>
151.7516 + <point x="3.461538461538461" y="8.0" cp1x="3.461538461538461" cp1y="8.0" cp2x="3.461538461538461" cp2y="8.0"/>
151.7517 + <point x="3.211538461538461" y="7.269230769230769" cp1x="3.211538461538461" cp1y="7.269230769230769" cp2x="3.211538461538461" cp2y="7.269230769230769"/>
151.7518 + <point x="4.153846153846153" y="6.0576923076923075" cp1x="4.153846153846153" cp1y="6.0576923076923075" cp2x="4.153846153846153" cp2y="6.0576923076923075"/>
151.7519 + <point x="2.3461538461538454" y="5.884615384615385" cp1x="2.3461538461538454" cp1y="5.884615384615385" cp2x="2.3461538461538454" cp2y="5.884615384615385"/>
151.7520 + <point x="2.4038461538461533" y="5.038461538461538" cp1x="2.4038461538461533" cp1y="5.038461538461538" cp2x="2.4038461538461533" cp2y="5.038461538461538"/>
151.7521 + <point x="4.115384615384615" y="4.923076923076923" cp1x="4.115384615384615" cp1y="4.923076923076923" cp2x="4.115384615384615" cp2y="4.923076923076923"/>
151.7522 + </points>
151.7523 + </path>
151.7524 + <path>
151.7525 + <matte red="255" green="85" blue="10" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.032758567" saturationOffset="-0.018273294" brightnessOffset="0.25098038" alphaOffset="0"/>
151.7526 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7527 + <points>
151.7528 + <point x="1.1730769230769234" y="1.653846153846154" cp1x="1.1730769230769234" cp1y="1.653846153846154" cp2x="1.1730769230769234" cp2y="1.653846153846154"/>
151.7529 + <point x="1.6346153846153852" y="1.0769230769230773" cp1x="1.6346153846153852" cp1y="1.0769230769230773" cp2x="1.6346153846153852" cp2y="1.0769230769230773"/>
151.7530 + <point x="4.826923076923077" y="3.7307692307692313" cp1x="4.826923076923077" cp1y="3.7307692307692313" cp2x="4.826923076923077" cp2y="3.7307692307692313"/>
151.7531 + <point x="5.096153846153847" y="0.09615384615384615" cp1x="5.096153846153847" cp1y="0.09615384615384615" cp2x="5.096153846153847" cp2y="0.09615384615384615"/>
151.7532 + <point x="5.903846153846154" y="0.09615384615384615" cp1x="5.903846153846154" cp1y="0.09615384615384615" cp2x="5.903846153846154" cp2y="0.09615384615384615"/>
151.7533 + <point x="6.365384615384615" y="3.6153846153846154" cp1x="6.365384615384615" cp1y="3.6153846153846154" cp2x="6.365384615384615" cp2y="3.6153846153846154"/>
151.7534 + <point x="9.192307692307693" y="1.0384615384615385" cp1x="9.192307692307693" cp1y="1.0384615384615385" cp2x="9.192307692307693" cp2y="1.0384615384615385"/>
151.7535 + <point x="9.942307692307693" y="1.8846153846153846" cp1x="9.942307692307693" cp1y="1.8846153846153846" cp2x="9.942307692307693" cp2y="1.8846153846153846"/>
151.7536 + <point x="7.326923076923077" y="4.711538461538463" cp1x="7.326923076923077" cp1y="4.711538461538463" cp2x="7.326923076923077" cp2y="4.711538461538463"/>
151.7537 + <point x="10.865384615384613" y="5.153846153846153" cp1x="10.865384615384613" cp1y="5.153846153846153" cp2x="10.865384615384613" cp2y="5.153846153846153"/>
151.7538 + <point x="10.903846153846155" y="5.884615384615384" cp1x="10.903846153846155" cp1y="5.884615384615384" cp2x="10.903846153846155" cp2y="5.884615384615384"/>
151.7539 + <point x="7.4423076923076925" y="6.25" cp1x="7.4423076923076925" cp1y="6.25" cp2x="7.4423076923076925" cp2y="6.25"/>
151.7540 + <point x="9.788461538461547" y="9.384615384615397" cp1x="9.788461538461547" cp1y="9.384615384615397" cp2x="9.788461538461547" cp2y="9.384615384615397"/>
151.7541 + <point x="9.519230769230782" y="9.961538461538474" cp1x="9.519230769230782" cp1y="9.961538461538474" cp2x="9.519230769230782" cp2y="9.961538461538474"/>
151.7542 + <point x="6.3269230769230775" y="7.019230769230769" cp1x="6.3269230769230775" cp1y="7.019230769230769" cp2x="6.3269230769230775" cp2y="7.019230769230769"/>
151.7543 + <point x="5.903846153846154" y="10.903846153846153" cp1x="5.903846153846154" cp1y="10.903846153846153" cp2x="5.903846153846154" cp2y="10.903846153846153"/>
151.7544 + <point x="5.173076923076923" y="10.865384615384615" cp1x="5.173076923076923" cp1y="10.865384615384615" cp2x="5.173076923076923" cp2y="10.865384615384615"/>
151.7545 + <point x="4.76923076923077" y="7.0576923076923075" cp1x="4.76923076923077" cp1y="7.0576923076923075" cp2x="4.76923076923077" cp2y="7.0576923076923075"/>
151.7546 + <point x="1.442307692307693" y="9.807692307692314" cp1x="1.442307692307693" cp1y="9.807692307692314" cp2x="1.442307692307693" cp2y="9.807692307692314"/>
151.7547 + <point x="1.0384615384615392" y="9.423076923076923" cp1x="1.0384615384615392" cp1y="9.423076923076923" cp2x="1.0384615384615392" cp2y="9.423076923076923"/>
151.7548 + <point x="3.75" y="6.038461538461538" cp1x="3.75" cp1y="6.038461538461538" cp2x="3.75" cp2y="6.038461538461538"/>
151.7549 + <point x="0.05769230769230782" y="5.980769230769231" cp1x="0.05769230769230782" cp1y="5.980769230769231" cp2x="0.05769230769230782" cp2y="5.980769230769231"/>
151.7550 + <point x="0.07692307692307698" y="5.134615384615384" cp1x="0.07692307692307698" cp1y="5.134615384615384" cp2x="0.07692307692307698" cp2y="5.134615384615384"/>
151.7551 + <point x="3.980769230769231" y="4.711538461538461" cp1x="3.980769230769231" cp1y="4.711538461538461" cp2x="3.980769230769231" cp2y="4.711538461538461"/>
151.7552 + </points>
151.7553 + </path>
151.7554 + <path>
151.7555 + <matte red="255" green="255" blue="255" alpha="85" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-170"/>
151.7556 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7557 + <points>
151.7558 + <point x="1.1346153846153861" y="0.30769230769230765" cp1x="1.1346153846153861" cp1y="0.30769230769230765" cp2x="1.1346153846153861" cp2y="0.30769230769230765"/>
151.7559 + <point x="3.769230769230771" y="1.8846153846153846" cp1x="3.769230769230771" cp1y="1.8846153846153846" cp2x="3.769230769230771" cp2y="1.8846153846153846"/>
151.7560 + <point x="4.596153846153848" y="0.09615384615384615" cp1x="4.596153846153848" cp1y="0.09615384615384615" cp2x="4.596153846153848" cp2y="0.09615384615384615"/>
151.7561 + <point x="6.519230769230771" y="2.0384615384615388" cp1x="6.519230769230771" cp1y="2.0384615384615388" cp2x="6.519230769230771" cp2y="2.0384615384615388"/>
151.7562 + <point x="9.269230769230756" y="0.6923076923076925" cp1x="9.269230769230756" cp1y="0.6923076923076925" cp2x="9.269230769230756" cp2y="0.6923076923076925"/>
151.7563 + <point x="9.15384615384614" y="4.25" cp1x="9.15384615384614" cp1y="4.25" cp2x="9.15384615384614" cp2y="4.25"/>
151.7564 + <point x="11.846153846153834" y="4.5576923076923075" cp1x="11.846153846153834" cp1y="4.5576923076923075" cp2x="11.846153846153834" cp2y="4.5576923076923075"/>
151.7565 + <point x="9.71153846153845" y="7.0" cp1x="9.71153846153845" cp1y="7.0" cp2x="9.71153846153845" cp2y="7.0"/>
151.7566 + <point x="10.499999999999988" y="10.807692307692308" cp1x="10.499999999999988" cp1y="10.807692307692308" cp2x="10.499999999999988" cp2y="10.807692307692308"/>
151.7567 + <point x="7.2115384615384635" y="9.980769230769232" cp1x="7.2115384615384635" cp1y="9.980769230769232" cp2x="7.2115384615384635" cp2y="9.980769230769232"/>
151.7568 + <point x="5.78846153846154" y="12.057692307692308" cp1x="5.78846153846154" cp1y="12.057692307692308" cp2x="5.78846153846154" cp2y="12.057692307692308"/>
151.7569 + <point x="3.153846153846155" y="9.923076923076923" cp1x="3.153846153846155" cp1y="9.923076923076923" cp2x="3.153846153846155" cp2y="9.923076923076923"/>
151.7570 + <point x="1.1346153846153861" y="10.557692307692308" cp1x="1.1346153846153861" cp1y="10.557692307692308" cp2x="1.1346153846153861" cp2y="10.557692307692308"/>
151.7571 + <point x="1.5576923076923088" y="7.923076923076923" cp1x="1.5576923076923088" cp1y="7.923076923076923" cp2x="1.5576923076923088" cp2y="7.923076923076923"/>
151.7572 + <point x="0.0" y="5.923076923076923" cp1x="0.0" cp1y="5.923076923076923" cp2x="0.0" cp2y="5.923076923076923"/>
151.7573 + <point x="1.9230769230769242" y="3.403846153846154" cp1x="1.9230769230769242" cp1y="3.403846153846154" cp2x="1.9230769230769242" cp2y="3.403846153846154"/>
151.7574 + </points>
151.7575 + </path>
151.7576 + </shapes>
151.7577 + <effects/>
151.7578 + </layer>
151.7579 + <layer name="Button">
151.7580 + <opacity>1.0</opacity>
151.7581 + <fillOpacity>1.0</fillOpacity>
151.7582 + <blendingMode>NORMAL</blendingMode>
151.7583 + <locked>false</locked>
151.7584 + <visible>true</visible>
151.7585 + <shapes>
151.7586 + <path>
151.7587 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7588 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7589 + <points>
151.7590 + <point x="12.0" y="12.0" cp1x="12.0" cp1y="12.0" cp2x="12.0" cp2y="12.0"/>
151.7591 + </points>
151.7592 + </path>
151.7593 + <path>
151.7594 + <gradient cycleMethod="NO_CYCLE">
151.7595 + <stop position="0.0" midpoint="0.5">
151.7596 + <matte red="100" green="122" blue="143" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0027436614" saturationOffset="-0.335015" brightnessOffset="0.011764705" alphaOffset="0"/>
151.7597 + </stop>
151.7598 + <stop position="0.25449103" midpoint="0.5">
151.7599 + <matte red="111" green="130" blue="148" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0024294257" saturationOffset="-0.3857143" brightnessOffset="0.031372547" alphaOffset="0"/>
151.7600 + </stop>
151.7601 + <stop position="1.0" midpoint="0.5">
151.7602 + <matte red="76" green="91" blue="105" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0018081069" saturationOffset="-0.3595238" brightnessOffset="-0.13725492" alphaOffset="0"/>
151.7603 + </stop>
151.7604 + </gradient>
151.7605 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.7606 + <points>
151.7607 + <point x="13.0" y="5.0" cp1x="13.0" cp1y="5.0" cp2x="13.0" cp2y="5.0"/>
151.7608 + <point x="13.0" y="4.0" cp1x="13.0" cp1y="4.0" cp2x="13.0" cp2y="4.0"/>
151.7609 + <point x="3.7407407407407405" y="3.9999999999999996" cp1x="3.7407407407407405" cp1y="3.9999999999999996" cp2x="3.7407407407407405" cp2y="3.9999999999999996"/>
151.7610 + <point x="2.0185185185185137" y="10.05555555555555" cp1x="2.0185185185185137" cp1y="10.05555555555555" cp2x="2.0185185185185137" cp2y="10.05555555555555"/>
151.7611 + <point x="2.0" y="14.0" cp1x="2.0" cp1y="14.0" cp2x="2.0" cp2y="14.0"/>
151.7612 + <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
151.7613 + <point x="2.9629629629629632" y="12.129629629629632" cp1x="2.9629629629629632" cp1y="12.129629629629632" cp2x="2.9629629629629632" cp2y="12.129629629629632"/>
151.7614 + <point x="4.579999999999991" y="4.98" cp1x="4.579999999999991" cp1y="4.98" cp2x="4.579999999999991" cp2y="4.98"/>
151.7615 + </points>
151.7616 + </path>
151.7617 + <path>
151.7618 + <gradient cycleMethod="NO_CYCLE">
151.7619 + <stop position="0.0" midpoint="0.5">
151.7620 + <matte red="72" green="97" blue="120" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0012094378" saturationOffset="-0.23571429" brightnessOffset="-0.0784314" alphaOffset="0"/>
151.7621 + </stop>
151.7622 + <stop position="1.0" midpoint="0.5">
151.7623 + <matte red="35" green="55" blue="73" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.115166366" brightnessOffset="-0.2627451" alphaOffset="0"/>
151.7624 + </stop>
151.7625 + </gradient>
151.7626 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.7627 + <points>
151.7628 + <point x="16.0" y="4.0" cp1x="16.0" cp1y="4.0" cp2x="16.0" cp2y="4.0"/>
151.7629 + <point x="16.0" y="5.0" cp1x="16.0" cp1y="5.0" cp2x="16.0" cp2y="5.0"/>
151.7630 + <point x="13.0" y="5.0" cp1x="13.0" cp1y="5.0" cp2x="13.0" cp2y="5.0"/>
151.7631 + <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="13.0" cp2y="3.0"/>
151.7632 + <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
151.7633 + <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="7.0" cp2y="2.0"/>
151.7634 + <point x="7.0" y="1.0" cp1x="7.0" cp1y="1.0" cp2x="7.0" cp2y="1.0"/>
151.7635 + <point x="2.9444444444444438" y="1.0185185185185186" cp1x="2.9444444444444438" cp1y="1.0185185185185186" cp2x="2.9444444444444438" cp2y="1.0185185185185186"/>
151.7636 + <point x="2.9814814814814814" y="1.7407407407407403" cp1x="2.9814814814814814" cp1y="1.7407407407407403" cp2x="2.9814814814814814" cp2y="1.7407407407407403"/>
151.7637 + <point x="1.7407407407407407" y="3.0" cp1x="1.7407407407407407" cp1y="3.0" cp2x="1.7407407407407407" cp2y="3.0"/>
151.7638 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
151.7639 + <point x="1.0" y="14.0" cp1x="1.0" cp1y="14.0" cp2x="1.0" cp2y="14.0"/>
151.7640 + <point x="14.0" y="14.0" cp1x="14.0" cp1y="14.0" cp2x="14.0" cp2y="14.0"/>
151.7641 + <point x="14.0" y="7.0" cp1x="14.0" cp1y="7.0" cp2x="14.0" cp2y="7.0"/>
151.7642 + <point x="14.87037037037037" y="5.962962962962965" cp1x="14.87037037037037" cp1y="5.962962962962965" cp2x="14.87037037037037" cp2y="5.962962962962965"/>
151.7643 + <point x="15.0" y="5.0" cp1x="15.0" cp1y="5.0" cp2x="15.0" cp2y="5.0"/>
151.7644 + <point x="16.0" y="5.0" cp1x="16.0" cp1y="5.0" cp2x="16.0" cp2y="5.0"/>
151.7645 + <point x="15.462962962962967" y="6.129629629629629" cp1x="15.462962962962967" cp1y="6.129629629629629" cp2x="15.462962962962967" cp2y="6.129629629629629"/>
151.7646 + <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
151.7647 + <point x="15.0" y="14.0" cp1x="15.0" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
151.7648 + <point x="14.0" y="15.0" cp1x="14.0" cp1y="15.0" cp2x="14.0" cp2y="15.0"/>
151.7649 + <point x="1.0" y="15.0" cp1x="1.0" cp1y="15.0" cp2x="1.0" cp2y="15.0"/>
151.7650 + <point x="0.0" y="14.0" cp1x="0.0" cp1y="14.0" cp2x="0.0" cp2y="14.0"/>
151.7651 + <point x="0.0" y="3.25925925925926" cp1x="0.0" cp1y="3.25925925925926" cp2x="0.0" cp2y="3.25925925925926"/>
151.7652 + <point x="3.1851851851851856" y="0.0" cp1x="3.1851851851851856" cp1y="0.0" cp2x="3.1851851851851856" cp2y="0.0"/>
151.7653 + <point x="7.0" y="0.0" cp1x="7.0" cp1y="0.0" cp2x="7.0" cp2y="0.0"/>
151.7654 + <point x="8.55555555555555" y="2.0000000000000004" cp1x="8.55555555555555" cp1y="2.0000000000000004" cp2x="8.55555555555555" cp2y="2.0000000000000004"/>
151.7655 + <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="13.0" cp2y="2.0"/>
151.7656 + <point x="14.0" y="3.0" cp1x="14.0" cp1y="3.0" cp2x="14.0" cp2y="3.0"/>
151.7657 + <point x="14.0" y="4.0" cp1x="14.0" cp1y="4.0" cp2x="14.0" cp2y="4.0"/>
151.7658 + </points>
151.7659 + </path>
151.7660 + </shapes>
151.7661 + <effects/>
151.7662 + </layer>
151.7663 + <layer name="Layer 3">
151.7664 + <opacity>1.0</opacity>
151.7665 + <fillOpacity>1.0</fillOpacity>
151.7666 + <blendingMode>NORMAL</blendingMode>
151.7667 + <locked>false</locked>
151.7668 + <visible>true</visible>
151.7669 + <shapes>
151.7670 + <rectangle x1="8.0" x2="13.0" y1="3.0" y2="4.0" rounding="0.0">
151.7671 + <matte red="255" green="255" blue="255" alpha="155" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-100"/>
151.7672 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7673 + </rectangle>
151.7674 + <rectangle x1="3.0" x2="7.0" y1="1.0" y2="2.0" rounding="0.0">
151.7675 + <matte red="255" green="255" blue="255" alpha="205" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-50"/>
151.7676 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7677 + </rectangle>
151.7678 + <rectangle x1="1.0" x2="2.0" y1="3.0" y2="4.0" rounding="0.0">
151.7679 + <matte red="255" green="255" blue="255" alpha="130" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-125"/>
151.7680 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7681 + </rectangle>
151.7682 + <path>
151.7683 + <gradient cycleMethod="NO_CYCLE">
151.7684 + <stop position="0.0" midpoint="0.5">
151.7685 + <matte red="202" green="215" blue="229" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0077680945" saturationOffset="-0.51781034" brightnessOffset="0.3490196" alphaOffset="0"/>
151.7686 + </stop>
151.7687 + <stop position="1.0" midpoint="0.5">
151.7688 + <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
151.7689 + </stop>
151.7690 + </gradient>
151.7691 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.7692 + <points>
151.7693 + <point x="1.0" y="14.0" cp1x="1.0" cp1y="14.0" cp2x="1.0" cp2y="14.0"/>
151.7694 + <point x="2.0" y="14.0" cp1x="2.0" cp1y="14.0" cp2x="2.0" cp2y="14.0"/>
151.7695 + <point x="2.041666666666667" y="10.187499999999998" cp1x="2.041666666666667" cp1y="10.187499999999998" cp2x="2.041666666666667" cp2y="10.187499999999998"/>
151.7696 + <point x="3.979166666666668" y="4.0" cp1x="3.979166666666668" cp1y="4.0" cp2x="3.979166666666668" cp2y="4.0"/>
151.7697 + <point x="13.0" y="4.0" cp1x="13.0" cp1y="4.0" cp2x="13.0" cp2y="4.0"/>
151.7698 + <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="13.0" cp2y="3.0"/>
151.7699 + <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
151.7700 + <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="7.0" cp2y="2.0"/>
151.7701 + <point x="7.0" y="1.0" cp1x="7.0" cp1y="1.0" cp2x="7.0" cp2y="1.0"/>
151.7702 + <point x="3.0" y="1.0" cp1x="3.0" cp1y="1.0" cp2x="3.0" cp2y="1.0"/>
151.7703 + <point x="3.0" y="2.0" cp1x="3.0" cp1y="2.0" cp2x="3.0" cp2y="2.0"/>
151.7704 + <point x="2.0" y="3.0" cp1x="2.0" cp1y="3.0" cp2x="2.0" cp2y="3.0"/>
151.7705 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
151.7706 + </points>
151.7707 + </path>
151.7708 + <path>
151.7709 + <gradient cycleMethod="NO_CYCLE">
151.7710 + <stop position="0.04191617" midpoint="0.5">
151.7711 + <matte red="178" green="198" blue="216" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.45978838" brightnessOffset="0.2980392" alphaOffset="0"/>
151.7712 + </stop>
151.7713 + <stop position="0.16467066" midpoint="0.5">
151.7714 + <matte red="134" green="162" blue="188" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.34848025" brightnessOffset="0.18823528" alphaOffset="0"/>
151.7715 + </stop>
151.7716 + <stop position="0.3263473" midpoint="0.5">
151.7717 + <matte red="111" green="139" blue="165" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.30844158" brightnessOffset="0.09803921" alphaOffset="0"/>
151.7718 + </stop>
151.7719 + <stop position="1.0" midpoint="0.5">
151.7720 + <matte red="95" green="123" blue="149" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.27329817" brightnessOffset="0.035294116" alphaOffset="0"/>
151.7721 + </stop>
151.7722 + </gradient>
151.7723 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.7724 + <points>
151.7725 + <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
151.7726 + <point x="3.0185185185185186" y="10.055555555555559" cp1x="3.0185185185185186" cp1y="10.055555555555559" cp2x="3.0185185185185186" cp2y="10.055555555555559"/>
151.7727 + <point x="4.0" y="5.0" cp1x="4.0" cp1y="5.0" cp2x="4.0" cp2y="5.0"/>
151.7728 + <point x="15.0" y="5.0" cp1x="15.0" cp1y="5.0" cp2x="15.0" cp2y="5.0"/>
151.7729 + <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
151.7730 + <point x="14.0" y="14.0" cp1x="14.0" cp1y="14.0" cp2x="14.0" cp2y="14.0"/>
151.7731 + </points>
151.7732 + </path>
151.7733 + <path>
151.7734 + <matte red="121" green="126" blue="136" alpha="156" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="-0.21" alphaOffset="-99"/>
151.7735 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7736 + <points>
151.7737 + <point x="0.0" y="13.0" cp1x="0.0" cp1y="13.0" cp2x="0.0" cp2y="13.0"/>
151.7738 + <point x="0.0" y="14.0" cp1x="0.0" cp1y="14.0" cp2x="0.0" cp2y="14.0"/>
151.7739 + <point x="1.0" y="16.0" cp1x="1.0" cp1y="16.0" cp2x="1.0" cp2y="16.0"/>
151.7740 + <point x="14.0" y="16.0" cp1x="14.0" cp1y="16.0" cp2x="14.0" cp2y="16.0"/>
151.7741 + <point x="15.0" y="14.0" cp1x="15.0" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
151.7742 + <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
151.7743 + </points>
151.7744 + </path>
151.7745 + </shapes>
151.7746 + <effects/>
151.7747 + </layer>
151.7748 + <templateLayer fileName="1140f3e73ba.png">
151.7749 + <layer name="Template" type="template">
151.7750 + <opacity>1.0</opacity>
151.7751 + <fillOpacity>1.0</fillOpacity>
151.7752 + <blendingMode>NORMAL</blendingMode>
151.7753 + <locked>false</locked>
151.7754 + <visible>false</visible>
151.7755 + <shapes/>
151.7756 + <effects/>
151.7757 + </layer>
151.7758 + </templateLayer>
151.7759 + </canvas>
151.7760 + </state>
151.7761 + </backgroundStates>
151.7762 + <foregroundStates/>
151.7763 + <borderStates/>
151.7764 + <regions/>
151.7765 + </uiIconRegion>
151.7766 + <uiIconRegion name="computerIcon" subregion="true" key="computerIcon">
151.7767 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.7768 + <style>
151.7769 + <textForeground/>
151.7770 + <textBackground/>
151.7771 + <background/>
151.7772 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.7773 + <uiproperties/>
151.7774 + </style>
151.7775 + <backgroundStates>
151.7776 + <state stateKeys="Enabled">
151.7777 + <style>
151.7778 + <textForeground/>
151.7779 + <textBackground/>
151.7780 + <background/>
151.7781 + <uiproperties/>
151.7782 + </style>
151.7783 + <canvas>
151.7784 + <size width="16" height="16"/>
151.7785 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.7786 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.7787 + <layer name="Button">
151.7788 + <opacity>1.0</opacity>
151.7789 + <fillOpacity>1.0</fillOpacity>
151.7790 + <blendingMode>NORMAL</blendingMode>
151.7791 + <locked>false</locked>
151.7792 + <visible>true</visible>
151.7793 + <shapes/>
151.7794 + <effects/>
151.7795 + </layer>
151.7796 + </canvas>
151.7797 + </state>
151.7798 + </backgroundStates>
151.7799 + <foregroundStates/>
151.7800 + <borderStates/>
151.7801 + <regions/>
151.7802 + </uiIconRegion>
151.7803 + <uiIconRegion name="hardDriveIcon" subregion="true" key="hardDriveIcon">
151.7804 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.7805 + <style>
151.7806 + <textForeground/>
151.7807 + <textBackground/>
151.7808 + <background/>
151.7809 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.7810 + <uiproperties/>
151.7811 + </style>
151.7812 + <backgroundStates>
151.7813 + <state stateKeys="Enabled">
151.7814 + <style>
151.7815 + <textForeground/>
151.7816 + <textBackground/>
151.7817 + <background/>
151.7818 + <uiproperties/>
151.7819 + </style>
151.7820 + <canvas>
151.7821 + <size width="16" height="16"/>
151.7822 + <nextLayerNameIndex>6</nextLayerNameIndex>
151.7823 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.7824 + <layer name="Layer 5">
151.7825 + <opacity>1.0</opacity>
151.7826 + <fillOpacity>1.0</fillOpacity>
151.7827 + <blendingMode>NORMAL</blendingMode>
151.7828 + <locked>false</locked>
151.7829 + <visible>true</visible>
151.7830 + <shapes>
151.7831 + <rectangle x1="8.0" x2="9.0" y1="12.0" y2="14.0" rounding="0.0">
151.7832 + <matte red="59" green="62" blue="66" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7833 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7834 + </rectangle>
151.7835 + <rectangle x1="6.0" x2="7.0" y1="12.0" y2="14.0" rounding="0.0">
151.7836 + <matte red="59" green="62" blue="66" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7837 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7838 + </rectangle>
151.7839 + <rectangle x1="4.0" x2="5.0" y1="12.0" y2="14.0" rounding="0.0">
151.7840 + <matte red="59" green="62" blue="66" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7841 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7842 + </rectangle>
151.7843 + <ellipse x1="3.0" x2="4.0" y1="5.0" y2="6.0">
151.7844 + <matte red="152" green="155" blue="158" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7845 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7846 + </ellipse>
151.7847 + <ellipse x1="3.0" x2="4.0" y1="9.0" y2="10.0">
151.7848 + <matte red="152" green="155" blue="158" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7849 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7850 + </ellipse>
151.7851 + <ellipse x1="12.0" x2="13.0" y1="9.0" y2="10.0">
151.7852 + <matte red="152" green="155" blue="158" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7853 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7854 + </ellipse>
151.7855 + <ellipse x1="12.0" x2="13.0" y1="5.0" y2="6.0">
151.7856 + <matte red="170" green="172" blue="175" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7857 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7858 + </ellipse>
151.7859 + <ellipse x1="12.0" x2="13.0" y1="1.0" y2="2.0">
151.7860 + <matte red="191" green="193" blue="194" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7861 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7862 + </ellipse>
151.7863 + <ellipse x1="3.0" x2="4.0" y1="1.0" y2="2.0">
151.7864 + <matte red="191" green="193" blue="194" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7865 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7866 + </ellipse>
151.7867 + </shapes>
151.7868 + <effects/>
151.7869 + </layer>
151.7870 + <layer name="Layer 4">
151.7871 + <opacity>1.0</opacity>
151.7872 + <fillOpacity>1.0</fillOpacity>
151.7873 + <blendingMode>NORMAL</blendingMode>
151.7874 + <locked>false</locked>
151.7875 + <visible>true</visible>
151.7876 + <shapes>
151.7877 + <path>
151.7878 + <gradient cycleMethod="NO_CYCLE">
151.7879 + <stop position="0.0" midpoint="0.5">
151.7880 + <matte red="243" green="245" blue="246" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7881 + </stop>
151.7882 + <stop position="0.7967742" midpoint="0.5">
151.7883 + <matte red="208" green="212" blue="216" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7884 + </stop>
151.7885 + <stop position="1.0" midpoint="0.5">
151.7886 + <matte red="243" green="245" blue="246" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7887 + </stop>
151.7888 + </gradient>
151.7889 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.7890 + <points>
151.7891 + <point x="5.0" y="2.0" cp1x="4.0" cp1y="3.0" cp2x="6.0" cp2y="1.0"/>
151.7892 + <point x="11.0" y="2.0" cp1x="10.0" cp1y="1.0" cp2x="12.0" cp2y="3.0"/>
151.7893 + <point x="12.0" y="5.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="6.0"/>
151.7894 + <point x="12.0" y="8.0" cp1x="12.0" cp1y="6.0" cp2x="12.0" cp2y="10.0"/>
151.7895 + <point x="9.0" y="10.0" cp1x="10.0" cp1y="10.0" cp2x="8.0" cp2y="10.0"/>
151.7896 + <point x="7.0" y="10.0" cp1x="8.0" cp1y="10.0" cp2x="6.0" cp2y="10.0"/>
151.7897 + <point x="4.0" y="8.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="6.0"/>
151.7898 + <point x="4.0" y="5.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="4.0"/>
151.7899 + </points>
151.7900 + </path>
151.7901 + </shapes>
151.7902 + <effects>
151.7903 + <dropShadow blendingMode="NORMAL" opacity="0.4" angle="135" distance="0" spread="0" size="4">
151.7904 + <matte red="0" green="0" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7905 + </dropShadow>
151.7906 + <innerShadow blendingMode="NORMAL" opacity="0.51" angle="291" distance="3" spread="0" size="2">
151.7907 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7908 + </innerShadow>
151.7909 + </effects>
151.7910 + </layer>
151.7911 + <layer name="Button">
151.7912 + <opacity>1.0</opacity>
151.7913 + <fillOpacity>1.0</fillOpacity>
151.7914 + <blendingMode>NORMAL</blendingMode>
151.7915 + <locked>false</locked>
151.7916 + <visible>true</visible>
151.7917 + <shapes>
151.7918 + <ellipse x1="3.0" x2="4.0" y1="13.0" y2="14.0">
151.7919 + <matte red="144" green="255" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7920 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7921 + </ellipse>
151.7922 + <rectangle x1="10.0" x2="13.0" y1="15.0" y2="16.0" rounding="0.0">
151.7923 + <matte red="56" green="51" blue="25" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7924 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7925 + </rectangle>
151.7926 + <rectangle x1="3.0" x2="9.0" y1="15.0" y2="16.0" rounding="0.0">
151.7927 + <matte red="56" green="51" blue="25" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7928 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7929 + </rectangle>
151.7930 + <path>
151.7931 + <gradient cycleMethod="NO_CYCLE">
151.7932 + <stop position="0.0" midpoint="0.5">
151.7933 + <matte red="105" green="110" blue="118" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7934 + </stop>
151.7935 + <stop position="1.0" midpoint="0.5">
151.7936 + <matte red="63" green="67" blue="72" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7937 + </stop>
151.7938 + </gradient>
151.7939 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.7940 + <points>
151.7941 + <point x="2.0" y="12.0" cp1x="2.0" cp1y="12.0" cp2x="2.0" cp2y="12.0"/>
151.7942 + <point x="2.0" y="15.0" cp1x="2.0" cp1y="15.0" cp2x="2.0" cp2y="15.0"/>
151.7943 + <point x="3.0" y="15.0" cp1x="3.0" cp1y="15.0" cp2x="3.0" cp2y="15.0"/>
151.7944 + <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
151.7945 + <point x="13.0" y="14.0" cp1x="13.0" cp1y="14.0" cp2x="13.0" cp2y="14.0"/>
151.7946 + <point x="13.0" y="15.0" cp1x="13.0" cp1y="15.0" cp2x="13.0" cp2y="15.0"/>
151.7947 + <point x="14.0" y="15.0" cp1x="14.0" cp1y="15.0" cp2x="14.0" cp2y="15.0"/>
151.7948 + <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
151.7949 + </points>
151.7950 + </path>
151.7951 + <rectangle x1="2.0" x2="14.0" y1="1.0" y2="12.0" rounding="0.0">
151.7952 + <gradient cycleMethod="NO_CYCLE">
151.7953 + <stop position="0.0" midpoint="0.5">
151.7954 + <matte red="239" green="241" blue="243" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7955 + </stop>
151.7956 + <stop position="1.0" midpoint="0.5">
151.7957 + <matte red="197" green="201" blue="205" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7958 + </stop>
151.7959 + </gradient>
151.7960 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.7961 + </rectangle>
151.7962 + <rectangle x1="1.0" x2="15.0" y1="12.0" y2="16.0" rounding="0.0">
151.7963 + <matte red="0" green="0" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7964 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7965 + </rectangle>
151.7966 + <rectangle x1="1.0" x2="15.0" y1="0.0" y2="12.0" rounding="0.0">
151.7967 + <matte red="160" green="161" blue="163" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.7968 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.7969 + </rectangle>
151.7970 + </shapes>
151.7971 + <effects/>
151.7972 + </layer>
151.7973 + <templateLayer fileName="1140f48945c.png">
151.7974 + <layer name="Template" type="template">
151.7975 + <opacity>1.0</opacity>
151.7976 + <fillOpacity>1.0</fillOpacity>
151.7977 + <blendingMode>NORMAL</blendingMode>
151.7978 + <locked>false</locked>
151.7979 + <visible>true</visible>
151.7980 + <shapes/>
151.7981 + <effects/>
151.7982 + </layer>
151.7983 + </templateLayer>
151.7984 + </canvas>
151.7985 + </state>
151.7986 + </backgroundStates>
151.7987 + <foregroundStates/>
151.7988 + <borderStates/>
151.7989 + <regions/>
151.7990 + </uiIconRegion>
151.7991 + <uiIconRegion name="floppyDriveIcon" subregion="true" key="floppyDriveIcon">
151.7992 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.7993 + <style>
151.7994 + <textForeground/>
151.7995 + <textBackground/>
151.7996 + <background/>
151.7997 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.7998 + <uiproperties/>
151.7999 + </style>
151.8000 + <backgroundStates>
151.8001 + <state stateKeys="Enabled">
151.8002 + <style>
151.8003 + <textForeground/>
151.8004 + <textBackground/>
151.8005 + <background/>
151.8006 + <uiproperties/>
151.8007 + </style>
151.8008 + <canvas>
151.8009 + <size width="16" height="16"/>
151.8010 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.8011 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.8012 + <layer name="Button">
151.8013 + <opacity>1.0</opacity>
151.8014 + <fillOpacity>1.0</fillOpacity>
151.8015 + <blendingMode>NORMAL</blendingMode>
151.8016 + <locked>false</locked>
151.8017 + <visible>true</visible>
151.8018 + <shapes>
151.8019 + <rectangle x1="13.0" x2="14.0" y1="13.0" y2="14.0" rounding="0.0">
151.8020 + <matte red="0" green="0" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8021 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8022 + </rectangle>
151.8023 + <rectangle x1="2.0" x2="3.0" y1="13.0" y2="14.0" rounding="0.0">
151.8024 + <matte red="54" green="78" blue="122" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8025 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8026 + </rectangle>
151.8027 + <rectangle x1="12.884615384615381" x2="14.192307692307693" y1="12.903846153846153" y2="14.423076923076929" rounding="0.0">
151.8028 + <matte red="231" green="234" blue="237" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8029 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8030 + </rectangle>
151.8031 + <rectangle x1="1.807692307692308" x2="3.1730769230769234" y1="12.78846153846154" y2="14.403846153846157" rounding="0.0">
151.8032 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8033 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8034 + </rectangle>
151.8035 + <rectangle x1="4.0" x2="12.0" y1="14.0" y2="15.0" rounding="0.0">
151.8036 + <matte red="255" green="122" blue="101" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8037 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8038 + </rectangle>
151.8039 + <path>
151.8040 + <matte red="149" green="153" blue="156" alpha="54" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8041 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8042 + <points>
151.8043 + <point x="4.0" y="1.0" cp1x="4.0" cp1y="1.0" cp2x="4.0" cp2y="1.0"/>
151.8044 + <point x="5.0" y="1.0" cp1x="5.0" cp1y="1.0" cp2x="5.0" cp2y="1.0"/>
151.8045 + <point x="5.0" y="5.0" cp1x="5.0" cp1y="5.0" cp2x="5.0" cp2y="5.0"/>
151.8046 + <point x="7.0" y="5.0" cp1x="7.0" cp1y="5.0" cp2x="7.0" cp2y="5.0"/>
151.8047 + <point x="7.0" y="1.0" cp1x="7.0" cp1y="1.0" cp2x="7.0" cp2y="1.0"/>
151.8048 + <point x="8.0" y="1.0" cp1x="8.0" cp1y="1.0" cp2x="8.0" cp2y="1.0"/>
151.8049 + <point x="8.0" y="5.0" cp1x="8.0" cp1y="5.0" cp2x="8.0" cp2y="5.0"/>
151.8050 + <point x="9.0" y="5.0" cp1x="9.0" cp1y="5.0" cp2x="9.0" cp2y="5.0"/>
151.8051 + <point x="9.0" y="6.0" cp1x="9.0" cp1y="6.0" cp2x="9.0" cp2y="6.0"/>
151.8052 + <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
151.8053 + </points>
151.8054 + </path>
151.8055 + <path>
151.8056 + <gradient cycleMethod="NO_CYCLE">
151.8057 + <stop position="0.0" midpoint="0.5">
151.8058 + <matte red="231" green="234" blue="237" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8059 + </stop>
151.8060 + <stop position="1.0" midpoint="0.5">
151.8061 + <matte red="231" green="234" blue="237" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8062 + </stop>
151.8063 + <stop position="1.0" midpoint="0.5">
151.8064 + <matte red="205" green="211" blue="215" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8065 + </stop>
151.8066 + </gradient>
151.8067 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.8068 + <points>
151.8069 + <point x="6.0" y="1.0" cp1x="6.0" cp1y="1.0" cp2x="6.0" cp2y="1.0"/>
151.8070 + <point x="6.0" y="6.0" cp1x="6.0" cp1y="6.0" cp2x="6.0" cp2y="6.0"/>
151.8071 + <point x="12.0" y="6.0" cp1x="12.0" cp1y="6.0" cp2x="12.0" cp2y="6.0"/>
151.8072 + <point x="12.0" y="2.0" cp1x="12.0" cp1y="2.0" cp2x="12.0" cp2y="2.0"/>
151.8073 + <point x="11.0" y="2.0" cp1x="11.0" cp1y="2.0" cp2x="11.0" cp2y="2.0"/>
151.8074 + <point x="11.0" y="5.0" cp1x="11.0" cp1y="5.0" cp2x="11.0" cp2y="5.0"/>
151.8075 + <point x="9.0" y="5.0" cp1x="9.0" cp1y="5.0" cp2x="9.0" cp2y="5.0"/>
151.8076 + <point x="9.0" y="2.0" cp1x="9.0" cp1y="2.0" cp2x="9.0" cp2y="2.0"/>
151.8077 + <point x="12.0" y="2.0" cp1x="12.0" cp1y="2.0" cp2x="12.0" cp2y="2.0"/>
151.8078 + <point x="12.0" y="1.0" cp1x="12.0" cp1y="1.0" cp2x="12.0" cp2y="1.0"/>
151.8079 + </points>
151.8080 + </path>
151.8081 + <path>
151.8082 + <gradient cycleMethod="NO_CYCLE">
151.8083 + <stop position="0.058064517" midpoint="0.5">
151.8084 + <matte red="224" green="224" blue="224" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8085 + </stop>
151.8086 + <stop position="0.12258065" midpoint="0.5">
151.8087 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8088 + </stop>
151.8089 + <stop position="0.19032258" midpoint="0.5">
151.8090 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8091 + </stop>
151.8092 + <stop position="0.26451612" midpoint="0.5">
151.8093 + <matte red="224" green="224" blue="224" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8094 + </stop>
151.8095 + <stop position="0.36129034" midpoint="0.5">
151.8096 + <matte red="224" green="224" blue="224" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8097 + </stop>
151.8098 + <stop position="0.4032258" midpoint="0.5">
151.8099 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8100 + </stop>
151.8101 + <stop position="0.516129" midpoint="0.5">
151.8102 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8103 + </stop>
151.8104 + <stop position="0.56774193" midpoint="0.5">
151.8105 + <matte red="232" green="232" blue="232" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8106 + </stop>
151.8107 + <stop position="0.66129035" midpoint="0.5">
151.8108 + <matte red="232" green="232" blue="232" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8109 + </stop>
151.8110 + <stop position="0.7516129" midpoint="0.5">
151.8111 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8112 + </stop>
151.8113 + </gradient>
151.8114 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.8115 + <points>
151.8116 + <point x="4.0" y="9.0" cp1x="4.0" cp1y="9.0" cp2x="4.0" cp2y="9.0"/>
151.8117 + <point x="5.0" y="8.0" cp1x="5.0" cp1y="8.0" cp2x="5.0" cp2y="8.0"/>
151.8118 + <point x="11.0" y="8.0" cp1x="11.0" cp1y="8.0" cp2x="11.0" cp2y="8.0"/>
151.8119 + <point x="12.0" y="9.0" cp1x="12.0" cp1y="9.0" cp2x="12.0" cp2y="9.0"/>
151.8120 + <point x="12.0" y="14.0" cp1x="12.0" cp1y="14.0" cp2x="12.0" cp2y="14.0"/>
151.8121 + <point x="4.0" y="14.0" cp1x="4.0" cp1y="14.0" cp2x="4.0" cp2y="14.0"/>
151.8122 + </points>
151.8123 + </path>
151.8124 + <path>
151.8125 + <gradient cycleMethod="NO_CYCLE">
151.8126 + <stop position="0.0" midpoint="0.5">
151.8127 + <matte red="164" green="179" blue="206" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8128 + </stop>
151.8129 + <stop position="0.1" midpoint="0.5">
151.8130 + <matte red="97" green="123" blue="170" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8131 + </stop>
151.8132 + <stop position="0.28387097" midpoint="0.5">
151.8133 + <matte red="53" green="86" blue="146" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8134 + </stop>
151.8135 + <stop position="0.7580645" midpoint="0.5">
151.8136 + <matte red="48" green="82" blue="144" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8137 + </stop>
151.8138 + <stop position="1.0" midpoint="0.5">
151.8139 + <matte red="71" green="99" blue="150" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8140 + </stop>
151.8141 + </gradient>
151.8142 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.8143 + <points>
151.8144 + <point x="1.0" y="2.0" cp1x="1.0" cp1y="2.0" cp2x="1.0" cp2y="2.0"/>
151.8145 + <point x="2.0" y="1.0" cp1x="2.0" cp1y="1.0" cp2x="2.0" cp2y="1.0"/>
151.8146 + <point x="13.0" y="1.0" cp1x="13.0" cp1y="1.0" cp2x="13.0" cp2y="1.0"/>
151.8147 + <point x="15.0" y="3.0" cp1x="15.0" cp1y="3.0" cp2x="15.0" cp2y="3.0"/>
151.8148 + <point x="15.0" y="15.0" cp1x="15.0" cp1y="15.0" cp2x="15.0" cp2y="15.0"/>
151.8149 + <point x="1.0" y="15.0" cp1x="1.0" cp1y="15.0" cp2x="1.0" cp2y="15.0"/>
151.8150 + </points>
151.8151 + </path>
151.8152 + <path>
151.8153 + <gradient cycleMethod="NO_CYCLE">
151.8154 + <stop position="0.0" midpoint="0.5">
151.8155 + <matte red="46" green="46" blue="46" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8156 + </stop>
151.8157 + <stop position="0.12258065" midpoint="0.5">
151.8158 + <matte red="64" green="64" blue="64" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8159 + </stop>
151.8160 + <stop position="0.88064516" midpoint="0.5">
151.8161 + <matte red="43" green="43" blue="43" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8162 + </stop>
151.8163 + <stop position="1.0" midpoint="0.5">
151.8164 + <matte red="0" green="0" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8165 + </stop>
151.8166 + </gradient>
151.8167 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.8168 + <points>
151.8169 + <point x="0.0" y="1.0" cp1x="0.0" cp1y="1.0" cp2x="0.0" cp2y="1.0"/>
151.8170 + <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
151.8171 + <point x="14.0" y="0.0" cp1x="14.0" cp1y="0.0" cp2x="14.0" cp2y="0.0"/>
151.8172 + <point x="16.0" y="2.0" cp1x="16.0" cp1y="2.0" cp2x="16.0" cp2y="2.0"/>
151.8173 + <point x="16.0" y="15.0" cp1x="16.0" cp1y="15.0" cp2x="16.0" cp2y="15.0"/>
151.8174 + <point x="15.0" y="16.0" cp1x="15.0" cp1y="16.0" cp2x="15.0" cp2y="16.0"/>
151.8175 + <point x="1.0" y="16.0" cp1x="1.0" cp1y="16.0" cp2x="1.0" cp2y="16.0"/>
151.8176 + <point x="0.0" y="15.0" cp1x="0.0" cp1y="15.0" cp2x="0.0" cp2y="15.0"/>
151.8177 + </points>
151.8178 + </path>
151.8179 + </shapes>
151.8180 + <effects/>
151.8181 + </layer>
151.8182 + <templateLayer fileName="1140f577f59.png">
151.8183 + <layer name="Template" type="template">
151.8184 + <opacity>1.0</opacity>
151.8185 + <fillOpacity>1.0</fillOpacity>
151.8186 + <blendingMode>NORMAL</blendingMode>
151.8187 + <locked>false</locked>
151.8188 + <visible>false</visible>
151.8189 + <shapes/>
151.8190 + <effects/>
151.8191 + </layer>
151.8192 + </templateLayer>
151.8193 + </canvas>
151.8194 + </state>
151.8195 + </backgroundStates>
151.8196 + <foregroundStates/>
151.8197 + <borderStates/>
151.8198 + <regions/>
151.8199 + </uiIconRegion>
151.8200 + <uiIconRegion name="homeFolderIcon" subregion="true" key="homeFolderIcon">
151.8201 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.8202 + <style>
151.8203 + <textForeground/>
151.8204 + <textBackground/>
151.8205 + <background/>
151.8206 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.8207 + <uiproperties/>
151.8208 + </style>
151.8209 + <backgroundStates>
151.8210 + <state stateKeys="Enabled">
151.8211 + <style>
151.8212 + <textForeground/>
151.8213 + <textBackground/>
151.8214 + <background/>
151.8215 + <uiproperties/>
151.8216 + </style>
151.8217 + <canvas>
151.8218 + <size width="16" height="16"/>
151.8219 + <nextLayerNameIndex>5</nextLayerNameIndex>
151.8220 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.8221 + <layer name="Button">
151.8222 + <opacity>1.0</opacity>
151.8223 + <fillOpacity>1.0</fillOpacity>
151.8224 + <blendingMode>NORMAL</blendingMode>
151.8225 + <locked>false</locked>
151.8226 + <visible>true</visible>
151.8227 + <shapes>
151.8228 + <path>
151.8229 + <gradient cycleMethod="NO_CYCLE">
151.8230 + <stop position="0.0" midpoint="0.5">
151.8231 + <matte red="160" green="161" blue="162" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8232 + </stop>
151.8233 + <stop position="1.0" midpoint="0.5">
151.8234 + <matte red="221" green="225" blue="230" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8235 + </stop>
151.8236 + </gradient>
151.8237 + <paintPoints x1="0.630769230769231" y1="0.36217948717948706" x2="0.28846153846153844" y2="0.7339743589743591"/>
151.8238 + <points>
151.8239 + <point x="9.0" y="3.0" cp1x="9.0" cp1y="3.0" cp2x="9.0" cp2y="3.0"/>
151.8240 + <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
151.8241 + <point x="8.0" y="6.0" cp1x="8.0" cp1y="6.0" cp2x="8.0" cp2y="6.0"/>
151.8242 + <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
151.8243 + <point x="13.0" y="9.0" cp1x="13.0" cp1y="9.0" cp2x="13.0" cp2y="9.0"/>
151.8244 + <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
151.8245 + </points>
151.8246 + </path>
151.8247 + <path>
151.8248 + <gradient cycleMethod="NO_CYCLE">
151.8249 + <stop position="0.0" midpoint="0.5">
151.8250 + <matte red="160" green="161" blue="162" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8251 + </stop>
151.8252 + <stop position="1.0" midpoint="0.5">
151.8253 + <matte red="226" green="230" blue="233" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8254 + </stop>
151.8255 + </gradient>
151.8256 + <paintPoints x1="0.4307692307692308" y1="0.3782051282051281" x2="0.7076923076923081" y2="0.6730769230769232"/>
151.8257 + <points>
151.8258 + <point x="3.0" y="8.0" cp1x="3.0" cp1y="8.0" cp2x="3.0" cp2y="8.0"/>
151.8259 + <point x="7.0" y="3.0" cp1x="7.0" cp1y="3.0" cp2x="7.0" cp2y="3.0"/>
151.8260 + <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
151.8261 + <point x="8.0" y="6.0" cp1x="8.0" cp1y="6.0" cp2x="8.0" cp2y="6.0"/>
151.8262 + <point x="5.0" y="9.0" cp1x="5.0" cp1y="9.0" cp2x="5.0" cp2y="9.0"/>
151.8263 + <point x="3.0" y="9.0" cp1x="3.0" cp1y="9.0" cp2x="3.0" cp2y="9.0"/>
151.8264 + </points>
151.8265 + </path>
151.8266 + <path>
151.8267 + <matte red="244" green="222" blue="143" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8268 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8269 + <points>
151.8270 + <point x="1.2884615384615383" y="7.23076923076923" cp1x="1.2884615384615383" cp1y="7.23076923076923" cp2x="1.2884615384615383" cp2y="7.23076923076923"/>
151.8271 + <point x="1.0" y="8.0" cp1x="1.0" cp1y="8.0" cp2x="1.0" cp2y="8.0"/>
151.8272 + <point x="1.6153846153846154" y="7.8269230769230775" cp1x="1.6153846153846154" cp1y="7.8269230769230775" cp2x="1.6153846153846154" cp2y="7.8269230769230775"/>
151.8273 + <point x="7.403846153846156" y="2.019230769230769" cp1x="7.403846153846156" cp1y="2.019230769230769" cp2x="7.403846153846156" cp2y="2.019230769230769"/>
151.8274 + <point x="8.557692307692301" y="2.0" cp1x="8.557692307692301" cp1y="2.0" cp2x="8.557692307692301" cp2y="2.0"/>
151.8275 + <point x="14.30769230769231" y="7.76923076923077" cp1x="14.30769230769231" cp1y="7.76923076923077" cp2x="14.30769230769231" cp2y="7.76923076923077"/>
151.8276 + <point x="15.0" y="8.0" cp1x="15.0" cp1y="8.0" cp2x="15.0" cp2y="8.0"/>
151.8277 + <point x="14.730769230769223" y="7.192307692307692" cp1x="14.730769230769223" cp1y="7.192307692307692" cp2x="14.730769230769223" cp2y="7.192307692307692"/>
151.8278 + <point x="8.65384615384615" y="0.9807692307692306" cp1x="8.65384615384615" cp1y="0.9807692307692306" cp2x="8.65384615384615" cp2y="0.9807692307692306"/>
151.8279 + <point x="7.442307692307691" y="1.0" cp1x="7.442307692307691" cp1y="1.0" cp2x="7.442307692307691" cp2y="1.0"/>
151.8280 + </points>
151.8281 + </path>
151.8282 + <path>
151.8283 + <gradient cycleMethod="NO_CYCLE">
151.8284 + <stop position="0.0" midpoint="0.5">
151.8285 + <matte red="114" green="92" blue="13" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8286 + </stop>
151.8287 + <stop position="1.0" midpoint="0.5">
151.8288 + <matte red="64" green="48" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8289 + </stop>
151.8290 + </gradient>
151.8291 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.8292 + <points>
151.8293 + <point x="0.0" y="7.0" cp1x="0.0" cp1y="7.0" cp2x="0.0" cp2y="7.0"/>
151.8294 + <point x="0.0" y="9.0" cp1x="0.0" cp1y="9.0" cp2x="0.0" cp2y="9.0"/>
151.8295 + <point x="2.0" y="9.0" cp1x="2.0" cp1y="9.0" cp2x="2.0" cp2y="9.0"/>
151.8296 + <point x="7.384615384615392" y="2.9999999999999987" cp1x="7.384615384615392" cp1y="2.9999999999999987" cp2x="7.384615384615392" cp2y="2.9999999999999987"/>
151.8297 + <point x="8.576923076923077" y="3.0" cp1x="8.576923076923077" cp1y="3.0" cp2x="8.576923076923077" cp2y="3.0"/>
151.8298 + <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="14.0" cp2y="9.0"/>
151.8299 + <point x="16.0" y="9.0" cp1x="16.0" cp1y="9.0" cp2x="16.0" cp2y="9.0"/>
151.8300 + <point x="16.0" y="7.0" cp1x="16.0" cp1y="7.0" cp2x="16.0" cp2y="7.0"/>
151.8301 + <point x="9.0" y="0.0" cp1x="9.0" cp1y="0.0" cp2x="9.0" cp2y="0.0"/>
151.8302 + <point x="7.0" y="0.0" cp1x="7.0" cp1y="0.0" cp2x="7.0" cp2y="0.0"/>
151.8303 + </points>
151.8304 + </path>
151.8305 + </shapes>
151.8306 + <effects/>
151.8307 + </layer>
151.8308 + <layer name="Layer 4">
151.8309 + <opacity>1.0</opacity>
151.8310 + <fillOpacity>1.0</fillOpacity>
151.8311 + <blendingMode>NORMAL</blendingMode>
151.8312 + <locked>false</locked>
151.8313 + <visible>true</visible>
151.8314 + <shapes>
151.8315 + <rectangle x1="6.0" x2="7.0" y1="10.0" y2="14.0" rounding="0.0">
151.8316 + <gradient cycleMethod="NO_CYCLE">
151.8317 + <stop position="0.0" midpoint="0.5">
151.8318 + <matte red="137" green="115" blue="60" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8319 + </stop>
151.8320 + <stop position="1.0" midpoint="0.5">
151.8321 + <matte red="174" green="151" blue="91" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8322 + </stop>
151.8323 + </gradient>
151.8324 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.8325 + </rectangle>
151.8326 + <path>
151.8327 + <gradient cycleMethod="NO_CYCLE">
151.8328 + <stop position="0.0" midpoint="0.5">
151.8329 + <matte red="81" green="59" blue="7" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8330 + </stop>
151.8331 + <stop position="1.0" midpoint="0.5">
151.8332 + <matte red="97" green="74" blue="18" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8333 + </stop>
151.8334 + </gradient>
151.8335 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.8336 + <points>
151.8337 + <point x="5.0" y="15.0" cp1x="5.0" cp1y="15.0" cp2x="5.0" cp2y="15.0"/>
151.8338 + <point x="8.0" y="15.0" cp1x="8.0" cp1y="15.0" cp2x="8.0" cp2y="15.0"/>
151.8339 + <point x="8.0" y="10.0" cp1x="8.0" cp1y="10.0" cp2x="8.0" cp2y="10.0"/>
151.8340 + <point x="7.0" y="9.0" cp1x="7.0" cp1y="9.0" cp2x="7.0" cp2y="9.0"/>
151.8341 + <point x="6.0" y="9.0" cp1x="6.0" cp1y="9.0" cp2x="6.0" cp2y="9.0"/>
151.8342 + <point x="5.0" y="10.0" cp1x="5.0" cp1y="10.0" cp2x="5.0" cp2y="10.0"/>
151.8343 + </points>
151.8344 + </path>
151.8345 + <rectangle x1="10.0" x2="11.0" y1="10.0" y2="11.0" rounding="0.0">
151.8346 + <matte red="77" green="133" blue="185" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8347 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8348 + </rectangle>
151.8349 + <rectangle x1="9.0" x2="12.0" y1="9.0" y2="12.0" rounding="0.0">
151.8350 + <gradient cycleMethod="NO_CYCLE">
151.8351 + <stop position="0.0" midpoint="0.5">
151.8352 + <matte red="27" green="57" blue="87" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8353 + </stop>
151.8354 + <stop position="1.0" midpoint="0.5">
151.8355 + <matte red="75" green="109" blue="137" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8356 + </stop>
151.8357 + </gradient>
151.8358 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.8359 + </rectangle>
151.8360 + <path>
151.8361 + <matte red="228" green="232" blue="237" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8362 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8363 + <points>
151.8364 + <point x="3.0" y="8.0" cp1x="3.0" cp1y="8.0" cp2x="3.0" cp2y="8.0"/>
151.8365 + <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
151.8366 + <point x="13.0" y="14.0" cp1x="13.0" cp1y="14.0" cp2x="13.0" cp2y="14.0"/>
151.8367 + <point x="13.0" y="8.0" cp1x="13.0" cp1y="8.0" cp2x="13.0" cp2y="8.0"/>
151.8368 + <point x="8.0" y="4.0" cp1x="8.0" cp1y="4.0" cp2x="8.0" cp2y="4.0"/>
151.8369 + </points>
151.8370 + </path>
151.8371 + <path>
151.8372 + <matte red="51" green="60" blue="70" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8373 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8374 + <points>
151.8375 + <point x="2.0" y="8.0" cp1x="2.0" cp1y="8.0" cp2x="2.0" cp2y="8.0"/>
151.8376 + <point x="2.0" y="14.0" cp1x="2.0" cp1y="14.0" cp2x="2.0" cp2y="14.0"/>
151.8377 + <point x="3.0" y="15.0" cp1x="3.0" cp1y="15.0" cp2x="3.0" cp2y="15.0"/>
151.8378 + <point x="13.0" y="15.0" cp1x="13.0" cp1y="15.0" cp2x="13.0" cp2y="15.0"/>
151.8379 + <point x="14.0" y="14.0" cp1x="14.0" cp1y="14.0" cp2x="14.0" cp2y="14.0"/>
151.8380 + <point x="14.0" y="8.0" cp1x="14.0" cp1y="8.0" cp2x="14.0" cp2y="8.0"/>
151.8381 + </points>
151.8382 + </path>
151.8383 + </shapes>
151.8384 + <effects/>
151.8385 + </layer>
151.8386 + <templateLayer fileName="1140f660775.png">
151.8387 + <layer name="Template" type="template">
151.8388 + <opacity>1.0</opacity>
151.8389 + <fillOpacity>1.0</fillOpacity>
151.8390 + <blendingMode>NORMAL</blendingMode>
151.8391 + <locked>false</locked>
151.8392 + <visible>false</visible>
151.8393 + <shapes/>
151.8394 + <effects/>
151.8395 + </layer>
151.8396 + </templateLayer>
151.8397 + </canvas>
151.8398 + </state>
151.8399 + </backgroundStates>
151.8400 + <foregroundStates/>
151.8401 + <borderStates/>
151.8402 + <regions/>
151.8403 + </uiIconRegion>
151.8404 + <uiIconRegion name="detailsViewIcon" subregion="true" key="detailsViewIcon">
151.8405 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.8406 + <style>
151.8407 + <textForeground/>
151.8408 + <textBackground/>
151.8409 + <background/>
151.8410 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.8411 + <uiproperties/>
151.8412 + </style>
151.8413 + <backgroundStates>
151.8414 + <state stateKeys="Enabled">
151.8415 + <style>
151.8416 + <textForeground/>
151.8417 + <textBackground/>
151.8418 + <background/>
151.8419 + <uiproperties/>
151.8420 + </style>
151.8421 + <canvas>
151.8422 + <size width="16" height="16"/>
151.8423 + <nextLayerNameIndex>7</nextLayerNameIndex>
151.8424 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.8425 + <layer name="Layer 6">
151.8426 + <opacity>1.0</opacity>
151.8427 + <fillOpacity>1.0</fillOpacity>
151.8428 + <blendingMode>NORMAL</blendingMode>
151.8429 + <locked>false</locked>
151.8430 + <visible>true</visible>
151.8431 + <shapes>
151.8432 + <rectangle x1="5.0" x2="7.0" y1="9.0" y2="10.0" rounding="0.0">
151.8433 + <matte red="69" green="78" blue="85" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.00573498" saturationOffset="-0.447479" brightnessOffset="-0.21568629" alphaOffset="0"/>
151.8434 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8435 + </rectangle>
151.8436 + <rectangle x1="8.0" x2="10.0" y1="9.0" y2="10.0" rounding="0.0">
151.8437 + <matte red="93" green="106" blue="117" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0022627711" saturationOffset="-0.4305861" brightnessOffset="-0.0901961" alphaOffset="0"/>
151.8438 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8439 + </rectangle>
151.8440 + <rectangle x1="8.0" x2="10.0" y1="7.0" y2="8.0" rounding="0.0">
151.8441 + <matte red="103" green="109" blue="113" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.011985004" saturationOffset="-0.54721874" brightnessOffset="-0.10588238" alphaOffset="0"/>
151.8442 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8443 + </rectangle>
151.8444 + <rectangle x1="5.0" x2="7.0" y1="7.0" y2="8.0" rounding="0.0">
151.8445 + <matte red="105" green="111" blue="116" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0028941035" saturationOffset="-0.5408867" brightnessOffset="-0.09411767" alphaOffset="0"/>
151.8446 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8447 + </rectangle>
151.8448 + </shapes>
151.8449 + <effects/>
151.8450 + </layer>
151.8451 + <layer name="Layer 5">
151.8452 + <opacity>1.0</opacity>
151.8453 + <fillOpacity>1.0</fillOpacity>
151.8454 + <blendingMode>NORMAL</blendingMode>
151.8455 + <locked>false</locked>
151.8456 + <visible>true</visible>
151.8457 + <shapes>
151.8458 + <path>
151.8459 + <gradient cycleMethod="NO_CYCLE">
151.8460 + <stop position="0.12215909" midpoint="0.5">
151.8461 + <matte red="16" green="16" blue="16" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.48627454" alphaOffset="0"/>
151.8462 + </stop>
151.8463 + <stop position="0.19886364" midpoint="0.5">
151.8464 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.8465 + </stop>
151.8466 + <stop position="0.32670453" midpoint="0.5">
151.8467 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.8468 + </stop>
151.8469 + <stop position="0.53409094" midpoint="0.5">
151.8470 + <matte red="138" green="138" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.007843137" alphaOffset="0"/>
151.8471 + </stop>
151.8472 + </gradient>
151.8473 + <paintPoints x1="1.0" y1="0.0" x2="0.0" y2="1.0"/>
151.8474 + <points>
151.8475 + <point x="0.9130434782608696" y="14.608695652173912" cp1x="0.9130434782608696" cp1y="14.608695652173912" cp2x="0.9130434782608696" cp2y="14.608695652173912"/>
151.8476 + <point x="1.4130434782608694" y="15.108695652173912" cp1x="1.4130434782608694" cp1y="15.108695652173912" cp2x="1.4130434782608694" cp2y="15.108695652173912"/>
151.8477 + <point x="5.108695652173911" y="11.478260869565219" cp1x="5.108695652173911" cp1y="11.478260869565219" cp2x="5.108695652173911" cp2y="11.478260869565219"/>
151.8478 + <point x="4.5652173913043494" y="10.934782608695649" cp1x="4.5652173913043494" cp1y="10.934782608695649" cp2x="4.5652173913043494" cp2y="10.934782608695649"/>
151.8479 + </points>
151.8480 + </path>
151.8481 + <path>
151.8482 + <gradient cycleMethod="NO_CYCLE">
151.8483 + <stop position="0.38352272" midpoint="0.5">
151.8484 + <matte red="64" green="64" blue="64" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.29803923" alphaOffset="0"/>
151.8485 + </stop>
151.8486 + <stop position="0.45454547" midpoint="0.5">
151.8487 + <matte red="171" green="171" blue="171" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="0.12156862" alphaOffset="0"/>
151.8488 + </stop>
151.8489 + <stop position="0.51420456" midpoint="0.5">
151.8490 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.8491 + </stop>
151.8492 + </gradient>
151.8493 + <paintPoints x1="0.0" y1="0.0" x2="1.0" y2="1.0"/>
151.8494 + <points>
151.8495 + <point x="0.0" y="15.0" cp1x="0.0" cp1y="15.0" cp2x="0.0" cp2y="15.0"/>
151.8496 + <point x="0.0" y="16.0" cp1x="0.0" cp1y="16.0" cp2x="0.0" cp2y="16.0"/>
151.8497 + <point x="2.0" y="16.0" cp1x="2.0" cp1y="16.0" cp2x="2.0" cp2y="16.0"/>
151.8498 + <point x="5.0" y="12.0" cp1x="5.0" cp1y="12.0" cp2x="5.0" cp2y="12.0"/>
151.8499 + <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
151.8500 + </points>
151.8501 + </path>
151.8502 + <ellipse x1="4.0" x2="11.0" y1="5.0" y2="12.0">
151.8503 + <radialGradient cycleMethod="NO_CYCLE">
151.8504 + <stop position="0.0" midpoint="0.40625">
151.8505 + <matte red="229" green="240" blue="249" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0036516786" saturationOffset="-0.555393" brightnessOffset="0.42745095" alphaOffset="0"/>
151.8506 + </stop>
151.8507 + <stop position="1.0" midpoint="0.5">
151.8508 + <matte red="155" green="186" blue="213" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0010654926" saturationOffset="-0.3634138" brightnessOffset="0.2862745" alphaOffset="0"/>
151.8509 + </stop>
151.8510 + </radialGradient>
151.8511 + <paintPoints x1="0.4922360248447207" y1="0.975155279503105" x2="0.47826086956521735" y2="0.23913043478260873"/>
151.8512 + </ellipse>
151.8513 + <ellipse x1="3.0" x2="12.0" y1="4.0" y2="13.0">
151.8514 + <gradient cycleMethod="NO_CYCLE">
151.8515 + <stop position="0.0" midpoint="0.5">
151.8516 + <matte red="102" green="102" blue="104" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.6164835" brightnessOffset="-0.14117649" alphaOffset="0"/>
151.8517 + </stop>
151.8518 + <stop position="1.0" midpoint="0.5">
151.8519 + <matte red="12" green="12" blue="12" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.5019608" alphaOffset="0"/>
151.8520 + </stop>
151.8521 + </gradient>
151.8522 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8523 + </ellipse>
151.8524 + </shapes>
151.8525 + <effects/>
151.8526 + </layer>
151.8527 + <layer name="Icon">
151.8528 + <opacity>1.0</opacity>
151.8529 + <fillOpacity>1.0</fillOpacity>
151.8530 + <blendingMode>NORMAL</blendingMode>
151.8531 + <locked>false</locked>
151.8532 + <visible>true</visible>
151.8533 + <shapes>
151.8534 + <rectangle x1="8.0" x2="13.0" y1="11.0" y2="12.0" rounding="0.0">
151.8535 + <matte red="178" green="183" blue="189" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.012257397" saturationOffset="-0.5775132" brightnessOffset="0.19215685" alphaOffset="0"/>
151.8536 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8537 + </rectangle>
151.8538 + <rectangle x1="8.0" x2="13.0" y1="7.0" y2="8.0" rounding="0.0">
151.8539 + <matte red="163" green="174" blue="184" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="7.13408E-4" saturationOffset="-0.52158386" brightnessOffset="0.17254901" alphaOffset="0"/>
151.8540 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8541 + </rectangle>
151.8542 + <rectangle x1="8.0" x2="13.0" y1="3.0" y2="4.0" rounding="0.0">
151.8543 + <matte red="163" green="174" blue="184" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="7.13408E-4" saturationOffset="-0.52158386" brightnessOffset="0.17254901" alphaOffset="0"/>
151.8544 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8545 + </rectangle>
151.8546 + <rectangle x1="5.0" x2="7.0" y1="3.0" y2="4.0" rounding="0.0">
151.8547 + <matte red="163" green="174" blue="184" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="7.13408E-4" saturationOffset="-0.52158386" brightnessOffset="0.17254901" alphaOffset="0"/>
151.8548 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8549 + </rectangle>
151.8550 + <rectangle x1="2.0" x2="15.0" y1="1.0" y2="14.0" rounding="0.0">
151.8551 + <gradient cycleMethod="NO_CYCLE">
151.8552 + <stop position="0.0" midpoint="0.5">
151.8553 + <matte red="233" green="239" blue="244" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0028941035" saturationOffset="-0.5906323" brightnessOffset="0.4078431" alphaOffset="0"/>
151.8554 + </stop>
151.8555 + <stop position="0.11363637" midpoint="0.5">
151.8556 + <matte red="200" green="214" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.51290727" brightnessOffset="0.34509802" alphaOffset="0"/>
151.8557 + </stop>
151.8558 + <stop position="0.57102275" midpoint="0.5">
151.8559 + <matte red="221" green="229" blue="238" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.009583652" saturationOffset="-0.5642857" brightnessOffset="0.3843137" alphaOffset="0"/>
151.8560 + </stop>
151.8561 + <stop position="1.0" midpoint="0.5">
151.8562 + <matte red="241" green="245" blue="248" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0072231293" saturationOffset="-0.6074885" brightnessOffset="0.4235294" alphaOffset="0"/>
151.8563 + </stop>
151.8564 + </gradient>
151.8565 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.8566 + </rectangle>
151.8567 + <rectangle x1="1.0" x2="16.0" y1="0.0" y2="15.0" rounding="0.0">
151.8568 + <gradient cycleMethod="NO_CYCLE">
151.8569 + <stop position="0.0" midpoint="0.5">
151.8570 + <matte red="161" green="175" blue="189" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.48756614" brightnessOffset="0.19215685" alphaOffset="0"/>
151.8571 + </stop>
151.8572 + <stop position="1.0" midpoint="0.5">
151.8573 + <matte red="123" green="134" blue="145" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.48399013" brightnessOffset="0.019607842" alphaOffset="0"/>
151.8574 + </stop>
151.8575 + </gradient>
151.8576 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.8577 + </rectangle>
151.8578 + </shapes>
151.8579 + <effects/>
151.8580 + </layer>
151.8581 + <templateLayer fileName="11499160af7.png">
151.8582 + <layer name="Template" type="template">
151.8583 + <opacity>1.0</opacity>
151.8584 + <fillOpacity>1.0</fillOpacity>
151.8585 + <blendingMode>NORMAL</blendingMode>
151.8586 + <locked>false</locked>
151.8587 + <visible>true</visible>
151.8588 + <shapes/>
151.8589 + <effects/>
151.8590 + </layer>
151.8591 + </templateLayer>
151.8592 + </canvas>
151.8593 + </state>
151.8594 + </backgroundStates>
151.8595 + <foregroundStates/>
151.8596 + <borderStates/>
151.8597 + <regions/>
151.8598 + </uiIconRegion>
151.8599 + <uiIconRegion name="listViewIcon" subregion="true" key="listViewIcon">
151.8600 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.8601 + <style>
151.8602 + <textForeground/>
151.8603 + <textBackground/>
151.8604 + <background/>
151.8605 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.8606 + <uiproperties/>
151.8607 + </style>
151.8608 + <backgroundStates>
151.8609 + <state stateKeys="Enabled">
151.8610 + <style>
151.8611 + <textForeground/>
151.8612 + <textBackground/>
151.8613 + <background/>
151.8614 + <uiproperties/>
151.8615 + </style>
151.8616 + <canvas>
151.8617 + <size width="16" height="16"/>
151.8618 + <nextLayerNameIndex>5</nextLayerNameIndex>
151.8619 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.8620 + <layer name="Icon">
151.8621 + <opacity>1.0</opacity>
151.8622 + <fillOpacity>1.0</fillOpacity>
151.8623 + <blendingMode>NORMAL</blendingMode>
151.8624 + <locked>false</locked>
151.8625 + <visible>true</visible>
151.8626 + <shapes>
151.8627 + <rectangle x1="7.0" x2="12.0" y1="12.0" y2="13.0" rounding="0.0">
151.8628 + <matte red="186" green="186" blue="186" alpha="40" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8629 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8630 + </rectangle>
151.8631 + <rectangle x1="4.0" x2="6.0" y1="12.0" y2="13.0" rounding="0.0">
151.8632 + <matte red="186" green="186" blue="186" alpha="40" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8633 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8634 + </rectangle>
151.8635 + <rectangle x1="4.0" x2="6.0" y1="10.0" y2="11.0" rounding="0.0">
151.8636 + <matte red="186" green="186" blue="186" alpha="50" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8637 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8638 + </rectangle>
151.8639 + <rectangle x1="7.0" x2="11.0" y1="10.0" y2="11.0" rounding="0.0">
151.8640 + <matte red="186" green="186" blue="186" alpha="40" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8641 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8642 + </rectangle>
151.8643 + <rectangle x1="7.0" x2="12.0" y1="8.0" y2="9.0" rounding="0.0">
151.8644 + <matte red="186" green="186" blue="186" alpha="40" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8645 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8646 + </rectangle>
151.8647 + <rectangle x1="4.0" x2="6.0" y1="8.0" y2="9.0" rounding="0.0">
151.8648 + <matte red="186" green="186" blue="186" alpha="50" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8649 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8650 + </rectangle>
151.8651 + <rectangle x1="7.0" x2="11.0" y1="6.0" y2="7.0" rounding="0.0">
151.8652 + <matte red="186" green="186" blue="186" alpha="40" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8653 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8654 + </rectangle>
151.8655 + <rectangle x1="4.0" x2="6.0" y1="6.0" y2="7.0" rounding="0.0">
151.8656 + <matte red="186" green="186" blue="186" alpha="50" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8657 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8658 + </rectangle>
151.8659 + <rectangle x1="7.0" x2="12.0" y1="4.0" y2="5.0" rounding="0.0">
151.8660 + <matte red="186" green="186" blue="186" alpha="50" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8661 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8662 + </rectangle>
151.8663 + <rectangle x1="4.0" x2="6.0" y1="4.0" y2="5.0" rounding="0.0">
151.8664 + <matte red="186" green="186" blue="186" alpha="50" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8665 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8666 + </rectangle>
151.8667 + <rectangle x1="4.0" x2="6.0" y1="11.0" y2="12.0" rounding="0.0">
151.8668 + <matte red="70" green="75" blue="79" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.004577577" saturationOffset="-0.52179027" brightnessOffset="-0.2392157" alphaOffset="0"/>
151.8669 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8670 + </rectangle>
151.8671 + <rectangle x1="7.0" x2="12.0" y1="11.0" y2="12.0" rounding="0.0">
151.8672 + <gradient cycleMethod="NO_CYCLE">
151.8673 + <stop position="0.0" midpoint="0.5">
151.8674 + <matte red="70" green="75" blue="79" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.004577577" saturationOffset="-0.52179027" brightnessOffset="-0.2392157" alphaOffset="0"/>
151.8675 + </stop>
151.8676 + <stop position="0.42897728" midpoint="0.5">
151.8677 + <matte red="93" green="98" blue="102" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.004577577" saturationOffset="-0.547479" brightnessOffset="-0.14901963" alphaOffset="0"/>
151.8678 + </stop>
151.8679 + <stop position="1.0" midpoint="0.5">
151.8680 + <matte red="70" green="75" blue="79" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.004577577" saturationOffset="-0.52179027" brightnessOffset="-0.2392157" alphaOffset="0"/>
151.8681 + </stop>
151.8682 + </gradient>
151.8683 + <paintPoints x1="0.0" y1="0.0" x2="1.0" y2="0.0"/>
151.8684 + </rectangle>
151.8685 + <rectangle x1="7.0" x2="11.0" y1="9.0" y2="10.0" rounding="0.0">
151.8686 + <gradient cycleMethod="NO_CYCLE">
151.8687 + <stop position="0.0" midpoint="0.5">
151.8688 + <matte red="108" green="114" blue="120" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8689 + </stop>
151.8690 + <stop position="0.4346591" midpoint="0.5">
151.8691 + <matte red="77" green="82" blue="87" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8692 + </stop>
151.8693 + </gradient>
151.8694 + <paintPoints x1="0.0" y1="0.0" x2="1.0" y2="0.0"/>
151.8695 + </rectangle>
151.8696 + <rectangle x1="4.0" x2="6.0" y1="9.0" y2="10.0" rounding="0.0">
151.8697 + <matte red="77" green="82" blue="87" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.52077174" brightnessOffset="-0.20784315" alphaOffset="0"/>
151.8698 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8699 + </rectangle>
151.8700 + <rectangle x1="7.0" x2="12.0" y1="7.0" y2="8.0" rounding="0.0">
151.8701 + <gradient cycleMethod="NO_CYCLE">
151.8702 + <stop position="0.0" midpoint="0.5">
151.8703 + <matte red="87" green="93" blue="98" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0028941035" saturationOffset="-0.5234694" brightnessOffset="-0.1647059" alphaOffset="0"/>
151.8704 + </stop>
151.8705 + <stop position="0.48295453" midpoint="0.5">
151.8706 + <matte red="106" green="112" blue="118" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.53401935" brightnessOffset="-0.086274534" alphaOffset="0"/>
151.8707 + </stop>
151.8708 + <stop position="1.0" midpoint="0.5">
151.8709 + <matte red="87" green="93" blue="98" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0028941035" saturationOffset="-0.5234694" brightnessOffset="-0.1647059" alphaOffset="0"/>
151.8710 + </stop>
151.8711 + </gradient>
151.8712 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8713 + </rectangle>
151.8714 + <rectangle x1="4.0" x2="6.0" y1="7.0" y2="8.0" rounding="0.0">
151.8715 + <matte red="90" green="95" blue="100" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.010526314" brightnessOffset="-0.3529412" alphaOffset="0"/>
151.8716 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8717 + </rectangle>
151.8718 + <rectangle x1="4.0" x2="6.0" y1="5.0" y2="6.0" rounding="0.0">
151.8719 + <matte red="97" green="103" blue="108" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.03535354" saturationOffset="-0.008674465" brightnessOffset="-0.32156864" alphaOffset="0"/>
151.8720 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8721 + </rectangle>
151.8722 + <rectangle x1="7.0" x2="11.0" y1="5.0" y2="6.0" rounding="0.0">
151.8723 + <matte red="97" green="103" blue="108" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0028941035" saturationOffset="-0.5338625" brightnessOffset="-0.12549022" alphaOffset="0"/>
151.8724 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8725 + </rectangle>
151.8726 + <rectangle x1="7.0" x2="12.0" y1="3.0" y2="4.0" rounding="0.0">
151.8727 + <gradient cycleMethod="NO_CYCLE">
151.8728 + <stop position="0.25" midpoint="0.5">
151.8729 + <matte red="99" green="105" blue="111" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.5276062" brightnessOffset="-0.11372551" alphaOffset="0"/>
151.8730 + </stop>
151.8731 + <stop position="0.42045453" midpoint="0.5">
151.8732 + <matte red="124" green="132" blue="139" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-8.738637E-4" saturationOffset="-0.5278006" brightnessOffset="-0.0039215684" alphaOffset="0"/>
151.8733 + </stop>
151.8734 + <stop position="0.5823864" midpoint="0.5">
151.8735 + <matte red="99" green="105" blue="111" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.5276062" brightnessOffset="-0.11372551" alphaOffset="0"/>
151.8736 + </stop>
151.8737 + </gradient>
151.8738 + <paintPoints x1="0.0" y1="0.0" x2="1.0" y2="1.0"/>
151.8739 + </rectangle>
151.8740 + <rectangle x1="4.0" x2="6.0" y1="3.0" y2="4.0" rounding="0.0">
151.8741 + <matte red="99" green="105" blue="111" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.5276062" brightnessOffset="-0.11372551" alphaOffset="0"/>
151.8742 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8743 + </rectangle>
151.8744 + <rectangle x1="1.0" x2="15.0" y1="1.0" y2="14.0" rounding="0.0">
151.8745 + <gradient cycleMethod="NO_CYCLE">
151.8746 + <stop position="0.0" midpoint="0.5">
151.8747 + <matte red="233" green="239" blue="244" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0028941035" saturationOffset="-0.5906323" brightnessOffset="0.4078431" alphaOffset="0"/>
151.8748 + </stop>
151.8749 + <stop position="0.07670455" midpoint="0.5">
151.8750 + <matte red="200" green="214" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.51290727" brightnessOffset="0.34509802" alphaOffset="0"/>
151.8751 + </stop>
151.8752 + <stop position="0.4090909" midpoint="0.5">
151.8753 + <matte red="209" green="221" blue="233" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.53271" brightnessOffset="0.36470586" alphaOffset="0"/>
151.8754 + </stop>
151.8755 + <stop position="1.0" midpoint="0.5">
151.8756 + <matte red="241" green="245" blue="248" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0072231293" saturationOffset="-0.6074885" brightnessOffset="0.4235294" alphaOffset="0"/>
151.8757 + </stop>
151.8758 + </gradient>
151.8759 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.8760 + </rectangle>
151.8761 + <rectangle x1="0.0" x2="16.0" y1="0.0" y2="15.0" rounding="0.0">
151.8762 + <gradient cycleMethod="NO_CYCLE">
151.8763 + <stop position="0.0" midpoint="0.5">
151.8764 + <matte red="161" green="175" blue="189" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.48756614" brightnessOffset="0.19215685" alphaOffset="0"/>
151.8765 + </stop>
151.8766 + <stop position="1.0" midpoint="0.5">
151.8767 + <matte red="123" green="134" blue="145" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.48399013" brightnessOffset="0.019607842" alphaOffset="0"/>
151.8768 + </stop>
151.8769 + </gradient>
151.8770 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.8771 + </rectangle>
151.8772 + </shapes>
151.8773 + <effects/>
151.8774 + </layer>
151.8775 + <templateLayer fileName="114997c75bc.png">
151.8776 + <layer name="Template" type="template">
151.8777 + <opacity>1.0</opacity>
151.8778 + <fillOpacity>1.0</fillOpacity>
151.8779 + <blendingMode>NORMAL</blendingMode>
151.8780 + <locked>false</locked>
151.8781 + <visible>false</visible>
151.8782 + <shapes/>
151.8783 + <effects/>
151.8784 + </layer>
151.8785 + </templateLayer>
151.8786 + </canvas>
151.8787 + </state>
151.8788 + </backgroundStates>
151.8789 + <foregroundStates/>
151.8790 + <borderStates/>
151.8791 + <regions/>
151.8792 + </uiIconRegion>
151.8793 + </regions>
151.8794 + </uiComponent>
151.8795 + <uiComponent opaque="false" type="javax.swing.plaf.synth.SynthInternalFrameTitlePane" name="InternalFrameTitlePane" ui="ComponentUI" subregion="false">
151.8796 + <stateTypes/>
151.8797 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.8798 + <style>
151.8799 + <textForeground/>
151.8800 + <textBackground/>
151.8801 + <background/>
151.8802 + <uiproperties>
151.8803 + <uiProperty name="maxFrameIconSize" type="DIMENSION">
151.8804 + <dimension width="18" height="18"/>
151.8805 + </uiProperty>
151.8806 + </uiproperties>
151.8807 + </style>
151.8808 + <backgroundStates/>
151.8809 + <foregroundStates/>
151.8810 + <borderStates/>
151.8811 + <regions/>
151.8812 + </uiComponent>
151.8813 + <uiComponent opaque="false" type="javax.swing.JInternalFrame" name="InternalFrame" ui="InternalFrameUI" subregion="false">
151.8814 + <stateTypes>
151.8815 + <stateType key="Enabled"/>
151.8816 + <stateType key="WindowFocused">
151.8817 + <codeSnippet><![CDATA[
151.8818 + return c instanceof JInternalFrame && ((JInternalFrame)c).isSelected();]]></codeSnippet>
151.8819 + </stateType>
151.8820 + </stateTypes>
151.8821 + <contentMargins top="1" bottom="6" left="6" right="6"/>
151.8822 + <style>
151.8823 + <textForeground/>
151.8824 + <textBackground/>
151.8825 + <background/>
151.8826 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.8827 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.8828 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.8829 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.8830 + <uiproperties/>
151.8831 + </style>
151.8832 + <backgroundStates>
151.8833 + <state stateKeys="Enabled">
151.8834 + <style>
151.8835 + <textForeground/>
151.8836 + <textBackground/>
151.8837 + <background/>
151.8838 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.8839 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.8840 + <uiproperties/>
151.8841 + </style>
151.8842 + <canvas>
151.8843 + <size width="25" height="36"/>
151.8844 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.8845 + <stretchingInsets top="25" bottom="6" left="6" right="6"/>
151.8846 + <layer name="Layer 1">
151.8847 + <opacity>1.0</opacity>
151.8848 + <fillOpacity>1.0</fillOpacity>
151.8849 + <blendingMode>NORMAL</blendingMode>
151.8850 + <locked>false</locked>
151.8851 + <visible>true</visible>
151.8852 + <shapes>
151.8853 + <rectangle x1="2.0" x2="23.0" y1="34.0" y2="35.0" rounding="0.0">
151.8854 + <matte red="211" green="214" blue="219" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.07399663" brightnessOffset="0.11372548" alphaOffset="0"/>
151.8855 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8856 + </rectangle>
151.8857 + <rectangle x1="6.0" x2="19.0" y1="25.0" y2="30.0" rounding="0.0">
151.8858 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="control" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8859 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8860 + </rectangle>
151.8861 + <path>
151.8862 + <matte red="158" green="163" blue="173" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.023821115" brightnessOffset="-0.06666666" alphaOffset="0"/>
151.8863 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8864 + <points>
151.8865 + <point x="20.0" y="25.0" cp1x="20.0" cp1y="25.0" cp2x="20.0" cp2y="25.0"/>
151.8866 + <point x="6.0" y="25.0" cp1x="6.0" cp1y="25.0" cp2x="6.0" cp2y="25.0"/>
151.8867 + <point x="6.0" y="30.0" cp1x="6.0" cp1y="30.0" cp2x="6.0" cp2y="30.0"/>
151.8868 + <point x="19.0" y="30.0" cp1x="19.0" cp1y="30.0" cp2x="19.0" cp2y="30.0"/>
151.8869 + <point x="19.0" y="25.0" cp1x="19.0" cp1y="25.0" cp2x="19.0" cp2y="25.0"/>
151.8870 + <point x="20.0" y="25.0" cp1x="20.0" cp1y="25.0" cp2x="20.0" cp2y="25.0"/>
151.8871 + <point x="20.0" y="31.0" cp1x="20.0" cp1y="31.0" cp2x="20.0" cp2y="31.0"/>
151.8872 + <point x="5.0" y="31.0" cp1x="5.0" cp1y="31.0" cp2x="5.0" cp2y="31.0"/>
151.8873 + <point x="5.0" y="24.0" cp1x="5.0" cp1y="24.0" cp2x="5.0" cp2y="24.0"/>
151.8874 + <point x="20.0" y="24.0" cp1x="20.0" cp1y="24.0" cp2x="20.0" cp2y="24.0"/>
151.8875 + </points>
151.8876 + </path>
151.8877 + <path>
151.8878 + <matte red="203" green="207" blue="213" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.06357796" brightnessOffset="0.09019607" alphaOffset="0"/>
151.8879 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8880 + <points>
151.8881 + <point x="5.0" y="24.0" cp1x="5.0" cp1y="24.0" cp2x="5.0" cp2y="24.0"/>
151.8882 + <point x="4.0" y="24.0" cp1x="4.0" cp1y="24.0" cp2x="4.0" cp2y="24.0"/>
151.8883 + <point x="4.0" y="32.0" cp1x="4.0" cp1y="32.0" cp2x="4.0" cp2y="32.0"/>
151.8884 + <point x="21.0" y="32.0" cp1x="21.0" cp1y="32.0" cp2x="21.0" cp2y="32.0"/>
151.8885 + <point x="21.0" y="24.0" cp1x="21.0" cp1y="24.0" cp2x="21.0" cp2y="24.0"/>
151.8886 + <point x="20.0" y="24.0" cp1x="20.0" cp1y="24.0" cp2x="20.0" cp2y="24.0"/>
151.8887 + <point x="20.0" y="31.0" cp1x="20.0" cp1y="31.0" cp2x="20.0" cp2y="31.0"/>
151.8888 + <point x="5.0" y="31.0" cp1x="5.0" cp1y="31.0" cp2x="5.0" cp2y="31.0"/>
151.8889 + </points>
151.8890 + </path>
151.8891 + <path>
151.8892 + <matte red="192" green="196" blue="203" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.056339122" brightnessOffset="0.05098039" alphaOffset="0"/>
151.8893 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8894 + <points>
151.8895 + <point x="4.0" y="24.0" cp1x="4.0" cp1y="24.0" cp2x="4.0" cp2y="24.0"/>
151.8896 + <point x="1.0" y="24.0" cp1x="1.0" cp1y="24.0" cp2x="1.0" cp2y="24.0"/>
151.8897 + <point x="1.0" y="33.0" cp1x="1.0" cp1y="32.0" cp2x="1.0" cp2y="34.0"/>
151.8898 + <point x="3.0" y="35.0" cp1x="2.0" cp1y="35.0" cp2x="4.0" cp2y="35.0"/>
151.8899 + <point x="22.0" y="35.0" cp1x="21.0" cp1y="35.0" cp2x="23.0" cp2y="35.0"/>
151.8900 + <point x="24.0" y="33.0" cp1x="24.0" cp1y="34.0" cp2x="24.0" cp2y="32.0"/>
151.8901 + <point x="24.0" y="24.0" cp1x="24.0" cp1y="24.0" cp2x="24.0" cp2y="24.0"/>
151.8902 + <point x="21.0" y="24.0" cp1x="21.0" cp1y="24.0" cp2x="21.0" cp2y="24.0"/>
151.8903 + <point x="21.0" y="32.0" cp1x="21.0" cp1y="32.0" cp2x="21.0" cp2y="32.0"/>
151.8904 + <point x="4.0" y="32.0" cp1x="4.0" cp1y="32.0" cp2x="4.0" cp2y="32.0"/>
151.8905 + </points>
151.8906 + </path>
151.8907 + <path>
151.8908 + <gradient cycleMethod="NO_CYCLE">
151.8909 + <stop position="0.0" midpoint="0.3203593">
151.8910 + <matte red="170" green="174" blue="183" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.004273474" saturationOffset="-0.039488062" brightnessOffset="-0.027450979" alphaOffset="0"/>
151.8911 + </stop>
151.8912 + <stop position="1.0" midpoint="0.5">
151.8913 + <matte red="192" green="196" blue="203" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.056339122" brightnessOffset="0.05098039" alphaOffset="0"/>
151.8914 + </stop>
151.8915 + </gradient>
151.8916 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.8917 + <points>
151.8918 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="4.0" cp2x="1.0" cp2y="2.0"/>
151.8919 + <point x="3.0" y="1.0" cp1x="2.0" cp1y="1.0" cp2x="4.0" cp2y="1.0"/>
151.8920 + <point x="22.0" y="1.0" cp1x="21.0" cp1y="1.0" cp2x="23.0" cp2y="1.0"/>
151.8921 + <point x="24.0" y="3.0" cp1x="24.0" cp1y="2.0" cp2x="24.0" cp2y="4.0"/>
151.8922 + <point x="24.0" y="24.0" cp1x="24.0" cp1y="24.0" cp2x="24.0" cp2y="24.0"/>
151.8923 + <point x="1.0" y="24.0" cp1x="1.0" cp1y="24.0" cp2x="1.0" cp2y="24.0"/>
151.8924 + </points>
151.8925 + </path>
151.8926 + <rectangle x1="0.0" x2="25.0" y1="0.0" y2="36.0" rounding="4.666666666666666">
151.8927 + <matte red="136" green="141" blue="151" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.53637654" brightnessOffset="0.043137252" alphaOffset="0"/>
151.8928 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8929 + </rectangle>
151.8930 + </shapes>
151.8931 + <effects/>
151.8932 + </layer>
151.8933 + <templateLayer fileName="113e0dd2c60.png">
151.8934 + <layer name="Template" type="template">
151.8935 + <opacity>1.0</opacity>
151.8936 + <fillOpacity>1.0</fillOpacity>
151.8937 + <blendingMode>NORMAL</blendingMode>
151.8938 + <locked>false</locked>
151.8939 + <visible>false</visible>
151.8940 + <shapes/>
151.8941 + <effects/>
151.8942 + </layer>
151.8943 + </templateLayer>
151.8944 + </canvas>
151.8945 + </state>
151.8946 + <state stateKeys="Enabled+WindowFocused">
151.8947 + <style>
151.8948 + <textForeground/>
151.8949 + <textBackground/>
151.8950 + <background/>
151.8951 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.8952 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.8953 + <uiproperties/>
151.8954 + </style>
151.8955 + <canvas>
151.8956 + <size width="25" height="36"/>
151.8957 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.8958 + <stretchingInsets top="25" bottom="6" left="6" right="6"/>
151.8959 + <layer name="Layer 1">
151.8960 + <opacity>1.0</opacity>
151.8961 + <fillOpacity>1.0</fillOpacity>
151.8962 + <blendingMode>NORMAL</blendingMode>
151.8963 + <locked>false</locked>
151.8964 + <visible>true</visible>
151.8965 + <shapes>
151.8966 + <rectangle x1="2.0" x2="23.0" y1="34.0" y2="35.0" rounding="0.0">
151.8967 + <matte red="235" green="236" blue="238" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8968 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8969 + </rectangle>
151.8970 + <rectangle x1="2.0" x2="23.0" y1="2.0" y2="24.0" rounding="0.0">
151.8971 + <gradient cycleMethod="NO_CYCLE">
151.8972 + <stop position="0.0" midpoint="0.24251497">
151.8973 + <matte red="227" green="229" blue="232" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.61416256" brightnessOffset="0.3607843" alphaOffset="0"/>
151.8974 + </stop>
151.8975 + <stop position="1.0" midpoint="0.5">
151.8976 + <matte red="170" green="175" blue="185" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5546332" brightnessOffset="0.17647058" alphaOffset="0"/>
151.8977 + </stop>
151.8978 + </gradient>
151.8979 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.8980 + </rectangle>
151.8981 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.8982 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8983 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8984 + </rectangle>
151.8985 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.8986 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8987 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8988 + </rectangle>
151.8989 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.8990 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8991 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8992 + </rectangle>
151.8993 + <rectangle x1="6.0" x2="19.0" y1="25.0" y2="30.0" rounding="0.0">
151.8994 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="control" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.8995 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.8996 + </rectangle>
151.8997 + <path>
151.8998 + <matte red="108" green="114" blue="128" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.03801495" saturationOffset="-0.4794643" brightnessOffset="-0.04705882" alphaOffset="0"/>
151.8999 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9000 + <points>
151.9001 + <point x="5.0" y="25.0" cp1x="5.0" cp1y="25.0" cp2x="5.0" cp2y="25.0"/>
151.9002 + <point x="5.0" y="31.0" cp1x="5.0" cp1y="31.0" cp2x="5.0" cp2y="31.0"/>
151.9003 + <point x="20.0" y="31.0" cp1x="20.0" cp1y="31.0" cp2x="20.0" cp2y="31.0"/>
151.9004 + <point x="20.0" y="24.0" cp1x="20.0" cp1y="24.0" cp2x="20.0" cp2y="24.0"/>
151.9005 + <point x="5.0" y="24.0" cp1x="5.0" cp1y="24.0" cp2x="5.0" cp2y="24.0"/>
151.9006 + <point x="5.0" y="25.0" cp1x="5.0" cp1y="25.0" cp2x="5.0" cp2y="25.0"/>
151.9007 + <point x="19.0" y="25.0" cp1x="19.0" cp1y="25.0" cp2x="19.0" cp2y="25.0"/>
151.9008 + <point x="19.0" y="30.0" cp1x="19.0" cp1y="30.0" cp2x="19.0" cp2y="30.0"/>
151.9009 + <point x="6.0" y="30.0" cp1x="6.0" cp1y="30.0" cp2x="6.0" cp2y="30.0"/>
151.9010 + <point x="6.0" y="25.0" cp1x="6.0" cp1y="25.0" cp2x="6.0" cp2y="25.0"/>
151.9011 + </points>
151.9012 + </path>
151.9013 + <path>
151.9014 + <matte red="149" green="158" blue="167" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.52792984" brightnessOffset="0.10588235" alphaOffset="0"/>
151.9015 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9016 + <points>
151.9017 + <point x="21.0" y="24.0" cp1x="21.0" cp1y="24.0" cp2x="21.0" cp2y="24.0"/>
151.9018 + <point x="20.0" y="24.0" cp1x="20.0" cp1y="24.0" cp2x="20.0" cp2y="24.0"/>
151.9019 + <point x="20.0" y="31.0" cp1x="20.0" cp1y="31.0" cp2x="20.0" cp2y="31.0"/>
151.9020 + <point x="5.0" y="31.0" cp1x="5.0" cp1y="31.0" cp2x="5.0" cp2y="31.0"/>
151.9021 + <point x="5.0" y="24.0" cp1x="5.0" cp1y="24.0" cp2x="5.0" cp2y="24.0"/>
151.9022 + <point x="4.0" y="24.0" cp1x="4.0" cp1y="24.0" cp2x="4.0" cp2y="24.0"/>
151.9023 + <point x="4.0" y="32.0" cp1x="4.0" cp1y="32.0" cp2x="4.0" cp2y="32.0"/>
151.9024 + <point x="21.0" y="32.0" cp1x="21.0" cp1y="32.0" cp2x="21.0" cp2y="32.0"/>
151.9025 + </points>
151.9026 + </path>
151.9027 + <path>
151.9028 + <matte red="171" green="176" blue="186" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.55506915" brightnessOffset="0.18039215" alphaOffset="0"/>
151.9029 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9030 + <points>
151.9031 + <point x="4.0" y="24.0" cp1x="4.0" cp1y="24.0" cp2x="4.0" cp2y="24.0"/>
151.9032 + <point x="2.0" y="24.0" cp1x="2.0" cp1y="24.0" cp2x="2.0" cp2y="24.0"/>
151.9033 + <point x="2.0" y="32.0" cp1x="2.0" cp1y="31.0" cp2x="2.0" cp2y="33.0"/>
151.9034 + <point x="4.0" y="34.0" cp1x="3.0" cp1y="34.0" cp2x="5.0" cp2y="34.0"/>
151.9035 + <point x="21.0" y="34.0" cp1x="20.0" cp1y="34.0" cp2x="22.0" cp2y="34.0"/>
151.9036 + <point x="23.0" y="32.0" cp1x="23.0" cp1y="33.0" cp2x="23.0" cp2y="31.0"/>
151.9037 + <point x="23.0" y="24.0" cp1x="23.0" cp1y="24.0" cp2x="23.0" cp2y="24.0"/>
151.9038 + <point x="21.0" y="24.0" cp1x="21.0" cp1y="24.0" cp2x="21.0" cp2y="24.0"/>
151.9039 + <point x="21.0" y="32.0" cp1x="21.0" cp1y="32.0" cp2x="21.0" cp2y="32.0"/>
151.9040 + <point x="4.0" y="32.0" cp1x="4.0" cp1y="32.0" cp2x="4.0" cp2y="32.0"/>
151.9041 + </points>
151.9042 + </path>
151.9043 + <path>
151.9044 + <matte red="204" green="207" blue="213" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.9045 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9046 + <points>
151.9047 + <point x="3.0" y="24.0" cp1x="3.0" cp1y="24.0" cp2x="3.0" cp2y="24.0"/>
151.9048 + <point x="1.0" y="24.0" cp1x="1.0" cp1y="24.0" cp2x="1.0" cp2y="24.0"/>
151.9049 + <point x="1.0" y="33.0" cp1x="1.0" cp1y="32.0" cp2x="1.0" cp2y="34.0"/>
151.9050 + <point x="3.0" y="35.0" cp1x="2.0" cp1y="35.0" cp2x="4.0" cp2y="35.0"/>
151.9051 + <point x="22.0" y="35.0" cp1x="21.0" cp1y="35.0" cp2x="23.0" cp2y="35.0"/>
151.9052 + <point x="24.0" y="33.0" cp1x="24.0" cp1y="34.0" cp2x="24.0" cp2y="32.0"/>
151.9053 + <point x="24.0" y="24.0" cp1x="24.0" cp1y="24.0" cp2x="24.0" cp2y="24.0"/>
151.9054 + <point x="22.0" y="24.0" cp1x="22.0" cp1y="24.0" cp2x="22.0" cp2y="24.0"/>
151.9055 + <point x="22.0" y="33.0" cp1x="22.0" cp1y="33.0" cp2x="22.0" cp2y="33.0"/>
151.9056 + <point x="3.0" y="33.0" cp1x="3.0" cp1y="33.0" cp2x="3.0" cp2y="33.0"/>
151.9057 + </points>
151.9058 + </path>
151.9059 + <path>
151.9060 + <gradient cycleMethod="NO_CYCLE">
151.9061 + <stop position="0.0" midpoint="0.5">
151.9062 + <matte red="240" green="241" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6274498" brightnessOffset="0.39999998" alphaOffset="0"/>
151.9063 + </stop>
151.9064 + <stop position="1.0" midpoint="0.5">
151.9065 + <matte red="204" green="207" blue="213" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5934608" brightnessOffset="0.2862745" alphaOffset="0"/>
151.9066 + </stop>
151.9067 + </gradient>
151.9068 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.9069 + <points>
151.9070 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="4.0" cp2x="1.0" cp2y="2.0"/>
151.9071 + <point x="3.0" y="1.0" cp1x="2.0" cp1y="1.0" cp2x="4.0" cp2y="1.0"/>
151.9072 + <point x="22.0" y="1.0" cp1x="21.0" cp1y="1.0" cp2x="23.0" cp2y="1.0"/>
151.9073 + <point x="24.0" y="3.0" cp1x="24.0" cp1y="2.0" cp2x="24.0" cp2y="4.0"/>
151.9074 + <point x="24.0" y="24.0" cp1x="24.0" cp1y="24.0" cp2x="24.0" cp2y="24.0"/>
151.9075 + <point x="1.0" y="24.0" cp1x="1.0" cp1y="24.0" cp2x="1.0" cp2y="24.0"/>
151.9076 + </points>
151.9077 + </path>
151.9078 + <path>
151.9079 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.9080 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9081 + <points>
151.9082 + <point x="1.0" y="2.0" cp1x="1.0" cp1y="1.0" cp2x="1.0" cp2y="3.0"/>
151.9083 + </points>
151.9084 + </path>
151.9085 + <rectangle x1="0.0" x2="25.0" y1="0.0" y2="36.0" rounding="4.833333333333332">
151.9086 + <matte red="43" green="46" blue="51" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.02551502" saturationOffset="-0.47885156" brightnessOffset="-0.34901965" alphaOffset="0"/>
151.9087 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9088 + </rectangle>
151.9089 + </shapes>
151.9090 + <effects/>
151.9091 + </layer>
151.9092 + <templateLayer fileName="113e0e9b602.png">
151.9093 + <layer name="Template" type="template">
151.9094 + <opacity>1.0</opacity>
151.9095 + <fillOpacity>1.0</fillOpacity>
151.9096 + <blendingMode>NORMAL</blendingMode>
151.9097 + <locked>false</locked>
151.9098 + <visible>true</visible>
151.9099 + <shapes/>
151.9100 + <effects/>
151.9101 + </layer>
151.9102 + </templateLayer>
151.9103 + </canvas>
151.9104 + </state>
151.9105 + </backgroundStates>
151.9106 + <foregroundStates/>
151.9107 + <borderStates/>
151.9108 + <regions>
151.9109 + <region name="InternalFrameTitlePane" subregion="false">
151.9110 + <contentMargins top="3" bottom="3" left="0" right="0"/>
151.9111 + <style>
151.9112 + <textForeground/>
151.9113 + <textBackground/>
151.9114 + <background/>
151.9115 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.9116 + <cacheMode>NO_CACHING</cacheMode>
151.9117 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.9118 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.9119 + <uiproperties>
151.9120 + <uiProperty name="titleAlignment" type="STRING" value="CENTER"/>
151.9121 + </uiproperties>
151.9122 + </style>
151.9123 + <backgroundStates>
151.9124 + <state stateKeys="Enabled">
151.9125 + <style>
151.9126 + <textForeground>
151.9127 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.9128 + </textForeground>
151.9129 + <textBackground/>
151.9130 + <background/>
151.9131 + <inherit-textForeground>false</inherit-textForeground>
151.9132 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.9133 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.9134 + <uiproperties/>
151.9135 + </style>
151.9136 + <canvas>
151.9137 + <size width="100" height="30"/>
151.9138 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.9139 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.9140 + <layer name="Layer 1">
151.9141 + <opacity>1.0</opacity>
151.9142 + <fillOpacity>1.0</fillOpacity>
151.9143 + <blendingMode>NORMAL</blendingMode>
151.9144 + <locked>false</locked>
151.9145 + <visible>true</visible>
151.9146 + <shapes/>
151.9147 + <effects/>
151.9148 + </layer>
151.9149 + </canvas>
151.9150 + </state>
151.9151 + </backgroundStates>
151.9152 + <foregroundStates/>
151.9153 + <borderStates/>
151.9154 + <regions>
151.9155 + <uiComponent opaque="false" componentName="InternalFrameTitlePane.menuButton" type="javax.swing.JButton" name="Button" ui="ButtonUI" subregion="true">
151.9156 + <stateTypes>
151.9157 + <stateType key="Enabled"/>
151.9158 + <stateType key="MouseOver"/>
151.9159 + <stateType key="Pressed"/>
151.9160 + <stateType key="Disabled"/>
151.9161 + <stateType key="Focused"/>
151.9162 + <stateType key="Selected"/>
151.9163 + <stateType key="WindowNotFocused">
151.9164 + <codeSnippet><![CDATA[
151.9165 + Component parent = c;
151.9166 + while (parent.getParent() != null) {
151.9167 + if (parent instanceof JInternalFrame) {
151.9168 + break;
151.9169 + }
151.9170 + parent = parent.getParent();
151.9171 + }
151.9172 + if (parent instanceof JInternalFrame) {
151.9173 + return !(((JInternalFrame)parent).isSelected());
151.9174 + }
151.9175 + return false;]]></codeSnippet>
151.9176 + </stateType>
151.9177 + </stateTypes>
151.9178 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.9179 + <style>
151.9180 + <textForeground/>
151.9181 + <textBackground/>
151.9182 + <background/>
151.9183 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.9184 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.9185 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.9186 + <uiproperties>
151.9187 + <uiProperty name="test" type="STRING" value="am InternalFrameTitlePane.menuButton"/>
151.9188 + </uiproperties>
151.9189 + </style>
151.9190 + <backgroundStates/>
151.9191 + <foregroundStates/>
151.9192 + <borderStates/>
151.9193 + <regions>
151.9194 + <uiIconRegion name="Icon" subregion="true" key="icon">
151.9195 + <contentMargins top="9" bottom="9" left="10" right="9"/>
151.9196 + <style>
151.9197 + <textForeground/>
151.9198 + <textBackground/>
151.9199 + <background/>
151.9200 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.9201 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.9202 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.9203 + <uiproperties/>
151.9204 + </style>
151.9205 + <backgroundStates>
151.9206 + <state stateKeys="Enabled">
151.9207 + <style>
151.9208 + <textForeground/>
151.9209 + <textBackground/>
151.9210 + <background/>
151.9211 + <uiproperties/>
151.9212 + </style>
151.9213 + <canvas>
151.9214 + <size width="19" height="18"/>
151.9215 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.9216 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.9217 + <layer name="Layer 1">
151.9218 + <opacity>1.0</opacity>
151.9219 + <fillOpacity>1.0</fillOpacity>
151.9220 + <blendingMode>NORMAL</blendingMode>
151.9221 + <locked>false</locked>
151.9222 + <visible>true</visible>
151.9223 + <shapes>
151.9224 + <path>
151.9225 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.9226 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9227 + <points>
151.9228 + <point x="6.0" y="6.0" cp1x="6.0" cp1y="6.0" cp2x="6.0" cp2y="6.0"/>
151.9229 + <point x="13.0" y="6.0" cp1x="13.0" cp1y="6.0" cp2x="13.0" cp2y="6.0"/>
151.9230 + <point x="9.500000000000004" y="10.95" cp1x="9.500000000000004" cp1y="10.95" cp2x="9.500000000000004" cp2y="10.95"/>
151.9231 + </points>
151.9232 + </path>
151.9233 + <path>
151.9234 + <gradient cycleMethod="NO_CYCLE">
151.9235 + <stop position="0.0" midpoint="0.5">
151.9236 + <matte red="54" green="66" blue="88" alpha="123" uiDefaultParentName="nimbusBase" hueOffset="0.029191494" saturationOffset="-0.24935067" brightnessOffset="-0.20392159" alphaOffset="-132"/>
151.9237 + </stop>
151.9238 + <stop position="0.48579547" midpoint="0.5">
151.9239 + <matte red="54" green="66" blue="88" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029191494" saturationOffset="-0.24935067" brightnessOffset="-0.20392159" alphaOffset="0"/>
151.9240 + </stop>
151.9241 + <stop position="1.0" midpoint="0.5">
151.9242 + <matte red="54" green="66" blue="88" alpha="132" uiDefaultParentName="nimbusBase" hueOffset="0.029191494" saturationOffset="-0.24935067" brightnessOffset="-0.20392159" alphaOffset="-123"/>
151.9243 + </stop>
151.9244 + </gradient>
151.9245 + <paintPoints x1="0.5071428571428569" y1="0.09499999999999999" x2="0.49285714285714344" y2="0.9099999999999999"/>
151.9246 + <points>
151.9247 + <point x="6.0" y="8.0" cp1x="6.0" cp1y="8.0" cp2x="6.0" cp2y="8.0"/>
151.9248 + <point x="13.0" y="8.0" cp1x="13.0" cp1y="8.0" cp2x="13.0" cp2y="8.0"/>
151.9249 + <point x="9.524999999999995" y="12.975" cp1x="9.524999999999995" cp1y="12.975" cp2x="9.524999999999995" cp2y="12.975"/>
151.9250 + </points>
151.9251 + </path>
151.9252 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.9253 + <gradient cycleMethod="NO_CYCLE">
151.9254 + <stop position="0.0" midpoint="0.5">
151.9255 + <matte red="157" green="163" blue="174" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029191494" saturationOffset="-0.53801316" brightnessOffset="0.13333333" alphaOffset="0"/>
151.9256 + </stop>
151.9257 + <stop position="0.53977275" midpoint="0.5">
151.9258 + <matte red="87" green="97" blue="116" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.030543745" saturationOffset="-0.3857143" brightnessOffset="-0.09411767" alphaOffset="0"/>
151.9259 + </stop>
151.9260 + <stop position="0.6505682" midpoint="0.5">
151.9261 + <matte red="86" green="96" blue="115" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.030543745" saturationOffset="-0.3835404" brightnessOffset="-0.09803924" alphaOffset="0"/>
151.9262 + </stop>
151.9263 + <stop position="1.0" midpoint="0.5">
151.9264 + <matte red="113" green="123" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.030543745" saturationOffset="-0.43148893" brightnessOffset="0.007843137" alphaOffset="0"/>
151.9265 + </stop>
151.9266 + </gradient>
151.9267 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.9268 + </rectangle>
151.9269 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.9270 + <gradient cycleMethod="NO_CYCLE">
151.9271 + <stop position="0.0" midpoint="0.5">
151.9272 + <matte red="0" green="0" blue="12" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.5019608" alphaOffset="0"/>
151.9273 + </stop>
151.9274 + <stop position="1.0" midpoint="0.5">
151.9275 + <matte red="86" green="96" blue="115" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.030543745" saturationOffset="-0.3835404" brightnessOffset="-0.09803924" alphaOffset="0"/>
151.9276 + </stop>
151.9277 + </gradient>
151.9278 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.9279 + </rectangle>
151.9280 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.9281 + <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
151.9282 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9283 + </rectangle>
151.9284 + </shapes>
151.9285 + <effects/>
151.9286 + </layer>
151.9287 + <templateLayer fileName="113d0d626ac.png">
151.9288 + <layer name="Template" type="template">
151.9289 + <opacity>1.0</opacity>
151.9290 + <fillOpacity>1.0</fillOpacity>
151.9291 + <blendingMode>NORMAL</blendingMode>
151.9292 + <locked>false</locked>
151.9293 + <visible>false</visible>
151.9294 + <shapes/>
151.9295 + <effects/>
151.9296 + </layer>
151.9297 + </templateLayer>
151.9298 + </canvas>
151.9299 + </state>
151.9300 + <state stateKeys="Disabled">
151.9301 + <style>
151.9302 + <textForeground/>
151.9303 + <textBackground/>
151.9304 + <background/>
151.9305 + <uiproperties/>
151.9306 + </style>
151.9307 + <canvas>
151.9308 + <size width="19" height="18"/>
151.9309 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.9310 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.9311 + <layer name="Layer 1">
151.9312 + <opacity>1.0</opacity>
151.9313 + <fillOpacity>1.0</fillOpacity>
151.9314 + <blendingMode>NORMAL</blendingMode>
151.9315 + <locked>false</locked>
151.9316 + <visible>true</visible>
151.9317 + <shapes>
151.9318 + <path>
151.9319 + <matte red="189" green="193" blue="201" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5760128" brightnessOffset="0.23921567" alphaOffset="0"/>
151.9320 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9321 + <points>
151.9322 + <point x="6.0" y="6.0" cp1x="6.0" cp1y="6.0" cp2x="6.0" cp2y="6.0"/>
151.9323 + <point x="13.0" y="6.0" cp1x="13.0" cp1y="6.0" cp2x="13.0" cp2y="6.0"/>
151.9324 + <point x="9.500000000000004" y="10.95" cp1x="9.500000000000004" cp1y="10.95" cp2x="9.500000000000004" cp2y="10.95"/>
151.9325 + </points>
151.9326 + </path>
151.9327 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.9328 + <gradient cycleMethod="NO_CYCLE">
151.9329 + <stop position="0.0" midpoint="0.5">
151.9330 + <matte red="185" green="188" blue="193" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.02551502" saturationOffset="-0.5942635" brightnessOffset="0.20784312" alphaOffset="0"/>
151.9331 + </stop>
151.9332 + <stop position="0.62215906" midpoint="0.5">
151.9333 + <matte red="158" green="163" blue="173" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5490091" brightnessOffset="0.12941176" alphaOffset="0"/>
151.9334 + </stop>
151.9335 + <stop position="1.0" midpoint="0.5">
151.9336 + <matte red="154" green="159" blue="169" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5469569" brightnessOffset="0.11372548" alphaOffset="0"/>
151.9337 + </stop>
151.9338 + </gradient>
151.9339 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.9340 + </rectangle>
151.9341 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.9342 + <matte red="83" green="86" blue="93" alpha="47" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-208"/>
151.9343 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9344 + </rectangle>
151.9345 + </shapes>
151.9346 + <effects/>
151.9347 + </layer>
151.9348 + <templateLayer fileName="113d0e8c4f9.png">
151.9349 + <layer name="Template" type="template">
151.9350 + <opacity>1.0</opacity>
151.9351 + <fillOpacity>1.0</fillOpacity>
151.9352 + <blendingMode>NORMAL</blendingMode>
151.9353 + <locked>false</locked>
151.9354 + <visible>false</visible>
151.9355 + <shapes/>
151.9356 + <effects/>
151.9357 + </layer>
151.9358 + </templateLayer>
151.9359 + </canvas>
151.9360 + </state>
151.9361 + <state stateKeys="MouseOver">
151.9362 + <style>
151.9363 + <textForeground/>
151.9364 + <textBackground/>
151.9365 + <background/>
151.9366 + <uiproperties/>
151.9367 + </style>
151.9368 + <canvas>
151.9369 + <size width="19" height="18"/>
151.9370 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.9371 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.9372 + <layer name="Layer 1">
151.9373 + <opacity>1.0</opacity>
151.9374 + <fillOpacity>1.0</fillOpacity>
151.9375 + <blendingMode>NORMAL</blendingMode>
151.9376 + <locked>false</locked>
151.9377 + <visible>true</visible>
151.9378 + <shapes>
151.9379 + <path>
151.9380 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.9381 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9382 + <points>
151.9383 + <point x="6.0" y="6.0" cp1x="6.0" cp1y="6.0" cp2x="6.0" cp2y="6.0"/>
151.9384 + <point x="13.0" y="6.0" cp1x="13.0" cp1y="6.0" cp2x="13.0" cp2y="6.0"/>
151.9385 + <point x="9.500000000000004" y="10.95" cp1x="9.500000000000004" cp1y="10.95" cp2x="9.500000000000004" cp2y="10.95"/>
151.9386 + </points>
151.9387 + </path>
151.9388 + <path>
151.9389 + <gradient cycleMethod="NO_CYCLE">
151.9390 + <stop position="0.0" midpoint="0.5">
151.9391 + <matte red="77" green="88" blue="111" alpha="123" uiDefaultParentName="nimbusBase" hueOffset="0.03409344" saturationOffset="-0.329408" brightnessOffset="-0.11372551" alphaOffset="-132"/>
151.9392 + </stop>
151.9393 + <stop position="0.48579547" midpoint="0.5">
151.9394 + <matte red="77" green="88" blue="111" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.03409344" saturationOffset="-0.329408" brightnessOffset="-0.11372551" alphaOffset="0"/>
151.9395 + </stop>
151.9396 + <stop position="1.0" midpoint="0.5">
151.9397 + <matte red="77" green="88" blue="111" alpha="132" uiDefaultParentName="nimbusBase" hueOffset="0.03409344" saturationOffset="-0.329408" brightnessOffset="-0.11372551" alphaOffset="-123"/>
151.9398 + </stop>
151.9399 + </gradient>
151.9400 + <paintPoints x1="0.5071428571428569" y1="0.09499999999999999" x2="0.49285714285714344" y2="0.9099999999999999"/>
151.9401 + <points>
151.9402 + <point x="6.0" y="8.0" cp1x="6.0" cp1y="8.0" cp2x="6.0" cp2y="8.0"/>
151.9403 + <point x="13.0" y="8.0" cp1x="13.0" cp1y="8.0" cp2x="13.0" cp2y="8.0"/>
151.9404 + <point x="9.524999999999995" y="12.975" cp1x="9.524999999999995" cp1y="12.975" cp2x="9.524999999999995" cp2y="12.975"/>
151.9405 + </points>
151.9406 + </path>
151.9407 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.9408 + <gradient cycleMethod="NO_CYCLE">
151.9409 + <stop position="0.0" midpoint="0.5">
151.9410 + <matte red="168" green="174" blue="185" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029191494" saturationOffset="-0.5438224" brightnessOffset="0.17647058" alphaOffset="0"/>
151.9411 + </stop>
151.9412 + <stop position="0.53977275" midpoint="0.5">
151.9413 + <matte red="105" green="115" blue="134" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.030543745" saturationOffset="-0.41929638" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.9414 + </stop>
151.9415 + <stop position="0.6505682" midpoint="0.5">
151.9416 + <matte red="105" green="115" blue="134" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.030543745" saturationOffset="-0.41929638" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.9417 + </stop>
151.9418 + <stop position="1.0" midpoint="0.5">
151.9419 + <matte red="132" green="142" blue="161" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.030543745" saturationOffset="-0.45559007" brightnessOffset="0.082352936" alphaOffset="0"/>
151.9420 + </stop>
151.9421 + </gradient>
151.9422 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.9423 + </rectangle>
151.9424 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.9425 + <gradient cycleMethod="NO_CYCLE">
151.9426 + <stop position="0.0" midpoint="0.5">
151.9427 + <matte red="0" green="0" blue="15" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4901961" alphaOffset="0"/>
151.9428 + </stop>
151.9429 + <stop position="1.0" midpoint="0.5">
151.9430 + <matte red="44" green="56" blue="80" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.1857143" brightnessOffset="-0.23529413" alphaOffset="0"/>
151.9431 + </stop>
151.9432 + </gradient>
151.9433 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.9434 + </rectangle>
151.9435 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.9436 + <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
151.9437 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9438 + </rectangle>
151.9439 + </shapes>
151.9440 + <effects/>
151.9441 + </layer>
151.9442 + <templateLayer fileName="113d0eacd3f.png">
151.9443 + <layer name="Template" type="template">
151.9444 + <opacity>1.0</opacity>
151.9445 + <fillOpacity>1.0</fillOpacity>
151.9446 + <blendingMode>NORMAL</blendingMode>
151.9447 + <locked>false</locked>
151.9448 + <visible>false</visible>
151.9449 + <shapes/>
151.9450 + <effects/>
151.9451 + </layer>
151.9452 + </templateLayer>
151.9453 + </canvas>
151.9454 + </state>
151.9455 + <state stateKeys="Pressed">
151.9456 + <style>
151.9457 + <textForeground/>
151.9458 + <textBackground/>
151.9459 + <background/>
151.9460 + <uiproperties/>
151.9461 + </style>
151.9462 + <canvas>
151.9463 + <size width="19" height="18"/>
151.9464 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.9465 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.9466 + <layer name="Layer 1">
151.9467 + <opacity>1.0</opacity>
151.9468 + <fillOpacity>1.0</fillOpacity>
151.9469 + <blendingMode>NORMAL</blendingMode>
151.9470 + <locked>false</locked>
151.9471 + <visible>true</visible>
151.9472 + <shapes>
151.9473 + <path>
151.9474 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.9475 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9476 + <points>
151.9477 + <point x="6.0" y="6.0" cp1x="6.0" cp1y="6.0" cp2x="6.0" cp2y="6.0"/>
151.9478 + <point x="13.0" y="6.0" cp1x="13.0" cp1y="6.0" cp2x="13.0" cp2y="6.0"/>
151.9479 + <point x="9.500000000000004" y="10.95" cp1x="9.500000000000004" cp1y="10.95" cp2x="9.500000000000004" cp2y="10.95"/>
151.9480 + </points>
151.9481 + </path>
151.9482 + <path>
151.9483 + <gradient cycleMethod="NO_CYCLE">
151.9484 + <stop position="0.0" midpoint="0.5">
151.9485 + <matte red="16" green="30" blue="56" alpha="123" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="0.07857144" brightnessOffset="-0.3294118" alphaOffset="-132"/>
151.9486 + </stop>
151.9487 + <stop position="0.48579547" midpoint="0.5">
151.9488 + <matte red="16" green="30" blue="56" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="0.07857144" brightnessOffset="-0.3294118" alphaOffset="0"/>
151.9489 + </stop>
151.9490 + <stop position="1.0" midpoint="0.5">
151.9491 + <matte red="16" green="30" blue="56" alpha="132" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="0.07857144" brightnessOffset="-0.3294118" alphaOffset="-123"/>
151.9492 + </stop>
151.9493 + </gradient>
151.9494 + <paintPoints x1="0.5071428571428569" y1="0.09499999999999999" x2="0.49285714285714344" y2="0.9099999999999999"/>
151.9495 + <points>
151.9496 + <point x="6.0" y="8.0" cp1x="6.0" cp1y="8.0" cp2x="6.0" cp2y="8.0"/>
151.9497 + <point x="13.0" y="8.0" cp1x="13.0" cp1y="8.0" cp2x="13.0" cp2y="8.0"/>
151.9498 + <point x="9.524999999999995" y="12.975" cp1x="9.524999999999995" cp1y="12.975" cp2x="9.524999999999995" cp2y="12.975"/>
151.9499 + </points>
151.9500 + </path>
151.9501 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.9502 + <gradient cycleMethod="NO_CYCLE">
151.9503 + <stop position="0.0" midpoint="0.5">
151.9504 + <matte red="112" green="120" blue="136" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.4592437" brightnessOffset="-0.015686274" alphaOffset="0"/>
151.9505 + </stop>
151.9506 + <stop position="0.53977275" midpoint="0.5">
151.9507 + <matte red="56" green="68" blue="90" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029191494" saturationOffset="-0.2579365" brightnessOffset="-0.19607845" alphaOffset="0"/>
151.9508 + </stop>
151.9509 + <stop position="0.6505682" midpoint="0.5">
151.9510 + <matte red="56" green="68" blue="90" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029191494" saturationOffset="-0.2579365" brightnessOffset="-0.19607845" alphaOffset="0"/>
151.9511 + </stop>
151.9512 + <stop position="1.0" midpoint="0.5">
151.9513 + <matte red="72" green="83" blue="106" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.03409344" saturationOffset="-0.3149596" brightnessOffset="-0.13333336" alphaOffset="0"/>
151.9514 + </stop>
151.9515 + </gradient>
151.9516 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.9517 + </rectangle>
151.9518 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.9519 + <gradient cycleMethod="NO_CYCLE">
151.9520 + <stop position="0.0" midpoint="0.5">
151.9521 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.9522 + </stop>
151.9523 + <stop position="1.0" midpoint="0.5">
151.9524 + <matte red="13" green="27" blue="54" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.031104386" saturationOffset="0.12354499" brightnessOffset="-0.33725494" alphaOffset="0"/>
151.9525 + </stop>
151.9526 + </gradient>
151.9527 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.9528 + </rectangle>
151.9529 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.9530 + <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
151.9531 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9532 + </rectangle>
151.9533 + </shapes>
151.9534 + <effects/>
151.9535 + </layer>
151.9536 + <templateLayer fileName="113d0ec1755.png">
151.9537 + <layer name="Template" type="template">
151.9538 + <opacity>1.0</opacity>
151.9539 + <fillOpacity>1.0</fillOpacity>
151.9540 + <blendingMode>NORMAL</blendingMode>
151.9541 + <locked>false</locked>
151.9542 + <visible>false</visible>
151.9543 + <shapes/>
151.9544 + <effects/>
151.9545 + </layer>
151.9546 + </templateLayer>
151.9547 + </canvas>
151.9548 + </state>
151.9549 + <state stateKeys="Enabled+WindowNotFocused">
151.9550 + <style>
151.9551 + <textForeground/>
151.9552 + <textBackground/>
151.9553 + <background/>
151.9554 + <uiproperties/>
151.9555 + </style>
151.9556 + <canvas>
151.9557 + <size width="19" height="18"/>
151.9558 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.9559 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.9560 + <layer name="Layer 1">
151.9561 + <opacity>1.0</opacity>
151.9562 + <fillOpacity>1.0</fillOpacity>
151.9563 + <blendingMode>NORMAL</blendingMode>
151.9564 + <locked>false</locked>
151.9565 + <visible>true</visible>
151.9566 + <shapes>
151.9567 + <path>
151.9568 + <matte red="100" green="104" blue="110" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.54480517" brightnessOffset="-0.11764708" alphaOffset="0"/>
151.9569 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9570 + <points>
151.9571 + <point x="6.0" y="6.0" cp1x="6.0" cp1y="6.0" cp2x="6.0" cp2y="6.0"/>
151.9572 + <point x="13.0" y="6.0" cp1x="13.0" cp1y="6.0" cp2x="13.0" cp2y="6.0"/>
151.9573 + <point x="9.500000000000004" y="10.95" cp1x="9.500000000000004" cp1y="10.95" cp2x="9.500000000000004" cp2y="10.95"/>
151.9574 + </points>
151.9575 + </path>
151.9576 + <path>
151.9577 + <gradient cycleMethod="NO_CYCLE">
151.9578 + <stop position="0.0" midpoint="0.5">
151.9579 + <matte red="181" green="185" blue="192" alpha="123" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.5784226" brightnessOffset="0.20392156" alphaOffset="-132"/>
151.9580 + </stop>
151.9581 + <stop position="0.48579547" midpoint="0.5">
151.9582 + <matte red="148" green="151" blue="159" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.042560518" saturationOffset="-0.5665319" brightnessOffset="0.0745098" alphaOffset="0"/>
151.9583 + </stop>
151.9584 + <stop position="1.0" midpoint="0.5">
151.9585 + <matte red="169" green="173" blue="182" alpha="132" uiDefaultParentName="nimbusBase" hueOffset="0.036732912" saturationOffset="-0.5642857" brightnessOffset="0.16470587" alphaOffset="-123"/>
151.9586 + </stop>
151.9587 + </gradient>
151.9588 + <paintPoints x1="0.5071428571428569" y1="0.09499999999999999" x2="0.49285714285714344" y2="0.9099999999999999"/>
151.9589 + <points>
151.9590 + <point x="6.0" y="7.0" cp1x="6.0" cp1y="7.0" cp2x="6.0" cp2y="7.0"/>
151.9591 + <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
151.9592 + <point x="9.409090909090903" y="11.795454545454545" cp1x="9.409090909090903" cp1y="11.795454545454545" cp2x="9.409090909090903" cp2y="11.795454545454545"/>
151.9593 + </points>
151.9594 + </path>
151.9595 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999995">
151.9596 + <gradient cycleMethod="NO_CYCLE">
151.9597 + <stop position="0.0" midpoint="0.5">
151.9598 + <matte red="219" green="221" blue="224" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.6133929" brightnessOffset="0.32941175" alphaOffset="0"/>
151.9599 + </stop>
151.9600 + <stop position="0.53977275" midpoint="0.5">
151.9601 + <matte red="188" green="191" blue="199" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.042560518" saturationOffset="-0.5804379" brightnessOffset="0.23137254" alphaOffset="0"/>
151.9602 + </stop>
151.9603 + <stop position="0.6505682" midpoint="0.5">
151.9604 + <matte red="183" green="187" blue="195" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.57417583" brightnessOffset="0.21568626" alphaOffset="0"/>
151.9605 + </stop>
151.9606 + <stop position="1.0" midpoint="0.5">
151.9607 + <matte red="189" green="193" blue="201" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5760128" brightnessOffset="0.23921567" alphaOffset="0"/>
151.9608 + </stop>
151.9609 + </gradient>
151.9610 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.9611 + </rectangle>
151.9612 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.9613 + <gradient cycleMethod="NO_CYCLE">
151.9614 + <stop position="0.0" midpoint="0.5">
151.9615 + <matte red="136" green="141" blue="151" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.53637654" brightnessOffset="0.043137252" alphaOffset="0"/>
151.9616 + </stop>
151.9617 + <stop position="1.0" midpoint="0.5">
151.9618 + <matte red="95" green="100" blue="110" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.49935067" brightnessOffset="-0.11764708" alphaOffset="0"/>
151.9619 + </stop>
151.9620 + <stop position="1.0" midpoint="0.5">
151.9621 + <matte red="95" green="100" blue="110" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.49935067" brightnessOffset="-0.11764708" alphaOffset="0"/>
151.9622 + </stop>
151.9623 + </gradient>
151.9624 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.9625 + </rectangle>
151.9626 + </shapes>
151.9627 + <effects/>
151.9628 + </layer>
151.9629 + <templateLayer fileName="113fc39fc2b.png">
151.9630 + <layer name="Template" type="template">
151.9631 + <opacity>1.0</opacity>
151.9632 + <fillOpacity>1.0</fillOpacity>
151.9633 + <blendingMode>NORMAL</blendingMode>
151.9634 + <locked>false</locked>
151.9635 + <visible>false</visible>
151.9636 + <shapes/>
151.9637 + <effects/>
151.9638 + </layer>
151.9639 + </templateLayer>
151.9640 + </canvas>
151.9641 + </state>
151.9642 + <state stateKeys="MouseOver+WindowNotFocused">
151.9643 + <style>
151.9644 + <textForeground/>
151.9645 + <textBackground/>
151.9646 + <background/>
151.9647 + <uiproperties/>
151.9648 + </style>
151.9649 + <canvas>
151.9650 + <size width="19" height="18"/>
151.9651 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.9652 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.9653 + <layer name="Layer 1">
151.9654 + <opacity>1.0</opacity>
151.9655 + <fillOpacity>1.0</fillOpacity>
151.9656 + <blendingMode>NORMAL</blendingMode>
151.9657 + <locked>false</locked>
151.9658 + <visible>true</visible>
151.9659 + <shapes>
151.9660 + <path>
151.9661 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.9662 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9663 + <points>
151.9664 + <point x="6.0" y="6.0" cp1x="6.0" cp1y="6.0" cp2x="6.0" cp2y="6.0"/>
151.9665 + <point x="13.0" y="6.0" cp1x="13.0" cp1y="6.0" cp2x="13.0" cp2y="6.0"/>
151.9666 + <point x="9.500000000000004" y="10.95" cp1x="9.500000000000004" cp1y="10.95" cp2x="9.500000000000004" cp2y="10.95"/>
151.9667 + </points>
151.9668 + </path>
151.9669 + <path>
151.9670 + <gradient cycleMethod="NO_CYCLE">
151.9671 + <stop position="0.0" midpoint="0.5">
151.9672 + <matte red="77" green="88" blue="111" alpha="123" uiDefaultParentName="nimbusBase" hueOffset="0.03409344" saturationOffset="-0.329408" brightnessOffset="-0.11372551" alphaOffset="-132"/>
151.9673 + </stop>
151.9674 + <stop position="0.48579547" midpoint="0.5">
151.9675 + <matte red="77" green="88" blue="111" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.03409344" saturationOffset="-0.329408" brightnessOffset="-0.11372551" alphaOffset="0"/>
151.9676 + </stop>
151.9677 + <stop position="1.0" midpoint="0.5">
151.9678 + <matte red="77" green="88" blue="111" alpha="132" uiDefaultParentName="nimbusBase" hueOffset="0.03409344" saturationOffset="-0.329408" brightnessOffset="-0.11372551" alphaOffset="-123"/>
151.9679 + </stop>
151.9680 + </gradient>
151.9681 + <paintPoints x1="0.5071428571428569" y1="0.09499999999999999" x2="0.49285714285714344" y2="0.9099999999999999"/>
151.9682 + <points>
151.9683 + <point x="6.0" y="8.0" cp1x="6.0" cp1y="8.0" cp2x="6.0" cp2y="8.0"/>
151.9684 + <point x="13.0" y="8.0" cp1x="13.0" cp1y="8.0" cp2x="13.0" cp2y="8.0"/>
151.9685 + <point x="9.524999999999995" y="12.975" cp1x="9.524999999999995" cp1y="12.975" cp2x="9.524999999999995" cp2y="12.975"/>
151.9686 + </points>
151.9687 + </path>
151.9688 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.9689 + <gradient cycleMethod="NO_CYCLE">
151.9690 + <stop position="0.0" midpoint="0.5">
151.9691 + <matte red="168" green="174" blue="185" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029191494" saturationOffset="-0.5438224" brightnessOffset="0.17647058" alphaOffset="0"/>
151.9692 + </stop>
151.9693 + <stop position="0.53977275" midpoint="0.5">
151.9694 + <matte red="105" green="115" blue="134" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.030543745" saturationOffset="-0.41929638" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.9695 + </stop>
151.9696 + <stop position="0.6505682" midpoint="0.5">
151.9697 + <matte red="105" green="115" blue="134" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.030543745" saturationOffset="-0.41929638" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.9698 + </stop>
151.9699 + <stop position="1.0" midpoint="0.5">
151.9700 + <matte red="132" green="142" blue="161" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.030543745" saturationOffset="-0.45559007" brightnessOffset="0.082352936" alphaOffset="0"/>
151.9701 + </stop>
151.9702 + </gradient>
151.9703 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.9704 + </rectangle>
151.9705 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.9706 + <gradient cycleMethod="NO_CYCLE">
151.9707 + <stop position="0.0" midpoint="0.5">
151.9708 + <matte red="0" green="0" blue="15" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4901961" alphaOffset="0"/>
151.9709 + </stop>
151.9710 + <stop position="1.0" midpoint="0.5">
151.9711 + <matte red="44" green="56" blue="80" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.1857143" brightnessOffset="-0.23529413" alphaOffset="0"/>
151.9712 + </stop>
151.9713 + </gradient>
151.9714 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.9715 + </rectangle>
151.9716 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.9717 + <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
151.9718 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9719 + </rectangle>
151.9720 + </shapes>
151.9721 + <effects/>
151.9722 + </layer>
151.9723 + <templateLayer fileName="113d0eacd3f.png">
151.9724 + <layer name="Template" type="template">
151.9725 + <opacity>1.0</opacity>
151.9726 + <fillOpacity>1.0</fillOpacity>
151.9727 + <blendingMode>NORMAL</blendingMode>
151.9728 + <locked>false</locked>
151.9729 + <visible>false</visible>
151.9730 + <shapes/>
151.9731 + <effects/>
151.9732 + </layer>
151.9733 + </templateLayer>
151.9734 + </canvas>
151.9735 + </state>
151.9736 + <state stateKeys="Pressed+WindowNotFocused">
151.9737 + <style>
151.9738 + <textForeground/>
151.9739 + <textBackground/>
151.9740 + <background/>
151.9741 + <uiproperties/>
151.9742 + </style>
151.9743 + <canvas>
151.9744 + <size width="19" height="18"/>
151.9745 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.9746 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.9747 + <layer name="Layer 1">
151.9748 + <opacity>1.0</opacity>
151.9749 + <fillOpacity>1.0</fillOpacity>
151.9750 + <blendingMode>NORMAL</blendingMode>
151.9751 + <locked>false</locked>
151.9752 + <visible>true</visible>
151.9753 + <shapes>
151.9754 + <path>
151.9755 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.9756 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9757 + <points>
151.9758 + <point x="6.0" y="6.0" cp1x="6.0" cp1y="6.0" cp2x="6.0" cp2y="6.0"/>
151.9759 + <point x="13.0" y="6.0" cp1x="13.0" cp1y="6.0" cp2x="13.0" cp2y="6.0"/>
151.9760 + <point x="9.500000000000004" y="10.95" cp1x="9.500000000000004" cp1y="10.95" cp2x="9.500000000000004" cp2y="10.95"/>
151.9761 + </points>
151.9762 + </path>
151.9763 + <path>
151.9764 + <gradient cycleMethod="NO_CYCLE">
151.9765 + <stop position="0.0" midpoint="0.5">
151.9766 + <matte red="16" green="30" blue="56" alpha="123" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="0.07857144" brightnessOffset="-0.3294118" alphaOffset="-132"/>
151.9767 + </stop>
151.9768 + <stop position="0.48579547" midpoint="0.5">
151.9769 + <matte red="16" green="30" blue="56" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="0.07857144" brightnessOffset="-0.3294118" alphaOffset="0"/>
151.9770 + </stop>
151.9771 + <stop position="1.0" midpoint="0.5">
151.9772 + <matte red="16" green="30" blue="56" alpha="132" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="0.07857144" brightnessOffset="-0.3294118" alphaOffset="-123"/>
151.9773 + </stop>
151.9774 + </gradient>
151.9775 + <paintPoints x1="0.5071428571428569" y1="0.09499999999999999" x2="0.49285714285714344" y2="0.9099999999999999"/>
151.9776 + <points>
151.9777 + <point x="6.0" y="8.0" cp1x="6.0" cp1y="8.0" cp2x="6.0" cp2y="8.0"/>
151.9778 + <point x="13.0" y="8.0" cp1x="13.0" cp1y="8.0" cp2x="13.0" cp2y="8.0"/>
151.9779 + <point x="9.524999999999995" y="12.975" cp1x="9.524999999999995" cp1y="12.975" cp2x="9.524999999999995" cp2y="12.975"/>
151.9780 + </points>
151.9781 + </path>
151.9782 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.9783 + <gradient cycleMethod="NO_CYCLE">
151.9784 + <stop position="0.0" midpoint="0.5">
151.9785 + <matte red="112" green="120" blue="136" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.4592437" brightnessOffset="-0.015686274" alphaOffset="0"/>
151.9786 + </stop>
151.9787 + <stop position="0.53977275" midpoint="0.5">
151.9788 + <matte red="56" green="68" blue="90" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029191494" saturationOffset="-0.2579365" brightnessOffset="-0.19607845" alphaOffset="0"/>
151.9789 + </stop>
151.9790 + <stop position="0.6505682" midpoint="0.5">
151.9791 + <matte red="56" green="68" blue="90" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029191494" saturationOffset="-0.2579365" brightnessOffset="-0.19607845" alphaOffset="0"/>
151.9792 + </stop>
151.9793 + <stop position="1.0" midpoint="0.5">
151.9794 + <matte red="72" green="83" blue="106" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.03409344" saturationOffset="-0.3149596" brightnessOffset="-0.13333336" alphaOffset="0"/>
151.9795 + </stop>
151.9796 + </gradient>
151.9797 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.9798 + </rectangle>
151.9799 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.9800 + <gradient cycleMethod="NO_CYCLE">
151.9801 + <stop position="0.0" midpoint="0.5">
151.9802 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.9803 + </stop>
151.9804 + <stop position="1.0" midpoint="0.5">
151.9805 + <matte red="13" green="27" blue="54" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.031104386" saturationOffset="0.12354499" brightnessOffset="-0.33725494" alphaOffset="0"/>
151.9806 + </stop>
151.9807 + </gradient>
151.9808 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.9809 + </rectangle>
151.9810 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.9811 + <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
151.9812 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9813 + </rectangle>
151.9814 + </shapes>
151.9815 + <effects/>
151.9816 + </layer>
151.9817 + <templateLayer fileName="113d0ec1755.png">
151.9818 + <layer name="Template" type="template">
151.9819 + <opacity>1.0</opacity>
151.9820 + <fillOpacity>1.0</fillOpacity>
151.9821 + <blendingMode>NORMAL</blendingMode>
151.9822 + <locked>false</locked>
151.9823 + <visible>false</visible>
151.9824 + <shapes/>
151.9825 + <effects/>
151.9826 + </layer>
151.9827 + </templateLayer>
151.9828 + </canvas>
151.9829 + </state>
151.9830 + </backgroundStates>
151.9831 + <foregroundStates/>
151.9832 + <borderStates/>
151.9833 + <regions/>
151.9834 + </uiIconRegion>
151.9835 + </regions>
151.9836 + </uiComponent>
151.9837 + <uiComponent opaque="false" componentName="InternalFrameTitlePane.iconifyButton" type="javax.swing.JButton" name="Button" ui="ButtonUI" subregion="true">
151.9838 + <stateTypes>
151.9839 + <stateType key="Enabled"/>
151.9840 + <stateType key="MouseOver"/>
151.9841 + <stateType key="Pressed"/>
151.9842 + <stateType key="Disabled"/>
151.9843 + <stateType key="Focused"/>
151.9844 + <stateType key="Selected"/>
151.9845 + <stateType key="WindowNotFocused">
151.9846 + <codeSnippet><![CDATA[
151.9847 + Component parent = c;
151.9848 + while (parent.getParent() != null) {
151.9849 + if (parent instanceof JInternalFrame) {
151.9850 + break;
151.9851 + }
151.9852 + parent = parent.getParent();
151.9853 + }
151.9854 + if (parent instanceof JInternalFrame) {
151.9855 + return !(((JInternalFrame)parent).isSelected());
151.9856 + }
151.9857 + return false;]]></codeSnippet>
151.9858 + </stateType>
151.9859 + </stateTypes>
151.9860 + <contentMargins top="9" bottom="9" left="9" right="9"/>
151.9861 + <style>
151.9862 + <textForeground/>
151.9863 + <textBackground/>
151.9864 + <background/>
151.9865 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.9866 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.9867 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.9868 + <uiproperties/>
151.9869 + </style>
151.9870 + <backgroundStates>
151.9871 + <state stateKeys="Enabled">
151.9872 + <style>
151.9873 + <textForeground/>
151.9874 + <textBackground/>
151.9875 + <background/>
151.9876 + <uiproperties/>
151.9877 + </style>
151.9878 + <canvas>
151.9879 + <size width="19" height="18"/>
151.9880 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.9881 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.9882 + <layer name="Layer 1">
151.9883 + <opacity>1.0</opacity>
151.9884 + <fillOpacity>1.0</fillOpacity>
151.9885 + <blendingMode>NORMAL</blendingMode>
151.9886 + <locked>false</locked>
151.9887 + <visible>true</visible>
151.9888 + <shapes>
151.9889 + <rectangle x1="5.454545454545454" x2="13.613636363636363" y1="11.022727272727273" y2="13.000000000000002" rounding="0.0">
151.9890 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.9891 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9892 + </rectangle>
151.9893 + <rectangle x1="4.750000000000001" x2="14.250000000000004" y1="11.931818181818182" y2="13.477272727272728" rounding="0.0">
151.9894 + <matte red="88" green="0" blue="0" alpha="149" uiDefaultParentName="nimbusOrange" hueOffset="-0.08377897" saturationOffset="0.02094239" brightnessOffset="-0.40392157" alphaOffset="-106"/>
151.9895 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9896 + </rectangle>
151.9897 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.9898 + <gradient cycleMethod="NO_CYCLE">
151.9899 + <stop position="0.0" midpoint="0.5">
151.9900 + <matte red="218" green="164" blue="110" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-4.4563413E-4" saturationOffset="-0.48364475" brightnessOffset="0.10588235" alphaOffset="0"/>
151.9901 + </stop>
151.9902 + <stop position="0.53977275" midpoint="0.5">
151.9903 + <matte red="191" green="98" blue="4" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.9904 + </stop>
151.9905 + <stop position="0.6505682" midpoint="0.5">
151.9906 + <matte red="192" green="99" blue="5" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="-0.0050992966" brightnessOffset="0.0039215684" alphaOffset="0"/>
151.9907 + </stop>
151.9908 + <stop position="1.0" midpoint="0.5">
151.9909 + <matte red="218" green="125" blue="31" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="-0.12125945" brightnessOffset="0.10588235" alphaOffset="0"/>
151.9910 + </stop>
151.9911 + </gradient>
151.9912 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.9913 + </rectangle>
151.9914 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.9915 + <gradient cycleMethod="NO_CYCLE">
151.9916 + <stop position="0.0" midpoint="0.5">
151.9917 + <matte red="88" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.08377897" saturationOffset="0.02094239" brightnessOffset="-0.40392157" alphaOffset="0"/>
151.9918 + </stop>
151.9919 + <stop position="1.0" midpoint="0.5">
151.9920 + <matte red="191" green="98" blue="4" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.9921 + </stop>
151.9922 + </gradient>
151.9923 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.9924 + </rectangle>
151.9925 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.9926 + <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
151.9927 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9928 + </rectangle>
151.9929 + </shapes>
151.9930 + <effects/>
151.9931 + </layer>
151.9932 + <templateLayer fileName="113d100d389.png">
151.9933 + <layer name="Template" type="template">
151.9934 + <opacity>1.0</opacity>
151.9935 + <fillOpacity>1.0</fillOpacity>
151.9936 + <blendingMode>NORMAL</blendingMode>
151.9937 + <locked>false</locked>
151.9938 + <visible>true</visible>
151.9939 + <shapes/>
151.9940 + <effects/>
151.9941 + </layer>
151.9942 + </templateLayer>
151.9943 + </canvas>
151.9944 + </state>
151.9945 + <state stateKeys="Disabled">
151.9946 + <style>
151.9947 + <textForeground/>
151.9948 + <textBackground/>
151.9949 + <background/>
151.9950 + <uiproperties/>
151.9951 + </style>
151.9952 + <canvas>
151.9953 + <size width="19" height="18"/>
151.9954 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.9955 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.9956 + <layer name="Layer 1">
151.9957 + <opacity>1.0</opacity>
151.9958 + <fillOpacity>1.0</fillOpacity>
151.9959 + <blendingMode>NORMAL</blendingMode>
151.9960 + <locked>false</locked>
151.9961 + <visible>true</visible>
151.9962 + <shapes>
151.9963 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.9964 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.9965 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9966 + </rectangle>
151.9967 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.9968 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.9969 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9970 + </rectangle>
151.9971 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.9972 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.9973 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9974 + </rectangle>
151.9975 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.9976 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.9977 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9978 + </rectangle>
151.9979 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.9980 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.9981 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9982 + </rectangle>
151.9983 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.9984 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.9985 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9986 + </rectangle>
151.9987 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.9988 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.9989 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9990 + </rectangle>
151.9991 + <rectangle x1="5.454545454545454" x2="13.613636363636363" y1="11.022727272727273" y2="13.000000000000002" rounding="0.0">
151.9992 + <matte red="178" green="183" blue="192" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.003968239" saturationOffset="-0.03760965" brightnessOffset="0.007843137" alphaOffset="0"/>
151.9993 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9994 + </rectangle>
151.9995 + <rectangle x1="4.750000000000001" x2="14.250000000000004" y1="11.931818181818182" y2="13.477272727272728" rounding="0.0">
151.9996 + <matte red="76" green="85" blue="87" alpha="39" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0808081" saturationOffset="0.015910469" brightnessOffset="-0.40392157" alphaOffset="-216"/>
151.9997 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.9998 + </rectangle>
151.9999 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.10000 + <gradient cycleMethod="NO_CYCLE">
151.10001 + <stop position="0.0" midpoint="0.5">
151.10002 + <matte red="187" green="190" blue="196" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.5273321" saturationOffset="-0.93313926" brightnessOffset="0.019607842" alphaOffset="0"/>
151.10003 + </stop>
151.10004 + <stop position="0.53977275" midpoint="0.5">
151.10005 + <matte red="162" green="166" blue="176" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.53526866" saturationOffset="-0.8995122" brightnessOffset="-0.058823526" alphaOffset="0"/>
151.10006 + </stop>
151.10007 + <stop position="0.6505682" midpoint="0.5">
151.10008 + <matte red="157" green="162" blue="171" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.5233639" saturationOffset="-0.8971863" brightnessOffset="-0.07843137" alphaOffset="0"/>
151.10009 + </stop>
151.10010 + <stop position="1.0" midpoint="0.5">
151.10011 + <matte red="154" green="159" blue="169" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.5273321" saturationOffset="-0.8903002" brightnessOffset="-0.086274505" alphaOffset="0"/>
151.10012 + </stop>
151.10013 + </gradient>
151.10014 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.10015 + </rectangle>
151.10016 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.10017 + <gradient cycleMethod="NO_CYCLE">
151.10018 + <stop position="0.0" midpoint="0.5">
151.10019 + <matte red="185" green="188" blue="193" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.5203877" saturationOffset="-0.9376068" brightnessOffset="0.007843137" alphaOffset="0"/>
151.10020 + </stop>
151.10021 + <stop position="1.0" midpoint="0.5">
151.10022 + <matte red="154" green="159" blue="169" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.5273321" saturationOffset="-0.8903002" brightnessOffset="-0.086274505" alphaOffset="0"/>
151.10023 + </stop>
151.10024 + </gradient>
151.10025 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.10026 + </rectangle>
151.10027 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.10028 + <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
151.10029 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10030 + </rectangle>
151.10031 + </shapes>
151.10032 + <effects/>
151.10033 + </layer>
151.10034 + <templateLayer fileName="113e23f6ea0.png">
151.10035 + <layer name="Template" type="template">
151.10036 + <opacity>1.0</opacity>
151.10037 + <fillOpacity>1.0</fillOpacity>
151.10038 + <blendingMode>NORMAL</blendingMode>
151.10039 + <locked>false</locked>
151.10040 + <visible>false</visible>
151.10041 + <shapes/>
151.10042 + <effects/>
151.10043 + </layer>
151.10044 + </templateLayer>
151.10045 + </canvas>
151.10046 + </state>
151.10047 + <state stateKeys="MouseOver">
151.10048 + <style>
151.10049 + <textForeground/>
151.10050 + <textBackground/>
151.10051 + <background/>
151.10052 + <uiproperties/>
151.10053 + </style>
151.10054 + <canvas>
151.10055 + <size width="19" height="18"/>
151.10056 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.10057 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.10058 + <layer name="Layer 1">
151.10059 + <opacity>1.0</opacity>
151.10060 + <fillOpacity>1.0</fillOpacity>
151.10061 + <blendingMode>NORMAL</blendingMode>
151.10062 + <locked>false</locked>
151.10063 + <visible>true</visible>
151.10064 + <shapes>
151.10065 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10066 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10067 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10068 + </rectangle>
151.10069 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10070 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10071 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10072 + </rectangle>
151.10073 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10074 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10075 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10076 + </rectangle>
151.10077 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10078 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10079 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10080 + </rectangle>
151.10081 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10082 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10083 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10084 + </rectangle>
151.10085 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10086 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10087 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10088 + </rectangle>
151.10089 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10090 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10091 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10092 + </rectangle>
151.10093 + <rectangle x1="5.454545454545454" x2="13.613636363636363" y1="11.022727272727273" y2="13.000000000000002" rounding="0.0">
151.10094 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.10095 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10096 + </rectangle>
151.10097 + <rectangle x1="4.750000000000001" x2="14.250000000000004" y1="11.931818181818182" y2="13.477272727272728" rounding="0.0">
151.10098 + <matte red="204" green="71" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.025772434" saturationOffset="0.02094239" brightnessOffset="0.05098039" alphaOffset="0"/>
151.10099 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10100 + </rectangle>
151.10101 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.10102 + <gradient cycleMethod="NO_CYCLE">
151.10103 + <stop position="0.0" midpoint="0.5">
151.10104 + <matte red="229" green="175" blue="121" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-4.4563413E-4" saturationOffset="-0.5074419" brightnessOffset="0.1490196" alphaOffset="0"/>
151.10105 + </stop>
151.10106 + <stop position="0.53977275" midpoint="0.5">
151.10107 + <matte red="211" green="120" blue="28" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="9.745359E-6" saturationOffset="-0.11175901" brightnessOffset="0.07843137" alphaOffset="0"/>
151.10108 + </stop>
151.10109 + <stop position="0.6505682" midpoint="0.5">
151.10110 + <matte red="211" green="118" blue="24" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="-0.09280169" brightnessOffset="0.07843137" alphaOffset="0"/>
151.10111 + </stop>
151.10112 + <stop position="1.0" midpoint="0.5">
151.10113 + <matte red="237" green="144" blue="50" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="-0.19002807" brightnessOffset="0.18039215" alphaOffset="0"/>
151.10114 + </stop>
151.10115 + </gradient>
151.10116 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.10117 + </rectangle>
151.10118 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.10119 + <gradient cycleMethod="NO_CYCLE">
151.10120 + <stop position="0.0" midpoint="0.5">
151.10121 + <matte red="110" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.08377897" saturationOffset="0.02094239" brightnessOffset="-0.31764707" alphaOffset="0"/>
151.10122 + </stop>
151.10123 + <stop position="1.0" midpoint="0.5">
151.10124 + <matte red="175" green="59" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.02758849" saturationOffset="0.02094239" brightnessOffset="-0.062745094" alphaOffset="0"/>
151.10125 + </stop>
151.10126 + </gradient>
151.10127 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.10128 + </rectangle>
151.10129 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.10130 + <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
151.10131 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10132 + </rectangle>
151.10133 + </shapes>
151.10134 + <effects/>
151.10135 + </layer>
151.10136 + <templateLayer fileName="113e2450ed9.png">
151.10137 + <layer name="Template" type="template">
151.10138 + <opacity>1.0</opacity>
151.10139 + <fillOpacity>1.0</fillOpacity>
151.10140 + <blendingMode>NORMAL</blendingMode>
151.10141 + <locked>false</locked>
151.10142 + <visible>false</visible>
151.10143 + <shapes/>
151.10144 + <effects/>
151.10145 + </layer>
151.10146 + </templateLayer>
151.10147 + </canvas>
151.10148 + </state>
151.10149 + <state stateKeys="Pressed">
151.10150 + <style>
151.10151 + <textForeground/>
151.10152 + <textBackground/>
151.10153 + <background/>
151.10154 + <uiproperties/>
151.10155 + </style>
151.10156 + <canvas>
151.10157 + <size width="19" height="18"/>
151.10158 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.10159 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.10160 + <layer name="Layer 1">
151.10161 + <opacity>1.0</opacity>
151.10162 + <fillOpacity>1.0</fillOpacity>
151.10163 + <blendingMode>NORMAL</blendingMode>
151.10164 + <locked>false</locked>
151.10165 + <visible>true</visible>
151.10166 + <shapes>
151.10167 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10168 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10169 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10170 + </rectangle>
151.10171 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10172 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10173 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10174 + </rectangle>
151.10175 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10176 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10177 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10178 + </rectangle>
151.10179 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10180 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10181 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10182 + </rectangle>
151.10183 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10184 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10185 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10186 + </rectangle>
151.10187 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10188 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10189 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10190 + </rectangle>
151.10191 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10192 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10193 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10194 + </rectangle>
151.10195 + <rectangle x1="5.454545454545454" x2="13.613636363636363" y1="11.022727272727273" y2="13.000000000000002" rounding="0.0">
151.10196 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.10197 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10198 + </rectangle>
151.10199 + <rectangle x1="4.750000000000001" x2="14.272727272727275" y1="11.749999999999998" y2="14.0909090909091" rounding="0.0">
151.10200 + <matte red="154" green="0" blue="0" alpha="164" uiDefaultParentName="nimbusOrange" hueOffset="-0.08377897" saturationOffset="0.02094239" brightnessOffset="-0.14509803" alphaOffset="-91"/>
151.10201 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10202 + </rectangle>
151.10203 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.10204 + <gradient cycleMethod="NO_CYCLE">
151.10205 + <stop position="0.0" midpoint="0.5">
151.10206 + <matte red="201" green="123" blue="72" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.017887495" saturationOffset="-0.33726656" brightnessOffset="0.039215684" alphaOffset="0"/>
151.10207 + </stop>
151.10208 + <stop position="0.53977275" midpoint="0.5">
151.10209 + <matte red="180" green="71" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.018038228" saturationOffset="0.02094239" brightnessOffset="-0.043137252" alphaOffset="0"/>
151.10210 + </stop>
151.10211 + <stop position="0.6505682" midpoint="0.5">
151.10212 + <matte red="184" green="75" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.015844189" saturationOffset="0.02094239" brightnessOffset="-0.027450979" alphaOffset="0"/>
151.10213 + </stop>
151.10214 + <stop position="1.0" midpoint="0.5">
151.10215 + <matte red="195" green="86" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.010274701" saturationOffset="0.02094239" brightnessOffset="0.015686274" alphaOffset="0"/>
151.10216 + </stop>
151.10217 + </gradient>
151.10218 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.10219 + </rectangle>
151.10220 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.10221 + <gradient cycleMethod="NO_CYCLE">
151.10222 + <stop position="0.0" midpoint="0.5">
151.10223 + <matte red="89" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.08377897" saturationOffset="0.02094239" brightnessOffset="-0.4" alphaOffset="0"/>
151.10224 + </stop>
151.10225 + <stop position="1.0" midpoint="0.5">
151.10226 + <matte red="163" green="30" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.053104125" saturationOffset="0.02094239" brightnessOffset="-0.109803915" alphaOffset="0"/>
151.10227 + </stop>
151.10228 + </gradient>
151.10229 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.10230 + </rectangle>
151.10231 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.10232 + <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
151.10233 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10234 + </rectangle>
151.10235 + </shapes>
151.10236 + <effects/>
151.10237 + </layer>
151.10238 + <templateLayer fileName="113e247bc76.png">
151.10239 + <layer name="Template" type="template">
151.10240 + <opacity>1.0</opacity>
151.10241 + <fillOpacity>1.0</fillOpacity>
151.10242 + <blendingMode>NORMAL</blendingMode>
151.10243 + <locked>false</locked>
151.10244 + <visible>false</visible>
151.10245 + <shapes/>
151.10246 + <effects/>
151.10247 + </layer>
151.10248 + </templateLayer>
151.10249 + </canvas>
151.10250 + </state>
151.10251 + <state stateKeys="Enabled+WindowNotFocused">
151.10252 + <style>
151.10253 + <textForeground/>
151.10254 + <textBackground/>
151.10255 + <background/>
151.10256 + <uiproperties/>
151.10257 + </style>
151.10258 + <canvas>
151.10259 + <size width="19" height="18"/>
151.10260 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.10261 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.10262 + <layer name="Layer 1">
151.10263 + <opacity>1.0</opacity>
151.10264 + <fillOpacity>1.0</fillOpacity>
151.10265 + <blendingMode>NORMAL</blendingMode>
151.10266 + <locked>false</locked>
151.10267 + <visible>true</visible>
151.10268 + <shapes>
151.10269 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10270 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10271 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10272 + </rectangle>
151.10273 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10274 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10275 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10276 + </rectangle>
151.10277 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10278 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10279 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10280 + </rectangle>
151.10281 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10282 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10283 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10284 + </rectangle>
151.10285 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10286 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10287 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10288 + </rectangle>
151.10289 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10290 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10291 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10292 + </rectangle>
151.10293 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10294 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10295 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10296 + </rectangle>
151.10297 + <rectangle x1="5.454545454545454" x2="13.613636363636363" y1="11.022727272727273" y2="13.000000000000002" rounding="0.0">
151.10298 + <matte red="98" green="102" blue="108" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.017933726" brightnessOffset="-0.32156864" alphaOffset="0"/>
151.10299 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10300 + </rectangle>
151.10301 + <rectangle x1="4.750000000000001" x2="14.250000000000004" y1="11.931818181818182" y2="13.477272727272728" rounding="0.0">
151.10302 + <matte red="76" green="85" blue="87" alpha="39" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0808081" saturationOffset="0.015910469" brightnessOffset="-0.40392157" alphaOffset="-216"/>
151.10303 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10304 + </rectangle>
151.10305 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.10306 + <gradient cycleMethod="NO_CYCLE">
151.10307 + <stop position="0.0" midpoint="0.5">
151.10308 + <matte red="219" green="221" blue="224" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.516221" saturationOffset="-0.9567362" brightnessOffset="0.12941176" alphaOffset="0"/>
151.10309 + </stop>
151.10310 + <stop position="0.53977275" midpoint="0.5">
151.10311 + <matte red="185" green="189" blue="196" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.5222816" saturationOffset="-0.9229352" brightnessOffset="0.019607842" alphaOffset="0"/>
151.10312 + </stop>
151.10313 + <stop position="0.6505682" midpoint="0.5">
151.10314 + <matte red="183" green="187" blue="195" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.5273321" saturationOffset="-0.91751915" brightnessOffset="0.015686274" alphaOffset="0"/>
151.10315 + </stop>
151.10316 + <stop position="0.9161677" midpoint="0.5">
151.10317 + <matte red="189" green="193" blue="201" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.5273321" saturationOffset="-0.9193561" brightnessOffset="0.039215684" alphaOffset="0"/>
151.10318 + </stop>
151.10319 + </gradient>
151.10320 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.10321 + </rectangle>
151.10322 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.10323 + <gradient cycleMethod="NO_CYCLE">
151.10324 + <stop position="0.0" midpoint="0.5">
151.10325 + <matte red="136" green="141" blue="151" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.5273321" saturationOffset="-0.87971985" brightnessOffset="-0.15686274" alphaOffset="0"/>
151.10326 + </stop>
151.10327 + <stop position="1.0" midpoint="0.5">
151.10328 + <matte red="95" green="100" blue="110" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.5273321" saturationOffset="-0.842694" brightnessOffset="-0.31764707" alphaOffset="0"/>
151.10329 + </stop>
151.10330 + </gradient>
151.10331 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.10332 + </rectangle>
151.10333 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.10334 + <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
151.10335 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10336 + </rectangle>
151.10337 + </shapes>
151.10338 + <effects/>
151.10339 + </layer>
151.10340 + <templateLayer fileName="113fc294735.png">
151.10341 + <layer name="Template" type="template">
151.10342 + <opacity>1.0</opacity>
151.10343 + <fillOpacity>1.0</fillOpacity>
151.10344 + <blendingMode>NORMAL</blendingMode>
151.10345 + <locked>false</locked>
151.10346 + <visible>false</visible>
151.10347 + <shapes/>
151.10348 + <effects/>
151.10349 + </layer>
151.10350 + </templateLayer>
151.10351 + </canvas>
151.10352 + </state>
151.10353 + <state stateKeys="MouseOver+WindowNotFocused">
151.10354 + <style>
151.10355 + <textForeground/>
151.10356 + <textBackground/>
151.10357 + <background/>
151.10358 + <uiproperties/>
151.10359 + </style>
151.10360 + <canvas>
151.10361 + <size width="19" height="18"/>
151.10362 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.10363 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.10364 + <layer name="Layer 1">
151.10365 + <opacity>1.0</opacity>
151.10366 + <fillOpacity>1.0</fillOpacity>
151.10367 + <blendingMode>NORMAL</blendingMode>
151.10368 + <locked>false</locked>
151.10369 + <visible>true</visible>
151.10370 + <shapes>
151.10371 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10372 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10373 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10374 + </rectangle>
151.10375 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10376 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10377 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10378 + </rectangle>
151.10379 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10380 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10381 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10382 + </rectangle>
151.10383 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10384 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10385 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10386 + </rectangle>
151.10387 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10388 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10389 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10390 + </rectangle>
151.10391 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10392 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10393 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10394 + </rectangle>
151.10395 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10396 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10397 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10398 + </rectangle>
151.10399 + <rectangle x1="5.454545454545454" x2="13.613636363636363" y1="11.022727272727273" y2="13.000000000000002" rounding="0.0">
151.10400 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.10401 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10402 + </rectangle>
151.10403 + <rectangle x1="4.750000000000001" x2="14.250000000000004" y1="11.931818181818182" y2="13.477272727272728" rounding="0.0">
151.10404 + <matte red="204" green="71" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.025772434" saturationOffset="0.02094239" brightnessOffset="0.05098039" alphaOffset="0"/>
151.10405 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10406 + </rectangle>
151.10407 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.10408 + <gradient cycleMethod="NO_CYCLE">
151.10409 + <stop position="0.0" midpoint="0.5">
151.10410 + <matte red="229" green="175" blue="121" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-4.4563413E-4" saturationOffset="-0.5074419" brightnessOffset="0.1490196" alphaOffset="0"/>
151.10411 + </stop>
151.10412 + <stop position="0.53977275" midpoint="0.5">
151.10413 + <matte red="211" green="120" blue="28" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="9.745359E-6" saturationOffset="-0.11175901" brightnessOffset="0.07843137" alphaOffset="0"/>
151.10414 + </stop>
151.10415 + <stop position="0.6505682" midpoint="0.5">
151.10416 + <matte red="211" green="118" blue="24" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="-0.09280169" brightnessOffset="0.07843137" alphaOffset="0"/>
151.10417 + </stop>
151.10418 + <stop position="1.0" midpoint="0.5">
151.10419 + <matte red="237" green="144" blue="50" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="-0.19002807" brightnessOffset="0.18039215" alphaOffset="0"/>
151.10420 + </stop>
151.10421 + </gradient>
151.10422 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.10423 + </rectangle>
151.10424 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.10425 + <gradient cycleMethod="NO_CYCLE">
151.10426 + <stop position="0.0" midpoint="0.5">
151.10427 + <matte red="110" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.08377897" saturationOffset="0.02094239" brightnessOffset="-0.31764707" alphaOffset="0"/>
151.10428 + </stop>
151.10429 + <stop position="1.0" midpoint="0.5">
151.10430 + <matte red="175" green="59" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.02758849" saturationOffset="0.02094239" brightnessOffset="-0.062745094" alphaOffset="0"/>
151.10431 + </stop>
151.10432 + </gradient>
151.10433 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.10434 + </rectangle>
151.10435 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.10436 + <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
151.10437 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10438 + </rectangle>
151.10439 + </shapes>
151.10440 + <effects/>
151.10441 + </layer>
151.10442 + <templateLayer fileName="113e2450ed9.png">
151.10443 + <layer name="Template" type="template">
151.10444 + <opacity>1.0</opacity>
151.10445 + <fillOpacity>1.0</fillOpacity>
151.10446 + <blendingMode>NORMAL</blendingMode>
151.10447 + <locked>false</locked>
151.10448 + <visible>false</visible>
151.10449 + <shapes/>
151.10450 + <effects/>
151.10451 + </layer>
151.10452 + </templateLayer>
151.10453 + </canvas>
151.10454 + </state>
151.10455 + <state stateKeys="Pressed+WindowNotFocused">
151.10456 + <style>
151.10457 + <textForeground/>
151.10458 + <textBackground/>
151.10459 + <background/>
151.10460 + <uiproperties/>
151.10461 + </style>
151.10462 + <canvas>
151.10463 + <size width="19" height="18"/>
151.10464 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.10465 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.10466 + <layer name="Layer 1">
151.10467 + <opacity>1.0</opacity>
151.10468 + <fillOpacity>1.0</fillOpacity>
151.10469 + <blendingMode>NORMAL</blendingMode>
151.10470 + <locked>false</locked>
151.10471 + <visible>true</visible>
151.10472 + <shapes>
151.10473 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10474 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10475 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10476 + </rectangle>
151.10477 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10478 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10479 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10480 + </rectangle>
151.10481 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10482 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10483 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10484 + </rectangle>
151.10485 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10486 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10487 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10488 + </rectangle>
151.10489 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10490 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10491 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10492 + </rectangle>
151.10493 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10494 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10495 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10496 + </rectangle>
151.10497 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10498 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10499 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10500 + </rectangle>
151.10501 + <rectangle x1="5.454545454545454" x2="13.613636363636363" y1="11.022727272727273" y2="13.000000000000002" rounding="0.0">
151.10502 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.10503 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10504 + </rectangle>
151.10505 + <rectangle x1="4.750000000000001" x2="14.272727272727275" y1="11.749999999999998" y2="14.0909090909091" rounding="0.0">
151.10506 + <matte red="154" green="0" blue="0" alpha="164" uiDefaultParentName="nimbusOrange" hueOffset="-0.08377897" saturationOffset="0.02094239" brightnessOffset="-0.14509803" alphaOffset="-91"/>
151.10507 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10508 + </rectangle>
151.10509 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.10510 + <gradient cycleMethod="NO_CYCLE">
151.10511 + <stop position="0.0" midpoint="0.5">
151.10512 + <matte red="201" green="123" blue="72" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.017887495" saturationOffset="-0.33726656" brightnessOffset="0.039215684" alphaOffset="0"/>
151.10513 + </stop>
151.10514 + <stop position="0.53977275" midpoint="0.5">
151.10515 + <matte red="180" green="71" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.018038228" saturationOffset="0.02094239" brightnessOffset="-0.043137252" alphaOffset="0"/>
151.10516 + </stop>
151.10517 + <stop position="0.6505682" midpoint="0.5">
151.10518 + <matte red="184" green="75" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.015844189" saturationOffset="0.02094239" brightnessOffset="-0.027450979" alphaOffset="0"/>
151.10519 + </stop>
151.10520 + <stop position="1.0" midpoint="0.5">
151.10521 + <matte red="195" green="86" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.010274701" saturationOffset="0.02094239" brightnessOffset="0.015686274" alphaOffset="0"/>
151.10522 + </stop>
151.10523 + </gradient>
151.10524 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.10525 + </rectangle>
151.10526 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.10527 + <gradient cycleMethod="NO_CYCLE">
151.10528 + <stop position="0.0" midpoint="0.5">
151.10529 + <matte red="89" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.08377897" saturationOffset="0.02094239" brightnessOffset="-0.4" alphaOffset="0"/>
151.10530 + </stop>
151.10531 + <stop position="1.0" midpoint="0.5">
151.10532 + <matte red="163" green="30" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.053104125" saturationOffset="0.02094239" brightnessOffset="-0.109803915" alphaOffset="0"/>
151.10533 + </stop>
151.10534 + </gradient>
151.10535 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.10536 + </rectangle>
151.10537 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.10538 + <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
151.10539 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10540 + </rectangle>
151.10541 + </shapes>
151.10542 + <effects/>
151.10543 + </layer>
151.10544 + <templateLayer fileName="113e247bc76.png">
151.10545 + <layer name="Template" type="template">
151.10546 + <opacity>1.0</opacity>
151.10547 + <fillOpacity>1.0</fillOpacity>
151.10548 + <blendingMode>NORMAL</blendingMode>
151.10549 + <locked>false</locked>
151.10550 + <visible>false</visible>
151.10551 + <shapes/>
151.10552 + <effects/>
151.10553 + </layer>
151.10554 + </templateLayer>
151.10555 + </canvas>
151.10556 + </state>
151.10557 + </backgroundStates>
151.10558 + <foregroundStates/>
151.10559 + <borderStates/>
151.10560 + <regions/>
151.10561 + </uiComponent>
151.10562 + <uiComponent opaque="false" componentName="InternalFrameTitlePane.maximizeButton" type="javax.swing.JButton" name="Button" ui="ButtonUI" subregion="true">
151.10563 + <stateTypes>
151.10564 + <stateType key="Enabled"/>
151.10565 + <stateType key="MouseOver"/>
151.10566 + <stateType key="Pressed"/>
151.10567 + <stateType key="Disabled"/>
151.10568 + <stateType key="Focused"/>
151.10569 + <stateType key="Selected"/>
151.10570 + <stateType key="WindowNotFocused">
151.10571 + <codeSnippet><![CDATA[
151.10572 + Component parent = c;
151.10573 + while (parent.getParent() != null) {
151.10574 + if (parent instanceof JInternalFrame) {
151.10575 + break;
151.10576 + }
151.10577 + parent = parent.getParent();
151.10578 + }
151.10579 + if (parent instanceof JInternalFrame) {
151.10580 + return !(((JInternalFrame)parent).isSelected());
151.10581 + }
151.10582 + return false;]]></codeSnippet>
151.10583 + </stateType>
151.10584 + <stateType key="WindowMaximized">
151.10585 + <codeSnippet><![CDATA[
151.10586 + Component parent = c;
151.10587 + while (parent.getParent() != null) {
151.10588 + if (parent instanceof JInternalFrame) {
151.10589 + break;
151.10590 + }
151.10591 + parent = parent.getParent();
151.10592 + }
151.10593 + if (parent instanceof JInternalFrame) {
151.10594 + return ((JInternalFrame)parent).isMaximum();
151.10595 + }
151.10596 + return false;]]></codeSnippet>
151.10597 + </stateType>
151.10598 + </stateTypes>
151.10599 + <contentMargins top="9" bottom="9" left="9" right="9"/>
151.10600 + <style>
151.10601 + <textForeground/>
151.10602 + <textBackground/>
151.10603 + <background/>
151.10604 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.10605 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.10606 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.10607 + <uiproperties/>
151.10608 + </style>
151.10609 + <backgroundStates>
151.10610 + <state stateKeys="Disabled+WindowMaximized">
151.10611 + <style>
151.10612 + <textForeground/>
151.10613 + <textBackground/>
151.10614 + <background/>
151.10615 + <uiproperties/>
151.10616 + </style>
151.10617 + <canvas>
151.10618 + <size width="19" height="18"/>
151.10619 + <nextLayerNameIndex>5</nextLayerNameIndex>
151.10620 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.10621 + <layer name="Layer 1">
151.10622 + <opacity>1.0</opacity>
151.10623 + <fillOpacity>1.0</fillOpacity>
151.10624 + <blendingMode>NORMAL</blendingMode>
151.10625 + <locked>false</locked>
151.10626 + <visible>true</visible>
151.10627 + <shapes>
151.10628 + <path>
151.10629 + <matte red="186" green="190" blue="198" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.049920253" brightnessOffset="0.031372547" alphaOffset="0"/>
151.10630 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10631 + <points>
151.10632 + <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
151.10633 + <point x="13.0" y="9.0" cp1x="13.0" cp1y="9.0" cp2x="13.0" cp2y="9.0"/>
151.10634 + <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="14.0" cp2y="9.0"/>
151.10635 + <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
151.10636 + <point x="8.0" y="12.0" cp1x="8.0" cp1y="12.0" cp2x="8.0" cp2y="12.0"/>
151.10637 + <point x="8.0" y="11.0" cp1x="8.0" cp1y="11.0" cp2x="8.0" cp2y="11.0"/>
151.10638 + <point x="7.0" y="11.0" cp1x="7.0" cp1y="11.0" cp2x="7.0" cp2y="11.0"/>
151.10639 + <point x="7.0" y="13.0" cp1x="7.0" cp1y="13.0" cp2x="7.0" cp2y="13.0"/>
151.10640 + <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
151.10641 + <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
151.10642 + </points>
151.10643 + </path>
151.10644 + <path>
151.10645 + <gradient cycleMethod="NO_CYCLE">
151.10646 + <stop position="0.0" midpoint="0.5">
151.10647 + <matte red="198" green="201" blue="208" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.062449392" brightnessOffset="0.07058823" alphaOffset="0"/>
151.10648 + </stop>
151.10649 + <stop position="1.0" midpoint="0.5">
151.10650 + <matte red="176" green="181" blue="189" alpha="242" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.04174325" brightnessOffset="-0.0039215684" alphaOffset="-13"/>
151.10651 + </stop>
151.10652 + </gradient>
151.10653 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.10654 + <points>
151.10655 + <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
151.10656 + <point x="12.0" y="4.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="4.0"/>
151.10657 + <point x="12.0" y="10.0" cp1x="12.0" cp1y="10.0" cp2x="12.0" cp2y="10.0"/>
151.10658 + <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
151.10659 + <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
151.10660 + <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
151.10661 + <point x="5.0" y="9.0" cp1x="5.0" cp1y="9.0" cp2x="5.0" cp2y="9.0"/>
151.10662 + <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
151.10663 + <point x="11.0" y="6.0" cp1x="11.0" cp1y="6.0" cp2x="11.0" cp2y="6.0"/>
151.10664 + <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
151.10665 + </points>
151.10666 + </path>
151.10667 + <rectangle x1="10.727272727272727" x2="14.954545454545457" y1="7.340909090909091" y2="9.431818181818183" rounding="0.0">
151.10668 + <matte red="166" green="170" blue="179" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44484192" saturationOffset="-0.6480447" brightnessOffset="0.0" alphaOffset="0"/>
151.10669 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10670 + </rectangle>
151.10671 + <rectangle x1="8.340909090909092" x2="14.97727272727273" y1="12.977272727272727" y2="13.977272727272728" rounding="0.0">
151.10672 + <matte red="153" green="157" blue="166" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44484192" saturationOffset="-0.6423572" brightnessOffset="-0.05098039" alphaOffset="0"/>
151.10673 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10674 + </rectangle>
151.10675 + <rectangle x1="7.0" x2="8.0" y1="11.0" y2="14.0" rounding="0.0">
151.10676 + <matte red="153" green="158" blue="167" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.4366002" saturationOffset="-0.6368381" brightnessOffset="-0.04705882" alphaOffset="0"/>
151.10677 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10678 + </rectangle>
151.10679 + <rectangle x1="11.909090909090908" x2="12.795454545454547" y1="7.0" y2="10.954545454545455" rounding="0.0">
151.10680 + <matte red="166" green="170" blue="179" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44484192" saturationOffset="-0.6480447" brightnessOffset="0.0" alphaOffset="0"/>
151.10681 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10682 + </rectangle>
151.10683 + <rectangle x1="5.0227272727272725" x2="12.0" y1="9.977272727272727" y2="10.795454545454547" rounding="0.0">
151.10684 + <matte red="158" green="162" blue="171" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44484192" saturationOffset="-0.644647" brightnessOffset="-0.031372547" alphaOffset="0"/>
151.10685 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10686 + </rectangle>
151.10687 + <rectangle x1="4.204545454545454" x2="5.136363636363637" y1="10.886363636363637" y2="6.9772727272727275" rounding="0.0">
151.10688 + <matte red="158" green="162" blue="171" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44484192" saturationOffset="-0.644647" brightnessOffset="-0.031372547" alphaOffset="0"/>
151.10689 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10690 + </rectangle>
151.10691 + <rectangle x1="4.113636363636363" x2="12.818181818181822" y1="5.0227272727272725" y2="6.9772727272727275" rounding="0.0">
151.10692 + <matte red="165" green="169" blue="176" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.4355179" saturationOffset="-0.6581704" brightnessOffset="-0.011764705" alphaOffset="0"/>
151.10693 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10694 + </rectangle>
151.10695 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10696 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10697 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10698 + </rectangle>
151.10699 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.10700 + <gradient cycleMethod="NO_CYCLE">
151.10701 + <stop position="0.0" midpoint="0.5">
151.10702 + <matte red="187" green="190" blue="196" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.67475206" brightnessOffset="0.06666666" alphaOffset="0"/>
151.10703 + </stop>
151.10704 + <stop position="1.0" midpoint="0.5">
151.10705 + <matte red="154" green="159" blue="169" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.631913" brightnessOffset="-0.039215684" alphaOffset="0"/>
151.10706 + </stop>
151.10707 + </gradient>
151.10708 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.10709 + </rectangle>
151.10710 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.10711 + <gradient cycleMethod="NO_CYCLE">
151.10712 + <stop position="0.0" midpoint="0.5">
151.10713 + <matte red="185" green="188" blue="193" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.43362403" saturationOffset="-0.6792196" brightnessOffset="0.054901958" alphaOffset="0"/>
151.10714 + </stop>
151.10715 + <stop position="1.0" midpoint="0.5">
151.10716 + <matte red="154" green="159" blue="169" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.631913" brightnessOffset="-0.039215684" alphaOffset="0"/>
151.10717 + </stop>
151.10718 + </gradient>
151.10719 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.10720 + </rectangle>
151.10721 + </shapes>
151.10722 + <effects/>
151.10723 + </layer>
151.10724 + <templateLayer fileName="113fbedca6b.png">
151.10725 + <layer name="Template" type="template">
151.10726 + <opacity>1.0</opacity>
151.10727 + <fillOpacity>1.0</fillOpacity>
151.10728 + <blendingMode>NORMAL</blendingMode>
151.10729 + <locked>false</locked>
151.10730 + <visible>false</visible>
151.10731 + <shapes/>
151.10732 + <effects/>
151.10733 + </layer>
151.10734 + </templateLayer>
151.10735 + </canvas>
151.10736 + </state>
151.10737 + <state stateKeys="Enabled+WindowMaximized">
151.10738 + <style>
151.10739 + <textForeground/>
151.10740 + <textBackground/>
151.10741 + <background/>
151.10742 + <uiproperties/>
151.10743 + </style>
151.10744 + <canvas>
151.10745 + <size width="19" height="18"/>
151.10746 + <nextLayerNameIndex>5</nextLayerNameIndex>
151.10747 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.10748 + <layer name="Layer 1">
151.10749 + <opacity>1.0</opacity>
151.10750 + <fillOpacity>1.0</fillOpacity>
151.10751 + <blendingMode>NORMAL</blendingMode>
151.10752 + <locked>false</locked>
151.10753 + <visible>true</visible>
151.10754 + <shapes>
151.10755 + <path>
151.10756 + <matte red="255" green="255" blue="255" alpha="222" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-33"/>
151.10757 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10758 + <points>
151.10759 + <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
151.10760 + <point x="13.0" y="9.0" cp1x="13.0" cp1y="9.0" cp2x="13.0" cp2y="9.0"/>
151.10761 + <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="14.0" cp2y="9.0"/>
151.10762 + <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
151.10763 + <point x="8.0" y="12.0" cp1x="8.0" cp1y="12.0" cp2x="8.0" cp2y="12.0"/>
151.10764 + <point x="8.0" y="11.0" cp1x="8.0" cp1y="11.0" cp2x="8.0" cp2y="11.0"/>
151.10765 + <point x="7.0" y="11.0" cp1x="7.0" cp1y="11.0" cp2x="7.0" cp2y="11.0"/>
151.10766 + <point x="7.0" y="13.0" cp1x="7.0" cp1y="13.0" cp2x="7.0" cp2y="13.0"/>
151.10767 + <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
151.10768 + <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
151.10769 + </points>
151.10770 + </path>
151.10771 + <path>
151.10772 + <matte red="255" green="255" blue="255" alpha="242" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-13"/>
151.10773 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10774 + <points>
151.10775 + <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
151.10776 + <point x="12.0" y="4.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="4.0"/>
151.10777 + <point x="12.0" y="10.0" cp1x="12.0" cp1y="10.0" cp2x="12.0" cp2y="10.0"/>
151.10778 + <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
151.10779 + <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
151.10780 + <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
151.10781 + <point x="5.0" y="9.0" cp1x="5.0" cp1y="9.0" cp2x="5.0" cp2y="9.0"/>
151.10782 + <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
151.10783 + <point x="11.0" y="6.0" cp1x="11.0" cp1y="6.0" cp2x="11.0" cp2y="6.0"/>
151.10784 + <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
151.10785 + </points>
151.10786 + </path>
151.10787 + <rectangle x1="10.727272727272727" x2="14.954545454545457" y1="7.340909090909091" y2="9.431818181818183" rounding="0.0">
151.10788 + <matte red="97" green="95" blue="28" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.0087068975" saturationOffset="-0.009330213" brightnessOffset="-0.32156864" alphaOffset="0"/>
151.10789 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10790 + </rectangle>
151.10791 + <rectangle x1="15.045454545454545" x2="15.863636363636363" y1="13.954545454545455" y2="7.590909090909091" rounding="0.0">
151.10792 + <matte red="97" green="95" blue="28" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.0087068975" saturationOffset="-0.009330213" brightnessOffset="-0.32156864" alphaOffset="0"/>
151.10793 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10794 + </rectangle>
151.10795 + <rectangle x1="8.340909090909092" x2="14.97727272727273" y1="12.977272727272727" y2="13.977272727272728" rounding="0.0">
151.10796 + <matte red="97" green="95" blue="28" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.0087068975" saturationOffset="-0.009330213" brightnessOffset="-0.32156864" alphaOffset="0"/>
151.10797 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10798 + </rectangle>
151.10799 + <rectangle x1="7.25" x2="8.295454545454547" y1="11.0" y2="13.931818181818183" rounding="0.0">
151.10800 + <matte red="97" green="95" blue="28" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.0087068975" saturationOffset="-0.009330213" brightnessOffset="-0.32156864" alphaOffset="0"/>
151.10801 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10802 + </rectangle>
151.10803 + <rectangle x1="11.909090909090908" x2="12.795454545454547" y1="7.0" y2="10.954545454545455" rounding="0.0">
151.10804 + <matte red="97" green="95" blue="28" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.0087068975" saturationOffset="-0.009330213" brightnessOffset="-0.32156864" alphaOffset="0"/>
151.10805 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10806 + </rectangle>
151.10807 + <rectangle x1="5.0227272727272725" x2="12.0" y1="9.977272727272727" y2="10.795454545454547" rounding="0.0">
151.10808 + <matte red="97" green="95" blue="28" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.0087068975" saturationOffset="-0.009330213" brightnessOffset="-0.32156864" alphaOffset="0"/>
151.10809 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10810 + </rectangle>
151.10811 + <rectangle x1="4.204545454545454" x2="5.136363636363637" y1="10.886363636363637" y2="6.9772727272727275" rounding="0.0">
151.10812 + <matte red="97" green="95" blue="28" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.0087068975" saturationOffset="-0.009330213" brightnessOffset="-0.32156864" alphaOffset="0"/>
151.10813 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10814 + </rectangle>
151.10815 + <rectangle x1="4.113636363636363" x2="12.818181818181822" y1="5.0227272727272725" y2="6.9772727272727275" rounding="0.0">
151.10816 + <matte red="97" green="95" blue="28" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.0087068975" saturationOffset="-0.009330213" brightnessOffset="-0.32156864" alphaOffset="0"/>
151.10817 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10818 + </rectangle>
151.10819 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10820 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10821 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10822 + </rectangle>
151.10823 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.10824 + <gradient cycleMethod="NO_CYCLE">
151.10825 + <stop position="0.0" midpoint="0.5">
151.10826 + <matte red="164" green="176" blue="110" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.02642706" saturationOffset="-0.3456704" brightnessOffset="-0.011764705" alphaOffset="0"/>
151.10827 + </stop>
151.10828 + <stop position="0.53977275" midpoint="0.5">
151.10829 + <matte red="98" green="118" blue="4" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.025363803" saturationOffset="0.2454313" brightnessOffset="-0.2392157" alphaOffset="0"/>
151.10830 + </stop>
151.10831 + <stop position="0.6505682" midpoint="0.5">
151.10832 + <matte red="99" green="119" blue="5" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.025363803" saturationOffset="0.2373128" brightnessOffset="-0.23529413" alphaOffset="0"/>
151.10833 + </stop>
151.10834 + <stop position="1.0" midpoint="0.5">
151.10835 + <matte red="125" green="145" blue="31" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.025363803" saturationOffset="0.0655365" brightnessOffset="-0.13333333" alphaOffset="0"/>
151.10836 + </stop>
151.10837 + </gradient>
151.10838 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.10839 + </rectangle>
151.10840 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.10841 + <gradient cycleMethod="NO_CYCLE">
151.10842 + <stop position="0.0" midpoint="0.5">
151.10843 + <matte red="0" green="15" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.1627907" saturationOffset="0.2793296" brightnessOffset="-0.6431373" alphaOffset="0"/>
151.10844 + </stop>
151.10845 + <stop position="1.0" midpoint="0.5">
151.10846 + <matte red="98" green="118" blue="4" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.025363803" saturationOffset="0.2454313" brightnessOffset="-0.2392157" alphaOffset="0"/>
151.10847 + </stop>
151.10848 + </gradient>
151.10849 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.10850 + </rectangle>
151.10851 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.10852 + <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
151.10853 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10854 + </rectangle>
151.10855 + </shapes>
151.10856 + <effects/>
151.10857 + </layer>
151.10858 + <templateLayer fileName="113e1f88fc4.png">
151.10859 + <layer name="Template" type="template">
151.10860 + <opacity>1.0</opacity>
151.10861 + <fillOpacity>1.0</fillOpacity>
151.10862 + <blendingMode>NORMAL</blendingMode>
151.10863 + <locked>false</locked>
151.10864 + <visible>false</visible>
151.10865 + <shapes/>
151.10866 + <effects/>
151.10867 + </layer>
151.10868 + </templateLayer>
151.10869 + </canvas>
151.10870 + </state>
151.10871 + <state stateKeys="MouseOver+WindowMaximized">
151.10872 + <style>
151.10873 + <textForeground/>
151.10874 + <textBackground/>
151.10875 + <background/>
151.10876 + <uiproperties/>
151.10877 + </style>
151.10878 + <canvas>
151.10879 + <size width="19" height="18"/>
151.10880 + <nextLayerNameIndex>5</nextLayerNameIndex>
151.10881 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.10882 + <layer name="Layer 1">
151.10883 + <opacity>1.0</opacity>
151.10884 + <fillOpacity>1.0</fillOpacity>
151.10885 + <blendingMode>NORMAL</blendingMode>
151.10886 + <locked>false</locked>
151.10887 + <visible>true</visible>
151.10888 + <shapes>
151.10889 + <path>
151.10890 + <matte red="255" green="255" blue="255" alpha="222" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-33"/>
151.10891 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10892 + <points>
151.10893 + <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
151.10894 + <point x="13.0" y="9.0" cp1x="13.0" cp1y="9.0" cp2x="13.0" cp2y="9.0"/>
151.10895 + <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="14.0" cp2y="9.0"/>
151.10896 + <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
151.10897 + <point x="8.0" y="12.0" cp1x="8.0" cp1y="12.0" cp2x="8.0" cp2y="12.0"/>
151.10898 + <point x="8.0" y="11.0" cp1x="8.0" cp1y="11.0" cp2x="8.0" cp2y="11.0"/>
151.10899 + <point x="7.0" y="11.0" cp1x="7.0" cp1y="11.0" cp2x="7.0" cp2y="11.0"/>
151.10900 + <point x="7.0" y="13.0" cp1x="7.0" cp1y="13.0" cp2x="7.0" cp2y="13.0"/>
151.10901 + <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
151.10902 + <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
151.10903 + </points>
151.10904 + </path>
151.10905 + <path>
151.10906 + <matte red="255" green="255" blue="255" alpha="242" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-13"/>
151.10907 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10908 + <points>
151.10909 + <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
151.10910 + <point x="12.0" y="4.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="4.0"/>
151.10911 + <point x="12.0" y="10.0" cp1x="12.0" cp1y="10.0" cp2x="12.0" cp2y="10.0"/>
151.10912 + <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
151.10913 + <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
151.10914 + <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
151.10915 + <point x="5.0" y="9.0" cp1x="5.0" cp1y="9.0" cp2x="5.0" cp2y="9.0"/>
151.10916 + <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
151.10917 + <point x="11.0" y="6.0" cp1x="11.0" cp1y="6.0" cp2x="11.0" cp2y="6.0"/>
151.10918 + <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
151.10919 + </points>
151.10920 + </path>
151.10921 + <rectangle x1="10.727272727272727" x2="14.954545454545457" y1="7.340909090909091" y2="9.431818181818183" rounding="0.0">
151.10922 + <matte red="125" green="136" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009604409" saturationOffset="0.2793296" brightnessOffset="-0.16862744" alphaOffset="0"/>
151.10923 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10924 + </rectangle>
151.10925 + <rectangle x1="15.045454545454545" x2="15.863636363636363" y1="13.954545454545455" y2="7.590909090909091" rounding="0.0">
151.10926 + <matte red="129" green="140" blue="3" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009506017" saturationOffset="0.257901" brightnessOffset="-0.15294117" alphaOffset="0"/>
151.10927 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10928 + </rectangle>
151.10929 + <rectangle x1="8.340909090909092" x2="14.97727272727273" y1="12.977272727272727" y2="13.977272727272728" rounding="0.0">
151.10930 + <matte red="124" green="137" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.011939123" saturationOffset="0.2793296" brightnessOffset="-0.16470587" alphaOffset="0"/>
151.10931 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10932 + </rectangle>
151.10933 + <rectangle x1="7.25" x2="8.295454545454547" y1="11.0" y2="13.931818181818183" rounding="0.0">
151.10934 + <matte red="127" green="140" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.011600211" saturationOffset="0.2793296" brightnessOffset="-0.15294117" alphaOffset="0"/>
151.10935 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10936 + </rectangle>
151.10937 + <rectangle x1="11.909090909090908" x2="12.795454545454547" y1="7.0" y2="10.954545454545455" rounding="0.0">
151.10938 + <matte red="125" green="136" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009604409" saturationOffset="0.2793296" brightnessOffset="-0.16862744" alphaOffset="0"/>
151.10939 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10940 + </rectangle>
151.10941 + <rectangle x1="5.0227272727272725" x2="12.0" y1="9.977272727272727" y2="10.795454545454547" rounding="0.0">
151.10942 + <matte red="113" green="126" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.013319805" saturationOffset="0.2793296" brightnessOffset="-0.20784315" alphaOffset="0"/>
151.10943 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10944 + </rectangle>
151.10945 + <rectangle x1="4.204545454545454" x2="5.136363636363637" y1="10.886363636363637" y2="6.9772727272727275" rounding="0.0">
151.10946 + <matte red="117" green="130" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.01279068" saturationOffset="0.2793296" brightnessOffset="-0.19215685" alphaOffset="0"/>
151.10947 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10948 + </rectangle>
151.10949 + <rectangle x1="4.113636363636363" x2="12.818181818181822" y1="5.0227272727272725" y2="6.9772727272727275" rounding="0.0">
151.10950 + <matte red="108" green="122" blue="0" alpha="206" uiDefaultParentName="nimbusGreen" hueOffset="0.015249729" saturationOffset="0.2793296" brightnessOffset="-0.22352943" alphaOffset="-49"/>
151.10951 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10952 + </rectangle>
151.10953 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.10954 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.10955 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10956 + </rectangle>
151.10957 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.10958 + <gradient cycleMethod="NO_CYCLE">
151.10959 + <stop position="0.0" midpoint="0.5">
151.10960 + <matte red="187" green="193" blue="120" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009822637" saturationOffset="-0.34243205" brightnessOffset="0.054901958" alphaOffset="0"/>
151.10961 + </stop>
151.10962 + <stop position="0.53977275" midpoint="0.5">
151.10963 + <matte red="138" green="149" blue="22" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.010559708" saturationOffset="0.13167858" brightnessOffset="-0.11764705" alphaOffset="0"/>
151.10964 + </stop>
151.10965 + <stop position="0.6505682" midpoint="0.5">
151.10966 + <matte red="139" green="150" blue="23" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.010559708" saturationOffset="0.12599629" brightnessOffset="-0.11372548" alphaOffset="0"/>
151.10967 + </stop>
151.10968 + <stop position="1.0" midpoint="0.5">
151.10969 + <matte red="165" green="176" blue="49" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.010559708" saturationOffset="9.2053413E-4" brightnessOffset="-0.011764705" alphaOffset="0"/>
151.10970 + </stop>
151.10971 + </gradient>
151.10972 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.10973 + </rectangle>
151.10974 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.10975 + <gradient cycleMethod="NO_CYCLE">
151.10976 + <stop position="0.0" midpoint="0.5">
151.10977 + <matte red="0" green="19" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.1627907" saturationOffset="0.2793296" brightnessOffset="-0.627451" alphaOffset="0"/>
151.10978 + </stop>
151.10979 + <stop position="1.0" midpoint="0.5">
151.10980 + <matte red="59" green="84" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.04572721" saturationOffset="0.2793296" brightnessOffset="-0.37254903" alphaOffset="0"/>
151.10981 + </stop>
151.10982 + </gradient>
151.10983 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.10984 + </rectangle>
151.10985 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.10986 + <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
151.10987 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.10988 + </rectangle>
151.10989 + </shapes>
151.10990 + <effects/>
151.10991 + </layer>
151.10992 + <templateLayer fileName="113fbf3eb8c.png">
151.10993 + <layer name="Template" type="template">
151.10994 + <opacity>1.0</opacity>
151.10995 + <fillOpacity>1.0</fillOpacity>
151.10996 + <blendingMode>NORMAL</blendingMode>
151.10997 + <locked>false</locked>
151.10998 + <visible>false</visible>
151.10999 + <shapes/>
151.11000 + <effects/>
151.11001 + </layer>
151.11002 + </templateLayer>
151.11003 + </canvas>
151.11004 + </state>
151.11005 + <state stateKeys="Pressed+WindowMaximized">
151.11006 + <style>
151.11007 + <textForeground/>
151.11008 + <textBackground/>
151.11009 + <background/>
151.11010 + <uiproperties/>
151.11011 + </style>
151.11012 + <canvas>
151.11013 + <size width="19" height="18"/>
151.11014 + <nextLayerNameIndex>5</nextLayerNameIndex>
151.11015 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.11016 + <layer name="Layer 1">
151.11017 + <opacity>1.0</opacity>
151.11018 + <fillOpacity>1.0</fillOpacity>
151.11019 + <blendingMode>NORMAL</blendingMode>
151.11020 + <locked>false</locked>
151.11021 + <visible>true</visible>
151.11022 + <shapes>
151.11023 + <path>
151.11024 + <matte red="255" green="255" blue="255" alpha="222" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-33"/>
151.11025 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11026 + <points>
151.11027 + <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
151.11028 + <point x="13.0" y="9.0" cp1x="13.0" cp1y="9.0" cp2x="13.0" cp2y="9.0"/>
151.11029 + <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="14.0" cp2y="9.0"/>
151.11030 + <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
151.11031 + <point x="8.0" y="12.0" cp1x="8.0" cp1y="12.0" cp2x="8.0" cp2y="12.0"/>
151.11032 + <point x="8.0" y="11.0" cp1x="8.0" cp1y="11.0" cp2x="8.0" cp2y="11.0"/>
151.11033 + <point x="7.0" y="11.0" cp1x="7.0" cp1y="11.0" cp2x="7.0" cp2y="11.0"/>
151.11034 + <point x="7.0" y="13.0" cp1x="7.0" cp1y="13.0" cp2x="7.0" cp2y="13.0"/>
151.11035 + <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
151.11036 + <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
151.11037 + </points>
151.11038 + </path>
151.11039 + <path>
151.11040 + <matte red="255" green="255" blue="255" alpha="242" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-13"/>
151.11041 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11042 + <points>
151.11043 + <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
151.11044 + <point x="12.0" y="4.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="4.0"/>
151.11045 + <point x="12.0" y="10.0" cp1x="12.0" cp1y="10.0" cp2x="12.0" cp2y="10.0"/>
151.11046 + <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
151.11047 + <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
151.11048 + <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
151.11049 + <point x="5.0" y="9.0" cp1x="5.0" cp1y="9.0" cp2x="5.0" cp2y="9.0"/>
151.11050 + <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
151.11051 + <point x="11.0" y="6.0" cp1x="11.0" cp1y="6.0" cp2x="11.0" cp2y="6.0"/>
151.11052 + <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
151.11053 + </points>
151.11054 + </path>
151.11055 + <rectangle x1="10.727272727272727" x2="14.954545454545457" y1="7.340909090909091" y2="9.431818181818183" rounding="0.0">
151.11056 + <matte red="45" green="71" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.057156876" saturationOffset="0.2793296" brightnessOffset="-0.42352942" alphaOffset="0"/>
151.11057 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11058 + </rectangle>
151.11059 + <rectangle x1="15.045454545454545" x2="15.863636363636363" y1="13.954545454545455" y2="7.590909090909091" rounding="0.0">
151.11060 + <matte red="55" green="80" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.048207358" saturationOffset="0.2793296" brightnessOffset="-0.3882353" alphaOffset="0"/>
151.11061 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11062 + </rectangle>
151.11063 + <rectangle x1="8.340909090909092" x2="14.97727272727273" y1="12.977272727272727" y2="13.977272727272728" rounding="0.0">
151.11064 + <matte red="41" green="69" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.06375685" saturationOffset="0.2793296" brightnessOffset="-0.43137255" alphaOffset="0"/>
151.11065 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11066 + </rectangle>
151.11067 + <rectangle x1="7.0" x2="8.0" y1="11.0" y2="14.0" rounding="0.0">
151.11068 + <matte red="42" green="71" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.06419912" saturationOffset="0.2793296" brightnessOffset="-0.42352942" alphaOffset="0"/>
151.11069 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11070 + </rectangle>
151.11071 + <rectangle x1="11.909090909090908" x2="12.795454545454547" y1="7.0" y2="10.954545454545455" rounding="0.0">
151.11072 + <matte red="41" green="67" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.060800627" saturationOffset="0.2793296" brightnessOffset="-0.4392157" alphaOffset="0"/>
151.11073 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11074 + </rectangle>
151.11075 + <rectangle x1="5.0227272727272725" x2="12.0" y1="9.977272727272727" y2="10.795454545454547" rounding="0.0">
151.11076 + <matte red="36" green="63" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.0675526" saturationOffset="0.2793296" brightnessOffset="-0.454902" alphaOffset="0"/>
151.11077 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11078 + </rectangle>
151.11079 + <rectangle x1="4.204545454545454" x2="5.136363636363637" y1="10.886363636363637" y2="6.9772727272727275" rounding="0.0">
151.11080 + <matte red="38" green="65" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.06535478" saturationOffset="0.2793296" brightnessOffset="-0.44705883" alphaOffset="0"/>
151.11081 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11082 + </rectangle>
151.11083 + <rectangle x1="4.113636363636363" x2="12.818181818181822" y1="5.0227272727272725" y2="6.9772727272727275" rounding="0.0">
151.11084 + <matte red="19" green="48" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.09681849" saturationOffset="0.2793296" brightnessOffset="-0.5137255" alphaOffset="0"/>
151.11085 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11086 + </rectangle>
151.11087 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.11088 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.11089 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11090 + </rectangle>
151.11091 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.11092 + <gradient cycleMethod="NO_CYCLE">
151.11093 + <stop position="0.0" midpoint="0.5">
151.11094 + <matte red="123" green="139" blue="72" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.03592503" saturationOffset="-0.23865601" brightnessOffset="-0.15686274" alphaOffset="0"/>
151.11095 + </stop>
151.11096 + <stop position="0.53977275" midpoint="0.5">
151.11097 + <matte red="74" green="96" blue="4" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.035979107" saturationOffset="0.23766291" brightnessOffset="-0.3254902" alphaOffset="0"/>
151.11098 + </stop>
151.11099 + <stop position="0.6505682" midpoint="0.5">
151.11100 + <matte red="71" green="94" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.03690417" saturationOffset="0.2793296" brightnessOffset="-0.33333334" alphaOffset="0"/>
151.11101 + </stop>
151.11102 + <stop position="1.0" midpoint="0.5">
151.11103 + <matte red="125" green="145" blue="31" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.025363803" saturationOffset="0.0655365" brightnessOffset="-0.13333333" alphaOffset="0"/>
151.11104 + </stop>
151.11105 + </gradient>
151.11106 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.11107 + </rectangle>
151.11108 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.11109 + <gradient cycleMethod="NO_CYCLE">
151.11110 + <stop position="0.0" midpoint="0.5">
151.11111 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.17054264" saturationOffset="-0.7206704" brightnessOffset="-0.7019608" alphaOffset="0"/>
151.11112 + </stop>
151.11113 + <stop position="1.0" midpoint="0.5">
151.11114 + <matte red="30" green="59" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.07804492" saturationOffset="0.2793296" brightnessOffset="-0.47058827" alphaOffset="0"/>
151.11115 + </stop>
151.11116 + </gradient>
151.11117 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.11118 + </rectangle>
151.11119 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.11120 + <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
151.11121 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11122 + </rectangle>
151.11123 + </shapes>
151.11124 + <effects/>
151.11125 + </layer>
151.11126 + <templateLayer fileName="113fbfaf2cf.png">
151.11127 + <layer name="Template" type="template">
151.11128 + <opacity>1.0</opacity>
151.11129 + <fillOpacity>1.0</fillOpacity>
151.11130 + <blendingMode>NORMAL</blendingMode>
151.11131 + <locked>false</locked>
151.11132 + <visible>false</visible>
151.11133 + <shapes/>
151.11134 + <effects/>
151.11135 + </layer>
151.11136 + </templateLayer>
151.11137 + </canvas>
151.11138 + </state>
151.11139 + <state stateKeys="Enabled+WindowNotFocused+WindowMaximized">
151.11140 + <style>
151.11141 + <textForeground/>
151.11142 + <textBackground/>
151.11143 + <background/>
151.11144 + <uiproperties/>
151.11145 + </style>
151.11146 + <canvas>
151.11147 + <size width="19" height="18"/>
151.11148 + <nextLayerNameIndex>5</nextLayerNameIndex>
151.11149 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.11150 + <layer name="Layer 1">
151.11151 + <opacity>1.0</opacity>
151.11152 + <fillOpacity>1.0</fillOpacity>
151.11153 + <blendingMode>NORMAL</blendingMode>
151.11154 + <locked>false</locked>
151.11155 + <visible>true</visible>
151.11156 + <shapes>
151.11157 + <path>
151.11158 + <matte red="100" green="103" blue="109" alpha="222" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.027957506" brightnessOffset="-0.31764707" alphaOffset="-33"/>
151.11159 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11160 + <points>
151.11161 + <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
151.11162 + <point x="13.0" y="9.0" cp1x="13.0" cp1y="9.0" cp2x="13.0" cp2y="9.0"/>
151.11163 + <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="14.0" cp2y="9.0"/>
151.11164 + <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
151.11165 + <point x="8.0" y="12.0" cp1x="8.0" cp1y="12.0" cp2x="8.0" cp2y="12.0"/>
151.11166 + <point x="8.0" y="11.0" cp1x="8.0" cp1y="11.0" cp2x="8.0" cp2y="11.0"/>
151.11167 + <point x="7.0" y="11.0" cp1x="7.0" cp1y="11.0" cp2x="7.0" cp2y="11.0"/>
151.11168 + <point x="7.0" y="13.0" cp1x="7.0" cp1y="13.0" cp2x="7.0" cp2y="13.0"/>
151.11169 + <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
151.11170 + <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
151.11171 + </points>
151.11172 + </path>
151.11173 + <path>
151.11174 + <matte red="102" green="105" blue="111" alpha="242" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.029445238" brightnessOffset="-0.30980393" alphaOffset="-13"/>
151.11175 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11176 + <points>
151.11177 + <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
151.11178 + <point x="12.0" y="4.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="4.0"/>
151.11179 + <point x="12.0" y="10.0" cp1x="12.0" cp1y="10.0" cp2x="12.0" cp2y="10.0"/>
151.11180 + <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
151.11181 + <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
151.11182 + <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
151.11183 + <point x="5.0" y="9.0" cp1x="5.0" cp1y="9.0" cp2x="5.0" cp2y="9.0"/>
151.11184 + <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
151.11185 + <point x="11.0" y="6.0" cp1x="11.0" cp1y="6.0" cp2x="11.0" cp2y="6.0"/>
151.11186 + <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
151.11187 + </points>
151.11188 + </path>
151.11189 + <rectangle x1="10.727272727272727" x2="14.954545454545457" y1="7.340909090909091" y2="9.431818181818183" rounding="0.0">
151.11190 + <matte red="185" green="189" blue="196" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.4355179" saturationOffset="-0.664548" brightnessOffset="0.06666666" alphaOffset="0"/>
151.11191 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11192 + </rectangle>
151.11193 + <rectangle x1="11.909090909090908" x2="12.795454545454547" y1="7.0" y2="10.954545454545455" rounding="0.0">
151.11194 + <matte red="181" green="185" blue="192" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.4355179" saturationOffset="-0.6633787" brightnessOffset="0.05098039" alphaOffset="0"/>
151.11195 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11196 + </rectangle>
151.11197 + <rectangle x1="5.0227272727272725" x2="12.0" y1="9.977272727272727" y2="10.795454545454547" rounding="0.0">
151.11198 + <matte red="179" green="183" blue="191" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.6578432" brightnessOffset="0.04705882" alphaOffset="0"/>
151.11199 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11200 + </rectangle>
151.11201 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.11202 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.11203 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11204 + </rectangle>
151.11205 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.11206 + <gradient cycleMethod="NO_CYCLE">
151.11207 + <stop position="0.0" midpoint="0.5">
151.11208 + <matte red="219" green="221" blue="224" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.4294573" saturationOffset="-0.698349" brightnessOffset="0.17647058" alphaOffset="0"/>
151.11209 + </stop>
151.11210 + <stop position="0.53977275" midpoint="0.5">
151.11211 + <matte red="188" green="191" blue="199" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.45066953" saturationOffset="-0.665394" brightnessOffset="0.07843137" alphaOffset="0"/>
151.11212 + </stop>
151.11213 + <stop position="0.6505682" midpoint="0.5">
151.11214 + <matte red="183" green="187" blue="195" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.65913194" brightnessOffset="0.062745094" alphaOffset="0"/>
151.11215 + </stop>
151.11216 + <stop position="1.0" midpoint="0.5">
151.11217 + <matte red="189" green="193" blue="201" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.6609689" brightnessOffset="0.086274505" alphaOffset="0"/>
151.11218 + </stop>
151.11219 + </gradient>
151.11220 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.11221 + </rectangle>
151.11222 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.11223 + <gradient cycleMethod="NO_CYCLE">
151.11224 + <stop position="0.0" midpoint="0.5">
151.11225 + <matte red="136" green="141" blue="151" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.62133265" brightnessOffset="-0.109803915" alphaOffset="0"/>
151.11226 + </stop>
151.11227 + <stop position="1.0" midpoint="0.5">
151.11228 + <matte red="95" green="100" blue="110" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.5843068" brightnessOffset="-0.27058825" alphaOffset="0"/>
151.11229 + </stop>
151.11230 + </gradient>
151.11231 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.11232 + </rectangle>
151.11233 + </shapes>
151.11234 + <effects/>
151.11235 + </layer>
151.11236 + <templateLayer fileName="113fbfe1ab1.png">
151.11237 + <layer name="Template" type="template">
151.11238 + <opacity>1.0</opacity>
151.11239 + <fillOpacity>1.0</fillOpacity>
151.11240 + <blendingMode>NORMAL</blendingMode>
151.11241 + <locked>false</locked>
151.11242 + <visible>false</visible>
151.11243 + <shapes/>
151.11244 + <effects/>
151.11245 + </layer>
151.11246 + </templateLayer>
151.11247 + </canvas>
151.11248 + </state>
151.11249 + <state stateKeys="MouseOver+WindowNotFocused+WindowMaximized">
151.11250 + <style>
151.11251 + <textForeground/>
151.11252 + <textBackground/>
151.11253 + <background/>
151.11254 + <uiproperties/>
151.11255 + </style>
151.11256 + <canvas>
151.11257 + <size width="19" height="18"/>
151.11258 + <nextLayerNameIndex>5</nextLayerNameIndex>
151.11259 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.11260 + <layer name="Layer 1">
151.11261 + <opacity>1.0</opacity>
151.11262 + <fillOpacity>1.0</fillOpacity>
151.11263 + <blendingMode>NORMAL</blendingMode>
151.11264 + <locked>false</locked>
151.11265 + <visible>true</visible>
151.11266 + <shapes>
151.11267 + <path>
151.11268 + <matte red="255" green="255" blue="255" alpha="222" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-33"/>
151.11269 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11270 + <points>
151.11271 + <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
151.11272 + <point x="13.0" y="9.0" cp1x="13.0" cp1y="9.0" cp2x="13.0" cp2y="9.0"/>
151.11273 + <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="14.0" cp2y="9.0"/>
151.11274 + <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
151.11275 + <point x="8.0" y="12.0" cp1x="8.0" cp1y="12.0" cp2x="8.0" cp2y="12.0"/>
151.11276 + <point x="8.0" y="11.0" cp1x="8.0" cp1y="11.0" cp2x="8.0" cp2y="11.0"/>
151.11277 + <point x="7.0" y="11.0" cp1x="7.0" cp1y="11.0" cp2x="7.0" cp2y="11.0"/>
151.11278 + <point x="7.0" y="13.0" cp1x="7.0" cp1y="13.0" cp2x="7.0" cp2y="13.0"/>
151.11279 + <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
151.11280 + <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
151.11281 + </points>
151.11282 + </path>
151.11283 + <path>
151.11284 + <matte red="255" green="255" blue="255" alpha="242" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-13"/>
151.11285 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11286 + <points>
151.11287 + <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
151.11288 + <point x="12.0" y="4.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="4.0"/>
151.11289 + <point x="12.0" y="10.0" cp1x="12.0" cp1y="10.0" cp2x="12.0" cp2y="10.0"/>
151.11290 + <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
151.11291 + <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
151.11292 + <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
151.11293 + <point x="5.0" y="9.0" cp1x="5.0" cp1y="9.0" cp2x="5.0" cp2y="9.0"/>
151.11294 + <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
151.11295 + <point x="11.0" y="6.0" cp1x="11.0" cp1y="6.0" cp2x="11.0" cp2y="6.0"/>
151.11296 + <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
151.11297 + </points>
151.11298 + </path>
151.11299 + <rectangle x1="10.727272727272727" x2="14.954545454545457" y1="7.340909090909091" y2="9.431818181818183" rounding="0.0">
151.11300 + <matte red="125" green="136" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009604409" saturationOffset="0.2793296" brightnessOffset="-0.16862744" alphaOffset="0"/>
151.11301 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11302 + </rectangle>
151.11303 + <rectangle x1="15.045454545454545" x2="15.863636363636363" y1="13.954545454545455" y2="7.590909090909091" rounding="0.0">
151.11304 + <matte red="129" green="140" blue="3" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009506017" saturationOffset="0.257901" brightnessOffset="-0.15294117" alphaOffset="0"/>
151.11305 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11306 + </rectangle>
151.11307 + <rectangle x1="8.340909090909092" x2="14.97727272727273" y1="12.977272727272727" y2="13.977272727272728" rounding="0.0">
151.11308 + <matte red="124" green="137" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.011939123" saturationOffset="0.2793296" brightnessOffset="-0.16470587" alphaOffset="0"/>
151.11309 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11310 + </rectangle>
151.11311 + <rectangle x1="7.25" x2="8.295454545454547" y1="11.0" y2="13.931818181818183" rounding="0.0">
151.11312 + <matte red="127" green="140" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.011600211" saturationOffset="0.2793296" brightnessOffset="-0.15294117" alphaOffset="0"/>
151.11313 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11314 + </rectangle>
151.11315 + <rectangle x1="11.909090909090908" x2="12.795454545454547" y1="7.0" y2="10.954545454545455" rounding="0.0">
151.11316 + <matte red="125" green="136" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009604409" saturationOffset="0.2793296" brightnessOffset="-0.16862744" alphaOffset="0"/>
151.11317 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11318 + </rectangle>
151.11319 + <rectangle x1="5.0227272727272725" x2="12.0" y1="9.977272727272727" y2="10.795454545454547" rounding="0.0">
151.11320 + <matte red="113" green="126" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.013319805" saturationOffset="0.2793296" brightnessOffset="-0.20784315" alphaOffset="0"/>
151.11321 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11322 + </rectangle>
151.11323 + <rectangle x1="4.204545454545454" x2="5.136363636363637" y1="10.886363636363637" y2="6.9772727272727275" rounding="0.0">
151.11324 + <matte red="117" green="130" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.01279068" saturationOffset="0.2793296" brightnessOffset="-0.19215685" alphaOffset="0"/>
151.11325 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11326 + </rectangle>
151.11327 + <rectangle x1="4.113636363636363" x2="12.818181818181822" y1="5.0227272727272725" y2="6.9772727272727275" rounding="0.0">
151.11328 + <matte red="108" green="122" blue="0" alpha="206" uiDefaultParentName="nimbusGreen" hueOffset="0.015249729" saturationOffset="0.2793296" brightnessOffset="-0.22352943" alphaOffset="-49"/>
151.11329 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11330 + </rectangle>
151.11331 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.11332 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.11333 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11334 + </rectangle>
151.11335 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.11336 + <gradient cycleMethod="NO_CYCLE">
151.11337 + <stop position="0.0" midpoint="0.5">
151.11338 + <matte red="187" green="193" blue="120" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009822637" saturationOffset="-0.34243205" brightnessOffset="0.054901958" alphaOffset="0"/>
151.11339 + </stop>
151.11340 + <stop position="0.53977275" midpoint="0.5">
151.11341 + <matte red="138" green="149" blue="22" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.010559708" saturationOffset="0.13167858" brightnessOffset="-0.11764705" alphaOffset="0"/>
151.11342 + </stop>
151.11343 + <stop position="0.6505682" midpoint="0.5">
151.11344 + <matte red="139" green="150" blue="23" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.010559708" saturationOffset="0.12599629" brightnessOffset="-0.11372548" alphaOffset="0"/>
151.11345 + </stop>
151.11346 + <stop position="1.0" midpoint="0.5">
151.11347 + <matte red="165" green="176" blue="49" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.010559708" saturationOffset="9.2053413E-4" brightnessOffset="-0.011764705" alphaOffset="0"/>
151.11348 + </stop>
151.11349 + </gradient>
151.11350 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.11351 + </rectangle>
151.11352 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.11353 + <gradient cycleMethod="NO_CYCLE">
151.11354 + <stop position="0.0" midpoint="0.5">
151.11355 + <matte red="0" green="19" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.1627907" saturationOffset="0.2793296" brightnessOffset="-0.627451" alphaOffset="0"/>
151.11356 + </stop>
151.11357 + <stop position="1.0" midpoint="0.5">
151.11358 + <matte red="59" green="84" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.04572721" saturationOffset="0.2793296" brightnessOffset="-0.37254903" alphaOffset="0"/>
151.11359 + </stop>
151.11360 + </gradient>
151.11361 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.11362 + </rectangle>
151.11363 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.11364 + <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
151.11365 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11366 + </rectangle>
151.11367 + </shapes>
151.11368 + <effects/>
151.11369 + </layer>
151.11370 + <templateLayer fileName="113fbf3eb8c.png">
151.11371 + <layer name="Template" type="template">
151.11372 + <opacity>1.0</opacity>
151.11373 + <fillOpacity>1.0</fillOpacity>
151.11374 + <blendingMode>NORMAL</blendingMode>
151.11375 + <locked>false</locked>
151.11376 + <visible>false</visible>
151.11377 + <shapes/>
151.11378 + <effects/>
151.11379 + </layer>
151.11380 + </templateLayer>
151.11381 + </canvas>
151.11382 + </state>
151.11383 + <state stateKeys="Pressed+WindowNotFocused+WindowMaximized">
151.11384 + <style>
151.11385 + <textForeground/>
151.11386 + <textBackground/>
151.11387 + <background/>
151.11388 + <uiproperties/>
151.11389 + </style>
151.11390 + <canvas>
151.11391 + <size width="19" height="18"/>
151.11392 + <nextLayerNameIndex>5</nextLayerNameIndex>
151.11393 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.11394 + <layer name="Layer 1">
151.11395 + <opacity>1.0</opacity>
151.11396 + <fillOpacity>1.0</fillOpacity>
151.11397 + <blendingMode>NORMAL</blendingMode>
151.11398 + <locked>false</locked>
151.11399 + <visible>true</visible>
151.11400 + <shapes>
151.11401 + <path>
151.11402 + <matte red="255" green="255" blue="255" alpha="222" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-33"/>
151.11403 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11404 + <points>
151.11405 + <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
151.11406 + <point x="13.0" y="9.0" cp1x="13.0" cp1y="9.0" cp2x="13.0" cp2y="9.0"/>
151.11407 + <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="14.0" cp2y="9.0"/>
151.11408 + <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
151.11409 + <point x="8.0" y="12.0" cp1x="8.0" cp1y="12.0" cp2x="8.0" cp2y="12.0"/>
151.11410 + <point x="8.0" y="11.0" cp1x="8.0" cp1y="11.0" cp2x="8.0" cp2y="11.0"/>
151.11411 + <point x="7.0" y="11.0" cp1x="7.0" cp1y="11.0" cp2x="7.0" cp2y="11.0"/>
151.11412 + <point x="7.0" y="13.0" cp1x="7.0" cp1y="13.0" cp2x="7.0" cp2y="13.0"/>
151.11413 + <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
151.11414 + <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
151.11415 + </points>
151.11416 + </path>
151.11417 + <path>
151.11418 + <matte red="255" green="255" blue="255" alpha="242" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-13"/>
151.11419 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11420 + <points>
151.11421 + <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
151.11422 + <point x="12.0" y="4.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="4.0"/>
151.11423 + <point x="12.0" y="10.0" cp1x="12.0" cp1y="10.0" cp2x="12.0" cp2y="10.0"/>
151.11424 + <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
151.11425 + <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
151.11426 + <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
151.11427 + <point x="5.0" y="9.0" cp1x="5.0" cp1y="9.0" cp2x="5.0" cp2y="9.0"/>
151.11428 + <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
151.11429 + <point x="11.0" y="6.0" cp1x="11.0" cp1y="6.0" cp2x="11.0" cp2y="6.0"/>
151.11430 + <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
151.11431 + </points>
151.11432 + </path>
151.11433 + <rectangle x1="10.727272727272727" x2="14.954545454545457" y1="7.340909090909091" y2="9.431818181818183" rounding="0.0">
151.11434 + <matte red="45" green="71" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.057156876" saturationOffset="0.2793296" brightnessOffset="-0.42352942" alphaOffset="0"/>
151.11435 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11436 + </rectangle>
151.11437 + <rectangle x1="15.045454545454545" x2="15.863636363636363" y1="13.954545454545455" y2="7.590909090909091" rounding="0.0">
151.11438 + <matte red="55" green="80" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.048207358" saturationOffset="0.2793296" brightnessOffset="-0.3882353" alphaOffset="0"/>
151.11439 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11440 + </rectangle>
151.11441 + <rectangle x1="8.340909090909092" x2="14.97727272727273" y1="12.977272727272727" y2="13.977272727272728" rounding="0.0">
151.11442 + <matte red="41" green="69" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.06375685" saturationOffset="0.2793296" brightnessOffset="-0.43137255" alphaOffset="0"/>
151.11443 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11444 + </rectangle>
151.11445 + <rectangle x1="7.0" x2="8.0" y1="11.0" y2="14.0" rounding="0.0">
151.11446 + <matte red="42" green="71" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.06419912" saturationOffset="0.2793296" brightnessOffset="-0.42352942" alphaOffset="0"/>
151.11447 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11448 + </rectangle>
151.11449 + <rectangle x1="11.909090909090908" x2="12.795454545454547" y1="7.0" y2="10.954545454545455" rounding="0.0">
151.11450 + <matte red="41" green="67" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.060800627" saturationOffset="0.2793296" brightnessOffset="-0.4392157" alphaOffset="0"/>
151.11451 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11452 + </rectangle>
151.11453 + <rectangle x1="5.0227272727272725" x2="12.0" y1="9.977272727272727" y2="10.795454545454547" rounding="0.0">
151.11454 + <matte red="36" green="63" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.0675526" saturationOffset="0.2793296" brightnessOffset="-0.454902" alphaOffset="0"/>
151.11455 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11456 + </rectangle>
151.11457 + <rectangle x1="4.204545454545454" x2="5.136363636363637" y1="10.886363636363637" y2="6.9772727272727275" rounding="0.0">
151.11458 + <matte red="38" green="65" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.06535478" saturationOffset="0.2793296" brightnessOffset="-0.44705883" alphaOffset="0"/>
151.11459 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11460 + </rectangle>
151.11461 + <rectangle x1="4.113636363636363" x2="12.818181818181822" y1="5.0227272727272725" y2="6.9772727272727275" rounding="0.0">
151.11462 + <matte red="19" green="48" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.09681849" saturationOffset="0.2793296" brightnessOffset="-0.5137255" alphaOffset="0"/>
151.11463 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11464 + </rectangle>
151.11465 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.11466 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.11467 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11468 + </rectangle>
151.11469 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.11470 + <gradient cycleMethod="NO_CYCLE">
151.11471 + <stop position="0.0" midpoint="0.5">
151.11472 + <matte red="123" green="139" blue="72" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.03592503" saturationOffset="-0.23865601" brightnessOffset="-0.15686274" alphaOffset="0"/>
151.11473 + </stop>
151.11474 + <stop position="0.53977275" midpoint="0.5">
151.11475 + <matte red="74" green="96" blue="4" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.035979107" saturationOffset="0.23766291" brightnessOffset="-0.3254902" alphaOffset="0"/>
151.11476 + </stop>
151.11477 + <stop position="0.6505682" midpoint="0.5">
151.11478 + <matte red="71" green="94" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.03690417" saturationOffset="0.2793296" brightnessOffset="-0.33333334" alphaOffset="0"/>
151.11479 + </stop>
151.11480 + <stop position="1.0" midpoint="0.5">
151.11481 + <matte red="125" green="145" blue="31" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.025363803" saturationOffset="0.0655365" brightnessOffset="-0.13333333" alphaOffset="0"/>
151.11482 + </stop>
151.11483 + </gradient>
151.11484 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.11485 + </rectangle>
151.11486 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.11487 + <gradient cycleMethod="NO_CYCLE">
151.11488 + <stop position="0.0" midpoint="0.5">
151.11489 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.17054264" saturationOffset="-0.7206704" brightnessOffset="-0.7019608" alphaOffset="0"/>
151.11490 + </stop>
151.11491 + <stop position="1.0" midpoint="0.5">
151.11492 + <matte red="30" green="59" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.07804492" saturationOffset="0.2793296" brightnessOffset="-0.47058827" alphaOffset="0"/>
151.11493 + </stop>
151.11494 + </gradient>
151.11495 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.11496 + </rectangle>
151.11497 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.11498 + <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
151.11499 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11500 + </rectangle>
151.11501 + </shapes>
151.11502 + <effects/>
151.11503 + </layer>
151.11504 + <templateLayer fileName="113fbfaf2cf.png">
151.11505 + <layer name="Template" type="template">
151.11506 + <opacity>1.0</opacity>
151.11507 + <fillOpacity>1.0</fillOpacity>
151.11508 + <blendingMode>NORMAL</blendingMode>
151.11509 + <locked>false</locked>
151.11510 + <visible>false</visible>
151.11511 + <shapes/>
151.11512 + <effects/>
151.11513 + </layer>
151.11514 + </templateLayer>
151.11515 + </canvas>
151.11516 + </state>
151.11517 + <state stateKeys="Disabled">
151.11518 + <style>
151.11519 + <textForeground/>
151.11520 + <textBackground/>
151.11521 + <background/>
151.11522 + <uiproperties/>
151.11523 + </style>
151.11524 + <canvas>
151.11525 + <size width="19" height="18"/>
151.11526 + <nextLayerNameIndex>6</nextLayerNameIndex>
151.11527 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.11528 + <layer name="Layer 5">
151.11529 + <opacity>1.0</opacity>
151.11530 + <fillOpacity>1.0</fillOpacity>
151.11531 + <blendingMode>NORMAL</blendingMode>
151.11532 + <locked>false</locked>
151.11533 + <visible>true</visible>
151.11534 + <shapes>
151.11535 + <path>
151.11536 + <gradient cycleMethod="NO_CYCLE">
151.11537 + <stop position="0.26047903" midpoint="0.5">
151.11538 + <matte red="195" green="199" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.057128258" brightnessOffset="0.062745094" alphaOffset="0"/>
151.11539 + </stop>
151.11540 + <stop position="1.0" midpoint="0.5">
151.11541 + <matte red="172" green="177" blue="186" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.003968239" saturationOffset="-0.035257496" brightnessOffset="-0.015686274" alphaOffset="0"/>
151.11542 + </stop>
151.11543 + </gradient>
151.11544 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.11545 + <points>
151.11546 + <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
151.11547 + <point x="4.0" y="13.0" cp1x="4.0" cp1y="13.0" cp2x="4.0" cp2y="13.0"/>
151.11548 + <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
151.11549 + <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
151.11550 + <point x="14.0" y="6.0" cp1x="14.0" cp1y="6.0" cp2x="14.0" cp2y="6.0"/>
151.11551 + <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
151.11552 + <point x="5.0" y="12.0" cp1x="5.0" cp1y="12.0" cp2x="5.0" cp2y="12.0"/>
151.11553 + <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
151.11554 + <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
151.11555 + <point x="15.0" y="4.0" cp1x="15.0" cp1y="4.0" cp2x="15.0" cp2y="4.0"/>
151.11556 + </points>
151.11557 + </path>
151.11558 + <path>
151.11559 + <matte red="165" green="169" blue="176" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.11560 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11561 + <points>
151.11562 + <point x="3.636363636363636" y="5.25" cp1x="3.636363636363636" cp1y="5.25" cp2x="3.636363636363636" cp2y="5.25"/>
151.11563 + <point x="3.6590909090909083" y="13.431818181818185" cp1x="3.6590909090909083" cp1y="13.431818181818185" cp2x="3.6590909090909083" cp2y="13.431818181818185"/>
151.11564 + <point x="15.500000000000004" y="13.40909090909091" cp1x="15.500000000000004" cp1y="13.40909090909091" cp2x="15.500000000000004" cp2y="13.40909090909091"/>
151.11565 + <point x="15.56818181818182" y="5.25" cp1x="15.56818181818182" cp1y="5.25" cp2x="15.56818181818182" cp2y="5.25"/>
151.11566 + <point x="13.727272727272725" y="5.25" cp1x="13.727272727272725" cp1y="5.25" cp2x="13.727272727272725" cp2y="5.25"/>
151.11567 + <point x="13.90909090909091" y="12.045454545454547" cp1x="13.90909090909091" cp1y="12.045454545454547" cp2x="13.90909090909091" cp2y="12.045454545454547"/>
151.11568 + <point x="5.318181818181818" y="11.81818181818182" cp1x="5.318181818181818" cp1y="11.81818181818182" cp2x="5.318181818181818" cp2y="11.81818181818182"/>
151.11569 + <point x="5.409090909090909" y="6.954545454545454" cp1x="5.409090909090909" cp1y="6.954545454545454" cp2x="5.409090909090909" cp2y="6.954545454545454"/>
151.11570 + <point x="13.795454545454543" y="6.931818181818181" cp1x="13.795454545454543" cp1y="6.931818181818181" cp2x="13.795454545454543" cp2y="6.931818181818181"/>
151.11571 + <point x="13.727272727272734" y="5.2272727272727275" cp1x="13.727272727272734" cp1y="5.2272727272727275" cp2x="13.727272727272734" cp2y="5.2272727272727275"/>
151.11572 + </points>
151.11573 + </path>
151.11574 + </shapes>
151.11575 + <effects/>
151.11576 + </layer>
151.11577 + <layer name="Layer 1">
151.11578 + <opacity>1.0</opacity>
151.11579 + <fillOpacity>1.0</fillOpacity>
151.11580 + <blendingMode>NORMAL</blendingMode>
151.11581 + <locked>false</locked>
151.11582 + <visible>true</visible>
151.11583 + <shapes>
151.11584 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.11585 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.11586 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11587 + </rectangle>
151.11588 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.11589 + <gradient cycleMethod="NO_CYCLE">
151.11590 + <stop position="0.0" midpoint="0.5">
151.11591 + <matte red="187" green="190" blue="196" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.67475206" brightnessOffset="0.06666666" alphaOffset="0"/>
151.11592 + </stop>
151.11593 + <stop position="0.53977275" midpoint="0.5">
151.11594 + <matte red="164" green="169" blue="177" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.43202144" saturationOffset="-0.64722407" brightnessOffset="-0.007843137" alphaOffset="0"/>
151.11595 + </stop>
151.11596 + <stop position="0.6766467" midpoint="0.5">
151.11597 + <matte red="158" green="163" blue="173" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.6339652" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.11598 + </stop>
151.11599 + <stop position="1.0" midpoint="0.5">
151.11600 + <matte red="154" green="159" blue="169" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.631913" brightnessOffset="-0.039215684" alphaOffset="0"/>
151.11601 + </stop>
151.11602 + </gradient>
151.11603 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.11604 + </rectangle>
151.11605 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.11606 + <gradient cycleMethod="NO_CYCLE">
151.11607 + <stop position="0.0" midpoint="0.5">
151.11608 + <matte red="185" green="188" blue="193" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.43362403" saturationOffset="-0.6792196" brightnessOffset="0.054901958" alphaOffset="0"/>
151.11609 + </stop>
151.11610 + <stop position="1.0" midpoint="0.5">
151.11611 + <matte red="154" green="159" blue="169" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.631913" brightnessOffset="-0.039215684" alphaOffset="0"/>
151.11612 + </stop>
151.11613 + </gradient>
151.11614 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.11615 + </rectangle>
151.11616 + </shapes>
151.11617 + <effects/>
151.11618 + </layer>
151.11619 + <templateLayer fileName="113fc0648fb.png">
151.11620 + <layer name="Template" type="template">
151.11621 + <opacity>1.0</opacity>
151.11622 + <fillOpacity>1.0</fillOpacity>
151.11623 + <blendingMode>NORMAL</blendingMode>
151.11624 + <locked>false</locked>
151.11625 + <visible>false</visible>
151.11626 + <shapes/>
151.11627 + <effects/>
151.11628 + </layer>
151.11629 + </templateLayer>
151.11630 + </canvas>
151.11631 + </state>
151.11632 + <state stateKeys="Enabled">
151.11633 + <style>
151.11634 + <textForeground/>
151.11635 + <textBackground/>
151.11636 + <background/>
151.11637 + <uiproperties/>
151.11638 + </style>
151.11639 + <canvas>
151.11640 + <size width="19" height="18"/>
151.11641 + <nextLayerNameIndex>6</nextLayerNameIndex>
151.11642 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.11643 + <layer name="Layer 5">
151.11644 + <opacity>1.0</opacity>
151.11645 + <fillOpacity>1.0</fillOpacity>
151.11646 + <blendingMode>NORMAL</blendingMode>
151.11647 + <locked>false</locked>
151.11648 + <visible>true</visible>
151.11649 + <shapes>
151.11650 + <path>
151.11651 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.11652 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11653 + <points>
151.11654 + <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
151.11655 + <point x="4.0" y="13.0" cp1x="4.0" cp1y="13.0" cp2x="4.0" cp2y="13.0"/>
151.11656 + <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
151.11657 + <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
151.11658 + <point x="14.0" y="6.0" cp1x="14.0" cp1y="6.0" cp2x="14.0" cp2y="6.0"/>
151.11659 + <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
151.11660 + <point x="5.0" y="12.0" cp1x="5.0" cp1y="12.0" cp2x="5.0" cp2y="12.0"/>
151.11661 + <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
151.11662 + <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
151.11663 + <point x="15.0" y="4.0" cp1x="15.0" cp1y="4.0" cp2x="15.0" cp2y="4.0"/>
151.11664 + </points>
151.11665 + </path>
151.11666 + <path>
151.11667 + <matte red="64" green="88" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.11668 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11669 + <points>
151.11670 + <point x="3.636363636363636" y="5.25" cp1x="3.636363636363636" cp1y="5.25" cp2x="3.636363636363636" cp2y="5.25"/>
151.11671 + <point x="3.6590909090909083" y="13.431818181818185" cp1x="3.6590909090909083" cp1y="13.431818181818185" cp2x="3.6590909090909083" cp2y="13.431818181818185"/>
151.11672 + <point x="15.500000000000004" y="13.40909090909091" cp1x="15.500000000000004" cp1y="13.40909090909091" cp2x="15.500000000000004" cp2y="13.40909090909091"/>
151.11673 + <point x="15.56818181818182" y="5.25" cp1x="15.56818181818182" cp1y="5.25" cp2x="15.56818181818182" cp2y="5.25"/>
151.11674 + <point x="13.727272727272725" y="5.25" cp1x="13.727272727272725" cp1y="5.25" cp2x="13.727272727272725" cp2y="5.25"/>
151.11675 + <point x="13.90909090909091" y="12.045454545454547" cp1x="13.90909090909091" cp1y="12.045454545454547" cp2x="13.90909090909091" cp2y="12.045454545454547"/>
151.11676 + <point x="5.318181818181818" y="11.81818181818182" cp1x="5.318181818181818" cp1y="11.81818181818182" cp2x="5.318181818181818" cp2y="11.81818181818182"/>
151.11677 + <point x="5.409090909090909" y="6.954545454545454" cp1x="5.409090909090909" cp1y="6.954545454545454" cp2x="5.409090909090909" cp2y="6.954545454545454"/>
151.11678 + <point x="13.795454545454543" y="6.931818181818181" cp1x="13.795454545454543" cp1y="6.931818181818181" cp2x="13.795454545454543" cp2y="6.931818181818181"/>
151.11679 + <point x="13.727272727272734" y="5.2272727272727275" cp1x="13.727272727272734" cp1y="5.2272727272727275" cp2x="13.727272727272734" cp2y="5.2272727272727275"/>
151.11680 + </points>
151.11681 + </path>
151.11682 + </shapes>
151.11683 + <effects/>
151.11684 + </layer>
151.11685 + <layer name="Layer 1">
151.11686 + <opacity>1.0</opacity>
151.11687 + <fillOpacity>1.0</fillOpacity>
151.11688 + <blendingMode>NORMAL</blendingMode>
151.11689 + <locked>false</locked>
151.11690 + <visible>true</visible>
151.11691 + <shapes>
151.11692 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.11693 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.11694 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11695 + </rectangle>
151.11696 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.11697 + <gradient cycleMethod="NO_CYCLE">
151.11698 + <stop position="0.0" midpoint="0.5">
151.11699 + <matte red="164" green="176" blue="110" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.02642706" saturationOffset="-0.3456704" brightnessOffset="-0.011764705" alphaOffset="0"/>
151.11700 + </stop>
151.11701 + <stop position="0.53977275" midpoint="0.5">
151.11702 + <matte red="98" green="118" blue="4" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.025363803" saturationOffset="0.2454313" brightnessOffset="-0.2392157" alphaOffset="0"/>
151.11703 + </stop>
151.11704 + <stop position="0.6505682" midpoint="0.5">
151.11705 + <matte red="99" green="119" blue="5" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.025363803" saturationOffset="0.2373128" brightnessOffset="-0.23529413" alphaOffset="0"/>
151.11706 + </stop>
151.11707 + <stop position="1.0" midpoint="0.5">
151.11708 + <matte red="125" green="145" blue="31" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.025363803" saturationOffset="0.0655365" brightnessOffset="-0.13333333" alphaOffset="0"/>
151.11709 + </stop>
151.11710 + </gradient>
151.11711 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.11712 + </rectangle>
151.11713 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.11714 + <gradient cycleMethod="NO_CYCLE">
151.11715 + <stop position="0.0" midpoint="0.5">
151.11716 + <matte red="0" green="15" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.1627907" saturationOffset="0.2793296" brightnessOffset="-0.6431373" alphaOffset="0"/>
151.11717 + </stop>
151.11718 + <stop position="1.0" midpoint="0.5">
151.11719 + <matte red="98" green="118" blue="4" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.025363803" saturationOffset="0.2454313" brightnessOffset="-0.2392157" alphaOffset="0"/>
151.11720 + </stop>
151.11721 + </gradient>
151.11722 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.11723 + </rectangle>
151.11724 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.11725 + <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
151.11726 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11727 + </rectangle>
151.11728 + </shapes>
151.11729 + <effects/>
151.11730 + </layer>
151.11731 + <templateLayer fileName="113e1feba05.png">
151.11732 + <layer name="Template" type="template">
151.11733 + <opacity>1.0</opacity>
151.11734 + <fillOpacity>1.0</fillOpacity>
151.11735 + <blendingMode>NORMAL</blendingMode>
151.11736 + <locked>false</locked>
151.11737 + <visible>false</visible>
151.11738 + <shapes/>
151.11739 + <effects/>
151.11740 + </layer>
151.11741 + </templateLayer>
151.11742 + </canvas>
151.11743 + </state>
151.11744 + <state stateKeys="MouseOver">
151.11745 + <style>
151.11746 + <textForeground/>
151.11747 + <textBackground/>
151.11748 + <background/>
151.11749 + <uiproperties/>
151.11750 + </style>
151.11751 + <canvas>
151.11752 + <size width="19" height="18"/>
151.11753 + <nextLayerNameIndex>6</nextLayerNameIndex>
151.11754 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.11755 + <layer name="Layer 5">
151.11756 + <opacity>1.0</opacity>
151.11757 + <fillOpacity>1.0</fillOpacity>
151.11758 + <blendingMode>NORMAL</blendingMode>
151.11759 + <locked>false</locked>
151.11760 + <visible>true</visible>
151.11761 + <shapes>
151.11762 + <path>
151.11763 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.11764 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11765 + <points>
151.11766 + <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
151.11767 + <point x="4.0" y="13.0" cp1x="4.0" cp1y="13.0" cp2x="4.0" cp2y="13.0"/>
151.11768 + <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
151.11769 + <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
151.11770 + <point x="14.0" y="6.0" cp1x="14.0" cp1y="6.0" cp2x="14.0" cp2y="6.0"/>
151.11771 + <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
151.11772 + <point x="5.0" y="12.0" cp1x="5.0" cp1y="12.0" cp2x="5.0" cp2y="12.0"/>
151.11773 + <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
151.11774 + <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
151.11775 + <point x="15.0" y="4.0" cp1x="15.0" cp1y="4.0" cp2x="15.0" cp2y="4.0"/>
151.11776 + </points>
151.11777 + </path>
151.11778 + <path>
151.11779 + <matte red="113" green="125" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.11780 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11781 + <points>
151.11782 + <point x="3.636363636363636" y="5.25" cp1x="3.636363636363636" cp1y="5.25" cp2x="3.636363636363636" cp2y="5.25"/>
151.11783 + <point x="3.6590909090909083" y="13.431818181818185" cp1x="3.6590909090909083" cp1y="13.431818181818185" cp2x="3.6590909090909083" cp2y="13.431818181818185"/>
151.11784 + <point x="15.500000000000004" y="13.40909090909091" cp1x="15.500000000000004" cp1y="13.40909090909091" cp2x="15.500000000000004" cp2y="13.40909090909091"/>
151.11785 + <point x="15.56818181818182" y="5.25" cp1x="15.56818181818182" cp1y="5.25" cp2x="15.56818181818182" cp2y="5.25"/>
151.11786 + <point x="13.727272727272725" y="5.25" cp1x="13.727272727272725" cp1y="5.25" cp2x="13.727272727272725" cp2y="5.25"/>
151.11787 + <point x="13.90909090909091" y="12.045454545454547" cp1x="13.90909090909091" cp1y="12.045454545454547" cp2x="13.90909090909091" cp2y="12.045454545454547"/>
151.11788 + <point x="5.318181818181818" y="11.81818181818182" cp1x="5.318181818181818" cp1y="11.81818181818182" cp2x="5.318181818181818" cp2y="11.81818181818182"/>
151.11789 + <point x="5.409090909090909" y="6.954545454545454" cp1x="5.409090909090909" cp1y="6.954545454545454" cp2x="5.409090909090909" cp2y="6.954545454545454"/>
151.11790 + <point x="13.795454545454543" y="6.931818181818181" cp1x="13.795454545454543" cp1y="6.931818181818181" cp2x="13.795454545454543" cp2y="6.931818181818181"/>
151.11791 + <point x="13.727272727272734" y="5.2272727272727275" cp1x="13.727272727272734" cp1y="5.2272727272727275" cp2x="13.727272727272734" cp2y="5.2272727272727275"/>
151.11792 + </points>
151.11793 + </path>
151.11794 + </shapes>
151.11795 + <effects/>
151.11796 + </layer>
151.11797 + <layer name="Layer 1">
151.11798 + <opacity>1.0</opacity>
151.11799 + <fillOpacity>1.0</fillOpacity>
151.11800 + <blendingMode>NORMAL</blendingMode>
151.11801 + <locked>false</locked>
151.11802 + <visible>true</visible>
151.11803 + <shapes>
151.11804 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.11805 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.11806 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11807 + </rectangle>
151.11808 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.11809 + <gradient cycleMethod="NO_CYCLE">
151.11810 + <stop position="0.0" midpoint="0.5">
151.11811 + <matte red="187" green="193" blue="120" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009822637" saturationOffset="-0.34243205" brightnessOffset="0.054901958" alphaOffset="0"/>
151.11812 + </stop>
151.11813 + <stop position="0.53977275" midpoint="0.5">
151.11814 + <matte red="141" green="151" blue="27" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009564877" saturationOffset="0.100521624" brightnessOffset="-0.109803915" alphaOffset="0"/>
151.11815 + </stop>
151.11816 + <stop position="0.6505682" midpoint="0.5">
151.11817 + <matte red="138" green="149" blue="22" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.010559708" saturationOffset="0.13167858" brightnessOffset="-0.11764705" alphaOffset="0"/>
151.11818 + </stop>
151.11819 + <stop position="1.0" midpoint="0.5">
151.11820 + <matte red="165" green="176" blue="49" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.010559708" saturationOffset="9.2053413E-4" brightnessOffset="-0.011764705" alphaOffset="0"/>
151.11821 + </stop>
151.11822 + </gradient>
151.11823 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.11824 + </rectangle>
151.11825 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.11826 + <gradient cycleMethod="NO_CYCLE">
151.11827 + <stop position="0.0" midpoint="0.5">
151.11828 + <matte red="0" green="19" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.1627907" saturationOffset="0.2793296" brightnessOffset="-0.627451" alphaOffset="0"/>
151.11829 + </stop>
151.11830 + <stop position="1.0" midpoint="0.5">
151.11831 + <matte red="59" green="84" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.04572721" saturationOffset="0.2793296" brightnessOffset="-0.37254903" alphaOffset="0"/>
151.11832 + </stop>
151.11833 + </gradient>
151.11834 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.11835 + </rectangle>
151.11836 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.11837 + <matte red="204" green="211" blue="227" alpha="154" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.004830897" saturationOffset="-0.00920473" brightnessOffset="0.14509803" alphaOffset="-101"/>
151.11838 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11839 + </rectangle>
151.11840 + </shapes>
151.11841 + <effects/>
151.11842 + </layer>
151.11843 + <templateLayer fileName="113fc0c6be3.png">
151.11844 + <layer name="Template" type="template">
151.11845 + <opacity>1.0</opacity>
151.11846 + <fillOpacity>1.0</fillOpacity>
151.11847 + <blendingMode>NORMAL</blendingMode>
151.11848 + <locked>false</locked>
151.11849 + <visible>false</visible>
151.11850 + <shapes/>
151.11851 + <effects/>
151.11852 + </layer>
151.11853 + </templateLayer>
151.11854 + </canvas>
151.11855 + </state>
151.11856 + <state stateKeys="Pressed">
151.11857 + <style>
151.11858 + <textForeground/>
151.11859 + <textBackground/>
151.11860 + <background/>
151.11861 + <uiproperties/>
151.11862 + </style>
151.11863 + <canvas>
151.11864 + <size width="19" height="18"/>
151.11865 + <nextLayerNameIndex>6</nextLayerNameIndex>
151.11866 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.11867 + <layer name="Layer 5">
151.11868 + <opacity>1.0</opacity>
151.11869 + <fillOpacity>1.0</fillOpacity>
151.11870 + <blendingMode>NORMAL</blendingMode>
151.11871 + <locked>false</locked>
151.11872 + <visible>true</visible>
151.11873 + <shapes>
151.11874 + <path>
151.11875 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.11876 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11877 + <points>
151.11878 + <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
151.11879 + <point x="4.0" y="13.0" cp1x="4.0" cp1y="13.0" cp2x="4.0" cp2y="13.0"/>
151.11880 + <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
151.11881 + <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
151.11882 + <point x="14.0" y="6.0" cp1x="14.0" cp1y="6.0" cp2x="14.0" cp2y="6.0"/>
151.11883 + <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
151.11884 + <point x="5.0" y="12.0" cp1x="5.0" cp1y="12.0" cp2x="5.0" cp2y="12.0"/>
151.11885 + <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
151.11886 + <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
151.11887 + <point x="15.0" y="4.0" cp1x="15.0" cp1y="4.0" cp2x="15.0" cp2y="4.0"/>
151.11888 + </points>
151.11889 + </path>
151.11890 + <path>
151.11891 + <matte red="19" green="48" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.11892 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11893 + <points>
151.11894 + <point x="3.636363636363636" y="5.25" cp1x="3.636363636363636" cp1y="5.25" cp2x="3.636363636363636" cp2y="5.25"/>
151.11895 + <point x="3.6590909090909083" y="13.431818181818185" cp1x="3.6590909090909083" cp1y="13.431818181818185" cp2x="3.6590909090909083" cp2y="13.431818181818185"/>
151.11896 + <point x="15.500000000000004" y="13.40909090909091" cp1x="15.500000000000004" cp1y="13.40909090909091" cp2x="15.500000000000004" cp2y="13.40909090909091"/>
151.11897 + <point x="15.56818181818182" y="5.25" cp1x="15.56818181818182" cp1y="5.25" cp2x="15.56818181818182" cp2y="5.25"/>
151.11898 + <point x="13.727272727272725" y="5.25" cp1x="13.727272727272725" cp1y="5.25" cp2x="13.727272727272725" cp2y="5.25"/>
151.11899 + <point x="13.90909090909091" y="12.045454545454547" cp1x="13.90909090909091" cp1y="12.045454545454547" cp2x="13.90909090909091" cp2y="12.045454545454547"/>
151.11900 + <point x="5.318181818181818" y="11.81818181818182" cp1x="5.318181818181818" cp1y="11.81818181818182" cp2x="5.318181818181818" cp2y="11.81818181818182"/>
151.11901 + <point x="5.409090909090909" y="6.954545454545454" cp1x="5.409090909090909" cp1y="6.954545454545454" cp2x="5.409090909090909" cp2y="6.954545454545454"/>
151.11902 + <point x="13.795454545454543" y="6.931818181818181" cp1x="13.795454545454543" cp1y="6.931818181818181" cp2x="13.795454545454543" cp2y="6.931818181818181"/>
151.11903 + <point x="13.727272727272734" y="5.2272727272727275" cp1x="13.727272727272734" cp1y="5.2272727272727275" cp2x="13.727272727272734" cp2y="5.2272727272727275"/>
151.11904 + </points>
151.11905 + </path>
151.11906 + </shapes>
151.11907 + <effects/>
151.11908 + </layer>
151.11909 + <layer name="Layer 1">
151.11910 + <opacity>1.0</opacity>
151.11911 + <fillOpacity>1.0</fillOpacity>
151.11912 + <blendingMode>NORMAL</blendingMode>
151.11913 + <locked>false</locked>
151.11914 + <visible>true</visible>
151.11915 + <shapes>
151.11916 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.11917 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.11918 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11919 + </rectangle>
151.11920 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.11921 + <gradient cycleMethod="NO_CYCLE">
151.11922 + <stop position="0.0" midpoint="0.5">
151.11923 + <matte red="123" green="139" blue="72" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.03592503" saturationOffset="-0.23865601" brightnessOffset="-0.15686274" alphaOffset="0"/>
151.11924 + </stop>
151.11925 + <stop position="0.53977275" midpoint="0.5">
151.11926 + <matte red="74" green="96" blue="4" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.035979107" saturationOffset="0.23766291" brightnessOffset="-0.3254902" alphaOffset="0"/>
151.11927 + </stop>
151.11928 + <stop position="0.79341316" midpoint="0.5">
151.11929 + <matte red="71" green="94" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.03690417" saturationOffset="0.2793296" brightnessOffset="-0.33333334" alphaOffset="0"/>
151.11930 + </stop>
151.11931 + <stop position="1.0" midpoint="0.5">
151.11932 + <matte red="86" green="109" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.03129223" saturationOffset="0.2793296" brightnessOffset="-0.27450982" alphaOffset="0"/>
151.11933 + </stop>
151.11934 + </gradient>
151.11935 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.11936 + </rectangle>
151.11937 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.11938 + <gradient cycleMethod="NO_CYCLE">
151.11939 + <stop position="0.0" midpoint="0.5">
151.11940 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.17054264" saturationOffset="-0.7206704" brightnessOffset="-0.7019608" alphaOffset="0"/>
151.11941 + </stop>
151.11942 + <stop position="1.0" midpoint="0.5">
151.11943 + <matte red="30" green="59" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.07804492" saturationOffset="0.2793296" brightnessOffset="-0.47058827" alphaOffset="0"/>
151.11944 + </stop>
151.11945 + </gradient>
151.11946 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.11947 + </rectangle>
151.11948 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.11949 + <matte red="190" green="197" blue="212" alpha="190" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0025252104" saturationOffset="-0.0067527294" brightnessOffset="0.086274505" alphaOffset="-65"/>
151.11950 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11951 + </rectangle>
151.11952 + </shapes>
151.11953 + <effects/>
151.11954 + </layer>
151.11955 + <templateLayer fileName="113fc1017c9.png">
151.11956 + <layer name="Template" type="template">
151.11957 + <opacity>1.0</opacity>
151.11958 + <fillOpacity>1.0</fillOpacity>
151.11959 + <blendingMode>NORMAL</blendingMode>
151.11960 + <locked>false</locked>
151.11961 + <visible>false</visible>
151.11962 + <shapes/>
151.11963 + <effects/>
151.11964 + </layer>
151.11965 + </templateLayer>
151.11966 + </canvas>
151.11967 + </state>
151.11968 + <state stateKeys="Enabled+WindowNotFocused">
151.11969 + <style>
151.11970 + <textForeground/>
151.11971 + <textBackground/>
151.11972 + <background/>
151.11973 + <uiproperties/>
151.11974 + </style>
151.11975 + <canvas>
151.11976 + <size width="19" height="18"/>
151.11977 + <nextLayerNameIndex>6</nextLayerNameIndex>
151.11978 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.11979 + <layer name="Layer 5">
151.11980 + <opacity>1.0</opacity>
151.11981 + <fillOpacity>1.0</fillOpacity>
151.11982 + <blendingMode>NORMAL</blendingMode>
151.11983 + <locked>false</locked>
151.11984 + <visible>true</visible>
151.11985 + <shapes>
151.11986 + <path>
151.11987 + <matte red="102" green="105" blue="111" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.029445238" brightnessOffset="-0.30980393" alphaOffset="0"/>
151.11988 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.11989 + <points>
151.11990 + <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
151.11991 + <point x="4.0" y="13.0" cp1x="4.0" cp1y="13.0" cp2x="4.0" cp2y="13.0"/>
151.11992 + <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
151.11993 + <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
151.11994 + <point x="14.0" y="6.0" cp1x="14.0" cp1y="6.0" cp2x="14.0" cp2y="6.0"/>
151.11995 + <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
151.11996 + <point x="5.0" y="12.0" cp1x="5.0" cp1y="12.0" cp2x="5.0" cp2y="12.0"/>
151.11997 + <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
151.11998 + <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
151.11999 + <point x="15.0" y="4.0" cp1x="15.0" cp1y="4.0" cp2x="15.0" cp2y="4.0"/>
151.12000 + </points>
151.12001 + </path>
151.12002 + </shapes>
151.12003 + <effects/>
151.12004 + </layer>
151.12005 + <layer name="Layer 1">
151.12006 + <opacity>1.0</opacity>
151.12007 + <fillOpacity>1.0</fillOpacity>
151.12008 + <blendingMode>NORMAL</blendingMode>
151.12009 + <locked>false</locked>
151.12010 + <visible>true</visible>
151.12011 + <shapes>
151.12012 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.12013 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.12014 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12015 + </rectangle>
151.12016 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.12017 + <gradient cycleMethod="NO_CYCLE">
151.12018 + <stop position="0.0" midpoint="0.5">
151.12019 + <matte red="219" green="221" blue="224" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.4294573" saturationOffset="-0.698349" brightnessOffset="0.17647058" alphaOffset="0"/>
151.12020 + </stop>
151.12021 + <stop position="0.53977275" midpoint="0.5">
151.12022 + <matte red="183" green="187" blue="195" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.65913194" brightnessOffset="0.062745094" alphaOffset="0"/>
151.12023 + </stop>
151.12024 + <stop position="0.7185629" midpoint="0.5">
151.12025 + <matte red="183" green="187" blue="195" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.65913194" brightnessOffset="0.062745094" alphaOffset="0"/>
151.12026 + </stop>
151.12027 + <stop position="1.0" midpoint="0.5">
151.12028 + <matte red="189" green="193" blue="201" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.6609689" brightnessOffset="0.086274505" alphaOffset="0"/>
151.12029 + </stop>
151.12030 + </gradient>
151.12031 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.12032 + </rectangle>
151.12033 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.12034 + <gradient cycleMethod="NO_CYCLE">
151.12035 + <stop position="0.0" midpoint="0.5">
151.12036 + <matte red="136" green="141" blue="151" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.62133265" brightnessOffset="-0.109803915" alphaOffset="0"/>
151.12037 + </stop>
151.12038 + <stop position="1.0" midpoint="0.5">
151.12039 + <matte red="95" green="100" blue="110" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.44056845" saturationOffset="-0.5843068" brightnessOffset="-0.27058825" alphaOffset="0"/>
151.12040 + </stop>
151.12041 + </gradient>
151.12042 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.12043 + </rectangle>
151.12044 + </shapes>
151.12045 + <effects/>
151.12046 + </layer>
151.12047 + <templateLayer fileName="113fc12e4cb.png">
151.12048 + <layer name="Template" type="template">
151.12049 + <opacity>1.0</opacity>
151.12050 + <fillOpacity>1.0</fillOpacity>
151.12051 + <blendingMode>NORMAL</blendingMode>
151.12052 + <locked>false</locked>
151.12053 + <visible>false</visible>
151.12054 + <shapes/>
151.12055 + <effects/>
151.12056 + </layer>
151.12057 + </templateLayer>
151.12058 + </canvas>
151.12059 + </state>
151.12060 + <state stateKeys="MouseOver+WindowNotFocused">
151.12061 + <style>
151.12062 + <textForeground/>
151.12063 + <textBackground/>
151.12064 + <background/>
151.12065 + <uiproperties/>
151.12066 + </style>
151.12067 + <canvas>
151.12068 + <size width="19" height="18"/>
151.12069 + <nextLayerNameIndex>6</nextLayerNameIndex>
151.12070 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.12071 + <layer name="Layer 5">
151.12072 + <opacity>1.0</opacity>
151.12073 + <fillOpacity>1.0</fillOpacity>
151.12074 + <blendingMode>NORMAL</blendingMode>
151.12075 + <locked>false</locked>
151.12076 + <visible>true</visible>
151.12077 + <shapes>
151.12078 + <path>
151.12079 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.12080 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12081 + <points>
151.12082 + <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
151.12083 + <point x="4.0" y="13.0" cp1x="4.0" cp1y="13.0" cp2x="4.0" cp2y="13.0"/>
151.12084 + <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
151.12085 + <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
151.12086 + <point x="14.0" y="6.0" cp1x="14.0" cp1y="6.0" cp2x="14.0" cp2y="6.0"/>
151.12087 + <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
151.12088 + <point x="5.0" y="12.0" cp1x="5.0" cp1y="12.0" cp2x="5.0" cp2y="12.0"/>
151.12089 + <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
151.12090 + <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
151.12091 + <point x="15.0" y="4.0" cp1x="15.0" cp1y="4.0" cp2x="15.0" cp2y="4.0"/>
151.12092 + </points>
151.12093 + </path>
151.12094 + <path>
151.12095 + <matte red="113" green="125" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.12096 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12097 + <points>
151.12098 + <point x="3.636363636363636" y="5.25" cp1x="3.636363636363636" cp1y="5.25" cp2x="3.636363636363636" cp2y="5.25"/>
151.12099 + <point x="3.6590909090909083" y="13.431818181818185" cp1x="3.6590909090909083" cp1y="13.431818181818185" cp2x="3.6590909090909083" cp2y="13.431818181818185"/>
151.12100 + <point x="15.500000000000004" y="13.40909090909091" cp1x="15.500000000000004" cp1y="13.40909090909091" cp2x="15.500000000000004" cp2y="13.40909090909091"/>
151.12101 + <point x="15.56818181818182" y="5.25" cp1x="15.56818181818182" cp1y="5.25" cp2x="15.56818181818182" cp2y="5.25"/>
151.12102 + <point x="13.727272727272725" y="5.25" cp1x="13.727272727272725" cp1y="5.25" cp2x="13.727272727272725" cp2y="5.25"/>
151.12103 + <point x="13.90909090909091" y="12.045454545454547" cp1x="13.90909090909091" cp1y="12.045454545454547" cp2x="13.90909090909091" cp2y="12.045454545454547"/>
151.12104 + <point x="5.318181818181818" y="11.81818181818182" cp1x="5.318181818181818" cp1y="11.81818181818182" cp2x="5.318181818181818" cp2y="11.81818181818182"/>
151.12105 + <point x="5.409090909090909" y="6.954545454545454" cp1x="5.409090909090909" cp1y="6.954545454545454" cp2x="5.409090909090909" cp2y="6.954545454545454"/>
151.12106 + <point x="13.795454545454543" y="6.931818181818181" cp1x="13.795454545454543" cp1y="6.931818181818181" cp2x="13.795454545454543" cp2y="6.931818181818181"/>
151.12107 + <point x="13.727272727272734" y="5.2272727272727275" cp1x="13.727272727272734" cp1y="5.2272727272727275" cp2x="13.727272727272734" cp2y="5.2272727272727275"/>
151.12108 + </points>
151.12109 + </path>
151.12110 + </shapes>
151.12111 + <effects/>
151.12112 + </layer>
151.12113 + <layer name="Layer 1">
151.12114 + <opacity>1.0</opacity>
151.12115 + <fillOpacity>1.0</fillOpacity>
151.12116 + <blendingMode>NORMAL</blendingMode>
151.12117 + <locked>false</locked>
151.12118 + <visible>true</visible>
151.12119 + <shapes>
151.12120 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.12121 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.12122 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12123 + </rectangle>
151.12124 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.12125 + <gradient cycleMethod="NO_CYCLE">
151.12126 + <stop position="0.0" midpoint="0.5">
151.12127 + <matte red="187" green="193" blue="120" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009822637" saturationOffset="-0.34243205" brightnessOffset="0.054901958" alphaOffset="0"/>
151.12128 + </stop>
151.12129 + <stop position="0.53977275" midpoint="0.5">
151.12130 + <matte red="141" green="151" blue="27" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.009564877" saturationOffset="0.100521624" brightnessOffset="-0.109803915" alphaOffset="0"/>
151.12131 + </stop>
151.12132 + <stop position="0.6505682" midpoint="0.5">
151.12133 + <matte red="138" green="149" blue="22" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.010559708" saturationOffset="0.13167858" brightnessOffset="-0.11764705" alphaOffset="0"/>
151.12134 + </stop>
151.12135 + <stop position="1.0" midpoint="0.5">
151.12136 + <matte red="165" green="176" blue="49" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.010559708" saturationOffset="9.2053413E-4" brightnessOffset="-0.011764705" alphaOffset="0"/>
151.12137 + </stop>
151.12138 + </gradient>
151.12139 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.12140 + </rectangle>
151.12141 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.12142 + <gradient cycleMethod="NO_CYCLE">
151.12143 + <stop position="0.0" midpoint="0.5">
151.12144 + <matte red="0" green="19" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.1627907" saturationOffset="0.2793296" brightnessOffset="-0.627451" alphaOffset="0"/>
151.12145 + </stop>
151.12146 + <stop position="1.0" midpoint="0.5">
151.12147 + <matte red="59" green="84" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.04572721" saturationOffset="0.2793296" brightnessOffset="-0.37254903" alphaOffset="0"/>
151.12148 + </stop>
151.12149 + </gradient>
151.12150 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.12151 + </rectangle>
151.12152 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.12153 + <matte red="204" green="211" blue="227" alpha="154" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.004830897" saturationOffset="-0.00920473" brightnessOffset="0.14509803" alphaOffset="-101"/>
151.12154 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12155 + </rectangle>
151.12156 + </shapes>
151.12157 + <effects/>
151.12158 + </layer>
151.12159 + <templateLayer fileName="113fc0c6be3.png">
151.12160 + <layer name="Template" type="template">
151.12161 + <opacity>1.0</opacity>
151.12162 + <fillOpacity>1.0</fillOpacity>
151.12163 + <blendingMode>NORMAL</blendingMode>
151.12164 + <locked>false</locked>
151.12165 + <visible>false</visible>
151.12166 + <shapes/>
151.12167 + <effects/>
151.12168 + </layer>
151.12169 + </templateLayer>
151.12170 + </canvas>
151.12171 + </state>
151.12172 + <state stateKeys="Pressed+WindowNotFocused">
151.12173 + <style>
151.12174 + <textForeground/>
151.12175 + <textBackground/>
151.12176 + <background/>
151.12177 + <uiproperties/>
151.12178 + </style>
151.12179 + <canvas>
151.12180 + <size width="19" height="18"/>
151.12181 + <nextLayerNameIndex>6</nextLayerNameIndex>
151.12182 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.12183 + <layer name="Layer 5">
151.12184 + <opacity>1.0</opacity>
151.12185 + <fillOpacity>1.0</fillOpacity>
151.12186 + <blendingMode>NORMAL</blendingMode>
151.12187 + <locked>false</locked>
151.12188 + <visible>true</visible>
151.12189 + <shapes>
151.12190 + <path>
151.12191 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.12192 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12193 + <points>
151.12194 + <point x="4.0" y="4.0" cp1x="4.0" cp1y="4.0" cp2x="4.0" cp2y="4.0"/>
151.12195 + <point x="4.0" y="13.0" cp1x="4.0" cp1y="13.0" cp2x="4.0" cp2y="13.0"/>
151.12196 + <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
151.12197 + <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
151.12198 + <point x="14.0" y="6.0" cp1x="14.0" cp1y="6.0" cp2x="14.0" cp2y="6.0"/>
151.12199 + <point x="14.0" y="12.0" cp1x="14.0" cp1y="12.0" cp2x="14.0" cp2y="12.0"/>
151.12200 + <point x="5.0" y="12.0" cp1x="5.0" cp1y="12.0" cp2x="5.0" cp2y="12.0"/>
151.12201 + <point x="5.0" y="6.0" cp1x="5.0" cp1y="6.0" cp2x="5.0" cp2y="6.0"/>
151.12202 + <point x="15.0" y="6.0" cp1x="15.0" cp1y="6.0" cp2x="15.0" cp2y="6.0"/>
151.12203 + <point x="15.0" y="4.0" cp1x="15.0" cp1y="4.0" cp2x="15.0" cp2y="4.0"/>
151.12204 + </points>
151.12205 + </path>
151.12206 + <path>
151.12207 + <matte red="19" green="48" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.12208 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12209 + <points>
151.12210 + <point x="3.636363636363636" y="5.25" cp1x="3.636363636363636" cp1y="5.25" cp2x="3.636363636363636" cp2y="5.25"/>
151.12211 + <point x="3.6590909090909083" y="13.431818181818185" cp1x="3.6590909090909083" cp1y="13.431818181818185" cp2x="3.6590909090909083" cp2y="13.431818181818185"/>
151.12212 + <point x="15.500000000000004" y="13.40909090909091" cp1x="15.500000000000004" cp1y="13.40909090909091" cp2x="15.500000000000004" cp2y="13.40909090909091"/>
151.12213 + <point x="15.56818181818182" y="5.25" cp1x="15.56818181818182" cp1y="5.25" cp2x="15.56818181818182" cp2y="5.25"/>
151.12214 + <point x="13.727272727272725" y="5.25" cp1x="13.727272727272725" cp1y="5.25" cp2x="13.727272727272725" cp2y="5.25"/>
151.12215 + <point x="13.90909090909091" y="12.045454545454547" cp1x="13.90909090909091" cp1y="12.045454545454547" cp2x="13.90909090909091" cp2y="12.045454545454547"/>
151.12216 + <point x="5.318181818181818" y="11.81818181818182" cp1x="5.318181818181818" cp1y="11.81818181818182" cp2x="5.318181818181818" cp2y="11.81818181818182"/>
151.12217 + <point x="5.409090909090909" y="6.954545454545454" cp1x="5.409090909090909" cp1y="6.954545454545454" cp2x="5.409090909090909" cp2y="6.954545454545454"/>
151.12218 + <point x="13.795454545454543" y="6.931818181818181" cp1x="13.795454545454543" cp1y="6.931818181818181" cp2x="13.795454545454543" cp2y="6.931818181818181"/>
151.12219 + <point x="13.727272727272734" y="5.2272727272727275" cp1x="13.727272727272734" cp1y="5.2272727272727275" cp2x="13.727272727272734" cp2y="5.2272727272727275"/>
151.12220 + </points>
151.12221 + </path>
151.12222 + </shapes>
151.12223 + <effects/>
151.12224 + </layer>
151.12225 + <layer name="Layer 1">
151.12226 + <opacity>1.0</opacity>
151.12227 + <fillOpacity>1.0</fillOpacity>
151.12228 + <blendingMode>NORMAL</blendingMode>
151.12229 + <locked>false</locked>
151.12230 + <visible>true</visible>
151.12231 + <shapes>
151.12232 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.12233 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.12234 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12235 + </rectangle>
151.12236 + <rectangle x1="1.0" x2="18.0" y1="1.0" y2="16.0" rounding="6.749999999999993">
151.12237 + <gradient cycleMethod="NO_CYCLE">
151.12238 + <stop position="0.0" midpoint="0.5">
151.12239 + <matte red="123" green="139" blue="72" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.03592503" saturationOffset="-0.23865601" brightnessOffset="-0.15686274" alphaOffset="0"/>
151.12240 + </stop>
151.12241 + <stop position="0.53977275" midpoint="0.5">
151.12242 + <matte red="74" green="96" blue="4" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.035979107" saturationOffset="0.23766291" brightnessOffset="-0.3254902" alphaOffset="0"/>
151.12243 + </stop>
151.12244 + <stop position="0.79341316" midpoint="0.5">
151.12245 + <matte red="71" green="94" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.03690417" saturationOffset="0.2793296" brightnessOffset="-0.33333334" alphaOffset="0"/>
151.12246 + </stop>
151.12247 + <stop position="1.0" midpoint="0.5">
151.12248 + <matte red="86" green="109" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.03129223" saturationOffset="0.2793296" brightnessOffset="-0.27450982" alphaOffset="0"/>
151.12249 + </stop>
151.12250 + </gradient>
151.12251 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.12252 + </rectangle>
151.12253 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.12254 + <gradient cycleMethod="NO_CYCLE">
151.12255 + <stop position="0.0" midpoint="0.5">
151.12256 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="-0.17054264" saturationOffset="-0.7206704" brightnessOffset="-0.7019608" alphaOffset="0"/>
151.12257 + </stop>
151.12258 + <stop position="1.0" midpoint="0.5">
151.12259 + <matte red="30" green="59" blue="0" alpha="255" uiDefaultParentName="nimbusGreen" hueOffset="0.07804492" saturationOffset="0.2793296" brightnessOffset="-0.47058827" alphaOffset="0"/>
151.12260 + </stop>
151.12261 + </gradient>
151.12262 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.12263 + </rectangle>
151.12264 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.12265 + <matte red="190" green="197" blue="212" alpha="190" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0025252104" saturationOffset="-0.0067527294" brightnessOffset="0.086274505" alphaOffset="-65"/>
151.12266 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12267 + </rectangle>
151.12268 + </shapes>
151.12269 + <effects/>
151.12270 + </layer>
151.12271 + <templateLayer fileName="113fc1017c9.png">
151.12272 + <layer name="Template" type="template">
151.12273 + <opacity>1.0</opacity>
151.12274 + <fillOpacity>1.0</fillOpacity>
151.12275 + <blendingMode>NORMAL</blendingMode>
151.12276 + <locked>false</locked>
151.12277 + <visible>false</visible>
151.12278 + <shapes/>
151.12279 + <effects/>
151.12280 + </layer>
151.12281 + </templateLayer>
151.12282 + </canvas>
151.12283 + </state>
151.12284 + </backgroundStates>
151.12285 + <foregroundStates/>
151.12286 + <borderStates/>
151.12287 + <regions/>
151.12288 + </uiComponent>
151.12289 + <uiComponent opaque="false" componentName="InternalFrameTitlePane.closeButton" type="javax.swing.JButton" name="Button" ui="ButtonUI" subregion="true">
151.12290 + <stateTypes>
151.12291 + <stateType key="Enabled"/>
151.12292 + <stateType key="MouseOver"/>
151.12293 + <stateType key="Pressed"/>
151.12294 + <stateType key="Disabled"/>
151.12295 + <stateType key="Focused"/>
151.12296 + <stateType key="Selected"/>
151.12297 + <stateType key="WindowNotFocused">
151.12298 + <codeSnippet><![CDATA[
151.12299 + Component parent = c;
151.12300 + while (parent.getParent() != null) {
151.12301 + if (parent instanceof JInternalFrame) {
151.12302 + break;
151.12303 + }
151.12304 + parent = parent.getParent();
151.12305 + }
151.12306 + if (parent instanceof JInternalFrame) {
151.12307 + return !(((JInternalFrame)parent).isSelected());
151.12308 + }
151.12309 + return false;]]></codeSnippet>
151.12310 + </stateType>
151.12311 + </stateTypes>
151.12312 + <contentMargins top="9" bottom="9" left="9" right="9"/>
151.12313 + <style>
151.12314 + <textForeground/>
151.12315 + <textBackground/>
151.12316 + <background/>
151.12317 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.12318 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.12319 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.12320 + <uiproperties/>
151.12321 + </style>
151.12322 + <backgroundStates>
151.12323 + <state stateKeys="Disabled">
151.12324 + <style>
151.12325 + <textForeground/>
151.12326 + <textBackground/>
151.12327 + <background/>
151.12328 + <uiproperties/>
151.12329 + </style>
151.12330 + <canvas>
151.12331 + <size width="19" height="18"/>
151.12332 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.12333 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.12334 + <layer name="Layer 3">
151.12335 + <opacity>1.0</opacity>
151.12336 + <fillOpacity>1.0</fillOpacity>
151.12337 + <blendingMode>NORMAL</blendingMode>
151.12338 + <locked>false</locked>
151.12339 + <visible>true</visible>
151.12340 + <shapes>
151.12341 + <path>
151.12342 + <matte red="198" green="201" blue="208" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.062449392" brightnessOffset="0.07058823" alphaOffset="0"/>
151.12343 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12344 + <points>
151.12345 + <point x="4.886363636363638" y="5.09090909090909" cp1x="4.886363636363638" cp1y="5.09090909090909" cp2x="4.886363636363638" cp2y="5.09090909090909"/>
151.12346 + <point x="6.113636363636362" y="3.84090909090909" cp1x="6.113636363636362" cp1y="3.84090909090909" cp2x="6.113636363636362" cp2y="3.84090909090909"/>
151.12347 + <point x="9.5" y="7.272727272727275" cp1x="9.5" cp1y="7.272727272727275" cp2x="9.5" cp2y="7.272727272727275"/>
151.12348 + <point x="12.795454545454541" y="3.7954545454545436" cp1x="12.795454545454541" cp1y="3.7954545454545436" cp2x="12.795454545454541" cp2y="3.7954545454545436"/>
151.12349 + <point x="14.13636363636364" y="5.136363636363635" cp1x="14.13636363636364" cp1y="5.136363636363635" cp2x="14.13636363636364" cp2y="5.136363636363635"/>
151.12350 + <point x="10.772727272727279" y="8.477272727272728" cp1x="10.772727272727279" cp1y="8.477272727272728" cp2x="10.772727272727279" cp2y="8.477272727272728"/>
151.12351 + <point x="14.227272727272732" y="11.749999999999996" cp1x="14.227272727272732" cp1y="11.749999999999996" cp2x="14.227272727272732" cp2y="11.749999999999996"/>
151.12352 + <point x="12.795454545454543" y="13.31818181818182" cp1x="12.795454545454543" cp1y="13.31818181818182" cp2x="12.795454545454543" cp2y="13.31818181818182"/>
151.12353 + <point x="9.477272727272725" y="9.749999999999993" cp1x="9.477272727272725" cp1y="9.749999999999993" cp2x="9.477272727272725" cp2y="9.749999999999993"/>
151.12354 + <point x="6.295454545454543" y="13.36363636363637" cp1x="6.295454545454543" cp1y="13.36363636363637" cp2x="6.295454545454543" cp2y="13.36363636363637"/>
151.12355 + <point x="4.795454545454548" y="11.818181818181813" cp1x="4.795454545454548" cp1y="11.818181818181813" cp2x="4.795454545454548" cp2y="11.818181818181813"/>
151.12356 + <point x="8.295454545454541" y="8.499999999999998" cp1x="8.295454545454541" cp1y="8.499999999999998" cp2x="8.295454545454541" cp2y="8.499999999999998"/>
151.12357 + </points>
151.12358 + </path>
151.12359 + <path>
151.12360 + <matte red="152" green="156" blue="165" alpha="133" uiDefaultParentName="nimbusRed" hueOffset="0.6005698" saturationOffset="-0.7200287" brightnessOffset="-0.015686274" alphaOffset="-122"/>
151.12361 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12362 + <points>
151.12363 + <point x="4.749999999999998" y="13.27272727272728" cp1x="4.749999999999998" cp1y="13.27272727272728" cp2x="4.749999999999998" cp2y="13.27272727272728"/>
151.12364 + <point x="5.704545454545453" y="14.295454545454552" cp1x="5.704545454545453" cp1y="14.295454545454552" cp2x="5.704545454545453" cp2y="14.295454545454552"/>
151.12365 + <point x="9.590909090909095" y="10.636363636363644" cp1x="9.590909090909095" cp1y="10.636363636363644" cp2x="9.590909090909095" cp2y="10.636363636363644"/>
151.12366 + <point x="13.000000000000005" y="14.318181818181825" cp1x="13.000000000000005" cp1y="14.318181818181825" cp2x="13.000000000000005" cp2y="14.318181818181825"/>
151.12367 + <point x="14.431818181818185" y="12.954545454545462" cp1x="14.431818181818185" cp1y="12.954545454545462" cp2x="14.431818181818185" cp2y="12.954545454545462"/>
151.12368 + <point x="11.318181818181822" y="9.431818181818189" cp1x="11.318181818181822" cp1y="9.431818181818189" cp2x="11.318181818181822" cp2y="9.431818181818189"/>
151.12369 + <point x="14.318181818181822" y="6.136363636363636" cp1x="14.318181818181822" cp1y="6.136363636363636" cp2x="14.318181818181822" cp2y="6.136363636363636"/>
151.12370 + <point x="12.977272727272732" y="4.5681818181818175" cp1x="12.977272727272732" cp1y="4.5681818181818175" cp2x="12.977272727272732" cp2y="4.5681818181818175"/>
151.12371 + <point x="9.659090909090912" y="7.931818181818182" cp1x="9.659090909090912" cp1y="7.931818181818182" cp2x="9.659090909090912" cp2y="7.931818181818182"/>
151.12372 + <point x="6.272727272727272" y="4.613636363636363" cp1x="6.272727272727272" cp1y="4.613636363636363" cp2x="6.272727272727272" cp2y="4.613636363636363"/>
151.12373 + <point x="4.886363636363635" y="5.977272727272727" cp1x="4.886363636363635" cp1y="5.977272727272727" cp2x="4.886363636363635" cp2y="5.977272727272727"/>
151.12374 + <point x="8.113636363636365" y="9.454545454545467" cp1x="8.113636363636365" cp1y="9.454545454545467" cp2x="8.113636363636365" cp2y="9.454545454545467"/>
151.12375 + </points>
151.12376 + </path>
151.12377 + </shapes>
151.12378 + <effects/>
151.12379 + </layer>
151.12380 + <layer name="Layer 1">
151.12381 + <opacity>1.0</opacity>
151.12382 + <fillOpacity>1.0</fillOpacity>
151.12383 + <blendingMode>NORMAL</blendingMode>
151.12384 + <locked>false</locked>
151.12385 + <visible>true</visible>
151.12386 + <shapes>
151.12387 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.12388 + <gradient cycleMethod="NO_CYCLE">
151.12389 + <stop position="0.0" midpoint="0.5">
151.12390 + <matte red="185" green="188" blue="193" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="0.5893519" saturationOffset="-0.75736576" brightnessOffset="0.09411764" alphaOffset="0"/>
151.12391 + </stop>
151.12392 + <stop position="1.0" midpoint="0.5">
151.12393 + <matte red="154" green="159" blue="169" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="0.5962963" saturationOffset="-0.71005917" brightnessOffset="0.0" alphaOffset="0"/>
151.12394 + </stop>
151.12395 + </gradient>
151.12396 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.12397 + </rectangle>
151.12398 + </shapes>
151.12399 + <effects/>
151.12400 + </layer>
151.12401 + <templateLayer fileName="113fc2cb661.png">
151.12402 + <layer name="Template" type="template">
151.12403 + <opacity>1.0</opacity>
151.12404 + <fillOpacity>1.0</fillOpacity>
151.12405 + <blendingMode>NORMAL</blendingMode>
151.12406 + <locked>false</locked>
151.12407 + <visible>false</visible>
151.12408 + <shapes/>
151.12409 + <effects/>
151.12410 + </layer>
151.12411 + </templateLayer>
151.12412 + </canvas>
151.12413 + </state>
151.12414 + <state stateKeys="Enabled">
151.12415 + <style>
151.12416 + <textForeground/>
151.12417 + <textBackground/>
151.12418 + <background/>
151.12419 + <uiproperties/>
151.12420 + </style>
151.12421 + <canvas>
151.12422 + <size width="19" height="18"/>
151.12423 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.12424 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.12425 + <layer name="Layer 3">
151.12426 + <opacity>1.0</opacity>
151.12427 + <fillOpacity>1.0</fillOpacity>
151.12428 + <blendingMode>NORMAL</blendingMode>
151.12429 + <locked>false</locked>
151.12430 + <visible>true</visible>
151.12431 + <shapes>
151.12432 + <path>
151.12433 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.12434 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12435 + <points>
151.12436 + <point x="4.886363636363638" y="5.09090909090909" cp1x="4.886363636363638" cp1y="5.09090909090909" cp2x="4.886363636363638" cp2y="5.09090909090909"/>
151.12437 + <point x="6.113636363636362" y="3.84090909090909" cp1x="6.113636363636362" cp1y="3.84090909090909" cp2x="6.113636363636362" cp2y="3.84090909090909"/>
151.12438 + <point x="9.5" y="7.272727272727275" cp1x="9.5" cp1y="7.272727272727275" cp2x="9.5" cp2y="7.272727272727275"/>
151.12439 + <point x="12.795454545454541" y="3.7954545454545436" cp1x="12.795454545454541" cp1y="3.7954545454545436" cp2x="12.795454545454541" cp2y="3.7954545454545436"/>
151.12440 + <point x="14.13636363636364" y="5.136363636363635" cp1x="14.13636363636364" cp1y="5.136363636363635" cp2x="14.13636363636364" cp2y="5.136363636363635"/>
151.12441 + <point x="10.772727272727279" y="8.477272727272728" cp1x="10.772727272727279" cp1y="8.477272727272728" cp2x="10.772727272727279" cp2y="8.477272727272728"/>
151.12442 + <point x="14.227272727272732" y="11.749999999999996" cp1x="14.227272727272732" cp1y="11.749999999999996" cp2x="14.227272727272732" cp2y="11.749999999999996"/>
151.12443 + <point x="12.795454545454543" y="13.31818181818182" cp1x="12.795454545454543" cp1y="13.31818181818182" cp2x="12.795454545454543" cp2y="13.31818181818182"/>
151.12444 + <point x="9.477272727272725" y="9.749999999999993" cp1x="9.477272727272725" cp1y="9.749999999999993" cp2x="9.477272727272725" cp2y="9.749999999999993"/>
151.12445 + <point x="6.295454545454543" y="13.36363636363637" cp1x="6.295454545454543" cp1y="13.36363636363637" cp2x="6.295454545454543" cp2y="13.36363636363637"/>
151.12446 + <point x="4.795454545454548" y="11.818181818181813" cp1x="4.795454545454548" cp1y="11.818181818181813" cp2x="4.795454545454548" cp2y="11.818181818181813"/>
151.12447 + <point x="8.295454545454541" y="8.499999999999998" cp1x="8.295454545454541" cp1y="8.499999999999998" cp2x="8.295454545454541" cp2y="8.499999999999998"/>
151.12448 + </points>
151.12449 + </path>
151.12450 + <path>
151.12451 + <matte red="71" green="21" blue="14" alpha="133" uiDefaultParentName="nimbusRed" hueOffset="0.0056530247" saturationOffset="0.0040003657" brightnessOffset="-0.38431373" alphaOffset="-122"/>
151.12452 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12453 + <points>
151.12454 + <point x="4.749999999999998" y="13.27272727272728" cp1x="4.749999999999998" cp1y="13.27272727272728" cp2x="4.749999999999998" cp2y="13.27272727272728"/>
151.12455 + <point x="5.704545454545453" y="14.295454545454552" cp1x="5.704545454545453" cp1y="14.295454545454552" cp2x="5.704545454545453" cp2y="14.295454545454552"/>
151.12456 + <point x="9.590909090909095" y="10.636363636363644" cp1x="9.590909090909095" cp1y="10.636363636363644" cp2x="9.590909090909095" cp2y="10.636363636363644"/>
151.12457 + <point x="13.000000000000005" y="14.318181818181825" cp1x="13.000000000000005" cp1y="14.318181818181825" cp2x="13.000000000000005" cp2y="14.318181818181825"/>
151.12458 + <point x="14.431818181818185" y="12.954545454545462" cp1x="14.431818181818185" cp1y="12.954545454545462" cp2x="14.431818181818185" cp2y="12.954545454545462"/>
151.12459 + <point x="11.318181818181822" y="9.431818181818189" cp1x="11.318181818181822" cp1y="9.431818181818189" cp2x="11.318181818181822" cp2y="9.431818181818189"/>
151.12460 + <point x="14.318181818181822" y="6.136363636363636" cp1x="14.318181818181822" cp1y="6.136363636363636" cp2x="14.318181818181822" cp2y="6.136363636363636"/>
151.12461 + <point x="12.977272727272732" y="4.5681818181818175" cp1x="12.977272727272732" cp1y="4.5681818181818175" cp2x="12.977272727272732" cp2y="4.5681818181818175"/>
151.12462 + <point x="9.659090909090912" y="7.931818181818182" cp1x="9.659090909090912" cp1y="7.931818181818182" cp2x="9.659090909090912" cp2y="7.931818181818182"/>
151.12463 + <point x="6.272727272727272" y="4.613636363636363" cp1x="6.272727272727272" cp1y="4.613636363636363" cp2x="6.272727272727272" cp2y="4.613636363636363"/>
151.12464 + <point x="4.886363636363635" y="5.977272727272727" cp1x="4.886363636363635" cp1y="5.977272727272727" cp2x="4.886363636363635" cp2y="5.977272727272727"/>
151.12465 + <point x="8.113636363636365" y="9.454545454545467" cp1x="8.113636363636365" cp1y="9.454545454545467" cp2x="8.113636363636365" cp2y="9.454545454545467"/>
151.12466 + </points>
151.12467 + </path>
151.12468 + </shapes>
151.12469 + <effects/>
151.12470 + </layer>
151.12471 + <layer name="Layer 1">
151.12472 + <opacity>1.0</opacity>
151.12473 + <fillOpacity>1.0</fillOpacity>
151.12474 + <blendingMode>NORMAL</blendingMode>
151.12475 + <locked>false</locked>
151.12476 + <visible>true</visible>
151.12477 + <shapes>
151.12478 + <rectangle x1="1.0" x2="18.0" y1="0.9545454545454546" y2="15.954545454545455" rounding="6.749999999999993">
151.12479 + <gradient cycleMethod="NO_CYCLE">
151.12480 + <stop position="0.0" midpoint="0.5">
151.12481 + <matte red="199" green="121" blue="113" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="6.890595E-4" saturationOffset="-0.36665577" brightnessOffset="0.11764705" alphaOffset="0"/>
151.12482 + </stop>
151.12483 + <stop position="0.53977275" midpoint="0.5">
151.12484 + <matte red="161" green="28" blue="16" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.001021713" saturationOffset="0.101804554" brightnessOffset="-0.031372547" alphaOffset="0"/>
151.12485 + </stop>
151.12486 + <stop position="0.6505682" midpoint="0.5">
151.12487 + <matte red="160" green="24" blue="11" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-2.7342606E-4" saturationOffset="0.13243341" brightnessOffset="-0.035294116" alphaOffset="0"/>
151.12488 + </stop>
151.12489 + <stop position="1.0" midpoint="0.5">
151.12490 + <matte red="186" green="50" blue="37" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-2.7342606E-4" saturationOffset="0.002258718" brightnessOffset="0.06666666" alphaOffset="0"/>
151.12491 + </stop>
151.12492 + </gradient>
151.12493 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.12494 + </rectangle>
151.12495 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.12496 + <gradient cycleMethod="NO_CYCLE">
151.12497 + <stop position="0.0" midpoint="0.5">
151.12498 + <matte red="56" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.4431373" alphaOffset="0"/>
151.12499 + </stop>
151.12500 + <stop position="1.0" midpoint="0.5">
151.12501 + <matte red="159" green="23" blue="10" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-2.7342606E-4" saturationOffset="0.13829035" brightnessOffset="-0.039215684" alphaOffset="0"/>
151.12502 + </stop>
151.12503 + </gradient>
151.12504 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.12505 + </rectangle>
151.12506 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.12507 + <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
151.12508 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12509 + </rectangle>
151.12510 + </shapes>
151.12511 + <effects/>
151.12512 + </layer>
151.12513 + <templateLayer fileName="113e1ff5a78.png">
151.12514 + <layer name="Template" type="template">
151.12515 + <opacity>1.0</opacity>
151.12516 + <fillOpacity>1.0</fillOpacity>
151.12517 + <blendingMode>NORMAL</blendingMode>
151.12518 + <locked>false</locked>
151.12519 + <visible>false</visible>
151.12520 + <shapes/>
151.12521 + <effects/>
151.12522 + </layer>
151.12523 + </templateLayer>
151.12524 + </canvas>
151.12525 + </state>
151.12526 + <state stateKeys="MouseOver">
151.12527 + <style>
151.12528 + <textForeground/>
151.12529 + <textBackground/>
151.12530 + <background/>
151.12531 + <uiproperties/>
151.12532 + </style>
151.12533 + <canvas>
151.12534 + <size width="19" height="18"/>
151.12535 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.12536 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.12537 + <layer name="Layer 3">
151.12538 + <opacity>1.0</opacity>
151.12539 + <fillOpacity>1.0</fillOpacity>
151.12540 + <blendingMode>NORMAL</blendingMode>
151.12541 + <locked>false</locked>
151.12542 + <visible>true</visible>
151.12543 + <shapes>
151.12544 + <path>
151.12545 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.12546 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12547 + <points>
151.12548 + <point x="4.886363636363638" y="5.09090909090909" cp1x="4.886363636363638" cp1y="5.09090909090909" cp2x="4.886363636363638" cp2y="5.09090909090909"/>
151.12549 + <point x="6.113636363636362" y="3.84090909090909" cp1x="6.113636363636362" cp1y="3.84090909090909" cp2x="6.113636363636362" cp2y="3.84090909090909"/>
151.12550 + <point x="9.5" y="7.272727272727275" cp1x="9.5" cp1y="7.272727272727275" cp2x="9.5" cp2y="7.272727272727275"/>
151.12551 + <point x="12.795454545454541" y="3.7954545454545436" cp1x="12.795454545454541" cp1y="3.7954545454545436" cp2x="12.795454545454541" cp2y="3.7954545454545436"/>
151.12552 + <point x="14.13636363636364" y="5.136363636363635" cp1x="14.13636363636364" cp1y="5.136363636363635" cp2x="14.13636363636364" cp2y="5.136363636363635"/>
151.12553 + <point x="10.772727272727279" y="8.477272727272728" cp1x="10.772727272727279" cp1y="8.477272727272728" cp2x="10.772727272727279" cp2y="8.477272727272728"/>
151.12554 + <point x="14.227272727272732" y="11.749999999999996" cp1x="14.227272727272732" cp1y="11.749999999999996" cp2x="14.227272727272732" cp2y="11.749999999999996"/>
151.12555 + <point x="12.795454545454543" y="13.31818181818182" cp1x="12.795454545454543" cp1y="13.31818181818182" cp2x="12.795454545454543" cp2y="13.31818181818182"/>
151.12556 + <point x="9.477272727272725" y="9.749999999999993" cp1x="9.477272727272725" cp1y="9.749999999999993" cp2x="9.477272727272725" cp2y="9.749999999999993"/>
151.12557 + <point x="6.295454545454543" y="13.36363636363637" cp1x="6.295454545454543" cp1y="13.36363636363637" cp2x="6.295454545454543" cp2y="13.36363636363637"/>
151.12558 + <point x="4.795454545454548" y="11.818181818181813" cp1x="4.795454545454548" cp1y="11.818181818181813" cp2x="4.795454545454548" cp2y="11.818181818181813"/>
151.12559 + <point x="8.295454545454541" y="8.499999999999998" cp1x="8.295454545454541" cp1y="8.499999999999998" cp2x="8.295454545454541" cp2y="8.499999999999998"/>
151.12560 + </points>
151.12561 + </path>
151.12562 + <path>
151.12563 + <matte red="170" green="0" blue="0" alpha="133" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="0.0039215684" alphaOffset="-122"/>
151.12564 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12565 + <points>
151.12566 + <point x="4.749999999999998" y="13.27272727272728" cp1x="4.749999999999998" cp1y="13.27272727272728" cp2x="4.749999999999998" cp2y="13.27272727272728"/>
151.12567 + <point x="5.704545454545453" y="14.295454545454552" cp1x="5.704545454545453" cp1y="14.295454545454552" cp2x="5.704545454545453" cp2y="14.295454545454552"/>
151.12568 + <point x="9.590909090909095" y="10.636363636363644" cp1x="9.590909090909095" cp1y="10.636363636363644" cp2x="9.590909090909095" cp2y="10.636363636363644"/>
151.12569 + <point x="13.000000000000005" y="14.318181818181825" cp1x="13.000000000000005" cp1y="14.318181818181825" cp2x="13.000000000000005" cp2y="14.318181818181825"/>
151.12570 + <point x="14.431818181818185" y="12.954545454545462" cp1x="14.431818181818185" cp1y="12.954545454545462" cp2x="14.431818181818185" cp2y="12.954545454545462"/>
151.12571 + <point x="11.318181818181822" y="9.431818181818189" cp1x="11.318181818181822" cp1y="9.431818181818189" cp2x="11.318181818181822" cp2y="9.431818181818189"/>
151.12572 + <point x="14.318181818181822" y="6.136363636363636" cp1x="14.318181818181822" cp1y="6.136363636363636" cp2x="14.318181818181822" cp2y="6.136363636363636"/>
151.12573 + <point x="12.977272727272732" y="4.5681818181818175" cp1x="12.977272727272732" cp1y="4.5681818181818175" cp2x="12.977272727272732" cp2y="4.5681818181818175"/>
151.12574 + <point x="9.659090909090912" y="7.931818181818182" cp1x="9.659090909090912" cp1y="7.931818181818182" cp2x="9.659090909090912" cp2y="7.931818181818182"/>
151.12575 + <point x="6.272727272727272" y="4.613636363636363" cp1x="6.272727272727272" cp1y="4.613636363636363" cp2x="6.272727272727272" cp2y="4.613636363636363"/>
151.12576 + <point x="4.886363636363635" y="5.977272727272727" cp1x="4.886363636363635" cp1y="5.977272727272727" cp2x="4.886363636363635" cp2y="5.977272727272727"/>
151.12577 + <point x="8.113636363636365" y="9.454545454545467" cp1x="8.113636363636365" cp1y="9.454545454545467" cp2x="8.113636363636365" cp2y="9.454545454545467"/>
151.12578 + </points>
151.12579 + </path>
151.12580 + </shapes>
151.12581 + <effects/>
151.12582 + </layer>
151.12583 + <layer name="Layer 1">
151.12584 + <opacity>1.0</opacity>
151.12585 + <fillOpacity>1.0</fillOpacity>
151.12586 + <blendingMode>NORMAL</blendingMode>
151.12587 + <locked>false</locked>
151.12588 + <visible>true</visible>
151.12589 + <shapes>
151.12590 + <rectangle x1="1.0" x2="18.0" y1="0.9318181818181819" y2="15.931818181818182" rounding="6.749999999999993">
151.12591 + <gradient cycleMethod="NO_CYCLE">
151.12592 + <stop position="0.0" midpoint="0.5">
151.12593 + <matte red="210" green="132" blue="124" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="6.890595E-4" saturationOffset="-0.38929275" brightnessOffset="0.1607843" alphaOffset="0"/>
151.12594 + </stop>
151.12595 + <stop position="0.53977275" midpoint="0.5">
151.12596 + <matte red="180" green="47" blue="34" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="2.537202E-5" saturationOffset="0.012294531" brightnessOffset="0.043137252" alphaOffset="0"/>
151.12597 + </stop>
151.12598 + <stop position="0.6505682" midpoint="0.5">
151.12599 + <matte red="179" green="43" blue="30" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-2.7342606E-4" saturationOffset="0.033585668" brightnessOffset="0.039215684" alphaOffset="0"/>
151.12600 + </stop>
151.12601 + <stop position="0.97904193" midpoint="0.5">
151.12602 + <matte red="205" green="69" blue="56" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-2.7342606E-4" saturationOffset="-0.07198727" brightnessOffset="0.14117646" alphaOffset="0"/>
151.12603 + </stop>
151.12604 + </gradient>
151.12605 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.12606 + </rectangle>
151.12607 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.12608 + <gradient cycleMethod="NO_CYCLE">
151.12609 + <stop position="0.0" midpoint="0.5">
151.12610 + <matte red="70" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.3882353" alphaOffset="0"/>
151.12611 + </stop>
151.12612 + <stop position="1.0" midpoint="0.5">
151.12613 + <matte red="135" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.13333333" alphaOffset="0"/>
151.12614 + </stop>
151.12615 + </gradient>
151.12616 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.12617 + </rectangle>
151.12618 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.12619 + <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
151.12620 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12621 + </rectangle>
151.12622 + </shapes>
151.12623 + <effects/>
151.12624 + </layer>
151.12625 + <templateLayer fileName="113fc301011.png">
151.12626 + <layer name="Template" type="template">
151.12627 + <opacity>1.0</opacity>
151.12628 + <fillOpacity>1.0</fillOpacity>
151.12629 + <blendingMode>NORMAL</blendingMode>
151.12630 + <locked>false</locked>
151.12631 + <visible>false</visible>
151.12632 + <shapes/>
151.12633 + <effects/>
151.12634 + </layer>
151.12635 + </templateLayer>
151.12636 + </canvas>
151.12637 + </state>
151.12638 + <state stateKeys="Pressed">
151.12639 + <style>
151.12640 + <textForeground/>
151.12641 + <textBackground/>
151.12642 + <background/>
151.12643 + <uiproperties/>
151.12644 + </style>
151.12645 + <canvas>
151.12646 + <size width="19" height="18"/>
151.12647 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.12648 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.12649 + <layer name="Layer 3">
151.12650 + <opacity>1.0</opacity>
151.12651 + <fillOpacity>1.0</fillOpacity>
151.12652 + <blendingMode>NORMAL</blendingMode>
151.12653 + <locked>false</locked>
151.12654 + <visible>true</visible>
151.12655 + <shapes>
151.12656 + <path>
151.12657 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.12658 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12659 + <points>
151.12660 + <point x="4.886363636363638" y="5.09090909090909" cp1x="4.886363636363638" cp1y="5.09090909090909" cp2x="4.886363636363638" cp2y="5.09090909090909"/>
151.12661 + <point x="6.113636363636362" y="3.84090909090909" cp1x="6.113636363636362" cp1y="3.84090909090909" cp2x="6.113636363636362" cp2y="3.84090909090909"/>
151.12662 + <point x="9.5" y="7.272727272727275" cp1x="9.5" cp1y="7.272727272727275" cp2x="9.5" cp2y="7.272727272727275"/>
151.12663 + <point x="12.795454545454541" y="3.7954545454545436" cp1x="12.795454545454541" cp1y="3.7954545454545436" cp2x="12.795454545454541" cp2y="3.7954545454545436"/>
151.12664 + <point x="14.13636363636364" y="5.136363636363635" cp1x="14.13636363636364" cp1y="5.136363636363635" cp2x="14.13636363636364" cp2y="5.136363636363635"/>
151.12665 + <point x="10.772727272727279" y="8.477272727272728" cp1x="10.772727272727279" cp1y="8.477272727272728" cp2x="10.772727272727279" cp2y="8.477272727272728"/>
151.12666 + <point x="14.227272727272732" y="11.749999999999996" cp1x="14.227272727272732" cp1y="11.749999999999996" cp2x="14.227272727272732" cp2y="11.749999999999996"/>
151.12667 + <point x="12.795454545454543" y="13.31818181818182" cp1x="12.795454545454543" cp1y="13.31818181818182" cp2x="12.795454545454543" cp2y="13.31818181818182"/>
151.12668 + <point x="9.477272727272725" y="9.749999999999993" cp1x="9.477272727272725" cp1y="9.749999999999993" cp2x="9.477272727272725" cp2y="9.749999999999993"/>
151.12669 + <point x="6.295454545454543" y="13.36363636363637" cp1x="6.295454545454543" cp1y="13.36363636363637" cp2x="6.295454545454543" cp2y="13.36363636363637"/>
151.12670 + <point x="4.795454545454548" y="11.818181818181813" cp1x="4.795454545454548" cp1y="11.818181818181813" cp2x="4.795454545454548" cp2y="11.818181818181813"/>
151.12671 + <point x="8.295454545454541" y="8.499999999999998" cp1x="8.295454545454541" cp1y="8.499999999999998" cp2x="8.295454545454541" cp2y="8.499999999999998"/>
151.12672 + </points>
151.12673 + </path>
151.12674 + <path>
151.12675 + <matte red="88" green="0" blue="0" alpha="133" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.31764707" alphaOffset="-122"/>
151.12676 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12677 + <points>
151.12678 + <point x="4.749999999999998" y="13.27272727272728" cp1x="4.749999999999998" cp1y="13.27272727272728" cp2x="4.749999999999998" cp2y="13.27272727272728"/>
151.12679 + <point x="5.704545454545453" y="14.295454545454552" cp1x="5.704545454545453" cp1y="14.295454545454552" cp2x="5.704545454545453" cp2y="14.295454545454552"/>
151.12680 + <point x="9.590909090909095" y="10.636363636363644" cp1x="9.590909090909095" cp1y="10.636363636363644" cp2x="9.590909090909095" cp2y="10.636363636363644"/>
151.12681 + <point x="13.000000000000005" y="14.318181818181825" cp1x="13.000000000000005" cp1y="14.318181818181825" cp2x="13.000000000000005" cp2y="14.318181818181825"/>
151.12682 + <point x="14.431818181818185" y="12.954545454545462" cp1x="14.431818181818185" cp1y="12.954545454545462" cp2x="14.431818181818185" cp2y="12.954545454545462"/>
151.12683 + <point x="11.318181818181822" y="9.431818181818189" cp1x="11.318181818181822" cp1y="9.431818181818189" cp2x="11.318181818181822" cp2y="9.431818181818189"/>
151.12684 + <point x="14.318181818181822" y="6.136363636363636" cp1x="14.318181818181822" cp1y="6.136363636363636" cp2x="14.318181818181822" cp2y="6.136363636363636"/>
151.12685 + <point x="12.977272727272732" y="4.5681818181818175" cp1x="12.977272727272732" cp1y="4.5681818181818175" cp2x="12.977272727272732" cp2y="4.5681818181818175"/>
151.12686 + <point x="9.659090909090912" y="7.931818181818182" cp1x="9.659090909090912" cp1y="7.931818181818182" cp2x="9.659090909090912" cp2y="7.931818181818182"/>
151.12687 + <point x="6.272727272727272" y="4.613636363636363" cp1x="6.272727272727272" cp1y="4.613636363636363" cp2x="6.272727272727272" cp2y="4.613636363636363"/>
151.12688 + <point x="4.886363636363635" y="5.977272727272727" cp1x="4.886363636363635" cp1y="5.977272727272727" cp2x="4.886363636363635" cp2y="5.977272727272727"/>
151.12689 + <point x="8.113636363636365" y="9.454545454545467" cp1x="8.113636363636365" cp1y="9.454545454545467" cp2x="8.113636363636365" cp2y="9.454545454545467"/>
151.12690 + </points>
151.12691 + </path>
151.12692 + </shapes>
151.12693 + <effects/>
151.12694 + </layer>
151.12695 + <layer name="Layer 1">
151.12696 + <opacity>1.0</opacity>
151.12697 + <fillOpacity>1.0</fillOpacity>
151.12698 + <blendingMode>NORMAL</blendingMode>
151.12699 + <locked>false</locked>
151.12700 + <visible>true</visible>
151.12701 + <shapes>
151.12702 + <rectangle x1="1.0" x2="18.0" y1="0.9545454545454546" y2="15.954545454545455" rounding="6.749999999999993">
151.12703 + <gradient cycleMethod="NO_CYCLE">
151.12704 + <stop position="0.0" midpoint="0.5">
151.12705 + <matte red="174" green="72" blue="72" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="-0.21260965" brightnessOffset="0.019607842" alphaOffset="0"/>
151.12706 + </stop>
151.12707 + <stop position="0.53977275" midpoint="0.5">
151.12708 + <matte red="144" green="4" blue="4" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.17340565" brightnessOffset="-0.09803921" alphaOffset="0"/>
151.12709 + </stop>
151.12710 + <stop position="0.6505682" midpoint="0.5">
151.12711 + <matte red="142" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.10588235" alphaOffset="0"/>
151.12712 + </stop>
151.12713 + <stop position="0.98203593" midpoint="0.5">
151.12714 + <matte red="157" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.04705882" alphaOffset="0"/>
151.12715 + </stop>
151.12716 + </gradient>
151.12717 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.12718 + </rectangle>
151.12719 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.12720 + <gradient cycleMethod="NO_CYCLE">
151.12721 + <stop position="0.0" midpoint="0.5">
151.12722 + <matte red="43" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.49411768" alphaOffset="0"/>
151.12723 + </stop>
151.12724 + <stop position="1.0" midpoint="0.5">
151.12725 + <matte red="117" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.20392159" alphaOffset="0"/>
151.12726 + </stop>
151.12727 + </gradient>
151.12728 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.12729 + </rectangle>
151.12730 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.12731 + <matte red="255" green="255" blue="255" alpha="115" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-140"/>
151.12732 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12733 + </rectangle>
151.12734 + </shapes>
151.12735 + <effects/>
151.12736 + </layer>
151.12737 + <templateLayer fileName="113fc32c397.png">
151.12738 + <layer name="Template" type="template">
151.12739 + <opacity>1.0</opacity>
151.12740 + <fillOpacity>1.0</fillOpacity>
151.12741 + <blendingMode>NORMAL</blendingMode>
151.12742 + <locked>false</locked>
151.12743 + <visible>false</visible>
151.12744 + <shapes/>
151.12745 + <effects/>
151.12746 + </layer>
151.12747 + </templateLayer>
151.12748 + </canvas>
151.12749 + </state>
151.12750 + <state stateKeys="Enabled+WindowNotFocused">
151.12751 + <style>
151.12752 + <textForeground/>
151.12753 + <textBackground/>
151.12754 + <background/>
151.12755 + <uiproperties/>
151.12756 + </style>
151.12757 + <canvas>
151.12758 + <size width="19" height="18"/>
151.12759 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.12760 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.12761 + <layer name="Layer 3">
151.12762 + <opacity>1.0</opacity>
151.12763 + <fillOpacity>1.0</fillOpacity>
151.12764 + <blendingMode>NORMAL</blendingMode>
151.12765 + <locked>false</locked>
151.12766 + <visible>true</visible>
151.12767 + <shapes>
151.12768 + <path>
151.12769 + <matte red="100" green="103" blue="109" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.027957506" brightnessOffset="-0.31764707" alphaOffset="0"/>
151.12770 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12771 + <points>
151.12772 + <point x="4.886363636363638" y="5.09090909090909" cp1x="4.886363636363638" cp1y="5.09090909090909" cp2x="4.886363636363638" cp2y="5.09090909090909"/>
151.12773 + <point x="6.113636363636362" y="3.84090909090909" cp1x="6.113636363636362" cp1y="3.84090909090909" cp2x="6.113636363636362" cp2y="3.84090909090909"/>
151.12774 + <point x="9.5" y="7.272727272727275" cp1x="9.5" cp1y="7.272727272727275" cp2x="9.5" cp2y="7.272727272727275"/>
151.12775 + <point x="12.795454545454541" y="3.7954545454545436" cp1x="12.795454545454541" cp1y="3.7954545454545436" cp2x="12.795454545454541" cp2y="3.7954545454545436"/>
151.12776 + <point x="14.13636363636364" y="5.136363636363635" cp1x="14.13636363636364" cp1y="5.136363636363635" cp2x="14.13636363636364" cp2y="5.136363636363635"/>
151.12777 + <point x="10.772727272727279" y="8.477272727272728" cp1x="10.772727272727279" cp1y="8.477272727272728" cp2x="10.772727272727279" cp2y="8.477272727272728"/>
151.12778 + <point x="14.227272727272732" y="11.749999999999996" cp1x="14.227272727272732" cp1y="11.749999999999996" cp2x="14.227272727272732" cp2y="11.749999999999996"/>
151.12779 + <point x="12.795454545454543" y="13.31818181818182" cp1x="12.795454545454543" cp1y="13.31818181818182" cp2x="12.795454545454543" cp2y="13.31818181818182"/>
151.12780 + <point x="9.477272727272725" y="9.749999999999993" cp1x="9.477272727272725" cp1y="9.749999999999993" cp2x="9.477272727272725" cp2y="9.749999999999993"/>
151.12781 + <point x="6.295454545454543" y="13.36363636363637" cp1x="6.295454545454543" cp1y="13.36363636363637" cp2x="6.295454545454543" cp2y="13.36363636363637"/>
151.12782 + <point x="4.795454545454548" y="11.818181818181813" cp1x="4.795454545454548" cp1y="11.818181818181813" cp2x="4.795454545454548" cp2y="11.818181818181813"/>
151.12783 + <point x="8.295454545454541" y="8.499999999999998" cp1x="8.295454545454541" cp1y="8.499999999999998" cp2x="8.295454545454541" cp2y="8.499999999999998"/>
151.12784 + </points>
151.12785 + </path>
151.12786 + </shapes>
151.12787 + <effects/>
151.12788 + </layer>
151.12789 + <layer name="Layer 1">
151.12790 + <opacity>1.0</opacity>
151.12791 + <fillOpacity>1.0</fillOpacity>
151.12792 + <blendingMode>NORMAL</blendingMode>
151.12793 + <locked>false</locked>
151.12794 + <visible>true</visible>
151.12795 + <shapes>
151.12796 + <rectangle x1="1.0" x2="18.0" y1="0.9545454545454546" y2="15.954545454545455" rounding="6.749999999999993">
151.12797 + <gradient cycleMethod="NO_CYCLE">
151.12798 + <stop position="0.0" midpoint="0.5">
151.12799 + <matte red="219" green="221" blue="224" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="0.58518517" saturationOffset="-0.77649516" brightnessOffset="0.21568626" alphaOffset="0"/>
151.12800 + </stop>
151.12801 + <stop position="0.48203593" midpoint="0.5">
151.12802 + <matte red="183" green="187" blue="195" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="0.5962963" saturationOffset="-0.7372781" brightnessOffset="0.10196078" alphaOffset="0"/>
151.12803 + </stop>
151.12804 + <stop position="0.6856288" midpoint="0.5">
151.12805 + <matte red="183" green="187" blue="195" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="0.5962963" saturationOffset="-0.7372781" brightnessOffset="0.10196078" alphaOffset="0"/>
151.12806 + </stop>
151.12807 + <stop position="1.0" midpoint="0.5">
151.12808 + <matte red="189" green="193" blue="201" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="0.5962963" saturationOffset="-0.73911506" brightnessOffset="0.12549019" alphaOffset="0"/>
151.12809 + </stop>
151.12810 + </gradient>
151.12811 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.12812 + </rectangle>
151.12813 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.12814 + <gradient cycleMethod="NO_CYCLE">
151.12815 + <stop position="0.0" midpoint="0.5">
151.12816 + <matte red="136" green="141" blue="151" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="0.5962963" saturationOffset="-0.6994788" brightnessOffset="-0.07058823" alphaOffset="0"/>
151.12817 + </stop>
151.12818 + <stop position="1.0" midpoint="0.5">
151.12819 + <matte red="95" green="100" blue="110" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="0.5962963" saturationOffset="-0.66245294" brightnessOffset="-0.23137257" alphaOffset="0"/>
151.12820 + </stop>
151.12821 + </gradient>
151.12822 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.12823 + </rectangle>
151.12824 + </shapes>
151.12825 + <effects/>
151.12826 + </layer>
151.12827 + <templateLayer fileName="113fc34f80e.png">
151.12828 + <layer name="Template" type="template">
151.12829 + <opacity>1.0</opacity>
151.12830 + <fillOpacity>1.0</fillOpacity>
151.12831 + <blendingMode>NORMAL</blendingMode>
151.12832 + <locked>false</locked>
151.12833 + <visible>false</visible>
151.12834 + <shapes/>
151.12835 + <effects/>
151.12836 + </layer>
151.12837 + </templateLayer>
151.12838 + </canvas>
151.12839 + </state>
151.12840 + <state stateKeys="MouseOver+WindowNotFocused">
151.12841 + <style>
151.12842 + <textForeground/>
151.12843 + <textBackground/>
151.12844 + <background/>
151.12845 + <uiproperties/>
151.12846 + </style>
151.12847 + <canvas>
151.12848 + <size width="19" height="18"/>
151.12849 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.12850 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.12851 + <layer name="Layer 3">
151.12852 + <opacity>1.0</opacity>
151.12853 + <fillOpacity>1.0</fillOpacity>
151.12854 + <blendingMode>NORMAL</blendingMode>
151.12855 + <locked>false</locked>
151.12856 + <visible>true</visible>
151.12857 + <shapes>
151.12858 + <path>
151.12859 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.12860 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12861 + <points>
151.12862 + <point x="4.886363636363638" y="5.09090909090909" cp1x="4.886363636363638" cp1y="5.09090909090909" cp2x="4.886363636363638" cp2y="5.09090909090909"/>
151.12863 + <point x="6.113636363636362" y="3.84090909090909" cp1x="6.113636363636362" cp1y="3.84090909090909" cp2x="6.113636363636362" cp2y="3.84090909090909"/>
151.12864 + <point x="9.5" y="7.272727272727275" cp1x="9.5" cp1y="7.272727272727275" cp2x="9.5" cp2y="7.272727272727275"/>
151.12865 + <point x="12.795454545454541" y="3.7954545454545436" cp1x="12.795454545454541" cp1y="3.7954545454545436" cp2x="12.795454545454541" cp2y="3.7954545454545436"/>
151.12866 + <point x="14.13636363636364" y="5.136363636363635" cp1x="14.13636363636364" cp1y="5.136363636363635" cp2x="14.13636363636364" cp2y="5.136363636363635"/>
151.12867 + <point x="10.772727272727279" y="8.477272727272728" cp1x="10.772727272727279" cp1y="8.477272727272728" cp2x="10.772727272727279" cp2y="8.477272727272728"/>
151.12868 + <point x="14.227272727272732" y="11.749999999999996" cp1x="14.227272727272732" cp1y="11.749999999999996" cp2x="14.227272727272732" cp2y="11.749999999999996"/>
151.12869 + <point x="12.795454545454543" y="13.31818181818182" cp1x="12.795454545454543" cp1y="13.31818181818182" cp2x="12.795454545454543" cp2y="13.31818181818182"/>
151.12870 + <point x="9.477272727272725" y="9.749999999999993" cp1x="9.477272727272725" cp1y="9.749999999999993" cp2x="9.477272727272725" cp2y="9.749999999999993"/>
151.12871 + <point x="6.295454545454543" y="13.36363636363637" cp1x="6.295454545454543" cp1y="13.36363636363637" cp2x="6.295454545454543" cp2y="13.36363636363637"/>
151.12872 + <point x="4.795454545454548" y="11.818181818181813" cp1x="4.795454545454548" cp1y="11.818181818181813" cp2x="4.795454545454548" cp2y="11.818181818181813"/>
151.12873 + <point x="8.295454545454541" y="8.499999999999998" cp1x="8.295454545454541" cp1y="8.499999999999998" cp2x="8.295454545454541" cp2y="8.499999999999998"/>
151.12874 + </points>
151.12875 + </path>
151.12876 + <path>
151.12877 + <matte red="170" green="0" blue="0" alpha="133" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="0.0039215684" alphaOffset="-122"/>
151.12878 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12879 + <points>
151.12880 + <point x="4.749999999999998" y="13.27272727272728" cp1x="4.749999999999998" cp1y="13.27272727272728" cp2x="4.749999999999998" cp2y="13.27272727272728"/>
151.12881 + <point x="5.704545454545453" y="14.295454545454552" cp1x="5.704545454545453" cp1y="14.295454545454552" cp2x="5.704545454545453" cp2y="14.295454545454552"/>
151.12882 + <point x="9.590909090909095" y="10.636363636363644" cp1x="9.590909090909095" cp1y="10.636363636363644" cp2x="9.590909090909095" cp2y="10.636363636363644"/>
151.12883 + <point x="13.000000000000005" y="14.318181818181825" cp1x="13.000000000000005" cp1y="14.318181818181825" cp2x="13.000000000000005" cp2y="14.318181818181825"/>
151.12884 + <point x="14.431818181818185" y="12.954545454545462" cp1x="14.431818181818185" cp1y="12.954545454545462" cp2x="14.431818181818185" cp2y="12.954545454545462"/>
151.12885 + <point x="11.318181818181822" y="9.431818181818189" cp1x="11.318181818181822" cp1y="9.431818181818189" cp2x="11.318181818181822" cp2y="9.431818181818189"/>
151.12886 + <point x="14.318181818181822" y="6.136363636363636" cp1x="14.318181818181822" cp1y="6.136363636363636" cp2x="14.318181818181822" cp2y="6.136363636363636"/>
151.12887 + <point x="12.977272727272732" y="4.5681818181818175" cp1x="12.977272727272732" cp1y="4.5681818181818175" cp2x="12.977272727272732" cp2y="4.5681818181818175"/>
151.12888 + <point x="9.659090909090912" y="7.931818181818182" cp1x="9.659090909090912" cp1y="7.931818181818182" cp2x="9.659090909090912" cp2y="7.931818181818182"/>
151.12889 + <point x="6.272727272727272" y="4.613636363636363" cp1x="6.272727272727272" cp1y="4.613636363636363" cp2x="6.272727272727272" cp2y="4.613636363636363"/>
151.12890 + <point x="4.886363636363635" y="5.977272727272727" cp1x="4.886363636363635" cp1y="5.977272727272727" cp2x="4.886363636363635" cp2y="5.977272727272727"/>
151.12891 + <point x="8.113636363636365" y="9.454545454545467" cp1x="8.113636363636365" cp1y="9.454545454545467" cp2x="8.113636363636365" cp2y="9.454545454545467"/>
151.12892 + </points>
151.12893 + </path>
151.12894 + </shapes>
151.12895 + <effects/>
151.12896 + </layer>
151.12897 + <layer name="Layer 1">
151.12898 + <opacity>1.0</opacity>
151.12899 + <fillOpacity>1.0</fillOpacity>
151.12900 + <blendingMode>NORMAL</blendingMode>
151.12901 + <locked>false</locked>
151.12902 + <visible>true</visible>
151.12903 + <shapes>
151.12904 + <rectangle x1="1.0" x2="18.0" y1="0.9318181818181819" y2="15.931818181818182" rounding="6.749999999999993">
151.12905 + <gradient cycleMethod="NO_CYCLE">
151.12906 + <stop position="0.0" midpoint="0.5">
151.12907 + <matte red="210" green="132" blue="124" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="6.890595E-4" saturationOffset="-0.38929275" brightnessOffset="0.1607843" alphaOffset="0"/>
151.12908 + </stop>
151.12909 + <stop position="0.53977275" midpoint="0.5">
151.12910 + <matte red="180" green="47" blue="34" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="2.537202E-5" saturationOffset="0.012294531" brightnessOffset="0.043137252" alphaOffset="0"/>
151.12911 + </stop>
151.12912 + <stop position="0.6505682" midpoint="0.5">
151.12913 + <matte red="179" green="43" blue="30" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-2.7342606E-4" saturationOffset="0.033585668" brightnessOffset="0.039215684" alphaOffset="0"/>
151.12914 + </stop>
151.12915 + <stop position="0.97904193" midpoint="0.5">
151.12916 + <matte red="205" green="69" blue="56" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-2.7342606E-4" saturationOffset="-0.07198727" brightnessOffset="0.14117646" alphaOffset="0"/>
151.12917 + </stop>
151.12918 + </gradient>
151.12919 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.12920 + </rectangle>
151.12921 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.12922 + <gradient cycleMethod="NO_CYCLE">
151.12923 + <stop position="0.0" midpoint="0.5">
151.12924 + <matte red="70" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.3882353" alphaOffset="0"/>
151.12925 + </stop>
151.12926 + <stop position="1.0" midpoint="0.5">
151.12927 + <matte red="135" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.13333333" alphaOffset="0"/>
151.12928 + </stop>
151.12929 + </gradient>
151.12930 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.12931 + </rectangle>
151.12932 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.12933 + <matte red="83" green="86" blue="93" alpha="70" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.0029994324" brightnessOffset="-0.38039216" alphaOffset="-185"/>
151.12934 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12935 + </rectangle>
151.12936 + </shapes>
151.12937 + <effects/>
151.12938 + </layer>
151.12939 + <templateLayer fileName="113fc301011.png">
151.12940 + <layer name="Template" type="template">
151.12941 + <opacity>1.0</opacity>
151.12942 + <fillOpacity>1.0</fillOpacity>
151.12943 + <blendingMode>NORMAL</blendingMode>
151.12944 + <locked>false</locked>
151.12945 + <visible>false</visible>
151.12946 + <shapes/>
151.12947 + <effects/>
151.12948 + </layer>
151.12949 + </templateLayer>
151.12950 + </canvas>
151.12951 + </state>
151.12952 + <state stateKeys="Pressed+WindowNotFocused">
151.12953 + <style>
151.12954 + <textForeground/>
151.12955 + <textBackground/>
151.12956 + <background/>
151.12957 + <uiproperties/>
151.12958 + </style>
151.12959 + <canvas>
151.12960 + <size width="19" height="18"/>
151.12961 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.12962 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.12963 + <layer name="Layer 3">
151.12964 + <opacity>1.0</opacity>
151.12965 + <fillOpacity>1.0</fillOpacity>
151.12966 + <blendingMode>NORMAL</blendingMode>
151.12967 + <locked>false</locked>
151.12968 + <visible>true</visible>
151.12969 + <shapes>
151.12970 + <path>
151.12971 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.12972 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12973 + <points>
151.12974 + <point x="4.886363636363638" y="5.09090909090909" cp1x="4.886363636363638" cp1y="5.09090909090909" cp2x="4.886363636363638" cp2y="5.09090909090909"/>
151.12975 + <point x="6.113636363636362" y="3.84090909090909" cp1x="6.113636363636362" cp1y="3.84090909090909" cp2x="6.113636363636362" cp2y="3.84090909090909"/>
151.12976 + <point x="9.5" y="7.272727272727275" cp1x="9.5" cp1y="7.272727272727275" cp2x="9.5" cp2y="7.272727272727275"/>
151.12977 + <point x="12.795454545454541" y="3.7954545454545436" cp1x="12.795454545454541" cp1y="3.7954545454545436" cp2x="12.795454545454541" cp2y="3.7954545454545436"/>
151.12978 + <point x="14.13636363636364" y="5.136363636363635" cp1x="14.13636363636364" cp1y="5.136363636363635" cp2x="14.13636363636364" cp2y="5.136363636363635"/>
151.12979 + <point x="10.772727272727279" y="8.477272727272728" cp1x="10.772727272727279" cp1y="8.477272727272728" cp2x="10.772727272727279" cp2y="8.477272727272728"/>
151.12980 + <point x="14.227272727272732" y="11.749999999999996" cp1x="14.227272727272732" cp1y="11.749999999999996" cp2x="14.227272727272732" cp2y="11.749999999999996"/>
151.12981 + <point x="12.795454545454543" y="13.31818181818182" cp1x="12.795454545454543" cp1y="13.31818181818182" cp2x="12.795454545454543" cp2y="13.31818181818182"/>
151.12982 + <point x="9.477272727272725" y="9.749999999999993" cp1x="9.477272727272725" cp1y="9.749999999999993" cp2x="9.477272727272725" cp2y="9.749999999999993"/>
151.12983 + <point x="6.295454545454543" y="13.36363636363637" cp1x="6.295454545454543" cp1y="13.36363636363637" cp2x="6.295454545454543" cp2y="13.36363636363637"/>
151.12984 + <point x="4.795454545454548" y="11.818181818181813" cp1x="4.795454545454548" cp1y="11.818181818181813" cp2x="4.795454545454548" cp2y="11.818181818181813"/>
151.12985 + <point x="8.295454545454541" y="8.499999999999998" cp1x="8.295454545454541" cp1y="8.499999999999998" cp2x="8.295454545454541" cp2y="8.499999999999998"/>
151.12986 + </points>
151.12987 + </path>
151.12988 + <path>
151.12989 + <matte red="88" green="0" blue="0" alpha="133" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.31764707" alphaOffset="-122"/>
151.12990 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.12991 + <points>
151.12992 + <point x="4.749999999999998" y="13.27272727272728" cp1x="4.749999999999998" cp1y="13.27272727272728" cp2x="4.749999999999998" cp2y="13.27272727272728"/>
151.12993 + <point x="5.704545454545453" y="14.295454545454552" cp1x="5.704545454545453" cp1y="14.295454545454552" cp2x="5.704545454545453" cp2y="14.295454545454552"/>
151.12994 + <point x="9.590909090909095" y="10.636363636363644" cp1x="9.590909090909095" cp1y="10.636363636363644" cp2x="9.590909090909095" cp2y="10.636363636363644"/>
151.12995 + <point x="13.000000000000005" y="14.318181818181825" cp1x="13.000000000000005" cp1y="14.318181818181825" cp2x="13.000000000000005" cp2y="14.318181818181825"/>
151.12996 + <point x="14.431818181818185" y="12.954545454545462" cp1x="14.431818181818185" cp1y="12.954545454545462" cp2x="14.431818181818185" cp2y="12.954545454545462"/>
151.12997 + <point x="11.318181818181822" y="9.431818181818189" cp1x="11.318181818181822" cp1y="9.431818181818189" cp2x="11.318181818181822" cp2y="9.431818181818189"/>
151.12998 + <point x="14.318181818181822" y="6.136363636363636" cp1x="14.318181818181822" cp1y="6.136363636363636" cp2x="14.318181818181822" cp2y="6.136363636363636"/>
151.12999 + <point x="12.977272727272732" y="4.5681818181818175" cp1x="12.977272727272732" cp1y="4.5681818181818175" cp2x="12.977272727272732" cp2y="4.5681818181818175"/>
151.13000 + <point x="9.659090909090912" y="7.931818181818182" cp1x="9.659090909090912" cp1y="7.931818181818182" cp2x="9.659090909090912" cp2y="7.931818181818182"/>
151.13001 + <point x="6.272727272727272" y="4.613636363636363" cp1x="6.272727272727272" cp1y="4.613636363636363" cp2x="6.272727272727272" cp2y="4.613636363636363"/>
151.13002 + <point x="4.886363636363635" y="5.977272727272727" cp1x="4.886363636363635" cp1y="5.977272727272727" cp2x="4.886363636363635" cp2y="5.977272727272727"/>
151.13003 + <point x="8.113636363636365" y="9.454545454545467" cp1x="8.113636363636365" cp1y="9.454545454545467" cp2x="8.113636363636365" cp2y="9.454545454545467"/>
151.13004 + </points>
151.13005 + </path>
151.13006 + </shapes>
151.13007 + <effects/>
151.13008 + </layer>
151.13009 + <layer name="Layer 1">
151.13010 + <opacity>1.0</opacity>
151.13011 + <fillOpacity>1.0</fillOpacity>
151.13012 + <blendingMode>NORMAL</blendingMode>
151.13013 + <locked>false</locked>
151.13014 + <visible>true</visible>
151.13015 + <shapes>
151.13016 + <rectangle x1="1.0" x2="18.0" y1="0.9545454545454546" y2="15.954545454545455" rounding="6.749999999999993">
151.13017 + <gradient cycleMethod="NO_CYCLE">
151.13018 + <stop position="0.0" midpoint="0.5">
151.13019 + <matte red="174" green="72" blue="72" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="-0.21260965" brightnessOffset="0.019607842" alphaOffset="0"/>
151.13020 + </stop>
151.13021 + <stop position="0.53977275" midpoint="0.5">
151.13022 + <matte red="144" green="4" blue="4" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.17340565" brightnessOffset="-0.09803921" alphaOffset="0"/>
151.13023 + </stop>
151.13024 + <stop position="0.6505682" midpoint="0.5">
151.13025 + <matte red="142" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.10588235" alphaOffset="0"/>
151.13026 + </stop>
151.13027 + <stop position="0.98203593" midpoint="0.5">
151.13028 + <matte red="157" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.04705882" alphaOffset="0"/>
151.13029 + </stop>
151.13030 + </gradient>
151.13031 + <paintPoints x1="0.25" y1="0.0" x2="0.2544117647058825" y2="1.0016666666666667"/>
151.13032 + </rectangle>
151.13033 + <rectangle x1="0.0" x2="19.0" y1="0.0" y2="17.0" rounding="8.600000000000014">
151.13034 + <gradient cycleMethod="NO_CYCLE">
151.13035 + <stop position="0.0" midpoint="0.5">
151.13036 + <matte red="43" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.49411768" alphaOffset="0"/>
151.13037 + </stop>
151.13038 + <stop position="1.0" midpoint="0.5">
151.13039 + <matte red="117" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.20118344" brightnessOffset="-0.20392159" alphaOffset="0"/>
151.13040 + </stop>
151.13041 + </gradient>
151.13042 + <paintPoints x1="0.24868421052631579" y1="0.0014705882352941176" x2="0.2486842105263158" y2="1.0"/>
151.13043 + </rectangle>
151.13044 + <rectangle x1="0.0" x2="19.0" y1="11.0" y2="18.0" rounding="6.0">
151.13045 + <matte red="255" green="255" blue="255" alpha="115" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-140"/>
151.13046 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.13047 + </rectangle>
151.13048 + </shapes>
151.13049 + <effects/>
151.13050 + </layer>
151.13051 + <templateLayer fileName="113fc32c397.png">
151.13052 + <layer name="Template" type="template">
151.13053 + <opacity>1.0</opacity>
151.13054 + <fillOpacity>1.0</fillOpacity>
151.13055 + <blendingMode>NORMAL</blendingMode>
151.13056 + <locked>false</locked>
151.13057 + <visible>false</visible>
151.13058 + <shapes/>
151.13059 + <effects/>
151.13060 + </layer>
151.13061 + </templateLayer>
151.13062 + </canvas>
151.13063 + </state>
151.13064 + </backgroundStates>
151.13065 + <foregroundStates/>
151.13066 + <borderStates/>
151.13067 + <regions/>
151.13068 + </uiComponent>
151.13069 + </regions>
151.13070 + </region>
151.13071 + </regions>
151.13072 + </uiComponent>
151.13073 + <uiComponent opaque="false" type="javax.swing.JInternalFrame.JDesktopIcon" name="DesktopIcon" ui="DesktopIconUI" subregion="false">
151.13074 + <stateTypes/>
151.13075 + <contentMargins top="4" bottom="5" left="6" right="4"/>
151.13076 + <style>
151.13077 + <textForeground/>
151.13078 + <textBackground/>
151.13079 + <background/>
151.13080 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.13081 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.13082 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.13083 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.13084 + <uiproperties/>
151.13085 + </style>
151.13086 + <backgroundStates>
151.13087 + <state stateKeys="Enabled">
151.13088 + <style>
151.13089 + <textForeground/>
151.13090 + <textBackground/>
151.13091 + <background/>
151.13092 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.13093 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.13094 + <uiproperties/>
151.13095 + </style>
151.13096 + <canvas>
151.13097 + <size width="28" height="26"/>
151.13098 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.13099 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.13100 + <layer name="Layer 1">
151.13101 + <opacity>1.0</opacity>
151.13102 + <fillOpacity>1.0</fillOpacity>
151.13103 + <blendingMode>NORMAL</blendingMode>
151.13104 + <locked>false</locked>
151.13105 + <visible>true</visible>
151.13106 + <shapes>
151.13107 + <rectangle x1="4.0" x2="25.0" y1="2.0" y2="22.0" rounding="0.0">
151.13108 + <gradient cycleMethod="NO_CYCLE">
151.13109 + <stop position="0.0" midpoint="0.24">
151.13110 + <matte red="227" green="229" blue="232" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.088974595" brightnessOffset="0.16470587" alphaOffset="0"/>
151.13111 + </stop>
151.13112 + <stop position="1.0" midpoint="0.5">
151.13113 + <matte red="170" green="175" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.029445238" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.13114 + </stop>
151.13115 + </gradient>
151.13116 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.13117 + </rectangle>
151.13118 + <rectangle x1="3.0" x2="27.0" y1="1.0" y2="23.0" rounding="3.1000000000000005">
151.13119 + <gradient cycleMethod="NO_CYCLE">
151.13120 + <stop position="0.0" midpoint="0.5">
151.13121 + <matte red="240" green="241" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.102261856" brightnessOffset="0.20392156" alphaOffset="0"/>
151.13122 + </stop>
151.13123 + <stop position="1.0" midpoint="0.5">
151.13124 + <matte red="204" green="207" blue="213" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.0682728" brightnessOffset="0.09019607" alphaOffset="0"/>
151.13125 + </stop>
151.13126 + </gradient>
151.13127 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.13128 + </rectangle>
151.13129 + <rectangle x1="2.0" x2="27.0" y1="0.0" y2="24.0" rounding="4.833333333333331">
151.13130 + <matte red="43" green="46" blue="51" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.02551502" saturationOffset="-0.47885156" brightnessOffset="-0.34901965" alphaOffset="0"/>
151.13131 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.13132 + </rectangle>
151.13133 + </shapes>
151.13134 + <effects/>
151.13135 + </layer>
151.13136 + </canvas>
151.13137 + </state>
151.13138 + </backgroundStates>
151.13139 + <foregroundStates/>
151.13140 + <borderStates/>
151.13141 + <regions/>
151.13142 + </uiComponent>
151.13143 + <uiComponent opaque="true" type="javax.swing.JDesktopPane" name="DesktopPane" ui="DesktopPaneUI" subregion="false">
151.13144 + <stateTypes/>
151.13145 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.13146 + <style>
151.13147 + <textForeground/>
151.13148 + <textBackground/>
151.13149 + <background/>
151.13150 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.13151 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.13152 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.13153 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.13154 + <uiproperties/>
151.13155 + </style>
151.13156 + <backgroundStates>
151.13157 + <state stateKeys="Enabled">
151.13158 + <style>
151.13159 + <textForeground/>
151.13160 + <textBackground/>
151.13161 + <background/>
151.13162 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.13163 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.13164 + <uiproperties/>
151.13165 + </style>
151.13166 + <canvas>
151.13167 + <size width="300" height="232"/>
151.13168 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.13169 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.13170 + <layer name="Layer 1">
151.13171 + <opacity>1.0</opacity>
151.13172 + <fillOpacity>1.0</fillOpacity>
151.13173 + <blendingMode>NORMAL</blendingMode>
151.13174 + <locked>false</locked>
151.13175 + <visible>true</visible>
151.13176 + <shapes>
151.13177 + <path>
151.13178 + <gradient cycleMethod="NO_CYCLE">
151.13179 + <stop position="0.0" midpoint="0.5">
151.13180 + <matte red="49" green="81" blue="102" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.012613952" saturationOffset="-0.11610645" brightnessOffset="-0.14901963" alphaOffset="0"/>
151.13181 + </stop>
151.13182 + <stop position="1.0" midpoint="0.5">
151.13183 + <matte red="35" green="62" blue="84" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0038217902" saturationOffset="-0.05238098" brightnessOffset="-0.21960786" alphaOffset="0"/>
151.13184 + </stop>
151.13185 + </gradient>
151.13186 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.13187 + <points>
151.13188 + <point x="0.0" y="232.0" cp1x="0.0" cp1y="232.0" cp2x="0.0" cp2y="232.0"/>
151.13189 + <point x="0.0" y="138.5" cp1x="0.0" cp1y="138.5" cp2x="0.0" cp2y="138.5"/>
151.13190 + <point x="22.0" y="185.0" cp1x="12.0" cp1y="165.5" cp2x="32.0" cp2y="204.5"/>
151.13191 + <point x="50.0" y="232.0" cp1x="50.0" cp1y="231.5" cp2x="50.0" cp2y="232.5"/>
151.13192 + </points>
151.13193 + </path>
151.13194 + <path>
151.13195 + <gradient cycleMethod="NO_CYCLE">
151.13196 + <stop position="0.0" midpoint="0.5">
151.13197 + <matte red="70" green="110" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.004577577" saturationOffset="-0.12867206" brightnessOffset="0.007843137" alphaOffset="0"/>
151.13198 + </stop>
151.13199 + <stop position="1.0" midpoint="0.5">
151.13200 + <matte red="35" green="63" blue="86" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0034883022" saturationOffset="-0.042691052" brightnessOffset="-0.21176472" alphaOffset="0"/>
151.13201 + </stop>
151.13202 + </gradient>
151.13203 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.13204 + <points>
151.13205 + <point x="82.0" y="232.0" cp1x="82.0" cp1y="232.0" cp2x="82.0" cp2y="232.0"/>
151.13206 + <point x="79.0" y="153.0" cp1x="84.0" cp1y="190.0" cp2x="74.0" cp2y="116.0"/>
151.13207 + <point x="58.0" y="52.0" cp1x="67.0" cp1y="85.5" cp2x="49.0" cp2y="18.5"/>
151.13208 + <point x="40.0" y="0.0" cp1x="40.0" cp1y="0.0" cp2x="40.0" cp2y="0.0"/>
151.13209 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.13210 + <point x="0.0" y="142.0" cp1x="0.0" cp1y="142.0" cp2x="0.0" cp2y="142.0"/>
151.13211 + <point x="45.0" y="232.0" cp1x="45.0" cp1y="231.5" cp2x="45.0" cp2y="232.5"/>
151.13212 + </points>
151.13213 + </path>
151.13214 + <path>
151.13215 + <gradient cycleMethod="NO_CYCLE">
151.13216 + <stop position="0.0" midpoint="0.5">
151.13217 + <matte red="55" green="88" blue="112" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.008476257" saturationOffset="-0.1267857" brightnessOffset="-0.109803945" alphaOffset="0"/>
151.13218 + </stop>
151.13219 + <stop position="1.0" midpoint="0.5">
151.13220 + <matte red="53" green="85" blue="108" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.008954704" saturationOffset="-0.12645501" brightnessOffset="-0.12549022" alphaOffset="0"/>
151.13221 + </stop>
151.13222 + </gradient>
151.13223 + <paintPoints x1="0.35483870967741926" y1="0.1142857142857143" x2="0.4838709677419357" y2="0.980952380952381"/>
151.13224 + <points>
151.13225 + <point x="182.0" y="232.0" cp1x="182.0" cp1y="232.0" cp2x="182.0" cp2y="232.0"/>
151.13226 + <point x="192.0" y="204.5" cp1x="185.0" cp1y="221.5" cp2x="199.0" cp2y="187.5"/>
151.13227 + <point x="203.25" y="179.75" cp1x="203.25" cp1y="179.75" cp2x="203.25" cp2y="179.75"/>
151.13228 + <point x="222.5" y="205.0" cp1x="211.5" cp1y="190.0" cp2x="233.5" cp2y="220.0"/>
151.13229 + <point x="244.0" y="232.0" cp1x="244.0" cp1y="231.5" cp2x="244.0" cp2y="232.5"/>
151.13230 + </points>
151.13231 + </path>
151.13232 + <path>
151.13233 + <gradient cycleMethod="NO_CYCLE">
151.13234 + <stop position="0.0" midpoint="0.5">
151.13235 + <matte red="61" green="96" blue="121" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.009207249" saturationOffset="-0.13984653" brightnessOffset="-0.07450983" alphaOffset="0"/>
151.13236 + </stop>
151.13237 + <stop position="1.0" midpoint="0.5">
151.13238 + <matte red="54" green="86" blue="108" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.010750473" saturationOffset="-0.13571429" brightnessOffset="-0.12549022" alphaOffset="0"/>
151.13239 + </stop>
151.13240 + </gradient>
151.13241 + <paintPoints x1="0.3511235955056181" y1="0.09326424870466325" x2="0.33426966292134835" y2="0.9846153846153847"/>
151.13242 + <points>
151.13243 + <point x="156.5" y="232.0" cp1x="156.5" cp1y="232.0" cp2x="156.5" cp2y="232.0"/>
151.13244 + <point x="166.5" y="180.5" cp1x="164.5" cp1y="203.0" cp2x="168.5" cp2y="158.0"/>
151.13245 + <point x="170.5" y="133.75" cp1x="170.5" cp1y="133.75" cp2x="170.5" cp2y="133.75"/>
151.13246 + <point x="203.25" y="179.75" cp1x="203.25" cp1y="179.75" cp2x="203.25" cp2y="179.75"/>
151.13247 + <point x="195.25" y="207.0" cp1x="201.25" cp1y="193.0" cp2x="189.25" cp2y="221.0"/>
151.13248 + <point x="182.5" y="232.0" cp1x="182.5" cp1y="232.0" cp2x="182.5" cp2y="232.0"/>
151.13249 + </points>
151.13250 + </path>
151.13251 + <path>
151.13252 + <gradient cycleMethod="NO_CYCLE">
151.13253 + <stop position="0.0" midpoint="0.5">
151.13254 + <matte red="57" green="94" blue="127" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-8.028746E-5" saturationOffset="-0.084533215" brightnessOffset="-0.05098042" alphaOffset="0"/>
151.13255 + </stop>
151.13256 + <stop position="1.0" midpoint="0.5">
151.13257 + <matte red="57" green="92" blue="115" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.012559712" saturationOffset="-0.13136649" brightnessOffset="-0.09803924" alphaOffset="0"/>
151.13258 + </stop>
151.13259 + </gradient>
151.13260 + <paintPoints x1="0.8659695817490493" y1="0.011049723756906077" x2="0.24809885931558942" y2="0.9502762430939229"/>
151.13261 + <points>
151.13262 + <point x="170.5" y="134.5" cp1x="170.5" cp1y="134.5" cp2x="170.5" cp2y="134.5"/>
151.13263 + <point x="172.5" y="55.5" cp1x="172.5" cp1y="88.5" cp2x="172.5" cp2y="22.5"/>
151.13264 + <point x="168.5" y="0.0" cp1x="168.5" cp1y="0.0" cp2x="168.5" cp2y="0.0"/>
151.13265 + <point x="300.0" y="0.0" cp1x="300.0" cp1y="0.0" cp2x="300.0" cp2y="0.0"/>
151.13266 + <point x="300.0" y="46.0" cp1x="300.0" cp1y="46.0" cp2x="300.0" cp2y="46.0"/>
151.13267 + <point x="242.0" y="117.0" cp1x="269.5" cp1y="78.5" cp2x="214.5" cp2y="155.5"/>
151.13268 + <point x="203.0" y="180.5" cp1x="203.0" cp1y="180.5" cp2x="203.0" cp2y="180.5"/>
151.13269 + </points>
151.13270 + </path>
151.13271 + <path>
151.13272 + <gradient cycleMethod="NO_CYCLE">
151.13273 + <stop position="0.0" midpoint="0.5">
151.13274 + <matte red="57" green="94" blue="127" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-8.028746E-5" saturationOffset="-0.084533215" brightnessOffset="-0.05098042" alphaOffset="0"/>
151.13275 + </stop>
151.13276 + <stop position="1.0" midpoint="0.5">
151.13277 + <matte red="56" green="89" blue="115" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0052053332" saturationOffset="-0.12267083" brightnessOffset="-0.09803924" alphaOffset="0"/>
151.13278 + </stop>
151.13279 + </gradient>
151.13280 + <paintPoints x1="0.25" y1="0.0" x2="0.8353658536585367" y2="0.9522058823529412"/>
151.13281 + <points>
151.13282 + <point x="101.5" y="0.0" cp1x="101.5" cp1y="0.0" cp2x="101.5" cp2y="0.0"/>
151.13283 + <point x="132.5" y="72.0" cp1x="111.5" cp1y="34.5" cp2x="153.5" cp2y="109.5"/>
151.13284 + <point x="172.0" y="135.5" cp1x="172.0" cp1y="135.5" cp2x="172.0" cp2y="135.5"/>
151.13285 + <point x="182.0" y="56.0" cp1x="183.5" cp1y="85.5" cp2x="180.5" cp2y="26.5"/>
151.13286 + <point x="181.5" y="0.0" cp1x="181.5" cp1y="0.0" cp2x="181.5" cp2y="0.0"/>
151.13287 + </points>
151.13288 + </path>
151.13289 + <path>
151.13290 + <matte red="255" green="200" blue="0" alpha="6" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.13291 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.13292 + <points>
151.13293 + <point x="170.0" y="0.0" cp1x="170.0" cp1y="0.0" cp2x="170.0" cp2y="0.0"/>
151.13294 + <point x="170.0" y="132.0" cp1x="170.0" cp1y="132.0" cp2x="170.0" cp2y="132.0"/>
151.13295 + <point x="202.5" y="179.0" cp1x="202.5" cp1y="179.0" cp2x="202.5" cp2y="179.0"/>
151.13296 + <point x="243.5" y="115.5" cp1x="220.0" cp1y="149.0" cp2x="267.0" cp2y="82.0"/>
151.13297 + <point x="300.0" y="46.5" cp1x="300.0" cp1y="46.5" cp2x="300.0" cp2y="46.5"/>
151.13298 + <point x="300.0" y="0.0" cp1x="300.0" cp1y="0.0" cp2x="300.0" cp2y="0.0"/>
151.13299 + </points>
151.13300 + </path>
151.13301 + <path>
151.13302 + <gradient cycleMethod="NO_CYCLE">
151.13303 + <stop position="0.0" midpoint="0.5">
151.13304 + <matte red="48" green="83" blue="114" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.6883354E-4" saturationOffset="-0.056766927" brightnessOffset="-0.10196081" alphaOffset="0"/>
151.13305 + </stop>
151.13306 + <stop position="1.0" midpoint="0.5">
151.13307 + <matte red="53" green="85" blue="108" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.008954704" saturationOffset="-0.12645501" brightnessOffset="-0.12549022" alphaOffset="0"/>
151.13308 + </stop>
151.13309 + </gradient>
151.13310 + <paintPoints x1="0.9567307692307692" y1="0.06835443037974684" x2="0.75" y2="1.0"/>
151.13311 + <points>
151.13312 + <point x="236.5" y="232.0" cp1x="236.5" cp1y="231.5" cp2x="236.5" cp2y="232.5"/>
151.13313 + <point x="196.0" y="179.5" cp1x="196.0" cp1y="179.5" cp2x="196.0" cp2y="179.5"/>
151.13314 + <point x="300.0" y="34.0" cp1x="300.0" cp1y="34.0" cp2x="300.0" cp2y="34.0"/>
151.13315 + <point x="300.0" y="232.0" cp1x="300.0" cp1y="231.5" cp2x="300.5" cp2y="232.5"/>
151.13316 + </points>
151.13317 + </path>
151.13318 + <path>
151.13319 + <gradient cycleMethod="NO_CYCLE">
151.13320 + <stop position="0.0" midpoint="0.5">
151.13321 + <matte red="70" green="110" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.004577577" saturationOffset="-0.12867206" brightnessOffset="0.007843137" alphaOffset="0"/>
151.13322 + </stop>
151.13323 + <stop position="1.0" midpoint="0.5">
151.13324 + <matte red="43" green="73" blue="96" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0063245893" saturationOffset="-0.08363098" brightnessOffset="-0.17254904" alphaOffset="0"/>
151.13325 + </stop>
151.13326 + </gradient>
151.13327 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.13328 + <points>
151.13329 + <point x="81.5" y="232.0" cp1x="81.5" cp1y="231.5" cp2x="81.5" cp2y="232.5"/>
151.13330 + <point x="38.5" y="0.0" cp1x="38.5" cp1y="0.0" cp2x="38.5" cp2y="0.0"/>
151.13331 + <point x="105.5" y="0.0" cp1x="105.5" cp1y="0.0" cp2x="105.5" cp2y="0.0"/>
151.13332 + <point x="176.0" y="133.5" cp1x="176.0" cp1y="133.5" cp2x="176.0" cp2y="133.5"/>
151.13333 + <point x="162.5" y="232.0" cp1x="162.5" cp1y="232.0" cp2x="162.5" cp2y="232.0"/>
151.13334 + </points>
151.13335 + </path>
151.13336 + </shapes>
151.13337 + <effects/>
151.13338 + </layer>
151.13339 + <templateLayer fileName="113e0997434.png">
151.13340 + <layer name="Template" type="template">
151.13341 + <opacity>1.0</opacity>
151.13342 + <fillOpacity>1.0</fillOpacity>
151.13343 + <blendingMode>NORMAL</blendingMode>
151.13344 + <locked>false</locked>
151.13345 + <visible>true</visible>
151.13346 + <shapes/>
151.13347 + <effects/>
151.13348 + </layer>
151.13349 + </templateLayer>
151.13350 + </canvas>
151.13351 + </state>
151.13352 + </backgroundStates>
151.13353 + <foregroundStates/>
151.13354 + <borderStates/>
151.13355 + <regions/>
151.13356 + </uiComponent>
151.13357 + <uiComponent opaque="false" type="javax.swing.JLabel" name="Label" ui="LabelUI" subregion="false">
151.13358 + <stateTypes/>
151.13359 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.13360 + <style>
151.13361 + <textForeground/>
151.13362 + <textBackground/>
151.13363 + <background/>
151.13364 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.13365 + <cacheMode>NO_CACHING</cacheMode>
151.13366 + <uiproperties/>
151.13367 + </style>
151.13368 + <backgroundStates>
151.13369 + <state stateKeys="Disabled">
151.13370 + <style>
151.13371 + <textForeground>
151.13372 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.13373 + </textForeground>
151.13374 + <textBackground/>
151.13375 + <background/>
151.13376 + <inherit-textForeground>false</inherit-textForeground>
151.13377 + <uiproperties/>
151.13378 + </style>
151.13379 + <canvas>
151.13380 + <size width="100" height="30"/>
151.13381 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.13382 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.13383 + <layer name="Layer 1">
151.13384 + <opacity>1.0</opacity>
151.13385 + <fillOpacity>1.0</fillOpacity>
151.13386 + <blendingMode>NORMAL</blendingMode>
151.13387 + <locked>false</locked>
151.13388 + <visible>true</visible>
151.13389 + <shapes/>
151.13390 + <effects/>
151.13391 + </layer>
151.13392 + </canvas>
151.13393 + </state>
151.13394 + </backgroundStates>
151.13395 + <foregroundStates/>
151.13396 + <borderStates/>
151.13397 + <regions/>
151.13398 + </uiComponent>
151.13399 + <uiComponent opaque="true" type="javax.swing.JList" name="List" ui="ListUI" subregion="false">
151.13400 + <stateTypes/>
151.13401 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.13402 + <style>
151.13403 + <textForeground/>
151.13404 + <textBackground/>
151.13405 + <background>
151.13406 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.13407 + </background>
151.13408 + <inherit-background>false</inherit-background>
151.13409 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.13410 + <cacheMode>NO_CACHING</cacheMode>
151.13411 + <uiproperties>
151.13412 + <uiProperty name="rendererUseListColors" type="BOOLEAN" value="true"/>
151.13413 + <uiProperty name="rendererUseUIBorder" type="BOOLEAN" value="true"/>
151.13414 + <uiProperty name="cellNoFocusBorder" type="BORDER">
151.13415 + <border type="empty" top="2" left="5" bottom="2" right="5"/>
151.13416 + </uiProperty>
151.13417 + <uiProperty name="focusCellHighlightBorder" type="BORDER">
151.13418 + <border type="painter" painter="Tree:TreeCell[Enabled+Focused].backgroundPainter" top="2" left="5" bottom="2" right="5" />
151.13419 + </uiProperty>
151.13420 + <uiProperty name="dropLineColor" type="COLOR">
151.13421 + <matte red="242" green="242" blue="242" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0" alphaOffset="0"/>
151.13422 + </uiProperty>
151.13423 + </uiproperties>
151.13424 + </style>
151.13425 + <backgroundStates>
151.13426 + <state stateKeys="Selected">
151.13427 + <style>
151.13428 + <textForeground>
151.13429 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
151.13430 + </textForeground>
151.13431 + <textBackground>
151.13432 + <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
151.13433 + </textBackground>
151.13434 + <background/>
151.13435 + <inherit-textForeground>false</inherit-textForeground>
151.13436 + <inherit-textBackground>false</inherit-textBackground>
151.13437 + <uiproperties/>
151.13438 + </style>
151.13439 + <canvas>
151.13440 + <size width="100" height="30"/>
151.13441 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.13442 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.13443 + <layer name="Layer 1">
151.13444 + <opacity>1.0</opacity>
151.13445 + <fillOpacity>1.0</fillOpacity>
151.13446 + <blendingMode>NORMAL</blendingMode>
151.13447 + <locked>false</locked>
151.13448 + <visible>true</visible>
151.13449 + <shapes/>
151.13450 + <effects/>
151.13451 + </layer>
151.13452 + </canvas>
151.13453 + </state>
151.13454 + <state stateKeys="Disabled+Selected">
151.13455 + <style>
151.13456 + <textForeground/>
151.13457 + <textBackground>
151.13458 + <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
151.13459 + </textBackground>
151.13460 + <background/>
151.13461 + <inherit-textBackground>false</inherit-textBackground>
151.13462 + <uiproperties/>
151.13463 + </style>
151.13464 + <canvas>
151.13465 + <size width="100" height="30"/>
151.13466 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.13467 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.13468 + <layer name="Layer 1">
151.13469 + <opacity>1.0</opacity>
151.13470 + <fillOpacity>1.0</fillOpacity>
151.13471 + <blendingMode>NORMAL</blendingMode>
151.13472 + <locked>false</locked>
151.13473 + <visible>true</visible>
151.13474 + <shapes/>
151.13475 + <effects/>
151.13476 + </layer>
151.13477 + </canvas>
151.13478 + </state>
151.13479 + <state stateKeys="Disabled">
151.13480 + <style>
151.13481 + <textForeground>
151.13482 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
151.13483 + </textForeground>
151.13484 + <textBackground/>
151.13485 + <background/>
151.13486 + <inherit-textForeground>false</inherit-textForeground>
151.13487 + <uiproperties/>
151.13488 + </style>
151.13489 + <canvas>
151.13490 + <size width="100" height="30"/>
151.13491 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.13492 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.13493 + <layer name="Layer 1">
151.13494 + <opacity>1.0</opacity>
151.13495 + <fillOpacity>1.0</fillOpacity>
151.13496 + <blendingMode>NORMAL</blendingMode>
151.13497 + <locked>false</locked>
151.13498 + <visible>true</visible>
151.13499 + <shapes/>
151.13500 + <effects/>
151.13501 + </layer>
151.13502 + </canvas>
151.13503 + </state>
151.13504 + </backgroundStates>
151.13505 + <foregroundStates/>
151.13506 + <borderStates/>
151.13507 + <regions>
151.13508 + <uiComponent opaque="true" componentName="List.cellRenderer" type="javax.swing.JLabel" name="Label" ui="LabelUI" subregion="true">
151.13509 + <stateTypes/>
151.13510 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.13511 + <style>
151.13512 + <textForeground/>
151.13513 + <textBackground/>
151.13514 + <background/>
151.13515 + <uiproperties/>
151.13516 + </style>
151.13517 + <backgroundStates>
151.13518 + <state stateKeys="Disabled">
151.13519 + <style>
151.13520 + <textForeground>
151.13521 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.13522 + </textForeground>
151.13523 + <textBackground/>
151.13524 + <background>
151.13525 + <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
151.13526 + </background>
151.13527 + <inherit-textForeground>false</inherit-textForeground>
151.13528 + <inherit-background>false</inherit-background>
151.13529 + <uiproperties/>
151.13530 + </style>
151.13531 + <canvas>
151.13532 + <size width="100" height="30"/>
151.13533 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.13534 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.13535 + <layer name="Layer 1">
151.13536 + <opacity>1.0</opacity>
151.13537 + <fillOpacity>1.0</fillOpacity>
151.13538 + <blendingMode>NORMAL</blendingMode>
151.13539 + <locked>false</locked>
151.13540 + <visible>true</visible>
151.13541 + <shapes/>
151.13542 + <effects/>
151.13543 + </layer>
151.13544 + </canvas>
151.13545 + </state>
151.13546 + </backgroundStates>
151.13547 + <foregroundStates/>
151.13548 + <borderStates/>
151.13549 + <regions/>
151.13550 + </uiComponent>
151.13551 + </regions>
151.13552 + </uiComponent>
151.13553 + <uiComponent opaque="false" type="javax.swing.JMenuBar" name="MenuBar" ui="MenuBarUI" subregion="false">
151.13554 + <stateTypes/>
151.13555 + <contentMargins top="2" bottom="2" left="6" right="6"/>
151.13556 + <style>
151.13557 + <textForeground/>
151.13558 + <textBackground/>
151.13559 + <background/>
151.13560 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.13561 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.13562 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.13563 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.13564 + <uiproperties/>
151.13565 + </style>
151.13566 + <backgroundStates>
151.13567 + <state stateKeys="Enabled">
151.13568 + <style>
151.13569 + <textForeground/>
151.13570 + <textBackground/>
151.13571 + <background/>
151.13572 + <uiproperties/>
151.13573 + </style>
151.13574 + <canvas>
151.13575 + <size width="18" height="22"/>
151.13576 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.13577 + <stretchingInsets top="1" bottom="0" left="0" right="0"/>
151.13578 + <layer name="Layer 1">
151.13579 + <opacity>1.0</opacity>
151.13580 + <fillOpacity>1.0</fillOpacity>
151.13581 + <blendingMode>NORMAL</blendingMode>
151.13582 + <locked>false</locked>
151.13583 + <visible>true</visible>
151.13584 + <shapes>
151.13585 + <rectangle x1="0.0" x2="18.0" y1="0.0" y2="22.0" rounding="0.0">
151.13586 + <gradient cycleMethod="NO_CYCLE">
151.13587 + <stop position="0.0" midpoint="0.5">
151.13588 + <matte red="249" green="250" blue="251" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.10255819" brightnessOffset="0.23921567" alphaOffset="0"/>
151.13589 + </stop>
151.13590 + <stop position="0.03" midpoint="0.28">
151.13591 + <matte red="250" green="251" blue="251" alpha="226" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.111111104" saturationOffset="-0.10654225" brightnessOffset="0.23921567" alphaOffset="-29"/>
151.13592 + </stop>
151.13593 + <stop position="0.7569444" midpoint="0.5">
151.13594 + <matte red="255" green="255" blue="255" alpha="0" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-255"/>
151.13595 + </stop>
151.13596 + </gradient>
151.13597 + <paintPoints x1="1.0" y1="0.0" x2="1.0" y2="1.0"/>
151.13598 + </rectangle>
151.13599 + <rectangle x1="0.0" x2="18.0" y1="0.0" y2="21.0" rounding="0.0">
151.13600 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.13601 + <paintPoints x1="0.0" y1="0.0" x2="0.0" y2="1.0"/>
151.13602 + </rectangle>
151.13603 + </shapes>
151.13604 + <effects/>
151.13605 + </layer>
151.13606 + <templateLayer fileName="113c675ba35.png">
151.13607 + <layer name="Template" type="template">
151.13608 + <opacity>1.0</opacity>
151.13609 + <fillOpacity>1.0</fillOpacity>
151.13610 + <blendingMode>NORMAL</blendingMode>
151.13611 + <locked>false</locked>
151.13612 + <visible>true</visible>
151.13613 + <shapes/>
151.13614 + <effects/>
151.13615 + </layer>
151.13616 + </templateLayer>
151.13617 + </canvas>
151.13618 + </state>
151.13619 + </backgroundStates>
151.13620 + <foregroundStates/>
151.13621 + <borderStates>
151.13622 + <state stateKeys="Enabled">
151.13623 + <style>
151.13624 + <textForeground/>
151.13625 + <textBackground/>
151.13626 + <background/>
151.13627 + <uiproperties/>
151.13628 + </style>
151.13629 + <canvas>
151.13630 + <size width="30" height="30"/>
151.13631 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.13632 + <stretchingInsets top="0" bottom="1" left="0" right="0"/>
151.13633 + <layer name="Layer 1">
151.13634 + <opacity>1.0</opacity>
151.13635 + <fillOpacity>1.0</fillOpacity>
151.13636 + <blendingMode>NORMAL</blendingMode>
151.13637 + <locked>false</locked>
151.13638 + <visible>true</visible>
151.13639 + <shapes>
151.13640 + <rectangle x1="0.0" x2="30.0" y1="29.0" y2="30.0" rounding="0.0">
151.13641 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.13642 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.13643 + </rectangle>
151.13644 + </shapes>
151.13645 + <effects/>
151.13646 + </layer>
151.13647 + </canvas>
151.13648 + </state>
151.13649 + </borderStates>
151.13650 + <regions>
151.13651 + <uiComponent opaque="false" type="javax.swing.JMenu" name="Menu" ui="MenuUI" subregion="false">
151.13652 + <stateTypes/>
151.13653 + <contentMargins top="1" bottom="2" left="4" right="4"/>
151.13654 + <style>
151.13655 + <textForeground/>
151.13656 + <textBackground/>
151.13657 + <background/>
151.13658 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.13659 + <cacheMode>NO_CACHING</cacheMode>
151.13660 + <uiproperties/>
151.13661 + </style>
151.13662 + <backgroundStates>
151.13663 + <state stateKeys="Disabled">
151.13664 + <style>
151.13665 + <textForeground>
151.13666 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.13667 + </textForeground>
151.13668 + <textBackground/>
151.13669 + <background/>
151.13670 + <inherit-textForeground>false</inherit-textForeground>
151.13671 + <uiproperties/>
151.13672 + </style>
151.13673 + <canvas>
151.13674 + <size width="100" height="30"/>
151.13675 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.13676 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.13677 + <layer name="Layer 1">
151.13678 + <opacity>1.0</opacity>
151.13679 + <fillOpacity>1.0</fillOpacity>
151.13680 + <blendingMode>NORMAL</blendingMode>
151.13681 + <locked>false</locked>
151.13682 + <visible>true</visible>
151.13683 + <shapes/>
151.13684 + <effects/>
151.13685 + </layer>
151.13686 + </canvas>
151.13687 + </state>
151.13688 + <state stateKeys="Enabled">
151.13689 + <style>
151.13690 + <textForeground>
151.13691 + <matte red="35" green="35" blue="36" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.13692 + </textForeground>
151.13693 + <textBackground/>
151.13694 + <background/>
151.13695 + <inherit-textForeground>false</inherit-textForeground>
151.13696 + <uiproperties/>
151.13697 + </style>
151.13698 + <canvas>
151.13699 + <size width="100" height="30"/>
151.13700 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.13701 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.13702 + <layer name="Layer 1">
151.13703 + <opacity>1.0</opacity>
151.13704 + <fillOpacity>1.0</fillOpacity>
151.13705 + <blendingMode>NORMAL</blendingMode>
151.13706 + <locked>false</locked>
151.13707 + <visible>true</visible>
151.13708 + <shapes/>
151.13709 + <effects/>
151.13710 + </layer>
151.13711 + </canvas>
151.13712 + </state>
151.13713 + <state stateKeys="Selected">
151.13714 + <style>
151.13715 + <textForeground>
151.13716 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.13717 + </textForeground>
151.13718 + <textBackground/>
151.13719 + <background/>
151.13720 + <inherit-textForeground>false</inherit-textForeground>
151.13721 + <uiproperties/>
151.13722 + </style>
151.13723 + <canvas>
151.13724 + <size width="100" height="30"/>
151.13725 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.13726 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.13727 + <layer name="Layer 1">
151.13728 + <opacity>1.0</opacity>
151.13729 + <fillOpacity>1.0</fillOpacity>
151.13730 + <blendingMode>NORMAL</blendingMode>
151.13731 + <locked>false</locked>
151.13732 + <visible>true</visible>
151.13733 + <shapes>
151.13734 + <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
151.13735 + <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.010750473" saturationOffset="-0.04875779" brightnessOffset="-0.007843137" alphaOffset="0"/>
151.13736 + <paintPoints x1="1.0" y1="0.0" x2="1.0" y2="1.0"/>
151.13737 + </rectangle>
151.13738 + </shapes>
151.13739 + <effects/>
151.13740 + </layer>
151.13741 + </canvas>
151.13742 + </state>
151.13743 + </backgroundStates>
151.13744 + <foregroundStates/>
151.13745 + <borderStates/>
151.13746 + <regions>
151.13747 + <region name="MenuItemAccelerator" subregion="true">
151.13748 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.13749 + <style>
151.13750 + <textForeground/>
151.13751 + <textBackground/>
151.13752 + <background/>
151.13753 + <uiproperties/>
151.13754 + </style>
151.13755 + <backgroundStates>
151.13756 + <state stateKeys="Disabled">
151.13757 + <style>
151.13758 + <textForeground/>
151.13759 + <textBackground/>
151.13760 + <background/>
151.13761 + <uiproperties/>
151.13762 + </style>
151.13763 + <canvas>
151.13764 + <size width="80" height="30"/>
151.13765 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.13766 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.13767 + <layer name="Layer 1">
151.13768 + <opacity>1.0</opacity>
151.13769 + <fillOpacity>1.0</fillOpacity>
151.13770 + <blendingMode>NORMAL</blendingMode>
151.13771 + <locked>false</locked>
151.13772 + <visible>true</visible>
151.13773 + <shapes/>
151.13774 + <effects/>
151.13775 + </layer>
151.13776 + </canvas>
151.13777 + </state>
151.13778 + <state stateKeys="Enabled">
151.13779 + <style>
151.13780 + <textForeground/>
151.13781 + <textBackground/>
151.13782 + <background/>
151.13783 + <uiproperties/>
151.13784 + </style>
151.13785 + <canvas>
151.13786 + <size width="80" height="30"/>
151.13787 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.13788 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.13789 + <layer name="Layer 1">
151.13790 + <opacity>1.0</opacity>
151.13791 + <fillOpacity>1.0</fillOpacity>
151.13792 + <blendingMode>NORMAL</blendingMode>
151.13793 + <locked>false</locked>
151.13794 + <visible>true</visible>
151.13795 + <shapes/>
151.13796 + <effects/>
151.13797 + </layer>
151.13798 + </canvas>
151.13799 + </state>
151.13800 + <state stateKeys="MouseOver">
151.13801 + <style>
151.13802 + <textForeground/>
151.13803 + <textBackground/>
151.13804 + <background/>
151.13805 + <uiproperties/>
151.13806 + </style>
151.13807 + <canvas>
151.13808 + <size width="80" height="30"/>
151.13809 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.13810 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.13811 + <layer name="Layer 1">
151.13812 + <opacity>1.0</opacity>
151.13813 + <fillOpacity>1.0</fillOpacity>
151.13814 + <blendingMode>NORMAL</blendingMode>
151.13815 + <locked>false</locked>
151.13816 + <visible>true</visible>
151.13817 + <shapes/>
151.13818 + <effects/>
151.13819 + </layer>
151.13820 + </canvas>
151.13821 + </state>
151.13822 + </backgroundStates>
151.13823 + <foregroundStates/>
151.13824 + <borderStates/>
151.13825 + <regions/>
151.13826 + </region>
151.13827 + </regions>
151.13828 + </uiComponent>
151.13829 + </regions>
151.13830 + </uiComponent>
151.13831 + <uiComponent opaque="false" type="javax.swing.JMenuItem" name="MenuItem" ui="MenuItemUI" subregion="false">
151.13832 + <stateTypes/>
151.13833 + <contentMargins top="1" bottom="2" left="12" right="13"/>
151.13834 + <style>
151.13835 + <textForeground/>
151.13836 + <textBackground/>
151.13837 + <background/>
151.13838 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.13839 + <cacheMode>NO_CACHING</cacheMode>
151.13840 + <uiproperties>
151.13841 + <uiProperty name="textIconGap" type="INT" value="5"/>
151.13842 + </uiproperties>
151.13843 + </style>
151.13844 + <backgroundStates>
151.13845 + <state stateKeys="Disabled">
151.13846 + <style>
151.13847 + <textForeground>
151.13848 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.13849 + </textForeground>
151.13850 + <textBackground/>
151.13851 + <background/>
151.13852 + <inherit-textForeground>false</inherit-textForeground>
151.13853 + <uiproperties/>
151.13854 + </style>
151.13855 + <canvas>
151.13856 + <size width="100" height="3"/>
151.13857 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.13858 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.13859 + <layer name="Layer 1">
151.13860 + <opacity>1.0</opacity>
151.13861 + <fillOpacity>1.0</fillOpacity>
151.13862 + <blendingMode>NORMAL</blendingMode>
151.13863 + <locked>false</locked>
151.13864 + <visible>true</visible>
151.13865 + <shapes/>
151.13866 + <effects/>
151.13867 + </layer>
151.13868 + </canvas>
151.13869 + </state>
151.13870 + <state stateKeys="Enabled">
151.13871 + <style>
151.13872 + <textForeground>
151.13873 + <matte red="35" green="35" blue="36" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.13874 + </textForeground>
151.13875 + <textBackground/>
151.13876 + <background/>
151.13877 + <inherit-textForeground>false</inherit-textForeground>
151.13878 + <uiproperties/>
151.13879 + </style>
151.13880 + <canvas>
151.13881 + <size width="100" height="3"/>
151.13882 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.13883 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.13884 + <layer name="Layer 1">
151.13885 + <opacity>1.0</opacity>
151.13886 + <fillOpacity>1.0</fillOpacity>
151.13887 + <blendingMode>NORMAL</blendingMode>
151.13888 + <locked>false</locked>
151.13889 + <visible>true</visible>
151.13890 + <shapes/>
151.13891 + <effects/>
151.13892 + </layer>
151.13893 + </canvas>
151.13894 + </state>
151.13895 + <state stateKeys="MouseOver">
151.13896 + <style>
151.13897 + <textForeground>
151.13898 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.13899 + </textForeground>
151.13900 + <textBackground/>
151.13901 + <background/>
151.13902 + <inherit-textForeground>false</inherit-textForeground>
151.13903 + <uiproperties/>
151.13904 + </style>
151.13905 + <canvas>
151.13906 + <size width="100" height="3"/>
151.13907 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.13908 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.13909 + <layer name="Layer 1">
151.13910 + <opacity>1.0</opacity>
151.13911 + <fillOpacity>1.0</fillOpacity>
151.13912 + <blendingMode>NORMAL</blendingMode>
151.13913 + <locked>false</locked>
151.13914 + <visible>true</visible>
151.13915 + <shapes>
151.13916 + <rectangle x1="0.0" x2="100.0" y1="0.0" y2="3.0" rounding="0.0">
151.13917 + <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelection" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.13918 + <paintPoints x1="1.0" y1="0.0" x2="1.0" y2="1.0"/>
151.13919 + </rectangle>
151.13920 + </shapes>
151.13921 + <effects/>
151.13922 + </layer>
151.13923 + </canvas>
151.13924 + </state>
151.13925 + </backgroundStates>
151.13926 + <foregroundStates/>
151.13927 + <borderStates/>
151.13928 + <regions>
151.13929 + <region name="MenuItemAccelerator" subregion="true">
151.13930 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.13931 + <style>
151.13932 + <textForeground/>
151.13933 + <textBackground/>
151.13934 + <background/>
151.13935 + <uiproperties/>
151.13936 + </style>
151.13937 + <backgroundStates>
151.13938 + <state stateKeys="Disabled">
151.13939 + <style>
151.13940 + <textForeground>
151.13941 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.13942 + </textForeground>
151.13943 + <textBackground/>
151.13944 + <background/>
151.13945 + <inherit-textForeground>false</inherit-textForeground>
151.13946 + <uiproperties/>
151.13947 + </style>
151.13948 + <canvas>
151.13949 + <size width="80" height="30"/>
151.13950 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.13951 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.13952 + <layer name="Layer 1">
151.13953 + <opacity>1.0</opacity>
151.13954 + <fillOpacity>1.0</fillOpacity>
151.13955 + <blendingMode>NORMAL</blendingMode>
151.13956 + <locked>false</locked>
151.13957 + <visible>true</visible>
151.13958 + <shapes/>
151.13959 + <effects/>
151.13960 + </layer>
151.13961 + </canvas>
151.13962 + </state>
151.13963 + <state stateKeys="Enabled">
151.13964 + <style>
151.13965 + <textForeground/>
151.13966 + <textBackground/>
151.13967 + <background/>
151.13968 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.13969 + <cacheMode>NO_CACHING</cacheMode>
151.13970 + <uiproperties/>
151.13971 + </style>
151.13972 + <canvas>
151.13973 + <size width="80" height="30"/>
151.13974 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.13975 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.13976 + <layer name="Layer 1">
151.13977 + <opacity>1.0</opacity>
151.13978 + <fillOpacity>1.0</fillOpacity>
151.13979 + <blendingMode>NORMAL</blendingMode>
151.13980 + <locked>false</locked>
151.13981 + <visible>true</visible>
151.13982 + <shapes/>
151.13983 + <effects/>
151.13984 + </layer>
151.13985 + </canvas>
151.13986 + </state>
151.13987 + <state stateKeys="MouseOver">
151.13988 + <style>
151.13989 + <textForeground>
151.13990 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.13991 + </textForeground>
151.13992 + <textBackground/>
151.13993 + <background/>
151.13994 + <inherit-textForeground>false</inherit-textForeground>
151.13995 + <uiproperties/>
151.13996 + </style>
151.13997 + <canvas>
151.13998 + <size width="80" height="30"/>
151.13999 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14000 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.14001 + <layer name="Layer 1">
151.14002 + <opacity>1.0</opacity>
151.14003 + <fillOpacity>1.0</fillOpacity>
151.14004 + <blendingMode>NORMAL</blendingMode>
151.14005 + <locked>false</locked>
151.14006 + <visible>true</visible>
151.14007 + <shapes/>
151.14008 + <effects/>
151.14009 + </layer>
151.14010 + </canvas>
151.14011 + </state>
151.14012 + </backgroundStates>
151.14013 + <foregroundStates/>
151.14014 + <borderStates/>
151.14015 + <regions/>
151.14016 + </region>
151.14017 + </regions>
151.14018 + </uiComponent>
151.14019 + <uiComponent opaque="false" type="javax.swing.JRadioButtonMenuItem" name="RadioButtonMenuItem" ui="RadioButtonMenuItemUI" subregion="false">
151.14020 + <stateTypes/>
151.14021 + <contentMargins top="1" bottom="2" left="12" right="13"/>
151.14022 + <style>
151.14023 + <textForeground/>
151.14024 + <textBackground/>
151.14025 + <background/>
151.14026 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.14027 + <cacheMode>NO_CACHING</cacheMode>
151.14028 + <uiproperties>
151.14029 + <uiProperty name="textIconGap" type="INT" value="5"/>
151.14030 + </uiproperties>
151.14031 + </style>
151.14032 + <backgroundStates>
151.14033 + <state stateKeys="Disabled">
151.14034 + <style>
151.14035 + <textForeground>
151.14036 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.14037 + </textForeground>
151.14038 + <textBackground/>
151.14039 + <background/>
151.14040 + <inherit-textForeground>false</inherit-textForeground>
151.14041 + <uiproperties/>
151.14042 + </style>
151.14043 + <canvas>
151.14044 + <size width="100" height="3"/>
151.14045 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14046 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.14047 + <layer name="Layer 1">
151.14048 + <opacity>1.0</opacity>
151.14049 + <fillOpacity>1.0</fillOpacity>
151.14050 + <blendingMode>NORMAL</blendingMode>
151.14051 + <locked>false</locked>
151.14052 + <visible>true</visible>
151.14053 + <shapes/>
151.14054 + <effects/>
151.14055 + </layer>
151.14056 + </canvas>
151.14057 + </state>
151.14058 + <state stateKeys="Enabled">
151.14059 + <style>
151.14060 + <textForeground>
151.14061 + <matte red="35" green="35" blue="36" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.14062 + </textForeground>
151.14063 + <textBackground/>
151.14064 + <background/>
151.14065 + <inherit-textForeground>false</inherit-textForeground>
151.14066 + <uiproperties/>
151.14067 + </style>
151.14068 + <canvas>
151.14069 + <size width="100" height="3"/>
151.14070 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14071 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.14072 + <layer name="Layer 1">
151.14073 + <opacity>1.0</opacity>
151.14074 + <fillOpacity>1.0</fillOpacity>
151.14075 + <blendingMode>NORMAL</blendingMode>
151.14076 + <locked>false</locked>
151.14077 + <visible>true</visible>
151.14078 + <shapes/>
151.14079 + <effects/>
151.14080 + </layer>
151.14081 + </canvas>
151.14082 + </state>
151.14083 + <state stateKeys="MouseOver">
151.14084 + <style>
151.14085 + <textForeground>
151.14086 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.14087 + </textForeground>
151.14088 + <textBackground/>
151.14089 + <background/>
151.14090 + <inherit-textForeground>false</inherit-textForeground>
151.14091 + <uiproperties/>
151.14092 + </style>
151.14093 + <canvas>
151.14094 + <size width="100" height="3"/>
151.14095 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14096 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.14097 + <layer name="Layer 1">
151.14098 + <opacity>1.0</opacity>
151.14099 + <fillOpacity>1.0</fillOpacity>
151.14100 + <blendingMode>NORMAL</blendingMode>
151.14101 + <locked>false</locked>
151.14102 + <visible>true</visible>
151.14103 + <shapes>
151.14104 + <rectangle x1="0.0" x2="100.0" y1="0.0" y2="3.0" rounding="0.0">
151.14105 + <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelection" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.14106 + <paintPoints x1="1.0" y1="0.0" x2="1.0" y2="1.0"/>
151.14107 + </rectangle>
151.14108 + </shapes>
151.14109 + <effects/>
151.14110 + </layer>
151.14111 + </canvas>
151.14112 + </state>
151.14113 + <state stateKeys="Selected+MouseOver">
151.14114 + <style>
151.14115 + <textForeground>
151.14116 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.14117 + </textForeground>
151.14118 + <textBackground/>
151.14119 + <background/>
151.14120 + <inherit-textForeground>false</inherit-textForeground>
151.14121 + <uiproperties/>
151.14122 + </style>
151.14123 + <canvas>
151.14124 + <size width="100" height="3"/>
151.14125 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14126 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.14127 + <layer name="Layer 1">
151.14128 + <opacity>1.0</opacity>
151.14129 + <fillOpacity>1.0</fillOpacity>
151.14130 + <blendingMode>NORMAL</blendingMode>
151.14131 + <locked>false</locked>
151.14132 + <visible>true</visible>
151.14133 + <shapes>
151.14134 + <rectangle x1="0.0" x2="100.0" y1="0.0" y2="3.0" rounding="0.0">
151.14135 + <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelection" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.14136 + <paintPoints x1="1.0" y1="0.0" x2="1.0" y2="1.0"/>
151.14137 + </rectangle>
151.14138 + </shapes>
151.14139 + <effects/>
151.14140 + </layer>
151.14141 + </canvas>
151.14142 + </state>
151.14143 + </backgroundStates>
151.14144 + <foregroundStates/>
151.14145 + <borderStates/>
151.14146 + <regions>
151.14147 + <uiIconRegion name="checkIcon" subregion="true">
151.14148 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.14149 + <style>
151.14150 + <textForeground/>
151.14151 + <textBackground/>
151.14152 + <background/>
151.14153 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.14154 + <uiproperties/>
151.14155 + </style>
151.14156 + <backgroundStates>
151.14157 + <state stateKeys="Disabled+Selected">
151.14158 + <style>
151.14159 + <textForeground/>
151.14160 + <textBackground/>
151.14161 + <background/>
151.14162 + <uiproperties/>
151.14163 + </style>
151.14164 + <canvas>
151.14165 + <size width="9" height="10"/>
151.14166 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14167 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.14168 + <layer name="Layer 1">
151.14169 + <opacity>1.0</opacity>
151.14170 + <fillOpacity>1.0</fillOpacity>
151.14171 + <blendingMode>NORMAL</blendingMode>
151.14172 + <locked>false</locked>
151.14173 + <visible>true</visible>
151.14174 + <shapes>
151.14175 + <path>
151.14176 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08983666" brightnessOffset="-0.17647058" alphaOffset="0"/>
151.14177 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.14178 + <points>
151.14179 + <point x="0.0" y="5.487804878048781" cp1x="0.0" cp1y="5.487804878048781" cp2x="0.0" cp2y="5.487804878048781"/>
151.14180 + <point x="4.548780487804878" y="1.0121951219512197" cp1x="4.548780487804878" cp1y="1.0121951219512197" cp2x="4.548780487804878" cp2y="1.0121951219512197"/>
151.14181 + <point x="9.0" y="5.51219512195122" cp1x="9.0" cp1y="5.51219512195122" cp2x="9.0" cp2y="5.51219512195122"/>
151.14182 + <point x="4.536585365853659" y="10.0" cp1x="4.536585365853659" cp1y="10.0" cp2x="4.536585365853659" cp2y="10.0"/>
151.14183 + </points>
151.14184 + </path>
151.14185 + </shapes>
151.14186 + <effects/>
151.14187 + </layer>
151.14188 + </canvas>
151.14189 + </state>
151.14190 + <state stateKeys="Enabled+Selected">
151.14191 + <style>
151.14192 + <textForeground/>
151.14193 + <textBackground/>
151.14194 + <background/>
151.14195 + <uiproperties/>
151.14196 + </style>
151.14197 + <canvas>
151.14198 + <size width="9" height="10"/>
151.14199 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14200 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.14201 + <layer name="Layer 1">
151.14202 + <opacity>1.0</opacity>
151.14203 + <fillOpacity>1.0</fillOpacity>
151.14204 + <blendingMode>NORMAL</blendingMode>
151.14205 + <locked>false</locked>
151.14206 + <visible>true</visible>
151.14207 + <shapes>
151.14208 + <path>
151.14209 + <matte red="71" green="71" blue="72" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.09663743" brightnessOffset="-0.4627451" alphaOffset="0"/>
151.14210 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.14211 + <points>
151.14212 + <point x="0.012195121951219523" y="5.487804878048781" cp1x="0.012195121951219523" cp1y="5.487804878048781" cp2x="0.012195121951219523" cp2y="5.487804878048781"/>
151.14213 + <point x="4.548780487804878" y="1.0121951219512197" cp1x="4.548780487804878" cp1y="1.0121951219512197" cp2x="4.548780487804878" cp2y="1.0121951219512197"/>
151.14214 + <point x="9.0" y="5.51219512195122" cp1x="9.0" cp1y="5.51219512195122" cp2x="9.0" cp2y="5.51219512195122"/>
151.14215 + <point x="4.536585365853659" y="10.0" cp1x="4.536585365853659" cp1y="10.0" cp2x="4.536585365853659" cp2y="10.0"/>
151.14216 + </points>
151.14217 + </path>
151.14218 + </shapes>
151.14219 + <effects/>
151.14220 + </layer>
151.14221 + <templateLayer fileName="113e58e00fd.png">
151.14222 + <layer name="Template" type="template">
151.14223 + <opacity>1.0</opacity>
151.14224 + <fillOpacity>1.0</fillOpacity>
151.14225 + <blendingMode>NORMAL</blendingMode>
151.14226 + <locked>false</locked>
151.14227 + <visible>false</visible>
151.14228 + <shapes/>
151.14229 + <effects/>
151.14230 + </layer>
151.14231 + </templateLayer>
151.14232 + </canvas>
151.14233 + </state>
151.14234 + <state stateKeys="Selected+MouseOver">
151.14235 + <style>
151.14236 + <textForeground/>
151.14237 + <textBackground/>
151.14238 + <background/>
151.14239 + <uiproperties/>
151.14240 + </style>
151.14241 + <canvas>
151.14242 + <size width="9" height="10"/>
151.14243 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14244 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.14245 + <layer name="Layer 1">
151.14246 + <opacity>1.0</opacity>
151.14247 + <fillOpacity>1.0</fillOpacity>
151.14248 + <blendingMode>NORMAL</blendingMode>
151.14249 + <locked>false</locked>
151.14250 + <visible>true</visible>
151.14251 + <shapes>
151.14252 + <path>
151.14253 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.14254 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.14255 + <points>
151.14256 + <point x="0.012195121951219523" y="5.487804878048781" cp1x="0.012195121951219523" cp1y="5.487804878048781" cp2x="0.012195121951219523" cp2y="5.487804878048781"/>
151.14257 + <point x="4.548780487804878" y="1.0121951219512197" cp1x="4.548780487804878" cp1y="1.0121951219512197" cp2x="4.548780487804878" cp2y="1.0121951219512197"/>
151.14258 + <point x="9.0" y="5.51219512195122" cp1x="9.0" cp1y="5.51219512195122" cp2x="9.0" cp2y="5.51219512195122"/>
151.14259 + <point x="4.536585365853659" y="10.0" cp1x="4.536585365853659" cp1y="10.0" cp2x="4.536585365853659" cp2y="10.0"/>
151.14260 + </points>
151.14261 + </path>
151.14262 + </shapes>
151.14263 + <effects/>
151.14264 + </layer>
151.14265 + <templateLayer fileName="113e593f3d0.png">
151.14266 + <layer name="Template" type="template">
151.14267 + <opacity>1.0</opacity>
151.14268 + <fillOpacity>1.0</fillOpacity>
151.14269 + <blendingMode>NORMAL</blendingMode>
151.14270 + <locked>false</locked>
151.14271 + <visible>false</visible>
151.14272 + <shapes/>
151.14273 + <effects/>
151.14274 + </layer>
151.14275 + </templateLayer>
151.14276 + </canvas>
151.14277 + </state>
151.14278 + </backgroundStates>
151.14279 + <foregroundStates/>
151.14280 + <borderStates/>
151.14281 + <regions/>
151.14282 + </uiIconRegion>
151.14283 + <region name="MenuItemAccelerator" subregion="true">
151.14284 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.14285 + <style>
151.14286 + <textForeground/>
151.14287 + <textBackground/>
151.14288 + <background/>
151.14289 + <uiproperties/>
151.14290 + </style>
151.14291 + <backgroundStates>
151.14292 + <state stateKeys="Disabled">
151.14293 + <style>
151.14294 + <textForeground/>
151.14295 + <textBackground/>
151.14296 + <background/>
151.14297 + <uiproperties/>
151.14298 + </style>
151.14299 + <canvas>
151.14300 + <size width="80" height="30"/>
151.14301 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14302 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.14303 + <layer name="Layer 1">
151.14304 + <opacity>1.0</opacity>
151.14305 + <fillOpacity>1.0</fillOpacity>
151.14306 + <blendingMode>NORMAL</blendingMode>
151.14307 + <locked>false</locked>
151.14308 + <visible>true</visible>
151.14309 + <shapes/>
151.14310 + <effects/>
151.14311 + </layer>
151.14312 + </canvas>
151.14313 + </state>
151.14314 + <state stateKeys="Enabled">
151.14315 + <style>
151.14316 + <textForeground/>
151.14317 + <textBackground/>
151.14318 + <background/>
151.14319 + <uiproperties/>
151.14320 + </style>
151.14321 + <canvas>
151.14322 + <size width="80" height="30"/>
151.14323 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14324 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.14325 + <layer name="Layer 1">
151.14326 + <opacity>1.0</opacity>
151.14327 + <fillOpacity>1.0</fillOpacity>
151.14328 + <blendingMode>NORMAL</blendingMode>
151.14329 + <locked>false</locked>
151.14330 + <visible>true</visible>
151.14331 + <shapes/>
151.14332 + <effects/>
151.14333 + </layer>
151.14334 + </canvas>
151.14335 + </state>
151.14336 + <state stateKeys="MouseOver">
151.14337 + <style>
151.14338 + <textForeground>
151.14339 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.14340 + </textForeground>
151.14341 + <textBackground/>
151.14342 + <background/>
151.14343 + <inherit-textForeground>false</inherit-textForeground>
151.14344 + <uiproperties/>
151.14345 + </style>
151.14346 + <canvas>
151.14347 + <size width="80" height="30"/>
151.14348 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14349 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.14350 + <layer name="Layer 1">
151.14351 + <opacity>1.0</opacity>
151.14352 + <fillOpacity>1.0</fillOpacity>
151.14353 + <blendingMode>NORMAL</blendingMode>
151.14354 + <locked>false</locked>
151.14355 + <visible>true</visible>
151.14356 + <shapes/>
151.14357 + <effects/>
151.14358 + </layer>
151.14359 + </canvas>
151.14360 + </state>
151.14361 + </backgroundStates>
151.14362 + <foregroundStates/>
151.14363 + <borderStates/>
151.14364 + <regions/>
151.14365 + </region>
151.14366 + <uiIconRegion name="Icon" subregion="true" key="icon">
151.14367 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.14368 + <style>
151.14369 + <textForeground/>
151.14370 + <textBackground/>
151.14371 + <background/>
151.14372 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.14373 + <cacheMode>NO_CACHING</cacheMode>
151.14374 + <uiproperties/>
151.14375 + </style>
151.14376 + <backgroundStates>
151.14377 + <state stateKeys="Disabled">
151.14378 + <style>
151.14379 + <textForeground/>
151.14380 + <textBackground/>
151.14381 + <background/>
151.14382 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.14383 + <cacheMode>NO_CACHING</cacheMode>
151.14384 + <uiproperties/>
151.14385 + </style>
151.14386 + <canvas>
151.14387 + <size width="14" height="15"/>
151.14388 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.14389 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.14390 + <layer name="Button">
151.14391 + <opacity>1.0</opacity>
151.14392 + <fillOpacity>1.0</fillOpacity>
151.14393 + <blendingMode>NORMAL</blendingMode>
151.14394 + <locked>false</locked>
151.14395 + <visible>true</visible>
151.14396 + <shapes/>
151.14397 + <effects/>
151.14398 + </layer>
151.14399 + </canvas>
151.14400 + </state>
151.14401 + <state stateKeys="Enabled">
151.14402 + <style>
151.14403 + <textForeground/>
151.14404 + <textBackground/>
151.14405 + <background/>
151.14406 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.14407 + <cacheMode>NO_CACHING</cacheMode>
151.14408 + <uiproperties/>
151.14409 + </style>
151.14410 + <canvas>
151.14411 + <size width="14" height="15"/>
151.14412 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.14413 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.14414 + <layer name="Button">
151.14415 + <opacity>1.0</opacity>
151.14416 + <fillOpacity>1.0</fillOpacity>
151.14417 + <blendingMode>NORMAL</blendingMode>
151.14418 + <locked>false</locked>
151.14419 + <visible>true</visible>
151.14420 + <shapes/>
151.14421 + <effects/>
151.14422 + </layer>
151.14423 + </canvas>
151.14424 + </state>
151.14425 + <state stateKeys="MouseOver">
151.14426 + <style>
151.14427 + <textForeground/>
151.14428 + <textBackground/>
151.14429 + <background/>
151.14430 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.14431 + <cacheMode>NO_CACHING</cacheMode>
151.14432 + <uiproperties/>
151.14433 + </style>
151.14434 + <canvas>
151.14435 + <size width="14" height="15"/>
151.14436 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.14437 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.14438 + <layer name="Button">
151.14439 + <opacity>1.0</opacity>
151.14440 + <fillOpacity>1.0</fillOpacity>
151.14441 + <blendingMode>NORMAL</blendingMode>
151.14442 + <locked>false</locked>
151.14443 + <visible>true</visible>
151.14444 + <shapes/>
151.14445 + <effects/>
151.14446 + </layer>
151.14447 + </canvas>
151.14448 + </state>
151.14449 + </backgroundStates>
151.14450 + <foregroundStates/>
151.14451 + <borderStates/>
151.14452 + <regions/>
151.14453 + </uiIconRegion>
151.14454 + </regions>
151.14455 + </uiComponent>
151.14456 + <uiComponent opaque="false" type="javax.swing.JCheckBoxMenuItem" name="CheckBoxMenuItem" ui="CheckBoxMenuItemUI" subregion="false">
151.14457 + <stateTypes/>
151.14458 + <contentMargins top="1" bottom="2" left="12" right="13"/>
151.14459 + <style>
151.14460 + <textForeground/>
151.14461 + <textBackground/>
151.14462 + <background/>
151.14463 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.14464 + <cacheMode>NO_CACHING</cacheMode>
151.14465 + <uiproperties>
151.14466 + <uiProperty name="textIconGap" type="INT" value="5"/>
151.14467 + </uiproperties>
151.14468 + </style>
151.14469 + <backgroundStates>
151.14470 + <state stateKeys="Disabled">
151.14471 + <style>
151.14472 + <textForeground>
151.14473 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.14474 + </textForeground>
151.14475 + <textBackground/>
151.14476 + <background/>
151.14477 + <inherit-textForeground>false</inherit-textForeground>
151.14478 + <uiproperties/>
151.14479 + </style>
151.14480 + <canvas>
151.14481 + <size width="100" height="3"/>
151.14482 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14483 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.14484 + <layer name="Layer 1">
151.14485 + <opacity>1.0</opacity>
151.14486 + <fillOpacity>1.0</fillOpacity>
151.14487 + <blendingMode>NORMAL</blendingMode>
151.14488 + <locked>false</locked>
151.14489 + <visible>true</visible>
151.14490 + <shapes/>
151.14491 + <effects/>
151.14492 + </layer>
151.14493 + </canvas>
151.14494 + </state>
151.14495 + <state stateKeys="Enabled">
151.14496 + <style>
151.14497 + <textForeground>
151.14498 + <matte red="35" green="35" blue="36" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.14499 + </textForeground>
151.14500 + <textBackground/>
151.14501 + <background/>
151.14502 + <inherit-textForeground>false</inherit-textForeground>
151.14503 + <uiproperties/>
151.14504 + </style>
151.14505 + <canvas>
151.14506 + <size width="100" height="3"/>
151.14507 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14508 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.14509 + <layer name="Layer 1">
151.14510 + <opacity>1.0</opacity>
151.14511 + <fillOpacity>1.0</fillOpacity>
151.14512 + <blendingMode>NORMAL</blendingMode>
151.14513 + <locked>false</locked>
151.14514 + <visible>true</visible>
151.14515 + <shapes/>
151.14516 + <effects/>
151.14517 + </layer>
151.14518 + </canvas>
151.14519 + </state>
151.14520 + <state stateKeys="MouseOver">
151.14521 + <style>
151.14522 + <textForeground>
151.14523 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.14524 + </textForeground>
151.14525 + <textBackground/>
151.14526 + <background/>
151.14527 + <inherit-textForeground>false</inherit-textForeground>
151.14528 + <uiproperties/>
151.14529 + </style>
151.14530 + <canvas>
151.14531 + <size width="100" height="3"/>
151.14532 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14533 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.14534 + <layer name="Layer 1">
151.14535 + <opacity>1.0</opacity>
151.14536 + <fillOpacity>1.0</fillOpacity>
151.14537 + <blendingMode>NORMAL</blendingMode>
151.14538 + <locked>false</locked>
151.14539 + <visible>true</visible>
151.14540 + <shapes>
151.14541 + <rectangle x1="0.0" x2="100.0" y1="0.0" y2="3.0" rounding="0.0">
151.14542 + <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelection" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.14543 + <paintPoints x1="1.0" y1="0.0" x2="1.0" y2="1.0"/>
151.14544 + </rectangle>
151.14545 + </shapes>
151.14546 + <effects/>
151.14547 + </layer>
151.14548 + </canvas>
151.14549 + </state>
151.14550 + <state stateKeys="Selected+MouseOver">
151.14551 + <style>
151.14552 + <textForeground>
151.14553 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.14554 + </textForeground>
151.14555 + <textBackground/>
151.14556 + <background/>
151.14557 + <inherit-textForeground>false</inherit-textForeground>
151.14558 + <uiproperties/>
151.14559 + </style>
151.14560 + <canvas>
151.14561 + <size width="100" height="3"/>
151.14562 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14563 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.14564 + <layer name="Layer 1">
151.14565 + <opacity>1.0</opacity>
151.14566 + <fillOpacity>1.0</fillOpacity>
151.14567 + <blendingMode>NORMAL</blendingMode>
151.14568 + <locked>false</locked>
151.14569 + <visible>true</visible>
151.14570 + <shapes>
151.14571 + <rectangle x1="0.0" x2="100.0" y1="0.0" y2="3.0" rounding="0.0">
151.14572 + <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelection" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.14573 + <paintPoints x1="1.0" y1="0.0" x2="1.0" y2="1.0"/>
151.14574 + </rectangle>
151.14575 + </shapes>
151.14576 + <effects/>
151.14577 + </layer>
151.14578 + </canvas>
151.14579 + </state>
151.14580 + </backgroundStates>
151.14581 + <foregroundStates/>
151.14582 + <borderStates/>
151.14583 + <regions>
151.14584 + <uiIconRegion name="checkIcon" subregion="true">
151.14585 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.14586 + <style>
151.14587 + <textForeground/>
151.14588 + <textBackground/>
151.14589 + <background/>
151.14590 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.14591 + <uiproperties/>
151.14592 + </style>
151.14593 + <backgroundStates>
151.14594 + <state stateKeys="Disabled+Selected">
151.14595 + <style>
151.14596 + <textForeground/>
151.14597 + <textBackground/>
151.14598 + <background/>
151.14599 + <uiproperties/>
151.14600 + </style>
151.14601 + <canvas>
151.14602 + <size width="9" height="10"/>
151.14603 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14604 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.14605 + <layer name="Layer 1">
151.14606 + <opacity>1.0</opacity>
151.14607 + <fillOpacity>1.0</fillOpacity>
151.14608 + <blendingMode>NORMAL</blendingMode>
151.14609 + <locked>false</locked>
151.14610 + <visible>true</visible>
151.14611 + <shapes>
151.14612 + <path>
151.14613 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08983666" brightnessOffset="-0.17647058" alphaOffset="0"/>
151.14614 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.14615 + <points>
151.14616 + <point x="0.0" y="5.0" cp1x="0.0" cp1y="5.0" cp2x="0.0" cp2y="5.0"/>
151.14617 + <point x="2.1463414634146343" y="5.0" cp1x="2.1463414634146343" cp1y="5.0" cp2x="2.1463414634146343" cp2y="5.0"/>
151.14618 + <point x="3.560975609756098" y="7.390243902439032" cp1x="3.560975609756098" cp1y="7.390243902439032" cp2x="3.560975609756098" cp2y="7.390243902439032"/>
151.14619 + <point x="6.963414634146344" y="0.0" cp1x="6.963414634146344" cp1y="0.0" cp2x="6.963414634146344" cp2y="0.0"/>
151.14620 + <point x="9.0" y="0.0" cp1x="9.0" cp1y="0.0" cp2x="9.0" cp2y="0.0"/>
151.14621 + <point x="9.0" y="0.9999999999999998" cp1x="9.0" cp1y="0.9999999999999998" cp2x="9.0" cp2y="0.9999999999999998"/>
151.14622 + <point x="8.158536585365859" y="1.9756097560975614" cp1x="8.158536585365859" cp1y="1.9756097560975614" cp2x="8.158536585365859" cp2y="1.9756097560975614"/>
151.14623 + <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
151.14624 + <point x="2.8658536585365852" y="10.0" cp1x="2.8658536585365852" cp1y="10.0" cp2x="2.8658536585365852" cp2y="10.0"/>
151.14625 + </points>
151.14626 + </path>
151.14627 + </shapes>
151.14628 + <effects/>
151.14629 + </layer>
151.14630 + </canvas>
151.14631 + </state>
151.14632 + <state stateKeys="Enabled+Selected">
151.14633 + <style>
151.14634 + <textForeground/>
151.14635 + <textBackground/>
151.14636 + <background/>
151.14637 + <uiproperties/>
151.14638 + </style>
151.14639 + <canvas>
151.14640 + <size width="9" height="10"/>
151.14641 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14642 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.14643 + <layer name="Layer 1">
151.14644 + <opacity>1.0</opacity>
151.14645 + <fillOpacity>1.0</fillOpacity>
151.14646 + <blendingMode>NORMAL</blendingMode>
151.14647 + <locked>false</locked>
151.14648 + <visible>true</visible>
151.14649 + <shapes>
151.14650 + <path>
151.14651 + <matte red="72" green="72" blue="73" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.096827686" brightnessOffset="-0.45882353" alphaOffset="0"/>
151.14652 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.14653 + <points>
151.14654 + <point x="0.0" y="5.0" cp1x="0.0" cp1y="5.0" cp2x="0.0" cp2y="5.0"/>
151.14655 + <point x="2.1463414634146343" y="5.0" cp1x="2.1463414634146343" cp1y="5.0" cp2x="2.1463414634146343" cp2y="5.0"/>
151.14656 + <point x="3.560975609756098" y="7.390243902439032" cp1x="3.560975609756098" cp1y="7.390243902439032" cp2x="3.560975609756098" cp2y="7.390243902439032"/>
151.14657 + <point x="6.963414634146344" y="0.0" cp1x="6.963414634146344" cp1y="0.0" cp2x="6.963414634146344" cp2y="0.0"/>
151.14658 + <point x="9.0" y="0.0" cp1x="9.0" cp1y="0.0" cp2x="9.0" cp2y="0.0"/>
151.14659 + <point x="9.0" y="0.9999999999999998" cp1x="9.0" cp1y="0.9999999999999998" cp2x="9.0" cp2y="0.9999999999999998"/>
151.14660 + <point x="8.158536585365859" y="1.9756097560975614" cp1x="8.158536585365859" cp1y="1.9756097560975614" cp2x="8.158536585365859" cp2y="1.9756097560975614"/>
151.14661 + <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
151.14662 + <point x="2.8658536585365852" y="10.0" cp1x="2.8658536585365852" cp1y="10.0" cp2x="2.8658536585365852" cp2y="10.0"/>
151.14663 + </points>
151.14664 + </path>
151.14665 + </shapes>
151.14666 + <effects/>
151.14667 + </layer>
151.14668 + <templateLayer fileName="113e58b199e.png">
151.14669 + <layer name="Template" type="template">
151.14670 + <opacity>1.0</opacity>
151.14671 + <fillOpacity>1.0</fillOpacity>
151.14672 + <blendingMode>NORMAL</blendingMode>
151.14673 + <locked>false</locked>
151.14674 + <visible>false</visible>
151.14675 + <shapes/>
151.14676 + <effects/>
151.14677 + </layer>
151.14678 + </templateLayer>
151.14679 + </canvas>
151.14680 + </state>
151.14681 + <state stateKeys="Selected+MouseOver">
151.14682 + <style>
151.14683 + <textForeground/>
151.14684 + <textBackground/>
151.14685 + <background/>
151.14686 + <uiproperties/>
151.14687 + </style>
151.14688 + <canvas>
151.14689 + <size width="9" height="10"/>
151.14690 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14691 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.14692 + <layer name="Layer 1">
151.14693 + <opacity>1.0</opacity>
151.14694 + <fillOpacity>1.0</fillOpacity>
151.14695 + <blendingMode>NORMAL</blendingMode>
151.14696 + <locked>false</locked>
151.14697 + <visible>true</visible>
151.14698 + <shapes>
151.14699 + <path>
151.14700 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.14701 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.14702 + <points>
151.14703 + <point x="0.0" y="5.0" cp1x="0.0" cp1y="5.0" cp2x="0.0" cp2y="5.0"/>
151.14704 + <point x="2.1463414634146343" y="5.0" cp1x="2.1463414634146343" cp1y="5.0" cp2x="2.1463414634146343" cp2y="5.0"/>
151.14705 + <point x="3.560975609756098" y="7.390243902439032" cp1x="3.560975609756098" cp1y="7.390243902439032" cp2x="3.560975609756098" cp2y="7.390243902439032"/>
151.14706 + <point x="6.963414634146344" y="0.0" cp1x="6.963414634146344" cp1y="0.0" cp2x="6.963414634146344" cp2y="0.0"/>
151.14707 + <point x="9.0" y="0.0" cp1x="9.0" cp1y="0.0" cp2x="9.0" cp2y="0.0"/>
151.14708 + <point x="9.0" y="0.9999999999999998" cp1x="9.0" cp1y="0.9999999999999998" cp2x="9.0" cp2y="0.9999999999999998"/>
151.14709 + <point x="8.158536585365859" y="1.9756097560975614" cp1x="8.158536585365859" cp1y="1.9756097560975614" cp2x="8.158536585365859" cp2y="1.9756097560975614"/>
151.14710 + <point x="4.0" y="10.0" cp1x="4.0" cp1y="10.0" cp2x="4.0" cp2y="10.0"/>
151.14711 + <point x="2.8658536585365852" y="10.0" cp1x="2.8658536585365852" cp1y="10.0" cp2x="2.8658536585365852" cp2y="10.0"/>
151.14712 + </points>
151.14713 + </path>
151.14714 + </shapes>
151.14715 + <effects/>
151.14716 + </layer>
151.14717 + <templateLayer fileName="113e5925910.png">
151.14718 + <layer name="Template" type="template">
151.14719 + <opacity>1.0</opacity>
151.14720 + <fillOpacity>1.0</fillOpacity>
151.14721 + <blendingMode>NORMAL</blendingMode>
151.14722 + <locked>false</locked>
151.14723 + <visible>false</visible>
151.14724 + <shapes/>
151.14725 + <effects/>
151.14726 + </layer>
151.14727 + </templateLayer>
151.14728 + </canvas>
151.14729 + </state>
151.14730 + </backgroundStates>
151.14731 + <foregroundStates/>
151.14732 + <borderStates/>
151.14733 + <regions/>
151.14734 + </uiIconRegion>
151.14735 + <region name="MenuItemAccelerator" subregion="true">
151.14736 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.14737 + <style>
151.14738 + <textForeground/>
151.14739 + <textBackground/>
151.14740 + <background/>
151.14741 + <uiproperties/>
151.14742 + </style>
151.14743 + <backgroundStates>
151.14744 + <state stateKeys="Disabled">
151.14745 + <style>
151.14746 + <textForeground/>
151.14747 + <textBackground/>
151.14748 + <background/>
151.14749 + <uiproperties/>
151.14750 + </style>
151.14751 + <canvas>
151.14752 + <size width="80" height="30"/>
151.14753 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14754 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.14755 + <layer name="Layer 1">
151.14756 + <opacity>1.0</opacity>
151.14757 + <fillOpacity>1.0</fillOpacity>
151.14758 + <blendingMode>NORMAL</blendingMode>
151.14759 + <locked>false</locked>
151.14760 + <visible>true</visible>
151.14761 + <shapes/>
151.14762 + <effects/>
151.14763 + </layer>
151.14764 + </canvas>
151.14765 + </state>
151.14766 + <state stateKeys="Enabled">
151.14767 + <style>
151.14768 + <textForeground/>
151.14769 + <textBackground/>
151.14770 + <background/>
151.14771 + <uiproperties/>
151.14772 + </style>
151.14773 + <canvas>
151.14774 + <size width="80" height="30"/>
151.14775 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14776 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.14777 + <layer name="Layer 1">
151.14778 + <opacity>1.0</opacity>
151.14779 + <fillOpacity>1.0</fillOpacity>
151.14780 + <blendingMode>NORMAL</blendingMode>
151.14781 + <locked>false</locked>
151.14782 + <visible>true</visible>
151.14783 + <shapes/>
151.14784 + <effects/>
151.14785 + </layer>
151.14786 + </canvas>
151.14787 + </state>
151.14788 + <state stateKeys="MouseOver">
151.14789 + <style>
151.14790 + <textForeground>
151.14791 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.14792 + </textForeground>
151.14793 + <textBackground/>
151.14794 + <background/>
151.14795 + <inherit-textForeground>false</inherit-textForeground>
151.14796 + <uiproperties/>
151.14797 + </style>
151.14798 + <canvas>
151.14799 + <size width="80" height="30"/>
151.14800 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14801 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.14802 + <layer name="Layer 1">
151.14803 + <opacity>1.0</opacity>
151.14804 + <fillOpacity>1.0</fillOpacity>
151.14805 + <blendingMode>NORMAL</blendingMode>
151.14806 + <locked>false</locked>
151.14807 + <visible>true</visible>
151.14808 + <shapes/>
151.14809 + <effects/>
151.14810 + </layer>
151.14811 + </canvas>
151.14812 + </state>
151.14813 + </backgroundStates>
151.14814 + <foregroundStates/>
151.14815 + <borderStates/>
151.14816 + <regions/>
151.14817 + </region>
151.14818 + </regions>
151.14819 + </uiComponent>
151.14820 + <uiComponent opaque="false" type="javax.swing.JMenu" name="Menu" ui="MenuUI" subregion="false">
151.14821 + <stateTypes/>
151.14822 + <contentMargins top="1" bottom="2" left="12" right="5"/>
151.14823 + <style>
151.14824 + <textForeground/>
151.14825 + <textBackground/>
151.14826 + <background/>
151.14827 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.14828 + <cacheMode>NO_CACHING</cacheMode>
151.14829 + <uiproperties/>
151.14830 + </style>
151.14831 + <backgroundStates>
151.14832 + <state stateKeys="Disabled">
151.14833 + <style>
151.14834 + <textForeground>
151.14835 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.14836 + </textForeground>
151.14837 + <textBackground/>
151.14838 + <background/>
151.14839 + <inherit-textForeground>false</inherit-textForeground>
151.14840 + <uiproperties/>
151.14841 + </style>
151.14842 + <canvas>
151.14843 + <size width="100" height="30"/>
151.14844 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14845 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.14846 + <layer name="Layer 1">
151.14847 + <opacity>1.0</opacity>
151.14848 + <fillOpacity>1.0</fillOpacity>
151.14849 + <blendingMode>NORMAL</blendingMode>
151.14850 + <locked>false</locked>
151.14851 + <visible>true</visible>
151.14852 + <shapes/>
151.14853 + <effects/>
151.14854 + </layer>
151.14855 + </canvas>
151.14856 + </state>
151.14857 + <state stateKeys="Enabled">
151.14858 + <style>
151.14859 + <textForeground>
151.14860 + <matte red="35" green="35" blue="36" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.14861 + </textForeground>
151.14862 + <textBackground/>
151.14863 + <background/>
151.14864 + <inherit-textForeground>false</inherit-textForeground>
151.14865 + <uiproperties/>
151.14866 + </style>
151.14867 + <canvas>
151.14868 + <size width="100" height="30"/>
151.14869 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14870 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.14871 + <layer name="Layer 1">
151.14872 + <opacity>1.0</opacity>
151.14873 + <fillOpacity>1.0</fillOpacity>
151.14874 + <blendingMode>NORMAL</blendingMode>
151.14875 + <locked>false</locked>
151.14876 + <visible>true</visible>
151.14877 + <shapes/>
151.14878 + <effects/>
151.14879 + </layer>
151.14880 + </canvas>
151.14881 + </state>
151.14882 + <state stateKeys="Enabled+Selected">
151.14883 + <style>
151.14884 + <textForeground>
151.14885 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.14886 + </textForeground>
151.14887 + <textBackground/>
151.14888 + <background/>
151.14889 + <inherit-textForeground>false</inherit-textForeground>
151.14890 + <uiproperties/>
151.14891 + </style>
151.14892 + <canvas>
151.14893 + <size width="100" height="30"/>
151.14894 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14895 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.14896 + <layer name="Layer 1">
151.14897 + <opacity>1.0</opacity>
151.14898 + <fillOpacity>1.0</fillOpacity>
151.14899 + <blendingMode>NORMAL</blendingMode>
151.14900 + <locked>false</locked>
151.14901 + <visible>true</visible>
151.14902 + <shapes>
151.14903 + <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
151.14904 + <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelection" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.14905 + <paintPoints x1="1.0" y1="0.0" x2="1.0" y2="1.0"/>
151.14906 + </rectangle>
151.14907 + </shapes>
151.14908 + <effects/>
151.14909 + </layer>
151.14910 + </canvas>
151.14911 + </state>
151.14912 + </backgroundStates>
151.14913 + <foregroundStates/>
151.14914 + <borderStates/>
151.14915 + <regions>
151.14916 + <uiIconRegion name="arrowIcon" subregion="true">
151.14917 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.14918 + <style>
151.14919 + <textForeground/>
151.14920 + <textBackground/>
151.14921 + <background/>
151.14922 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.14923 + <uiproperties/>
151.14924 + </style>
151.14925 + <backgroundStates>
151.14926 + <state stateKeys="Disabled">
151.14927 + <style>
151.14928 + <textForeground/>
151.14929 + <textBackground/>
151.14930 + <background/>
151.14931 + <uiproperties/>
151.14932 + </style>
151.14933 + <canvas>
151.14934 + <size width="9" height="10"/>
151.14935 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14936 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.14937 + <layer name="Layer 1">
151.14938 + <opacity>1.0</opacity>
151.14939 + <fillOpacity>1.0</fillOpacity>
151.14940 + <blendingMode>NORMAL</blendingMode>
151.14941 + <locked>false</locked>
151.14942 + <visible>true</visible>
151.14943 + <shapes>
151.14944 + <path>
151.14945 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08983666" brightnessOffset="-0.17647058" alphaOffset="0"/>
151.14946 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.14947 + <points>
151.14948 + <point x="0.0" y="1.0" cp1x="0.0" cp1y="1.0" cp2x="0.0" cp2y="1.0"/>
151.14949 + <point x="7.756097560975589" y="5.512195121951206" cp1x="7.756097560975589" cp1y="5.512195121951206" cp2x="7.756097560975589" cp2y="5.512195121951206"/>
151.14950 + <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
151.14951 + </points>
151.14952 + </path>
151.14953 + </shapes>
151.14954 + <effects/>
151.14955 + </layer>
151.14956 + </canvas>
151.14957 + </state>
151.14958 + <state stateKeys="Enabled">
151.14959 + <style>
151.14960 + <textForeground/>
151.14961 + <textBackground/>
151.14962 + <background/>
151.14963 + <uiproperties/>
151.14964 + </style>
151.14965 + <canvas>
151.14966 + <size width="9" height="10"/>
151.14967 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.14968 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.14969 + <layer name="Layer 1">
151.14970 + <opacity>1.0</opacity>
151.14971 + <fillOpacity>1.0</fillOpacity>
151.14972 + <blendingMode>NORMAL</blendingMode>
151.14973 + <locked>false</locked>
151.14974 + <visible>true</visible>
151.14975 + <shapes>
151.14976 + <path>
151.14977 + <matte red="71" green="71" blue="72" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.09663743" brightnessOffset="-0.4627451" alphaOffset="0"/>
151.14978 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.14979 + <points>
151.14980 + <point x="0.0" y="1.0" cp1x="0.0" cp1y="1.0" cp2x="0.0" cp2y="1.0"/>
151.14981 + <point x="7.756097560975589" y="5.512195121951206" cp1x="7.756097560975589" cp1y="5.512195121951206" cp2x="7.756097560975589" cp2y="5.512195121951206"/>
151.14982 + <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
151.14983 + </points>
151.14984 + </path>
151.14985 + </shapes>
151.14986 + <effects/>
151.14987 + </layer>
151.14988 + <templateLayer fileName="113e57f255e.png">
151.14989 + <layer name="Template" type="template">
151.14990 + <opacity>1.0</opacity>
151.14991 + <fillOpacity>1.0</fillOpacity>
151.14992 + <blendingMode>NORMAL</blendingMode>
151.14993 + <locked>false</locked>
151.14994 + <visible>false</visible>
151.14995 + <shapes/>
151.14996 + <effects/>
151.14997 + </layer>
151.14998 + </templateLayer>
151.14999 + </canvas>
151.15000 + </state>
151.15001 + <state stateKeys="Enabled+Selected">
151.15002 + <style>
151.15003 + <textForeground/>
151.15004 + <textBackground/>
151.15005 + <background/>
151.15006 + <uiproperties/>
151.15007 + </style>
151.15008 + <canvas>
151.15009 + <size width="9" height="10"/>
151.15010 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.15011 + <stretchingInsets top="1" bottom="1" left="1" right="1"/>
151.15012 + <layer name="Layer 1">
151.15013 + <opacity>1.0</opacity>
151.15014 + <fillOpacity>1.0</fillOpacity>
151.15015 + <blendingMode>NORMAL</blendingMode>
151.15016 + <locked>false</locked>
151.15017 + <visible>true</visible>
151.15018 + <shapes>
151.15019 + <path>
151.15020 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.15021 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.15022 + <points>
151.15023 + <point x="0.0" y="1.0" cp1x="0.0" cp1y="1.0" cp2x="0.0" cp2y="1.0"/>
151.15024 + <point x="7.670731707317066" y="5.499999999999998" cp1x="7.670731707317066" cp1y="5.499999999999998" cp2x="7.670731707317066" cp2y="5.499999999999998"/>
151.15025 + <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
151.15026 + </points>
151.15027 + </path>
151.15028 + </shapes>
151.15029 + <effects/>
151.15030 + </layer>
151.15031 + <templateLayer fileName="113e58a275a.png">
151.15032 + <layer name="Template" type="template">
151.15033 + <opacity>1.0</opacity>
151.15034 + <fillOpacity>1.0</fillOpacity>
151.15035 + <blendingMode>NORMAL</blendingMode>
151.15036 + <locked>false</locked>
151.15037 + <visible>false</visible>
151.15038 + <shapes/>
151.15039 + <effects/>
151.15040 + </layer>
151.15041 + </templateLayer>
151.15042 + </canvas>
151.15043 + </state>
151.15044 + </backgroundStates>
151.15045 + <foregroundStates/>
151.15046 + <borderStates/>
151.15047 + <regions/>
151.15048 + </uiIconRegion>
151.15049 + <region name="MenuItemAccelerator" subregion="true">
151.15050 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.15051 + <style>
151.15052 + <textForeground/>
151.15053 + <textBackground/>
151.15054 + <background/>
151.15055 + <uiproperties/>
151.15056 + </style>
151.15057 + <backgroundStates>
151.15058 + <state stateKeys="Disabled">
151.15059 + <style>
151.15060 + <textForeground/>
151.15061 + <textBackground/>
151.15062 + <background/>
151.15063 + <uiproperties/>
151.15064 + </style>
151.15065 + <canvas>
151.15066 + <size width="80" height="30"/>
151.15067 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.15068 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.15069 + <layer name="Layer 1">
151.15070 + <opacity>1.0</opacity>
151.15071 + <fillOpacity>1.0</fillOpacity>
151.15072 + <blendingMode>NORMAL</blendingMode>
151.15073 + <locked>false</locked>
151.15074 + <visible>true</visible>
151.15075 + <shapes/>
151.15076 + <effects/>
151.15077 + </layer>
151.15078 + </canvas>
151.15079 + </state>
151.15080 + <state stateKeys="Enabled">
151.15081 + <style>
151.15082 + <textForeground/>
151.15083 + <textBackground/>
151.15084 + <background/>
151.15085 + <uiproperties/>
151.15086 + </style>
151.15087 + <canvas>
151.15088 + <size width="80" height="30"/>
151.15089 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.15090 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.15091 + <layer name="Layer 1">
151.15092 + <opacity>1.0</opacity>
151.15093 + <fillOpacity>1.0</fillOpacity>
151.15094 + <blendingMode>NORMAL</blendingMode>
151.15095 + <locked>false</locked>
151.15096 + <visible>true</visible>
151.15097 + <shapes/>
151.15098 + <effects/>
151.15099 + </layer>
151.15100 + </canvas>
151.15101 + </state>
151.15102 + <state stateKeys="MouseOver">
151.15103 + <style>
151.15104 + <textForeground>
151.15105 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.15106 + </textForeground>
151.15107 + <textBackground/>
151.15108 + <background/>
151.15109 + <inherit-textForeground>false</inherit-textForeground>
151.15110 + <uiproperties/>
151.15111 + </style>
151.15112 + <canvas>
151.15113 + <size width="80" height="30"/>
151.15114 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.15115 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.15116 + <layer name="Layer 1">
151.15117 + <opacity>1.0</opacity>
151.15118 + <fillOpacity>1.0</fillOpacity>
151.15119 + <blendingMode>NORMAL</blendingMode>
151.15120 + <locked>false</locked>
151.15121 + <visible>true</visible>
151.15122 + <shapes/>
151.15123 + <effects/>
151.15124 + </layer>
151.15125 + </canvas>
151.15126 + </state>
151.15127 + </backgroundStates>
151.15128 + <foregroundStates/>
151.15129 + <borderStates/>
151.15130 + <regions/>
151.15131 + </region>
151.15132 + </regions>
151.15133 + </uiComponent>
151.15134 + <uiComponent opaque="true" type="javax.swing.JPopupMenu" name="PopupMenu" ui="PopupMenuUI" subregion="false">
151.15135 + <stateTypes/>
151.15136 + <contentMargins top="6" bottom="6" left="1" right="1"/>
151.15137 + <style>
151.15138 + <textForeground/>
151.15139 + <textBackground/>
151.15140 + <background/>
151.15141 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.15142 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.15143 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.15144 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.15145 + <uiproperties>
151.15146 + <uiProperty name="consumeEventOnClose" type="BOOLEAN" value="true"/>
151.15147 + </uiproperties>
151.15148 + </style>
151.15149 + <backgroundStates>
151.15150 + <state stateKeys="Disabled">
151.15151 + <style>
151.15152 + <textForeground/>
151.15153 + <textBackground/>
151.15154 + <background/>
151.15155 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.15156 + <cacheMode>NO_CACHING</cacheMode>
151.15157 + <uiproperties/>
151.15158 + </style>
151.15159 + <canvas>
151.15160 + <size width="220" height="313"/>
151.15161 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.15162 + <stretchingInsets top="9" bottom="11" left="0" right="0"/>
151.15163 + <layer name="Layer 1">
151.15164 + <opacity>1.0</opacity>
151.15165 + <fillOpacity>1.0</fillOpacity>
151.15166 + <blendingMode>NORMAL</blendingMode>
151.15167 + <locked>false</locked>
151.15168 + <visible>true</visible>
151.15169 + <shapes>
151.15170 + <rectangle x1="1.0" x2="219.0" y1="1.0" y2="312.0" rounding="0.0">
151.15171 + <gradient cycleMethod="NO_CYCLE">
151.15172 + <stop position="0.0" midpoint="0.15">
151.15173 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.15174 + </stop>
151.15175 + <stop position="0.02" midpoint="0.5">
151.15176 + <matte red="237" green="239" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.6150531" brightnessOffset="0.39999998" alphaOffset="0"/>
151.15177 + </stop>
151.15178 + <stop position="0.98" midpoint="0.8">
151.15179 + <matte red="237" green="239" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.6150531" brightnessOffset="0.39999998" alphaOffset="0"/>
151.15180 + </stop>
151.15181 + <stop position="1.0" midpoint="0.72">
151.15182 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.15183 + </stop>
151.15184 + </gradient>
151.15185 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.15186 + </rectangle>
151.15187 + <rectangle x1="0.0" x2="220.0" y1="0.0" y2="313.0" rounding="0.0">
151.15188 + <matte red="89" green="89" blue="89" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.39607844" alphaOffset="0"/>
151.15189 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.15190 + </rectangle>
151.15191 + </shapes>
151.15192 + <effects/>
151.15193 + </layer>
151.15194 + </canvas>
151.15195 + </state>
151.15196 + <state stateKeys="Enabled">
151.15197 + <style>
151.15198 + <textForeground/>
151.15199 + <textBackground/>
151.15200 + <background/>
151.15201 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.15202 + <cacheMode>NO_CACHING</cacheMode>
151.15203 + <uiproperties/>
151.15204 + </style>
151.15205 + <canvas>
151.15206 + <size width="220" height="313"/>
151.15207 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.15208 + <stretchingInsets top="11" bottom="11" left="2" right="2"/>
151.15209 + <layer name="Layer 1">
151.15210 + <opacity>1.0</opacity>
151.15211 + <fillOpacity>1.0</fillOpacity>
151.15212 + <blendingMode>NORMAL</blendingMode>
151.15213 + <locked>false</locked>
151.15214 + <visible>true</visible>
151.15215 + <shapes>
151.15216 + <rectangle x1="1.0" x2="219.0" y1="1.0" y2="312.0" rounding="0.0">
151.15217 + <gradient cycleMethod="NO_CYCLE">
151.15218 + <stop position="0.0" midpoint="0.15">
151.15219 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.15220 + </stop>
151.15221 + <stop position="0.02" midpoint="0.5">
151.15222 + <matte red="237" green="239" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.6150531" brightnessOffset="0.39999998" alphaOffset="0"/>
151.15223 + </stop>
151.15224 + <stop position="0.98" midpoint="0.8">
151.15225 + <matte red="237" green="239" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.6150531" brightnessOffset="0.39999998" alphaOffset="0"/>
151.15226 + </stop>
151.15227 + <stop position="1.0" midpoint="0.72">
151.15228 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.15229 + </stop>
151.15230 + </gradient>
151.15231 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.15232 + </rectangle>
151.15233 + <rectangle x1="0.0" x2="220.0" y1="0.0" y2="313.0" rounding="0.0">
151.15234 + <matte red="89" green="89" blue="89" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.39607844" alphaOffset="0"/>
151.15235 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.15236 + </rectangle>
151.15237 + </shapes>
151.15238 + <effects/>
151.15239 + </layer>
151.15240 + <templateLayer fileName="113dbeb51c2.png">
151.15241 + <layer name="Template" type="template">
151.15242 + <opacity>1.0</opacity>
151.15243 + <fillOpacity>1.0</fillOpacity>
151.15244 + <blendingMode>NORMAL</blendingMode>
151.15245 + <locked>false</locked>
151.15246 + <visible>true</visible>
151.15247 + <shapes/>
151.15248 + <effects/>
151.15249 + </layer>
151.15250 + </templateLayer>
151.15251 + </canvas>
151.15252 + </state>
151.15253 + </backgroundStates>
151.15254 + <foregroundStates/>
151.15255 + <borderStates/>
151.15256 + <regions/>
151.15257 + </uiComponent>
151.15258 + <uiComponent opaque="false" type="javax.swing.JPopupMenu$Separator" name="PopupMenuSeparator" ui="PopupMenuSeparatorUI" subregion="false">
151.15259 + <stateTypes/>
151.15260 + <contentMargins top="1" bottom="2" left="0" right="0"/>
151.15261 + <style>
151.15262 + <textForeground/>
151.15263 + <textBackground/>
151.15264 + <background/>
151.15265 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.15266 + <cacheMode>NO_CACHING</cacheMode>
151.15267 + <uiproperties/>
151.15268 + </style>
151.15269 + <backgroundStates>
151.15270 + <state stateKeys="Enabled" inverted="true">
151.15271 + <style>
151.15272 + <textForeground/>
151.15273 + <textBackground/>
151.15274 + <background/>
151.15275 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.15276 + <cacheMode>NO_CACHING</cacheMode>
151.15277 + <uiproperties/>
151.15278 + </style>
151.15279 + <canvas>
151.15280 + <size width="3" height="3"/>
151.15281 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.15282 + <stretchingInsets top="1" bottom="1" left="1" right="1"/>
151.15283 + <layer name="Layer 1">
151.15284 + <opacity>1.0</opacity>
151.15285 + <fillOpacity>1.0</fillOpacity>
151.15286 + <blendingMode>NORMAL</blendingMode>
151.15287 + <locked>false</locked>
151.15288 + <visible>true</visible>
151.15289 + <shapes>
151.15290 + <rectangle x1="0.0" x2="3.0" y1="1.0" y2="2.0" rounding="0.0">
151.15291 + <matte red="167" green="172" blue="180" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.03830409" brightnessOffset="-0.039215684" alphaOffset="0"/>
151.15292 + <paintPoints x1="0.25" y1="1.0" x2="0.75" y2="2.0"/>
151.15293 + </rectangle>
151.15294 + </shapes>
151.15295 + <effects/>
151.15296 + </layer>
151.15297 + </canvas>
151.15298 + </state>
151.15299 + </backgroundStates>
151.15300 + <foregroundStates/>
151.15301 + <borderStates/>
151.15302 + <regions/>
151.15303 + </uiComponent>
151.15304 + <uiComponent opaque="true" type="javax.swing.JOptionPane" name="OptionPane" ui="OptionPaneUI" subregion="false">
151.15305 + <stateTypes/>
151.15306 + <contentMargins top="15" bottom="15" left="15" right="15"/>
151.15307 + <style>
151.15308 + <textForeground/>
151.15309 + <textBackground/>
151.15310 + <background>
151.15311 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="control" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.15312 + </background>
151.15313 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.15314 + <cacheMode>NO_CACHING</cacheMode>
151.15315 + <uiproperties>
151.15316 + <uiProperty name="buttonOrientation" type="INT" value="4"/>
151.15317 + <uiProperty name="messageAnchor" type="INT" value="17"/>
151.15318 + <uiProperty name="separatorPadding" type="INT" value="0"/>
151.15319 + <uiProperty name="sameSizeButtons" type="BOOLEAN" value="false"/>
151.15320 + </uiproperties>
151.15321 + </style>
151.15322 + <backgroundStates>
151.15323 + <state stateKeys="Enabled">
151.15324 + <style>
151.15325 + <textForeground/>
151.15326 + <textBackground/>
151.15327 + <background/>
151.15328 + <uiproperties/>
151.15329 + </style>
151.15330 + <canvas>
151.15331 + <size width="100" height="30"/>
151.15332 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.15333 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.15334 + <layer name="Layer 1">
151.15335 + <opacity>1.0</opacity>
151.15336 + <fillOpacity>1.0</fillOpacity>
151.15337 + <blendingMode>NORMAL</blendingMode>
151.15338 + <locked>false</locked>
151.15339 + <visible>true</visible>
151.15340 + <shapes/>
151.15341 + <effects/>
151.15342 + </layer>
151.15343 + </canvas>
151.15344 + </state>
151.15345 + </backgroundStates>
151.15346 + <foregroundStates/>
151.15347 + <borderStates/>
151.15348 + <regions>
151.15349 + <uiComponent opaque="false" componentName="OptionPane.separator" type="javax.swing.JSeparator" name="Separator" ui="SeparatorUI" subregion="true">
151.15350 + <stateTypes/>
151.15351 + <contentMargins top="1" bottom="0" left="0" right="0"/>
151.15352 + <style>
151.15353 + <textForeground/>
151.15354 + <textBackground/>
151.15355 + <background/>
151.15356 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.15357 + <cacheMode>NO_CACHING</cacheMode>
151.15358 + <uiproperties/>
151.15359 + </style>
151.15360 + <backgroundStates>
151.15361 + <state stateKeys="Enabled">
151.15362 + <style>
151.15363 + <textForeground/>
151.15364 + <textBackground/>
151.15365 + <background/>
151.15366 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.15367 + <cacheMode>NO_CACHING</cacheMode>
151.15368 + <uiproperties/>
151.15369 + </style>
151.15370 + <canvas>
151.15371 + <size width="100" height="30"/>
151.15372 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.15373 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.15374 + <layer name="Layer 1">
151.15375 + <opacity>1.0</opacity>
151.15376 + <fillOpacity>1.0</fillOpacity>
151.15377 + <blendingMode>NORMAL</blendingMode>
151.15378 + <locked>false</locked>
151.15379 + <visible>true</visible>
151.15380 + <shapes/>
151.15381 + <effects/>
151.15382 + </layer>
151.15383 + </canvas>
151.15384 + </state>
151.15385 + </backgroundStates>
151.15386 + <foregroundStates/>
151.15387 + <borderStates/>
151.15388 + <regions/>
151.15389 + </uiComponent>
151.15390 + <uiComponent opaque="false" componentName="OptionPane.messageArea" type="javax.swing.JPanel" name="Panel" ui="PanelUI" subregion="true">
151.15391 + <stateTypes/>
151.15392 + <contentMargins top="0" bottom="10" left="0" right="0"/>
151.15393 + <style>
151.15394 + <textForeground/>
151.15395 + <textBackground/>
151.15396 + <background/>
151.15397 + <uiproperties/>
151.15398 + </style>
151.15399 + <backgroundStates>
151.15400 + <state stateKeys="Enabled">
151.15401 + <style>
151.15402 + <textForeground/>
151.15403 + <textBackground/>
151.15404 + <background/>
151.15405 + <uiproperties/>
151.15406 + </style>
151.15407 + <canvas>
151.15408 + <size width="100" height="30"/>
151.15409 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.15410 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.15411 + <layer name="Layer 1">
151.15412 + <opacity>1.0</opacity>
151.15413 + <fillOpacity>1.0</fillOpacity>
151.15414 + <blendingMode>NORMAL</blendingMode>
151.15415 + <locked>false</locked>
151.15416 + <visible>true</visible>
151.15417 + <shapes/>
151.15418 + <effects/>
151.15419 + </layer>
151.15420 + </canvas>
151.15421 + </state>
151.15422 + </backgroundStates>
151.15423 + <foregroundStates/>
151.15424 + <borderStates/>
151.15425 + <regions>
151.15426 + <uiComponent opaque="false" componentName="OptionPane.label" type="javax.swing.JLabel" name="Label" ui="LabelUI" subregion="true">
151.15427 + <stateTypes/>
151.15428 + <contentMargins top="0" bottom="10" left="10" right="10"/>
151.15429 + <style>
151.15430 + <textForeground/>
151.15431 + <textBackground/>
151.15432 + <background/>
151.15433 + <uiproperties/>
151.15434 + </style>
151.15435 + <backgroundStates>
151.15436 + <state stateKeys="Enabled">
151.15437 + <style>
151.15438 + <textForeground/>
151.15439 + <textBackground/>
151.15440 + <background/>
151.15441 + <uiproperties/>
151.15442 + </style>
151.15443 + <canvas>
151.15444 + <size width="100" height="30"/>
151.15445 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.15446 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.15447 + <layer name="Layer 1">
151.15448 + <opacity>1.0</opacity>
151.15449 + <fillOpacity>1.0</fillOpacity>
151.15450 + <blendingMode>NORMAL</blendingMode>
151.15451 + <locked>false</locked>
151.15452 + <visible>true</visible>
151.15453 + <shapes>
151.15454 + <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
151.15455 + <matte red="0" green="0" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.15456 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.15457 + </rectangle>
151.15458 + </shapes>
151.15459 + <effects/>
151.15460 + </layer>
151.15461 + </canvas>
151.15462 + </state>
151.15463 + </backgroundStates>
151.15464 + <foregroundStates/>
151.15465 + <borderStates/>
151.15466 + <regions/>
151.15467 + </uiComponent>
151.15468 + </regions>
151.15469 + </uiComponent>
151.15470 + <uiIconRegion name="ErrorIcon" subregion="true" key="errorIcon" basicKey="OptionPane.errorIcon">
151.15471 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.15472 + <style>
151.15473 + <textForeground/>
151.15474 + <textBackground/>
151.15475 + <background/>
151.15476 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.15477 + <uiproperties/>
151.15478 + </style>
151.15479 + <backgroundStates>
151.15480 + <state stateKeys="Enabled">
151.15481 + <style>
151.15482 + <textForeground/>
151.15483 + <textBackground/>
151.15484 + <background/>
151.15485 + <uiproperties/>
151.15486 + </style>
151.15487 + <canvas>
151.15488 + <size width="48" height="48"/>
151.15489 + <nextLayerNameIndex>5</nextLayerNameIndex>
151.15490 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.15491 + <layer name="Layer 4">
151.15492 + <opacity>1.0</opacity>
151.15493 + <fillOpacity>1.0</fillOpacity>
151.15494 + <blendingMode>NORMAL</blendingMode>
151.15495 + <locked>false</locked>
151.15496 + <visible>true</visible>
151.15497 + <shapes>
151.15498 + <path>
151.15499 + <matte red="255" green="255" blue="255" alpha="68" uiDefaultParentName="nimbusRed" hueOffset="0.0" saturationOffset="-0.79881656" brightnessOffset="0.33725488" alphaOffset="-187"/>
151.15500 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.15501 + <points>
151.15502 + <point x="1.0" y="13.6875" cp1x="1.0" cp1y="13.6875" cp2x="1.0" cp2y="13.6875"/>
151.15503 + <point x="13.4375" y="1.0" cp1x="13.4375" cp1y="1.0" cp2x="13.4375" cp2y="1.0"/>
151.15504 + <point x="32.5625" y="1.0" cp1x="32.5625" cp1y="1.0" cp2x="32.5625" cp2y="1.0"/>
151.15505 + <point x="45.0" y="13.5" cp1x="45.0" cp1y="13.5" cp2x="45.0" cp2y="13.5"/>
151.15506 + <point x="45.0" y="32.0" cp1x="45.0" cp1y="32.0" cp2x="45.0" cp2y="32.0"/>
151.15507 + <point x="32.0" y="45.0" cp1x="32.0" cp1y="45.0" cp2x="32.0" cp2y="45.0"/>
151.15508 + <point x="13.6875" y="44.9375" cp1x="13.6875" cp1y="44.9375" cp2x="13.6875" cp2y="44.9375"/>
151.15509 + <point x="1.0625" y="32.3125" cp1x="1.0625" cp1y="32.3125" cp2x="1.0625" cp2y="32.3125"/>
151.15510 + <point x="1.0" y="24.0" cp1x="1.0" cp1y="24.0" cp2x="1.0" cp2y="24.0"/>
151.15511 + <point x="2.0" y="24.0" cp1x="2.0" cp1y="24.0" cp2x="2.0" cp2y="24.0"/>
151.15512 + <point x="2.0" y="32.0" cp1x="2.0" cp1y="32.0" cp2x="2.0" cp2y="32.0"/>
151.15513 + <point x="14.0" y="44.0" cp1x="14.0" cp1y="44.0" cp2x="14.0" cp2y="44.0"/>
151.15514 + <point x="32.0" y="44.0" cp1x="32.0" cp1y="44.0" cp2x="32.0" cp2y="44.0"/>
151.15515 + <point x="44.0" y="32.0" cp1x="44.0" cp1y="32.0" cp2x="44.0" cp2y="32.0"/>
151.15516 + <point x="44.0" y="14.0" cp1x="44.0" cp1y="14.0" cp2x="44.0" cp2y="14.0"/>
151.15517 + <point x="32.0" y="2.0" cp1x="32.0" cp1y="2.0" cp2x="32.0" cp2y="2.0"/>
151.15518 + <point x="14.0" y="2.0" cp1x="14.0" cp1y="2.0" cp2x="14.0" cp2y="2.0"/>
151.15519 + <point x="2.0" y="14.0" cp1x="2.0" cp1y="14.0" cp2x="2.0" cp2y="14.0"/>
151.15520 + <point x="2.0" y="24.0" cp1x="2.0" cp1y="24.0" cp2x="2.0" cp2y="24.0"/>
151.15521 + <point x="1.0" y="24.0" cp1x="1.0" cp1y="24.0" cp2x="1.0" cp2y="24.0"/>
151.15522 + </points>
151.15523 + </path>
151.15524 + <ellipse x1="20.0" x2="26.0" y1="32.0" y2="38.0">
151.15525 + <matte red="250" green="250" blue="250" alpha="255" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="0.22745097" alphaOffset="0"/>
151.15526 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.15527 + </ellipse>
151.15528 + <path>
151.15529 + <matte red="250" green="250" blue="250" alpha="255" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="0.22745097" alphaOffset="0"/>
151.15530 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.15531 + <points>
151.15532 + <point x="20.0" y="11.0" cp1x="20.0" cp1y="13.0" cp2x="20.0" cp2y="9.0"/>
151.15533 + <point x="23.0" y="8.0" cp1x="21.0" cp1y="8.0" cp2x="25.0" cp2y="8.0"/>
151.15534 + <point x="26.0" y="11.0" cp1x="26.0" cp1y="9.0" cp2x="26.0" cp2y="13.0"/>
151.15535 + <point x="24.0" y="29.0" cp1x="24.0" cp1y="29.0" cp2x="24.0" cp2y="29.0"/>
151.15536 + <point x="22.0" y="29.0" cp1x="22.0" cp1y="29.0" cp2x="22.0" cp2y="29.0"/>
151.15537 + </points>
151.15538 + </path>
151.15539 + </shapes>
151.15540 + <effects/>
151.15541 + </layer>
151.15542 + <layer name="Layer 3">
151.15543 + <opacity>1.0</opacity>
151.15544 + <fillOpacity>1.0</fillOpacity>
151.15545 + <blendingMode>NORMAL</blendingMode>
151.15546 + <locked>false</locked>
151.15547 + <visible>true</visible>
151.15548 + <shapes>
151.15549 + <path>
151.15550 + <gradient cycleMethod="NO_CYCLE">
151.15551 + <stop position="0.0" midpoint="0.5">
151.15552 + <matte red="225" green="136" blue="136" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="-0.403261" brightnessOffset="0.21960783" alphaOffset="0"/>
151.15553 + </stop>
151.15554 + <stop position="0.3451613" midpoint="0.5">
151.15555 + <matte red="198" green="54" blue="54" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="-0.07154381" brightnessOffset="0.11372548" alphaOffset="0"/>
151.15556 + </stop>
151.15557 + <stop position="0.683871" midpoint="0.68367344">
151.15558 + <matte red="187" green="17" blue="17" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.110274374" brightnessOffset="0.07058823" alphaOffset="0"/>
151.15559 + </stop>
151.15560 + <stop position="1.0" midpoint="0.5">
151.15561 + <matte red="235" green="60" blue="60" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="-0.05413574" brightnessOffset="0.2588235" alphaOffset="0"/>
151.15562 + </stop>
151.15563 + </gradient>
151.15564 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.15565 + <points>
151.15566 + <point x="1.0" y="14.0" cp1x="1.0" cp1y="14.0" cp2x="1.0" cp2y="14.0"/>
151.15567 + <point x="14.0" y="1.0" cp1x="14.0" cp1y="1.0" cp2x="14.0" cp2y="1.0"/>
151.15568 + <point x="32.0" y="1.0" cp1x="32.0" cp1y="1.0" cp2x="32.0" cp2y="1.0"/>
151.15569 + <point x="45.0" y="14.0" cp1x="45.0" cp1y="14.0" cp2x="45.0" cp2y="14.0"/>
151.15570 + <point x="45.0" y="32.0" cp1x="45.0" cp1y="32.0" cp2x="45.0" cp2y="32.0"/>
151.15571 + <point x="32.0" y="45.0" cp1x="32.0" cp1y="45.0" cp2x="32.0" cp2y="45.0"/>
151.15572 + <point x="14.0" y="45.0" cp1x="14.0" cp1y="45.0" cp2x="14.0" cp2y="45.0"/>
151.15573 + <point x="1.0" y="32.0" cp1x="1.0" cp1y="32.0" cp2x="1.0" cp2y="32.0"/>
151.15574 + </points>
151.15575 + </path>
151.15576 + </shapes>
151.15577 + <effects/>
151.15578 + </layer>
151.15579 + <layer name="Button">
151.15580 + <opacity>1.0</opacity>
151.15581 + <fillOpacity>1.0</fillOpacity>
151.15582 + <blendingMode>NORMAL</blendingMode>
151.15583 + <locked>false</locked>
151.15584 + <visible>true</visible>
151.15585 + <shapes>
151.15586 + <path>
151.15587 + <matte red="173" green="3" blue="3" alpha="255" uiDefaultParentName="nimbusRed" hueOffset="-0.014814814" saturationOffset="0.18384242" brightnessOffset="0.015686274" alphaOffset="0"/>
151.15588 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.15589 + <points>
151.15590 + <point x="0.0" y="13.0" cp1x="0.0" cp1y="13.0" cp2x="0.0" cp2y="13.0"/>
151.15591 + <point x="13.0" y="0.0" cp1x="13.0" cp1y="0.0" cp2x="13.0" cp2y="0.0"/>
151.15592 + <point x="33.0" y="0.0" cp1x="33.0" cp1y="0.0" cp2x="33.0" cp2y="0.0"/>
151.15593 + <point x="46.0" y="13.0" cp1x="46.0" cp1y="13.0" cp2x="46.0" cp2y="13.0"/>
151.15594 + <point x="46.0" y="33.0" cp1x="46.0" cp1y="33.0" cp2x="46.0" cp2y="33.0"/>
151.15595 + <point x="33.0" y="46.0" cp1x="33.0" cp1y="46.0" cp2x="33.0" cp2y="46.0"/>
151.15596 + <point x="13.0" y="46.0" cp1x="13.0" cp1y="46.0" cp2x="13.0" cp2y="46.0"/>
151.15597 + <point x="0.0" y="33.0" cp1x="0.0" cp1y="33.0" cp2x="0.0" cp2y="33.0"/>
151.15598 + </points>
151.15599 + </path>
151.15600 + </shapes>
151.15601 + <effects>
151.15602 + <dropShadow blendingMode="NORMAL" opacity="0.28" angle="135" distance="2" spread="0" size="3">
151.15603 + <matte red="0" green="0" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.15604 + </dropShadow>
151.15605 + </effects>
151.15606 + </layer>
151.15607 + <templateLayer fileName="11406393ebc.png">
151.15608 + <layer name="Template" type="template">
151.15609 + <opacity>1.0</opacity>
151.15610 + <fillOpacity>1.0</fillOpacity>
151.15611 + <blendingMode>NORMAL</blendingMode>
151.15612 + <locked>false</locked>
151.15613 + <visible>false</visible>
151.15614 + <shapes/>
151.15615 + <effects/>
151.15616 + </layer>
151.15617 + </templateLayer>
151.15618 + </canvas>
151.15619 + </state>
151.15620 + </backgroundStates>
151.15621 + <foregroundStates/>
151.15622 + <borderStates/>
151.15623 + <regions/>
151.15624 + </uiIconRegion>
151.15625 + <uiIconRegion name="InformationIcon" subregion="true" key="informationIcon" basicKey="OptionPane.informationIcon">
151.15626 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.15627 + <style>
151.15628 + <textForeground/>
151.15629 + <textBackground/>
151.15630 + <background/>
151.15631 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.15632 + <uiproperties/>
151.15633 + </style>
151.15634 + <backgroundStates>
151.15635 + <state stateKeys="Enabled">
151.15636 + <style>
151.15637 + <textForeground/>
151.15638 + <textBackground/>
151.15639 + <background/>
151.15640 + <uiproperties/>
151.15641 + </style>
151.15642 + <canvas>
151.15643 + <size width="48" height="48"/>
151.15644 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.15645 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.15646 + <layer name="Layer 3">
151.15647 + <opacity>1.0</opacity>
151.15648 + <fillOpacity>1.0</fillOpacity>
151.15649 + <blendingMode>NORMAL</blendingMode>
151.15650 + <locked>false</locked>
151.15651 + <visible>true</visible>
151.15652 + <shapes>
151.15653 + <ellipse x1="20.0" x2="26.0" y1="8.0" y2="14.0">
151.15654 + <matte red="250" green="250" blue="250" alpha="255" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="0.2235294" alphaOffset="0"/>
151.15655 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.15656 + </ellipse>
151.15657 + <path>
151.15658 + <matte red="250" green="250" blue="250" alpha="255" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="0.21960783" alphaOffset="0"/>
151.15659 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.15660 + <points>
151.15661 + <point x="18.0" y="18.0" cp1x="15.5" cp1y="18.0" cp2x="20.5" cp2y="18.0"/>
151.15662 + <point x="24.0" y="18.0" cp1x="22.8125" cp1y="18.0" cp2x="25.1875" cp2y="18.0"/>
151.15663 + <point x="26.0" y="21.0" cp1x="26.0" cp1y="19.0" cp2x="26.0" cp2y="23.0"/>
151.15664 + <point x="26.0" y="33.0" cp1x="26.0" cp1y="33.0" cp2x="26.0" cp2y="33.0"/>
151.15665 + <point x="28.9375" y="33.0" cp1x="26.375" cp1y="33.0625" cp2x="31.5" cp2y="32.9375"/>
151.15666 + <point x="29.0" y="37.0" cp1x="31.5625" cp1y="37.0" cp2x="26.4375" cp2y="37.0"/>
151.15667 + <point x="17.125" y="37.0" cp1x="19.625" cp1y="37.0625" cp2x="14.625" cp2y="36.9375"/>
151.15668 + <point x="17.0" y="33.0" cp1x="14.5625" cp1y="33.0" cp2x="19.4375" cp2y="33.0"/>
151.15669 + <point x="20.0" y="33.0" cp1x="20.0" cp1y="33.0" cp2x="20.0" cp2y="33.0"/>
151.15670 + <point x="20.0" y="22.0" cp1x="20.0" cp1y="22.0" cp2x="20.0" cp2y="22.0"/>
151.15671 + <point x="18.0" y="22.0" cp1x="20.75" cp1y="22.0" cp2x="15.25" cp2y="22.0"/>
151.15672 + </points>
151.15673 + </path>
151.15674 + </shapes>
151.15675 + <effects/>
151.15676 + </layer>
151.15677 + <layer name="Button">
151.15678 + <opacity>1.0</opacity>
151.15679 + <fillOpacity>1.0</fillOpacity>
151.15680 + <blendingMode>NORMAL</blendingMode>
151.15681 + <locked>false</locked>
151.15682 + <visible>true</visible>
151.15683 + <shapes>
151.15684 + <ellipse x1="2.0" x2="44.0" y1="2.0" y2="44.0">
151.15685 + <gradient cycleMethod="NO_CYCLE">
151.15686 + <stop position="0.0" midpoint="0.5">
151.15687 + <matte red="150" green="175" blue="222" alpha="255" uiDefaultParentName="nimbusInfoBlue" hueOffset="-0.0014793873" saturationOffset="-0.41456455" brightnessOffset="0.16470587" alphaOffset="0"/>
151.15688 + </stop>
151.15689 + <stop position="0.28424656" midpoint="0.5">
151.15690 + <matte red="78" green="116" blue="191" alpha="255" uiDefaultParentName="nimbusInfoBlue" hueOffset="3.437996E-4" saturationOffset="-0.14726585" brightnessOffset="0.043137252" alphaOffset="0"/>
151.15691 + </stop>
151.15692 + <stop position="0.5" midpoint="0.5">
151.15693 + <matte red="48" green="93" blue="180" alpha="255" uiDefaultParentName="nimbusInfoBlue" hueOffset="-4.271865E-4" saturationOffset="-0.0055555105" brightnessOffset="0.0" alphaOffset="0"/>
151.15694 + </stop>
151.15695 + <stop position="0.7191781" midpoint="0.5">
151.15696 + <matte red="47" green="92" blue="180" alpha="255" uiDefaultParentName="nimbusInfoBlue" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.15697 + </stop>
151.15698 + <stop position="1.0" midpoint="0.5">
151.15699 + <matte red="87" green="134" blue="224" alpha="255" uiDefaultParentName="nimbusInfoBlue" hueOffset="-7.866621E-4" saturationOffset="-0.12728173" brightnessOffset="0.17254901" alphaOffset="0"/>
151.15700 + </stop>
151.15701 + </gradient>
151.15702 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.15703 + </ellipse>
151.15704 + <ellipse x1="1.0" x2="45.0" y1="1.0" y2="45.0">
151.15705 + <gradient cycleMethod="NO_CYCLE">
151.15706 + <stop position="0.0" midpoint="0.5">
151.15707 + <matte red="162" green="185" blue="229" alpha="255" uiDefaultParentName="nimbusInfoBlue" hueOffset="-8.2296133E-4" saturationOffset="-0.44631243" brightnessOffset="0.19215685" alphaOffset="0"/>
151.15708 + </stop>
151.15709 + <stop position="0.48287672" midpoint="0.5">
151.15710 + <matte red="64" green="106" blue="191" alpha="255" uiDefaultParentName="nimbusInfoBlue" hueOffset="0.0012729168" saturationOffset="-0.0739674" brightnessOffset="0.043137252" alphaOffset="0"/>
151.15711 + </stop>
151.15712 + <stop position="1.0" midpoint="0.5">
151.15713 + <matte red="93" green="139" blue="231" alpha="255" uiDefaultParentName="nimbusInfoBlue" hueOffset="8.354187E-4" saturationOffset="-0.14148629" brightnessOffset="0.19999999" alphaOffset="0"/>
151.15714 + </stop>
151.15715 + </gradient>
151.15716 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.15717 + </ellipse>
151.15718 + <ellipse x1="0.0" x2="46.0" y1="0.0" y2="46.0">
151.15719 + <gradient cycleMethod="NO_CYCLE">
151.15720 + <stop position="0.0" midpoint="0.5">
151.15721 + <matte red="33" green="78" blue="166" alpha="255" uiDefaultParentName="nimbusInfoBlue" hueOffset="0.0" saturationOffset="0.06231594" brightnessOffset="-0.054901958" alphaOffset="0"/>
151.15722 + </stop>
151.15723 + <stop position="1.0" midpoint="0.5">
151.15724 + <matte red="24" green="60" blue="131" alpha="255" uiDefaultParentName="nimbusInfoBlue" hueOffset="3.1620264E-4" saturationOffset="0.07790506" brightnessOffset="-0.19215685" alphaOffset="0"/>
151.15725 + </stop>
151.15726 + </gradient>
151.15727 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.15728 + </ellipse>
151.15729 + <ellipse x1="0.0" x2="0.0" y1="0.0" y2="0.0">
151.15730 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.15731 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.15732 + </ellipse>
151.15733 + <ellipse x1="0.0" x2="0.0" y1="0.0" y2="0.0">
151.15734 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.15735 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.15736 + </ellipse>
151.15737 + <ellipse x1="0.0" x2="0.0" y1="0.0" y2="0.0">
151.15738 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.15739 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.15740 + </ellipse>
151.15741 + </shapes>
151.15742 + <effects>
151.15743 + <dropShadow blendingMode="NORMAL" opacity="0.35" angle="135" distance="2" spread="0" size="4">
151.15744 + <matte red="0" green="0" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.15745 + </dropShadow>
151.15746 + </effects>
151.15747 + </layer>
151.15748 + <templateLayer fileName="11409fd0ae1.png">
151.15749 + <layer name="Template" type="template">
151.15750 + <opacity>1.0</opacity>
151.15751 + <fillOpacity>1.0</fillOpacity>
151.15752 + <blendingMode>NORMAL</blendingMode>
151.15753 + <locked>false</locked>
151.15754 + <visible>false</visible>
151.15755 + <shapes/>
151.15756 + <effects/>
151.15757 + </layer>
151.15758 + </templateLayer>
151.15759 + </canvas>
151.15760 + </state>
151.15761 + </backgroundStates>
151.15762 + <foregroundStates/>
151.15763 + <borderStates/>
151.15764 + <regions/>
151.15765 + </uiIconRegion>
151.15766 + <uiIconRegion name="QuestionIcon" subregion="true" key="questionIcon" basicKey="OptionPane.questionIcon">
151.15767 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.15768 + <style>
151.15769 + <textForeground/>
151.15770 + <textBackground/>
151.15771 + <background/>
151.15772 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.15773 + <uiproperties/>
151.15774 + </style>
151.15775 + <backgroundStates>
151.15776 + <state stateKeys="Enabled">
151.15777 + <style>
151.15778 + <textForeground/>
151.15779 + <textBackground/>
151.15780 + <background/>
151.15781 + <uiproperties/>
151.15782 + </style>
151.15783 + <canvas>
151.15784 + <size width="48" height="48"/>
151.15785 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.15786 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.15787 + <layer name="Layer 3">
151.15788 + <opacity>1.0</opacity>
151.15789 + <fillOpacity>1.0</fillOpacity>
151.15790 + <blendingMode>NORMAL</blendingMode>
151.15791 + <locked>false</locked>
151.15792 + <visible>true</visible>
151.15793 + <shapes>
151.15794 + <ellipse x1="20.0" x2="26.0" y1="32.0" y2="38.0">
151.15795 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.15796 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.15797 + </ellipse>
151.15798 + <path>
151.15799 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.15800 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.15801 + <points>
151.15802 + <point x="15.0" y="17.875" cp1x="13.5" cp1y="16.5" cp2x="16.5" cp2y="19.25"/>
151.15803 + <point x="19.1875" y="17.1875" cp1x="18.4375" cp1y="18.375" cp2x="19.9375" cp2y="16.0"/>
151.15804 + <point x="22.5" y="13.9375" cp1x="20.6875" cp1y="13.9375" cp2x="24.3125" cp2y="13.9375"/>
151.15805 + <point x="25.6875" y="16.8125" cp1x="25.6875" cp1y="15.25" cp2x="25.6875" cp2y="18.375"/>
151.15806 + <point x="22.5625" y="20.5625" cp1x="23.8125" cp1y="19.375" cp2x="21.3125" cp2y="21.75"/>
151.15807 + <point x="20.0625" y="26.125" cp1x="20.0" cp1y="24.625" cp2x="20.125" cp2y="27.625"/>
151.15808 + <point x="22.875" y="28.9375" cp1x="21.5625" cp1y="28.9375" cp2x="24.1875" cp2y="28.9375"/>
151.15809 + <point x="25.9375" y="26.25" cp1x="25.9375" cp1y="27.875" cp2x="25.9375" cp2y="24.625"/>
151.15810 + <point x="29.4375" y="22.3125" cp1x="28.25" cp1y="23.5625" cp2x="30.625" cp2y="21.0625"/>
151.15811 + <point x="32.0" y="16.625" cp1x="32.0625" cp1y="19.9375" cp2x="31.9375" cp2y="13.3125"/>
151.15812 + <point x="23.1875" y="8.0625" cp1x="29.3125" cp1y="8.0" cp2x="17.0625" cp2y="8.125"/>
151.15813 + <point x="14.625" y="13.875" cp1x="15.0625" cp1y="12.625" cp2x="14.1875" cp2y="15.125"/>
151.15814 + </points>
151.15815 + </path>
151.15816 + </shapes>
151.15817 + <effects/>
151.15818 + </layer>
151.15819 + <layer name="Button">
151.15820 + <opacity>1.0</opacity>
151.15821 + <fillOpacity>1.0</fillOpacity>
151.15822 + <blendingMode>NORMAL</blendingMode>
151.15823 + <locked>false</locked>
151.15824 + <visible>true</visible>
151.15825 + <shapes>
151.15826 + <ellipse x1="2.0" x2="44.0" y1="2.0" y2="44.0">
151.15827 + <gradient cycleMethod="NO_CYCLE">
151.15828 + <stop position="0.0" midpoint="0.5">
151.15829 + <matte red="159" green="163" blue="168" alpha="255" hueOffset="-0.018518567" saturationOffset="-0.056954887" brightnessOffset="-0.086274505" alphaOffset="0"/>
151.15830 + </stop>
151.15831 + <stop position="0.30479452" midpoint="0.5">
151.15832 + <matte red="116" green="122" blue="130" alpha="255" hueOffset="-0.015872955" saturationOffset="-0.0028340071" brightnessOffset="-0.2352941" alphaOffset="0"/>
151.15833 + </stop>
151.15834 + <stop position="0.6541096" midpoint="0.5">
151.15835 + <matte red="96" green="104" blue="112" alpha="255" hueOffset="-0.027777791" saturationOffset="0.032330833" brightnessOffset="-0.30588236" alphaOffset="0"/>
151.15836 + </stop>
151.15837 + <stop position="1.0" midpoint="0.5">
151.15838 + <matte red="118" green="128" blue="138" alpha="255" hueOffset="-0.027777791" saturationOffset="0.034401216" brightnessOffset="-0.20392156" alphaOffset="0"/>
151.15839 + </stop>
151.15840 + </gradient>
151.15841 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.15842 + </ellipse>
151.15843 + <ellipse x1="1.0" x2="45.0" y1="1.0" y2="45.0">
151.15844 + <gradient cycleMethod="NO_CYCLE">
151.15845 + <stop position="0.0" midpoint="0.5">
151.15846 + <matte red="168" green="173" blue="178" alpha="255" hueOffset="-0.027777791" saturationOffset="-0.05434654" brightnessOffset="-0.04705882" alphaOffset="0"/>
151.15847 + </stop>
151.15848 + <stop position="1.0" midpoint="0.5">
151.15849 + <matte red="101" green="109" blue="118" alpha="255" hueOffset="-0.022875786" saturationOffset="0.03354148" brightnessOffset="-0.28235295" alphaOffset="0"/>
151.15850 + </stop>
151.15851 + </gradient>
151.15852 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.15853 + </ellipse>
151.15854 + <ellipse x1="0.0" x2="46.0" y1="0.0" y2="46.0">
151.15855 + <gradient cycleMethod="NO_CYCLE">
151.15856 + <stop position="0.0" midpoint="0.5">
151.15857 + <matte red="115" green="120" blue="126" alpha="255" hueOffset="-0.02020204" saturationOffset="-0.023224726" brightnessOffset="-0.2509804" alphaOffset="0"/>
151.15858 + </stop>
151.15859 + <stop position="1.0" midpoint="0.5">
151.15860 + <matte red="26" green="34" blue="43" alpha="255" hueOffset="-0.022875786" saturationOffset="0.28482252" brightnessOffset="-0.5764706" alphaOffset="0"/>
151.15861 + </stop>
151.15862 + </gradient>
151.15863 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.15864 + </ellipse>
151.15865 + </shapes>
151.15866 + <effects>
151.15867 + <dropShadow blendingMode="NORMAL" opacity="0.43" angle="135" distance="2" spread="0" size="3">
151.15868 + <matte red="0" green="0" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.15869 + </dropShadow>
151.15870 + </effects>
151.15871 + </layer>
151.15872 + <templateLayer fileName="11409f1bdec.png">
151.15873 + <layer name="Template" type="template">
151.15874 + <opacity>1.0</opacity>
151.15875 + <fillOpacity>1.0</fillOpacity>
151.15876 + <blendingMode>NORMAL</blendingMode>
151.15877 + <locked>false</locked>
151.15878 + <visible>false</visible>
151.15879 + <shapes/>
151.15880 + <effects/>
151.15881 + </layer>
151.15882 + </templateLayer>
151.15883 + </canvas>
151.15884 + </state>
151.15885 + </backgroundStates>
151.15886 + <foregroundStates/>
151.15887 + <borderStates/>
151.15888 + <regions/>
151.15889 + </uiIconRegion>
151.15890 + <uiIconRegion name="WarningIcon" subregion="true" key="warningIcon" basicKey="OptionPane.warningIcon">
151.15891 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.15892 + <style>
151.15893 + <textForeground/>
151.15894 + <textBackground/>
151.15895 + <background/>
151.15896 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.15897 + <uiproperties/>
151.15898 + </style>
151.15899 + <backgroundStates>
151.15900 + <state stateKeys="Enabled">
151.15901 + <style>
151.15902 + <textForeground/>
151.15903 + <textBackground/>
151.15904 + <background/>
151.15905 + <uiproperties/>
151.15906 + </style>
151.15907 + <canvas>
151.15908 + <size width="48" height="48"/>
151.15909 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.15910 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.15911 + <layer name="Layer 3">
151.15912 + <opacity>1.0</opacity>
151.15913 + <fillOpacity>1.0</fillOpacity>
151.15914 + <blendingMode>NORMAL</blendingMode>
151.15915 + <locked>false</locked>
151.15916 + <visible>true</visible>
151.15917 + <shapes>
151.15918 + <ellipse x1="21.0" x2="27.0" y1="35.0" y2="41.0">
151.15919 + <matte red="16" green="16" blue="16" alpha="255" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.68235296" alphaOffset="0"/>
151.15920 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.15921 + </ellipse>
151.15922 + <path>
151.15923 + <gradient cycleMethod="NO_CYCLE">
151.15924 + <stop position="0.0" midpoint="0.5">
151.15925 + <matte red="69" green="69" blue="69" alpha="255" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.4745098" alphaOffset="0"/>
151.15926 + </stop>
151.15927 + <stop position="1.0" midpoint="0.5">
151.15928 + <matte red="0" green="0" blue="0" alpha="255" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="0"/>
151.15929 + </stop>
151.15930 + </gradient>
151.15931 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.15932 + <points>
151.15933 + <point x="24.0" y="11.0" cp1x="22.0" cp1y="11.0" cp2x="26.0" cp2y="11.0"/>
151.15934 + <point x="27.0" y="15.0" cp1x="27.0" cp1y="13.0" cp2x="27.0" cp2y="17.0"/>
151.15935 + <point x="24.0" y="32.0" cp1x="25.3125" cp1y="32.0" cp2x="22.6875" cp2y="32.0"/>
151.15936 + <point x="21.0" y="15.0" cp1x="21.0" cp1y="17.0" cp2x="21.0" cp2y="13.0"/>
151.15937 + </points>
151.15938 + </path>
151.15939 + </shapes>
151.15940 + <effects/>
151.15941 + </layer>
151.15942 + <layer name="Button">
151.15943 + <opacity>1.0</opacity>
151.15944 + <fillOpacity>1.0</fillOpacity>
151.15945 + <blendingMode>NORMAL</blendingMode>
151.15946 + <locked>false</locked>
151.15947 + <visible>true</visible>
151.15948 + <shapes>
151.15949 + <path>
151.15950 + <gradient cycleMethod="NO_CYCLE">
151.15951 + <stop position="0.0" midpoint="0.5">
151.15952 + <matte red="255" green="237" blue="139" alpha="255" uiDefaultParentName="nimbusAlertYellow" hueOffset="6.530881E-4" saturationOffset="-0.40784314" brightnessOffset="0.0" alphaOffset="0"/>
151.15953 + </stop>
151.15954 + <stop position="0.3458904" midpoint="0.5">
151.15955 + <matte red="255" green="224" blue="63" alpha="255" uiDefaultParentName="nimbusAlertYellow" hueOffset="-3.9456785E-4" saturationOffset="-0.109803915" brightnessOffset="0.0" alphaOffset="0"/>
151.15956 + </stop>
151.15957 + <stop position="0.64041096" midpoint="0.5">
151.15958 + <matte red="255" green="220" blue="35" alpha="255" uiDefaultParentName="nimbusAlertYellow" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.15959 + </stop>
151.15960 + <stop position="0.8253425" midpoint="0.5">
151.15961 + <matte red="255" green="232" blue="47" alpha="255" uiDefaultParentName="nimbusAlertYellow" hueOffset="0.008085668" saturationOffset="-0.04705882" brightnessOffset="0.0" alphaOffset="0"/>
151.15962 + </stop>
151.15963 + <stop position="1.0" midpoint="0.5">
151.15964 + <matte red="255" green="255" blue="82" alpha="255" uiDefaultParentName="nimbusAlertYellow" hueOffset="0.026515156" saturationOffset="-0.18431371" brightnessOffset="0.0" alphaOffset="0"/>
151.15965 + </stop>
151.15966 + </gradient>
151.15967 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.15968 + <points>
151.15969 + <point x="23.9375" y="2.0625" cp1x="22.1875" cp1y="2.0625" cp2x="25.6875" cp2y="2.0625"/>
151.15970 + <point x="26.625" y="4.5625" cp1x="26.625" cp1y="4.5625" cp2x="26.625" cp2y="4.5625"/>
151.15971 + <point x="44.75" y="38.4375" cp1x="44.75" cp1y="38.4375" cp2x="44.75" cp2y="38.4375"/>
151.15972 + <point x="45.9375" y="42.0" cp1x="45.9375" cp1y="40.5625" cp2x="45.9375" cp2y="43.4375"/>
151.15973 + <point x="42.4375" y="44.0" cp1x="42.4375" cp1y="44.0" cp2x="42.4375" cp2y="44.0"/>
151.15974 + <point x="4.8125" y="44.0" cp1x="4.8125" cp1y="44.0" cp2x="4.8125" cp2y="44.0"/>
151.15975 + <point x="2.1875" y="41.875" cp1x="2.25" cp1y="43.5" cp2x="2.125" cp2y="40.25"/>
151.15976 + <point x="3.625" y="37.9375" cp1x="3.625" cp1y="37.9375" cp2x="3.625" cp2y="37.9375"/>
151.15977 + <point x="21.1875" y="4.9375" cp1x="21.1875" cp1y="4.9375" cp2x="21.1875" cp2y="4.9375"/>
151.15978 + </points>
151.15979 + </path>
151.15980 + <path>
151.15981 + <gradient cycleMethod="NO_CYCLE">
151.15982 + <stop position="0.0" midpoint="0.5">
151.15983 + <matte red="216" green="181" blue="0" alpha="255" uiDefaultParentName="nimbusAlertYellow" hueOffset="-4.9102306E-4" saturationOffset="0.1372549" brightnessOffset="-0.15294117" alphaOffset="0"/>
151.15984 + </stop>
151.15985 + <stop position="1.0" midpoint="0.5">
151.15986 + <matte red="166" green="138" blue="0" alpha="255" uiDefaultParentName="nimbusAlertYellow" hueOffset="-0.0015973002" saturationOffset="0.1372549" brightnessOffset="-0.3490196" alphaOffset="0"/>
151.15987 + </stop>
151.15988 + </gradient>
151.15989 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.15990 + <points>
151.15991 + <point x="24.0" y="1.0" cp1x="22.0" cp1y="1.0" cp2x="26.0" cp2y="1.0"/>
151.15992 + <point x="27.1875" y="3.9375" cp1x="27.1875" cp1y="3.9375" cp2x="27.1875" cp2y="3.9375"/>
151.15993 + <point x="45.25" y="37.4375" cp1x="45.25" cp1y="37.4375" cp2x="45.25" cp2y="37.4375"/>
151.15994 + <point x="46.8125" y="42.25" cp1x="46.8125" cp1y="39.875" cp2x="46.8125" cp2y="44.625"/>
151.15995 + <point x="44.0" y="45.0" cp1x="44.0" cp1y="45.0" cp2x="44.0" cp2y="45.0"/>
151.15996 + <point x="4.0" y="45.0" cp1x="4.0" cp1y="45.0" cp2x="4.0" cp2y="45.0"/>
151.15997 + <point x="1.1875" y="42.3125" cp1x="1.3125" cp1y="44.5625" cp2x="1.0625" cp2y="40.0625"/>
151.15998 + <point x="2.875" y="37.5" cp1x="2.875" cp1y="37.5" cp2x="2.875" cp2y="37.5"/>
151.15999 + <point x="21.0" y="4.0" cp1x="21.0" cp1y="4.0" cp2x="21.0" cp2y="4.0"/>
151.16000 + </points>
151.16001 + </path>
151.16002 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.16003 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.16004 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.16005 + </rectangle>
151.16006 + </shapes>
151.16007 + <effects>
151.16008 + <dropShadow blendingMode="NORMAL" opacity="0.22" angle="135" distance="2" spread="0" size="3">
151.16009 + <matte red="0" green="0" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.16010 + </dropShadow>
151.16011 + </effects>
151.16012 + </layer>
151.16013 + <templateLayer fileName="1140a08420a.png">
151.16014 + <layer name="Template" type="template">
151.16015 + <opacity>1.0</opacity>
151.16016 + <fillOpacity>1.0</fillOpacity>
151.16017 + <blendingMode>NORMAL</blendingMode>
151.16018 + <locked>false</locked>
151.16019 + <visible>true</visible>
151.16020 + <shapes/>
151.16021 + <effects/>
151.16022 + </layer>
151.16023 + </templateLayer>
151.16024 + </canvas>
151.16025 + </state>
151.16026 + </backgroundStates>
151.16027 + <foregroundStates/>
151.16028 + <borderStates/>
151.16029 + <regions/>
151.16030 + </uiIconRegion>
151.16031 + </regions>
151.16032 + </uiComponent>
151.16033 + <uiComponent opaque="true" type="javax.swing.JPanel" name="Panel" ui="PanelUI" subregion="false">
151.16034 + <stateTypes/>
151.16035 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.16036 + <style>
151.16037 + <textForeground/>
151.16038 + <textBackground/>
151.16039 + <background/>
151.16040 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.16041 + <cacheMode>NO_CACHING</cacheMode>
151.16042 + <uiproperties/>
151.16043 + </style>
151.16044 + <backgroundStates>
151.16045 + <state stateKeys="Disabled">
151.16046 + <style>
151.16047 + <textForeground/>
151.16048 + <textBackground/>
151.16049 + <background/>
151.16050 + <uiproperties/>
151.16051 + </style>
151.16052 + <canvas>
151.16053 + <size width="100" height="30"/>
151.16054 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.16055 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.16056 + <layer name="Layer 1">
151.16057 + <opacity>1.0</opacity>
151.16058 + <fillOpacity>1.0</fillOpacity>
151.16059 + <blendingMode>NORMAL</blendingMode>
151.16060 + <locked>false</locked>
151.16061 + <visible>true</visible>
151.16062 + <shapes/>
151.16063 + <effects/>
151.16064 + </layer>
151.16065 + </canvas>
151.16066 + </state>
151.16067 + <state stateKeys="Enabled">
151.16068 + <style>
151.16069 + <textForeground/>
151.16070 + <textBackground/>
151.16071 + <background/>
151.16072 + <uiproperties/>
151.16073 + </style>
151.16074 + <canvas>
151.16075 + <size width="100" height="30"/>
151.16076 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.16077 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.16078 + <layer name="Layer 1">
151.16079 + <opacity>1.0</opacity>
151.16080 + <fillOpacity>1.0</fillOpacity>
151.16081 + <blendingMode>NORMAL</blendingMode>
151.16082 + <locked>false</locked>
151.16083 + <visible>true</visible>
151.16084 + <shapes/>
151.16085 + <effects/>
151.16086 + </layer>
151.16087 + </canvas>
151.16088 + </state>
151.16089 + <state stateKeys="Focused">
151.16090 + <style>
151.16091 + <textForeground/>
151.16092 + <textBackground/>
151.16093 + <background/>
151.16094 + <uiproperties/>
151.16095 + </style>
151.16096 + <canvas>
151.16097 + <size width="100" height="30"/>
151.16098 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.16099 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.16100 + <layer name="Layer 1">
151.16101 + <opacity>1.0</opacity>
151.16102 + <fillOpacity>1.0</fillOpacity>
151.16103 + <blendingMode>NORMAL</blendingMode>
151.16104 + <locked>false</locked>
151.16105 + <visible>true</visible>
151.16106 + <shapes/>
151.16107 + <effects/>
151.16108 + </layer>
151.16109 + </canvas>
151.16110 + </state>
151.16111 + <state stateKeys="MouseOver">
151.16112 + <style>
151.16113 + <textForeground/>
151.16114 + <textBackground/>
151.16115 + <background/>
151.16116 + <uiproperties/>
151.16117 + </style>
151.16118 + <canvas>
151.16119 + <size width="100" height="30"/>
151.16120 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.16121 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.16122 + <layer name="Layer 1">
151.16123 + <opacity>1.0</opacity>
151.16124 + <fillOpacity>1.0</fillOpacity>
151.16125 + <blendingMode>NORMAL</blendingMode>
151.16126 + <locked>false</locked>
151.16127 + <visible>true</visible>
151.16128 + <shapes/>
151.16129 + <effects/>
151.16130 + </layer>
151.16131 + </canvas>
151.16132 + </state>
151.16133 + <state stateKeys="Pressed">
151.16134 + <style>
151.16135 + <textForeground/>
151.16136 + <textBackground/>
151.16137 + <background/>
151.16138 + <uiproperties/>
151.16139 + </style>
151.16140 + <canvas>
151.16141 + <size width="100" height="30"/>
151.16142 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.16143 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.16144 + <layer name="Layer 1">
151.16145 + <opacity>1.0</opacity>
151.16146 + <fillOpacity>1.0</fillOpacity>
151.16147 + <blendingMode>NORMAL</blendingMode>
151.16148 + <locked>false</locked>
151.16149 + <visible>true</visible>
151.16150 + <shapes/>
151.16151 + <effects/>
151.16152 + </layer>
151.16153 + </canvas>
151.16154 + </state>
151.16155 + </backgroundStates>
151.16156 + <foregroundStates/>
151.16157 + <borderStates/>
151.16158 + <regions/>
151.16159 + </uiComponent>
151.16160 + <uiComponent opaque="false" type="javax.swing.JProgressBar" name="ProgressBar" ui="ProgressBarUI" subregion="false">
151.16161 + <stateTypes>
151.16162 + <stateType key="Enabled"/>
151.16163 + <stateType key="Disabled"/>
151.16164 + <stateType key="Indeterminate">
151.16165 + <codeSnippet><![CDATA[
151.16166 + return ((JProgressBar)c).isIndeterminate();
151.16167 + ]]></codeSnippet>
151.16168 + </stateType>
151.16169 + <stateType key="Finished">
151.16170 + <codeSnippet><![CDATA[
151.16171 + return ((JProgressBar)c).getPercentComplete() == 1.0;
151.16172 + ]]></codeSnippet>
151.16173 + </stateType>
151.16174 + </stateTypes>
151.16175 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.16176 + <style>
151.16177 + <textForeground/>
151.16178 + <textBackground/>
151.16179 + <background/>
151.16180 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.16181 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.16182 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.16183 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.16184 + <uiproperties>
151.16185 + <uiProperty name="tileWhenIndeterminate" type="BOOLEAN" value="true"/>
151.16186 + <uiProperty name="tileWidth" type="INT" value="27"/>
151.16187 + <uiProperty name="paintOutsideClip" type="BOOLEAN" value="true"/>
151.16188 + <uiProperty name="rotateText" type="BOOLEAN" value="true"/>
151.16189 + <uiProperty name="vertictalSize" type="DIMENSION">
151.16190 + <dimension width="19" height="150"/>
151.16191 + </uiProperty>
151.16192 + <uiProperty name="horizontalSize" type="DIMENSION">
151.16193 + <dimension width="150" height="19"/>
151.16194 + </uiProperty>
151.16195 + <uiProperty name="cycleTime" type="INT" value="250"/>
151.16196 + </uiproperties>
151.16197 + </style>
151.16198 + <backgroundStates>
151.16199 + <state stateKeys="Enabled">
151.16200 + <style>
151.16201 + <textForeground/>
151.16202 + <textBackground/>
151.16203 + <background/>
151.16204 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.16205 + <uiproperties/>
151.16206 + </style>
151.16207 + <canvas>
151.16208 + <size width="29" height="19"/>
151.16209 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.16210 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.16211 + <layer name="Layer 1">
151.16212 + <opacity>1.0</opacity>
151.16213 + <fillOpacity>1.0</fillOpacity>
151.16214 + <blendingMode>NORMAL</blendingMode>
151.16215 + <locked>false</locked>
151.16216 + <visible>true</visible>
151.16217 + <shapes>
151.16218 + <rectangle x1="3.0" x2="26.0" y1="3.0" y2="16.0" rounding="0.0">
151.16219 + <gradient cycleMethod="NO_CYCLE">
151.16220 + <stop position="0.038709678" midpoint="0.5">
151.16221 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.16222 + </stop>
151.16223 + <stop position="0.08064516" midpoint="0.5">
151.16224 + <matte red="235" green="236" blue="238" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.097921275" brightnessOffset="0.18823528" alphaOffset="0"/>
151.16225 + </stop>
151.16226 + <stop position="0.3935484" midpoint="0.5">
151.16227 + <matte red="218" green="219" blue="222" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0138888955" saturationOffset="-0.0925083" brightnessOffset="0.12549019" alphaOffset="0"/>
151.16228 + </stop>
151.16229 + <stop position="0.43870968" midpoint="0.5">
151.16230 + <matte red="206" green="208" blue="212" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08222443" brightnessOffset="0.086274505" alphaOffset="0"/>
151.16231 + </stop>
151.16232 + <stop position="0.90967745" midpoint="0.5">
151.16233 + <matte red="227" green="229" blue="233" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08477524" brightnessOffset="0.16862744" alphaOffset="0"/>
151.16234 + </stop>
151.16235 + <stop position="0.91935486" midpoint="0.5">
151.16236 + <matte red="249" green="251" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.086996906" brightnessOffset="0.25490195" alphaOffset="0"/>
151.16237 + </stop>
151.16238 + </gradient>
151.16239 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.16240 + </rectangle>
151.16241 + <rectangle x1="2.0" x2="27.0" y1="2.0" y2="17.0" rounding="0.0">
151.16242 + <gradient cycleMethod="NO_CYCLE">
151.16243 + <stop position="0.0" midpoint="0.5">
151.16244 + <matte red="136" green="139" blue="145" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.04845735" brightnessOffset="-0.17647058" alphaOffset="0"/>
151.16245 + </stop>
151.16246 + <stop position="1.0" midpoint="0.5">
151.16247 + <matte red="174" green="177" blue="183" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.061345987" brightnessOffset="-0.027450979" alphaOffset="0"/>
151.16248 + </stop>
151.16249 + </gradient>
151.16250 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.16251 + </rectangle>
151.16252 + </shapes>
151.16253 + <effects/>
151.16254 + </layer>
151.16255 + <templateLayer fileName="1140514801d.png">
151.16256 + <layer name="Template" type="template">
151.16257 + <opacity>1.0</opacity>
151.16258 + <fillOpacity>1.0</fillOpacity>
151.16259 + <blendingMode>NORMAL</blendingMode>
151.16260 + <locked>false</locked>
151.16261 + <visible>true</visible>
151.16262 + <shapes/>
151.16263 + <effects/>
151.16264 + </layer>
151.16265 + </templateLayer>
151.16266 + </canvas>
151.16267 + </state>
151.16268 + <state stateKeys="Disabled">
151.16269 + <style>
151.16270 + <textForeground>
151.16271 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.16272 + </textForeground>
151.16273 + <textBackground/>
151.16274 + <background/>
151.16275 + <inherit-textForeground>false</inherit-textForeground>
151.16276 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.16277 + <uiproperties/>
151.16278 + </style>
151.16279 + <canvas>
151.16280 + <size width="29" height="19"/>
151.16281 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.16282 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.16283 + <layer name="Layer 1">
151.16284 + <opacity>1.0</opacity>
151.16285 + <fillOpacity>1.0</fillOpacity>
151.16286 + <blendingMode>NORMAL</blendingMode>
151.16287 + <locked>false</locked>
151.16288 + <visible>true</visible>
151.16289 + <shapes>
151.16290 + <rectangle x1="3.0" x2="26.0" y1="3.0" y2="16.0" rounding="0.0">
151.16291 + <gradient cycleMethod="NO_CYCLE">
151.16292 + <stop position="0.038709678" midpoint="0.5">
151.16293 + <matte red="235" green="236" blue="239" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0138888955" saturationOffset="-0.09378991" brightnessOffset="0.19215685" alphaOffset="0"/>
151.16294 + </stop>
151.16295 + <stop position="0.08064516" midpoint="0.5">
151.16296 + <matte red="225" green="227" blue="231" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08455229" brightnessOffset="0.1607843" alphaOffset="0"/>
151.16297 + </stop>
151.16298 + <stop position="0.3935484" midpoint="0.5">
151.16299 + <matte red="217" green="220" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.08362049" brightnessOffset="0.12941176" alphaOffset="0"/>
151.16300 + </stop>
151.16301 + <stop position="0.43870968" midpoint="0.5">
151.16302 + <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
151.16303 + </stop>
151.16304 + <stop position="0.90967745" midpoint="0.5">
151.16305 + <matte red="221" green="223" blue="228" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07982456" brightnessOffset="0.1490196" alphaOffset="0"/>
151.16306 + </stop>
151.16307 + <stop position="0.92258066" midpoint="0.5">
151.16308 + <matte red="230" green="232" blue="237" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.08099045" brightnessOffset="0.18431371" alphaOffset="0"/>
151.16309 + </stop>
151.16310 + </gradient>
151.16311 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.16312 + </rectangle>
151.16313 + <rectangle x1="2.0" x2="27.0" y1="2.0" y2="17.0" rounding="0.0">
151.16314 + <gradient cycleMethod="NO_CYCLE">
151.16315 + <stop position="0.05483871" midpoint="0.5">
151.16316 + <matte red="175" green="178" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.061613273" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.16317 + </stop>
151.16318 + <stop position="0.9516129" midpoint="0.5">
151.16319 + <matte red="193" green="197" blue="203" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.061265234" brightnessOffset="0.05098039" alphaOffset="0"/>
151.16320 + </stop>
151.16321 + </gradient>
151.16322 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.16323 + </rectangle>
151.16324 + </shapes>
151.16325 + <effects/>
151.16326 + </layer>
151.16327 + <templateLayer fileName="1141fe7dbd7.png">
151.16328 + <layer name="Template" type="template">
151.16329 + <opacity>1.0</opacity>
151.16330 + <fillOpacity>1.0</fillOpacity>
151.16331 + <blendingMode>NORMAL</blendingMode>
151.16332 + <locked>false</locked>
151.16333 + <visible>false</visible>
151.16334 + <shapes/>
151.16335 + <effects/>
151.16336 + </layer>
151.16337 + </templateLayer>
151.16338 + </canvas>
151.16339 + </state>
151.16340 + </backgroundStates>
151.16341 + <foregroundStates>
151.16342 + <state stateKeys="Enabled">
151.16343 + <style>
151.16344 + <textForeground/>
151.16345 + <textBackground/>
151.16346 + <background/>
151.16347 + <uiproperties/>
151.16348 + </style>
151.16349 + <canvas>
151.16350 + <size width="27" height="19"/>
151.16351 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.16352 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.16353 + <layer name="Layer 1">
151.16354 + <opacity>1.0</opacity>
151.16355 + <fillOpacity>1.0</fillOpacity>
151.16356 + <blendingMode>NORMAL</blendingMode>
151.16357 + <locked>false</locked>
151.16358 + <visible>true</visible>
151.16359 + <shapes>
151.16360 + <rectangle x1="3.0" x2="26.0" y1="3.0" y2="16.0" rounding="0.0">
151.16361 + <gradient cycleMethod="NO_CYCLE">
151.16362 + <stop position="0.038709678" midpoint="0.5">
151.16363 + <matte red="236" green="209" blue="179" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.003940329" saturationOffset="-0.7375322" brightnessOffset="0.17647058" alphaOffset="0"/>
151.16364 + </stop>
151.16365 + <stop position="0.08387097" midpoint="0.5">
151.16366 + <matte red="219" green="167" blue="107" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.005506739" saturationOffset="-0.46764207" brightnessOffset="0.109803915" alphaOffset="0"/>
151.16367 + </stop>
151.16368 + <stop position="0.46129033" midpoint="0.5">
151.16369 + <matte red="203" green="127" blue="42" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0042127445" saturationOffset="-0.18595415" brightnessOffset="0.04705882" alphaOffset="0"/>
151.16370 + </stop>
151.16371 + <stop position="0.5193548" midpoint="0.5">
151.16372 + <matte red="192" green="102" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0047626942" saturationOffset="0.02094239" brightnessOffset="0.0039215684" alphaOffset="0"/>
151.16373 + </stop>
151.16374 + <stop position="0.91612905" midpoint="0.5">
151.16375 + <matte red="232" green="142" blue="40" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0047626942" saturationOffset="-0.15147138" brightnessOffset="0.1607843" alphaOffset="0"/>
151.16376 + </stop>
151.16377 + <stop position="0.93225807" midpoint="0.5">
151.16378 + <matte red="255" green="177" blue="75" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.010665476" saturationOffset="-0.27317524" brightnessOffset="0.25098038" alphaOffset="0"/>
151.16379 + </stop>
151.16380 + </gradient>
151.16381 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.16382 + </rectangle>
151.16383 + <rectangle x1="2.0" x2="27.0" y1="2.0" y2="17.0" rounding="0.0">
151.16384 + <gradient cycleMethod="NO_CYCLE">
151.16385 + <stop position="0.038709678" midpoint="0.5">
151.16386 + <matte red="152" green="62" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.015796512" saturationOffset="0.02094239" brightnessOffset="-0.15294117" alphaOffset="0"/>
151.16387 + </stop>
151.16388 + <stop position="0.07096774" midpoint="0.5">
151.16389 + <matte red="172" green="82" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.004321605" saturationOffset="0.02094239" brightnessOffset="-0.0745098" alphaOffset="0"/>
151.16390 + </stop>
151.16391 + <stop position="0.4903226" midpoint="0.5">
151.16392 + <matte red="165" green="75" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.008021399" saturationOffset="0.02094239" brightnessOffset="-0.10196078" alphaOffset="0"/>
151.16393 + </stop>
151.16394 + <stop position="0.9032258" midpoint="0.5">
151.16395 + <matte red="185" green="101" blue="37" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.011706904" saturationOffset="-0.1790576" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.16396 + </stop>
151.16397 + <stop position="0.9451613" midpoint="0.5">
151.16398 + <matte red="114" green="24" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.048691254" saturationOffset="0.02094239" brightnessOffset="-0.3019608" alphaOffset="0"/>
151.16399 + </stop>
151.16400 + </gradient>
151.16401 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.16402 + </rectangle>
151.16403 + <path>
151.16404 + <matte red="191" green="98" blue="4" alpha="99" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-156"/>
151.16405 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.16406 + <points>
151.16407 + <point x="3.0" y="0.6333333333333334" cp1x="5.0" cp1y="0.6333333333333334" cp2x="1.0" cp2y="0.6333333333333334"/>
151.16408 + <point x="0.6333333333333334" y="3.0" cp1x="0.6333333333333334" cp1y="1.0" cp2x="0.6333333333333334" cp2y="5.0"/>
151.16409 + <point x="0.6333333333333334" y="16.0" cp1x="0.6333333333333334" cp1y="14.0" cp2x="0.6333333333333334" cp2y="18.0"/>
151.16410 + <point x="3.0" y="18.46666666666669" cp1x="1.0" cp1y="18.46666666666669" cp2x="5.0" cp2y="18.46666666666669"/>
151.16411 + <point x="27.0" y="18.46666666666669" cp1x="27.0" cp1y="18.46666666666669" cp2x="27.0" cp2y="18.46666666666669"/>
151.16412 + <point x="27.0" y="17.0" cp1x="27.0" cp1y="17.0" cp2x="27.0" cp2y="17.0"/>
151.16413 + <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="17.0"/>
151.16414 + <point x="2.0" y="2.0" cp1x="2.0" cp1y="2.0" cp2x="2.0" cp2y="2.0"/>
151.16415 + <point x="27.0" y="2.0" cp1x="27.0" cp1y="2.0" cp2x="27.0" cp2y="2.0"/>
151.16416 + <point x="27.0" y="0.6000000000000001" cp1x="27.0" cp1y="0.6000000000000001" cp2x="27.0" cp2y="0.6000000000000001"/>
151.16417 + </points>
151.16418 + </path>
151.16419 + </shapes>
151.16420 + <effects/>
151.16421 + </layer>
151.16422 + <templateLayer fileName="1140518fed0.png">
151.16423 + <layer name="Template" type="template">
151.16424 + <opacity>1.0</opacity>
151.16425 + <fillOpacity>1.0</fillOpacity>
151.16426 + <blendingMode>NORMAL</blendingMode>
151.16427 + <locked>false</locked>
151.16428 + <visible>true</visible>
151.16429 + <shapes/>
151.16430 + <effects/>
151.16431 + </layer>
151.16432 + </templateLayer>
151.16433 + </canvas>
151.16434 + </state>
151.16435 + <state stateKeys="Enabled+Finished">
151.16436 + <style>
151.16437 + <textForeground/>
151.16438 + <textBackground/>
151.16439 + <background/>
151.16440 + <uiproperties/>
151.16441 + </style>
151.16442 + <canvas>
151.16443 + <size width="27" height="19"/>
151.16444 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.16445 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.16446 + <layer name="Layer 1">
151.16447 + <opacity>1.0</opacity>
151.16448 + <fillOpacity>1.0</fillOpacity>
151.16449 + <blendingMode>NORMAL</blendingMode>
151.16450 + <locked>false</locked>
151.16451 + <visible>true</visible>
151.16452 + <shapes>
151.16453 + <rectangle x1="3.0" x2="24.0" y1="3.0" y2="16.0" rounding="0.0">
151.16454 + <gradient cycleMethod="NO_CYCLE">
151.16455 + <stop position="0.038709678" midpoint="0.5">
151.16456 + <matte red="236" green="209" blue="179" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.003940329" saturationOffset="-0.7375322" brightnessOffset="0.17647058" alphaOffset="0"/>
151.16457 + </stop>
151.16458 + <stop position="0.08387097" midpoint="0.5">
151.16459 + <matte red="219" green="167" blue="107" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.005506739" saturationOffset="-0.46764207" brightnessOffset="0.109803915" alphaOffset="0"/>
151.16460 + </stop>
151.16461 + <stop position="0.46129033" midpoint="0.5">
151.16462 + <matte red="203" green="127" blue="42" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0042127445" saturationOffset="-0.18595415" brightnessOffset="0.04705882" alphaOffset="0"/>
151.16463 + </stop>
151.16464 + <stop position="0.5193548" midpoint="0.5">
151.16465 + <matte red="192" green="102" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0047626942" saturationOffset="0.02094239" brightnessOffset="0.0039215684" alphaOffset="0"/>
151.16466 + </stop>
151.16467 + <stop position="0.91612905" midpoint="0.5">
151.16468 + <matte red="232" green="142" blue="40" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0047626942" saturationOffset="-0.15147138" brightnessOffset="0.1607843" alphaOffset="0"/>
151.16469 + </stop>
151.16470 + <stop position="0.93225807" midpoint="0.5">
151.16471 + <matte red="255" green="177" blue="75" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.010665476" saturationOffset="-0.27317524" brightnessOffset="0.25098038" alphaOffset="0"/>
151.16472 + </stop>
151.16473 + </gradient>
151.16474 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.16475 + </rectangle>
151.16476 + <rectangle x1="2.0" x2="25.0" y1="2.0" y2="17.0" rounding="0.0">
151.16477 + <gradient cycleMethod="NO_CYCLE">
151.16478 + <stop position="0.038709678" midpoint="0.5">
151.16479 + <matte red="152" green="62" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.015796512" saturationOffset="0.02094239" brightnessOffset="-0.15294117" alphaOffset="0"/>
151.16480 + </stop>
151.16481 + <stop position="0.07096774" midpoint="0.5">
151.16482 + <matte red="172" green="82" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.004321605" saturationOffset="0.02094239" brightnessOffset="-0.0745098" alphaOffset="0"/>
151.16483 + </stop>
151.16484 + <stop position="0.4903226" midpoint="0.5">
151.16485 + <matte red="165" green="75" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.008021399" saturationOffset="0.02094239" brightnessOffset="-0.10196078" alphaOffset="0"/>
151.16486 + </stop>
151.16487 + <stop position="0.9032258" midpoint="0.5">
151.16488 + <matte red="185" green="101" blue="37" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.011706904" saturationOffset="-0.1790576" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.16489 + </stop>
151.16490 + <stop position="0.9451613" midpoint="0.5">
151.16491 + <matte red="114" green="24" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.048691254" saturationOffset="0.02094239" brightnessOffset="-0.3019608" alphaOffset="0"/>
151.16492 + </stop>
151.16493 + </gradient>
151.16494 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.16495 + </rectangle>
151.16496 + <path>
151.16497 + <matte red="191" green="98" blue="4" alpha="99" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="-156"/>
151.16498 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.16499 + <points>
151.16500 + <point x="2.7333333333333343" y="0.6333333333333334" cp1x="2.7333333333333343" cp1y="0.6333333333333334" cp2x="0.7333333333333334" cp2y="0.6333333333333334"/>
151.16501 + <point x="0.6000000000000001" y="3.033333333333333" cp1x="0.6000000000000001" cp1y="1.0333333333333334" cp2x="0.6000000000000001" cp2y="3.033333333333333"/>
151.16502 + <point x="0.6000000000000001" y="16.13333333333334" cp1x="0.6000000000000001" cp1y="16.13333333333334" cp2x="0.6000000000000001" cp2y="18.13333333333334"/>
151.16503 + <point x="2.9" y="18.400000000000016" cp1x="0.9" cp1y="18.400000000000016" cp2x="2.9" cp2y="18.400000000000016"/>
151.16504 + <point x="23.999999999999986" y="18.366666666666678" cp1x="23.999999999999986" cp1y="18.366666666666678" cp2x="25.970929244126516" cp2y="18.386523706031824"/>
151.16505 + <point x="26.33333333333335" y="16.166666666666664" cp1x="26.300000000000015" cp1y="18.10000000000005" cp2x="26.33333333333335" cp2y="16.166666666666664"/>
151.16506 + <point x="26.366666666666678" y="13.46666666666666" cp1x="26.366666666666678" cp1y="13.46666666666666" cp2x="26.366666666666678" cp2y="13.46666666666666"/>
151.16507 + <point x="26.333333333333343" y="6.633333333333332" cp1x="26.333333333333343" cp1y="6.633333333333332" cp2x="26.333333333333343" cp2y="6.633333333333332"/>
151.16508 + <point x="26.33333333333332" y="3.0333333333333328" cp1x="26.33333333333332" cp1y="3.0333333333333328" cp2x="26.337550663750736" cp2y="1.0829955749951623"/>
151.16509 + <point x="24.300000000000004" y="0.6666666666666667" cp1x="26.265946019413946" cp1y="0.6837889338880168" cp2x="24.300000000000004" cp2y="0.6666666666666667"/>
151.16510 + </points>
151.16511 + </path>
151.16512 + </shapes>
151.16513 + <effects/>
151.16514 + </layer>
151.16515 + </canvas>
151.16516 + </state>
151.16517 + <state stateKeys="Enabled+Indeterminate">
151.16518 + <style>
151.16519 + <textForeground/>
151.16520 + <textBackground/>
151.16521 + <background/>
151.16522 + <uiproperties>
151.16523 + <uiProperty name="progressPadding" type="INT" value="3"/>
151.16524 + </uiproperties>
151.16525 + </style>
151.16526 + <canvas>
151.16527 + <size width="30" height="13"/>
151.16528 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.16529 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.16530 + <layer name="Layer 1">
151.16531 + <opacity>1.0</opacity>
151.16532 + <fillOpacity>1.0</fillOpacity>
151.16533 + <blendingMode>NORMAL</blendingMode>
151.16534 + <locked>false</locked>
151.16535 + <visible>true</visible>
151.16536 + <shapes>
151.16537 + <rectangle x1="20.0" x2="21.0" y1="0.0" y2="13.0" rounding="0.0">
151.16538 + <matte red="255" green="255" blue="255" alpha="85" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-170"/>
151.16539 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.16540 + </rectangle>
151.16541 + <rectangle x1="10.0" x2="11.0" y1="0.0" y2="13.0" rounding="0.0">
151.16542 + <matte red="255" green="255" blue="255" alpha="82" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-173"/>
151.16543 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.16544 + </rectangle>
151.16545 + <path>
151.16546 + <gradient cycleMethod="NO_CYCLE">
151.16547 + <stop position="0.0" midpoint="0.5">
151.16548 + <matte red="219" green="167" blue="107" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.005506739" saturationOffset="-0.46764207" brightnessOffset="0.109803915" alphaOffset="0"/>
151.16549 + </stop>
151.16550 + <stop position="0.41290322" midpoint="0.5">
151.16551 + <matte red="203" green="127" blue="42" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0042127445" saturationOffset="-0.18595415" brightnessOffset="0.04705882" alphaOffset="0"/>
151.16552 + </stop>
151.16553 + <stop position="0.47096774" midpoint="0.5">
151.16554 + <matte red="192" green="102" blue="0" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0047626942" saturationOffset="0.02094239" brightnessOffset="0.0039215684" alphaOffset="0"/>
151.16555 + </stop>
151.16556 + <stop position="1.0" midpoint="0.5">
151.16557 + <matte red="252" green="162" blue="60" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0047626942" saturationOffset="-0.21715283" brightnessOffset="0.23921567" alphaOffset="0"/>
151.16558 + </stop>
151.16559 + </gradient>
151.16560 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.16561 + <points>
151.16562 + <point x="0.0" y="6.0" cp1x="0.0" cp1y="6.0" cp2x="2.678571428571433" cp2y="6.000000000000001"/>
151.16563 + <point x="12.357142857142872" y="1.0357142857142834" cp1x="6.142857142857157" cp1y="1.0000000000000004" cp2x="12.357142857142872" cp2y="1.0357142857142834"/>
151.16564 + <point x="16.28571428571428" y="1.0357142857142858" cp1x="16.28571428571428" cp1y="1.0357142857142858" cp2x="24.615384615384638" cp2y="1.0384615384615354"/>
151.16565 + <point x="28.0" y="6.0" cp1x="22.71428571428573" cp1y="6.035714285714286" cp2x="28.0" cp2y="6.0"/>
151.16566 + <point x="30.0" y="6.0" cp1x="30.0" cp1y="6.0" cp2x="30.0" cp2y="6.0"/>
151.16567 + <point x="30.0" y="7.0" cp1x="30.0" cp1y="7.0" cp2x="30.0" cp2y="7.0"/>
151.16568 + <point x="28.0" y="7.0" cp1x="28.0" cp1y="7.0" cp2x="22.67857142857143" cp2y="7.035714285714285"/>
151.16569 + <point x="16.285714285714295" y="12.000000000000007" cp1x="25.26923076923079" cp1y="12.038461538461538" cp2x="16.285714285714295" cp2y="12.000000000000007"/>
151.16570 + <point x="12.785714285714295" y="12.0" cp1x="12.785714285714295" cp1y="12.0" cp2x="6.071428571428592" cp2y="12.0"/>
151.16571 + <point x="0.0" y="7.0" cp1x="2.6071428571428568" cp1y="7.035714285714286" cp2x="0.0" cp2y="7.0"/>
151.16572 + </points>
151.16573 + </path>
151.16574 + <rectangle x1="0.0" x2="30.0" y1="0.0" y2="13.0" rounding="0.0">
151.16575 + <gradient cycleMethod="NO_CYCLE">
151.16576 + <stop position="0.051612902" midpoint="0.5">
151.16577 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.16578 + </stop>
151.16579 + <stop position="0.08064516" midpoint="0.5">
151.16580 + <matte red="235" green="236" blue="238" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.097921275" brightnessOffset="0.18823528" alphaOffset="0"/>
151.16581 + </stop>
151.16582 + <stop position="0.5064516" midpoint="0.5">
151.16583 + <matte red="217" green="214" blue="212" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.54444444" saturationOffset="-0.08748484" brightnessOffset="0.10588235" alphaOffset="0"/>
151.16584 + </stop>
151.16585 + <stop position="0.87419355" midpoint="0.5">
151.16586 + <matte red="227" green="229" blue="233" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08477524" brightnessOffset="0.16862744" alphaOffset="0"/>
151.16587 + </stop>
151.16588 + <stop position="0.9032258" midpoint="0.5">
151.16589 + <matte red="249" green="251" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.086996906" brightnessOffset="0.25490195" alphaOffset="0"/>
151.16590 + </stop>
151.16591 + </gradient>
151.16592 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.16593 + </rectangle>
151.16594 + </shapes>
151.16595 + <effects/>
151.16596 + </layer>
151.16597 + <templateLayer fileName="11405266ab0.png">
151.16598 + <layer name="Template" type="template">
151.16599 + <opacity>1.0</opacity>
151.16600 + <fillOpacity>1.0</fillOpacity>
151.16601 + <blendingMode>NORMAL</blendingMode>
151.16602 + <locked>false</locked>
151.16603 + <visible>true</visible>
151.16604 + <shapes/>
151.16605 + <effects/>
151.16606 + </layer>
151.16607 + </templateLayer>
151.16608 + </canvas>
151.16609 + </state>
151.16610 + <state stateKeys="Disabled">
151.16611 + <style>
151.16612 + <textForeground/>
151.16613 + <textBackground/>
151.16614 + <background/>
151.16615 + <uiproperties/>
151.16616 + </style>
151.16617 + <canvas>
151.16618 + <size width="27" height="19"/>
151.16619 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.16620 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.16621 + <layer name="Layer 1">
151.16622 + <opacity>1.0</opacity>
151.16623 + <fillOpacity>1.0</fillOpacity>
151.16624 + <blendingMode>NORMAL</blendingMode>
151.16625 + <locked>false</locked>
151.16626 + <visible>true</visible>
151.16627 + <shapes>
151.16628 + <rectangle x1="3.0" x2="26.0" y1="3.0" y2="16.0" rounding="0.0">
151.16629 + <gradient cycleMethod="NO_CYCLE">
151.16630 + <stop position="0.038709678" midpoint="0.5">
151.16631 + <matte red="220" green="215" blue="211" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.009704903" saturationOffset="-0.9381485" brightnessOffset="0.11372548" alphaOffset="0"/>
151.16632 + </stop>
151.16633 + <stop position="0.08387097" midpoint="0.5">
151.16634 + <matte red="215" green="203" blue="191" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-4.4563413E-4" saturationOffset="-0.86742973" brightnessOffset="0.09411764" alphaOffset="0"/>
151.16635 + </stop>
151.16636 + <stop position="0.46129033" midpoint="0.5">
151.16637 + <matte red="211" green="192" blue="173" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-4.4563413E-4" saturationOffset="-0.79896283" brightnessOffset="0.07843137" alphaOffset="0"/>
151.16638 + </stop>
151.16639 + <stop position="0.5193548" midpoint="0.5">
151.16640 + <matte red="208" green="185" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0013274103" saturationOffset="-0.7530961" brightnessOffset="0.06666666" alphaOffset="0"/>
151.16641 + </stop>
151.16642 + <stop position="0.91612905" midpoint="0.5">
151.16643 + <matte red="219" green="196" blue="172" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0013274103" saturationOffset="-0.7644457" brightnessOffset="0.109803915" alphaOffset="0"/>
151.16644 + </stop>
151.16645 + <stop position="0.93225807" midpoint="0.5">
151.16646 + <matte red="225" green="206" blue="182" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.009244293" saturationOffset="-0.78794646" brightnessOffset="0.13333333" alphaOffset="0"/>
151.16647 + </stop>
151.16648 + </gradient>
151.16649 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.16650 + </rectangle>
151.16651 + <rectangle x1="2.0" x2="27.0" y1="2.0" y2="17.0" rounding="0.0">
151.16652 + <gradient cycleMethod="NO_CYCLE">
151.16653 + <stop position="0.038709678" midpoint="0.5">
151.16654 + <matte red="197" green="174" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.023593787" saturationOffset="-0.7963165" brightnessOffset="0.02352941" alphaOffset="0"/>
151.16655 + </stop>
151.16656 + <stop position="0.07096774" midpoint="0.5">
151.16657 + <matte red="202" green="179" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.010608241" saturationOffset="-0.7760873" brightnessOffset="0.043137252" alphaOffset="0"/>
151.16658 + </stop>
151.16659 + <stop position="0.4903226" midpoint="0.5">
151.16660 + <matte red="200" green="177" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.015402906" saturationOffset="-0.7840576" brightnessOffset="0.035294116" alphaOffset="0"/>
151.16661 + </stop>
151.16662 + <stop position="0.9032258" midpoint="0.5">
151.16663 + <matte red="206" green="185" blue="171" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.017112307" saturationOffset="-0.8091547" brightnessOffset="0.058823526" alphaOffset="0"/>
151.16664 + </stop>
151.16665 + <stop position="0.9451613" midpoint="0.5">
151.16666 + <matte red="186" green="163" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.07044564" saturationOffset="-0.844649" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.16667 + </stop>
151.16668 + </gradient>
151.16669 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.16670 + </rectangle>
151.16671 + <path>
151.16672 + <matte red="218" green="211" blue="198" alpha="99" uiDefaultParentName="nimbusOrange" hueOffset="0.024554357" saturationOffset="-0.8873145" brightnessOffset="0.10588235" alphaOffset="-156"/>
151.16673 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.16674 + <points>
151.16675 + <point x="3.0" y="0.6333333333333334" cp1x="5.0" cp1y="0.6333333333333334" cp2x="1.0" cp2y="0.6333333333333334"/>
151.16676 + <point x="0.6333333333333334" y="3.0" cp1x="0.6333333333333334" cp1y="1.0" cp2x="0.6333333333333334" cp2y="5.0"/>
151.16677 + <point x="0.6333333333333334" y="16.0" cp1x="0.6333333333333334" cp1y="14.0" cp2x="0.6333333333333334" cp2y="18.0"/>
151.16678 + <point x="3.0" y="18.46666666666669" cp1x="1.0" cp1y="18.46666666666669" cp2x="5.0" cp2y="18.46666666666669"/>
151.16679 + <point x="27.0" y="18.46666666666669" cp1x="27.0" cp1y="18.46666666666669" cp2x="27.0" cp2y="18.46666666666669"/>
151.16680 + <point x="27.0" y="17.0" cp1x="27.0" cp1y="17.0" cp2x="27.0" cp2y="17.0"/>
151.16681 + <point x="2.0" y="17.0" cp1x="2.0" cp1y="17.0" cp2x="2.0" cp2y="17.0"/>
151.16682 + <point x="2.0" y="2.0" cp1x="2.0" cp1y="2.0" cp2x="2.0" cp2y="2.0"/>
151.16683 + <point x="27.0" y="2.0" cp1x="27.0" cp1y="2.0" cp2x="27.0" cp2y="2.0"/>
151.16684 + <point x="27.0" y="0.6000000000000001" cp1x="27.0" cp1y="0.6000000000000001" cp2x="27.0" cp2y="0.6000000000000001"/>
151.16685 + </points>
151.16686 + </path>
151.16687 + </shapes>
151.16688 + <effects/>
151.16689 + </layer>
151.16690 + </canvas>
151.16691 + </state>
151.16692 + <state stateKeys="Disabled+Finished">
151.16693 + <style>
151.16694 + <textForeground/>
151.16695 + <textBackground/>
151.16696 + <background/>
151.16697 + <uiproperties/>
151.16698 + </style>
151.16699 + <canvas>
151.16700 + <size width="27" height="19"/>
151.16701 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.16702 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.16703 + <layer name="Layer 1">
151.16704 + <opacity>1.0</opacity>
151.16705 + <fillOpacity>1.0</fillOpacity>
151.16706 + <blendingMode>NORMAL</blendingMode>
151.16707 + <locked>false</locked>
151.16708 + <visible>true</visible>
151.16709 + <shapes>
151.16710 + <rectangle x1="3.0" x2="24.0" y1="3.0" y2="16.0" rounding="0.0">
151.16711 + <gradient cycleMethod="NO_CYCLE">
151.16712 + <stop position="0.038709678" midpoint="0.5">
151.16713 + <matte red="220" green="215" blue="211" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.009704903" saturationOffset="-0.9381485" brightnessOffset="0.11372548" alphaOffset="0"/>
151.16714 + </stop>
151.16715 + <stop position="0.08387097" midpoint="0.5">
151.16716 + <matte red="215" green="203" blue="191" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-4.4563413E-4" saturationOffset="-0.86742973" brightnessOffset="0.09411764" alphaOffset="0"/>
151.16717 + </stop>
151.16718 + <stop position="0.46129033" midpoint="0.5">
151.16719 + <matte red="211" green="192" blue="173" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-4.4563413E-4" saturationOffset="-0.79896283" brightnessOffset="0.07843137" alphaOffset="0"/>
151.16720 + </stop>
151.16721 + <stop position="0.5193548" midpoint="0.5">
151.16722 + <matte red="208" green="185" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0013274103" saturationOffset="-0.7530961" brightnessOffset="0.06666666" alphaOffset="0"/>
151.16723 + </stop>
151.16724 + <stop position="0.91612905" midpoint="0.5">
151.16725 + <matte red="219" green="196" blue="172" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0013274103" saturationOffset="-0.7644457" brightnessOffset="0.109803915" alphaOffset="0"/>
151.16726 + </stop>
151.16727 + <stop position="0.93225807" midpoint="0.5">
151.16728 + <matte red="225" green="206" blue="182" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.009244293" saturationOffset="-0.78794646" brightnessOffset="0.13333333" alphaOffset="0"/>
151.16729 + </stop>
151.16730 + </gradient>
151.16731 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.16732 + </rectangle>
151.16733 + <rectangle x1="2.0" x2="25.0" y1="2.0" y2="17.0" rounding="0.0">
151.16734 + <gradient cycleMethod="NO_CYCLE">
151.16735 + <stop position="0.038709678" midpoint="0.5">
151.16736 + <matte red="197" green="174" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.023593787" saturationOffset="-0.7963165" brightnessOffset="0.02352941" alphaOffset="0"/>
151.16737 + </stop>
151.16738 + <stop position="0.07096774" midpoint="0.5">
151.16739 + <matte red="202" green="179" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.010608241" saturationOffset="-0.7760873" brightnessOffset="0.043137252" alphaOffset="0"/>
151.16740 + </stop>
151.16741 + <stop position="0.4903226" midpoint="0.5">
151.16742 + <matte red="200" green="177" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.015402906" saturationOffset="-0.7840576" brightnessOffset="0.035294116" alphaOffset="0"/>
151.16743 + </stop>
151.16744 + <stop position="0.9032258" midpoint="0.5">
151.16745 + <matte red="206" green="185" blue="171" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.017112307" saturationOffset="-0.8091547" brightnessOffset="0.058823526" alphaOffset="0"/>
151.16746 + </stop>
151.16747 + <stop position="0.9451613" midpoint="0.5">
151.16748 + <matte red="186" green="163" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-0.07044564" saturationOffset="-0.844649" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.16749 + </stop>
151.16750 + </gradient>
151.16751 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.16752 + </rectangle>
151.16753 + <path>
151.16754 + <matte red="218" green="211" blue="198" alpha="99" uiDefaultParentName="nimbusOrange" hueOffset="0.024554357" saturationOffset="-0.8873145" brightnessOffset="0.10588235" alphaOffset="-156"/>
151.16755 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.16756 + <points>
151.16757 + <point x="2.9666666666666637" y="0.5999999999999999" cp1x="4.966666666666667" cp1y="0.5999999999999999" cp2x="0.9666666666666643" cp2y="0.5999999999999999"/>
151.16758 + <point x="0.5999999999999989" y="2.966666666666667" cp1x="0.5999999999999989" cp1y="0.9666666666666661" cp2x="0.5999999999999989" cp2y="4.966666666666666"/>
151.16759 + <point x="0.5999999999999989" y="15.966666666666676" cp1x="0.5999999999999989" cp1y="13.96666666666667" cp2x="0.5999999999999989" cp2y="17.966666666666683"/>
151.16760 + <point x="2.9666666666666637" y="18.433333333333373" cp1x="0.9666666666666643" cp1y="18.433333333333373" cp2x="4.966666666666667" cp2y="18.433333333333373"/>
151.16761 + <point x="25.500000000000025" y="18.400000000000038" cp1x="25.500000000000025" cp1y="18.400000000000038" cp2x="25.500000000000025" cp2y="18.400000000000038"/>
151.16762 + <point x="26.23333333333335" y="17.466666666666697" cp1x="26.23333333333335" cp1y="17.466666666666697" cp2x="26.23333333333335" cp2y="17.466666666666697"/>
151.16763 + <point x="26.266666666666662" y="10.53333333333335" cp1x="26.266666666666662" cp1y="10.53333333333335" cp2x="26.266666666666662" cp2y="10.53333333333335"/>
151.16764 + <point x="26.299999999999997" y="8.666666666666663" cp1x="26.299999999999997" cp1y="8.666666666666663" cp2x="26.299999999999997" cp2y="8.666666666666663"/>
151.16765 + <point x="26.299999999999986" y="1.8666666666666663" cp1x="26.299999999999986" cp1y="1.8666666666666663" cp2x="26.299999999999986" cp2y="1.8666666666666663"/>
151.16766 + <point x="25.799999999999983" y="0.6666666666666657" cp1x="25.799999999999983" cp1y="0.6666666666666657" cp2x="25.799999999999983" cp2y="0.6666666666666657"/>
151.16767 + </points>
151.16768 + </path>
151.16769 + </shapes>
151.16770 + <effects/>
151.16771 + </layer>
151.16772 + </canvas>
151.16773 + </state>
151.16774 + <state stateKeys="Disabled+Indeterminate">
151.16775 + <style>
151.16776 + <textForeground/>
151.16777 + <textBackground/>
151.16778 + <background/>
151.16779 + <uiproperties>
151.16780 + <uiProperty name="progressPadding" type="INT" value="3"/>
151.16781 + </uiproperties>
151.16782 + </style>
151.16783 + <canvas>
151.16784 + <size width="30" height="13"/>
151.16785 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.16786 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.16787 + <layer name="Layer 1">
151.16788 + <opacity>1.0</opacity>
151.16789 + <fillOpacity>1.0</fillOpacity>
151.16790 + <blendingMode>NORMAL</blendingMode>
151.16791 + <locked>false</locked>
151.16792 + <visible>true</visible>
151.16793 + <shapes>
151.16794 + <path>
151.16795 + <gradient cycleMethod="NO_CYCLE">
151.16796 + <stop position="0.0" midpoint="0.5">
151.16797 + <matte red="215" green="203" blue="191" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-4.4563413E-4" saturationOffset="-0.86742973" brightnessOffset="0.09411764" alphaOffset="0"/>
151.16798 + </stop>
151.16799 + <stop position="0.41290322" midpoint="0.5">
151.16800 + <matte red="211" green="192" blue="173" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="-4.4563413E-4" saturationOffset="-0.79896283" brightnessOffset="0.07843137" alphaOffset="0"/>
151.16801 + </stop>
151.16802 + <stop position="0.47096774" midpoint="0.5">
151.16803 + <matte red="208" green="185" blue="161" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0013274103" saturationOffset="-0.7530961" brightnessOffset="0.06666666" alphaOffset="0"/>
151.16804 + </stop>
151.16805 + <stop position="1.0" midpoint="0.5">
151.16806 + <matte red="224" green="202" blue="179" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0014062226" saturationOffset="-0.77816474" brightnessOffset="0.12941176" alphaOffset="0"/>
151.16807 + </stop>
151.16808 + </gradient>
151.16809 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.16810 + <points>
151.16811 + <point x="0.0" y="6.0" cp1x="0.0" cp1y="6.0" cp2x="2.678571428571433" cp2y="6.000000000000001"/>
151.16812 + <point x="12.357142857142872" y="1.0357142857142834" cp1x="6.0" cp1y="1.0" cp2x="12.357142857142872" cp2y="1.0357142857142834"/>
151.16813 + <point x="16.28571428571428" y="1.0357142857142858" cp1x="16.28571428571428" cp1y="1.0357142857142858" cp2x="20.285714285714278" cp2y="1.0357142857142858"/>
151.16814 + <point x="28.0" y="6.0" cp1x="22.71428571428573" cp1y="6.035714285714286" cp2x="28.0" cp2y="6.0"/>
151.16815 + <point x="30.0" y="6.0" cp1x="30.0" cp1y="6.0" cp2x="30.0" cp2y="6.0"/>
151.16816 + <point x="30.0" y="7.0" cp1x="30.0" cp1y="7.0" cp2x="30.0" cp2y="7.0"/>
151.16817 + <point x="28.0" y="7.0" cp1x="28.0" cp1y="7.0" cp2x="22.67857142857143" cp2y="7.035714285714285"/>
151.16818 + <point x="16.285714285714295" y="12.000000000000007" cp1x="20.28571428571428" cp1y="12.000000000000007" cp2x="16.285714285714295" cp2y="12.000000000000007"/>
151.16819 + <point x="12.785714285714295" y="12.0" cp1x="12.785714285714295" cp1y="12.0" cp2x="6.214285714285712" cp2y="11.964285714285714"/>
151.16820 + <point x="0.0" y="7.0" cp1x="2.6071428571428568" cp1y="7.035714285714286" cp2x="0.0" cp2y="7.0"/>
151.16821 + </points>
151.16822 + </path>
151.16823 + <rectangle x1="0.0" x2="30.0" y1="0.0" y2="13.0" rounding="0.0">
151.16824 + <gradient cycleMethod="NO_CYCLE">
151.16825 + <stop position="0.051612902" midpoint="0.5">
151.16826 + <matte red="225" green="228" blue="232" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.0803539" brightnessOffset="0.16470587" alphaOffset="0"/>
151.16827 + </stop>
151.16828 + <stop position="0.08064516" midpoint="0.5">
151.16829 + <matte red="220" green="222" blue="227" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07968931" brightnessOffset="0.14509803" alphaOffset="0"/>
151.16830 + </stop>
151.16831 + <stop position="0.5064516" midpoint="0.5">
151.16832 + <matte red="215" green="216" blue="220" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.02222228" saturationOffset="-0.08779904" brightnessOffset="0.11764705" alphaOffset="0"/>
151.16833 + </stop>
151.16834 + <stop position="0.87419355" midpoint="0.5">
151.16835 + <matte red="218" green="220" blue="226" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0138888955" saturationOffset="-0.075128086" brightnessOffset="0.14117646" alphaOffset="0"/>
151.16836 + </stop>
151.16837 + <stop position="0.9032258" midpoint="0.5">
151.16838 + <matte red="224" green="226" blue="232" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0138888955" saturationOffset="-0.07604356" brightnessOffset="0.16470587" alphaOffset="0"/>
151.16839 + </stop>
151.16840 + </gradient>
151.16841 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.16842 + </rectangle>
151.16843 + </shapes>
151.16844 + <effects/>
151.16845 + </layer>
151.16846 + <templateLayer fileName="1141fee46ff.png">
151.16847 + <layer name="Template" type="template">
151.16848 + <opacity>1.0</opacity>
151.16849 + <fillOpacity>1.0</fillOpacity>
151.16850 + <blendingMode>NORMAL</blendingMode>
151.16851 + <locked>false</locked>
151.16852 + <visible>false</visible>
151.16853 + <shapes/>
151.16854 + <effects/>
151.16855 + </layer>
151.16856 + </templateLayer>
151.16857 + </canvas>
151.16858 + </state>
151.16859 + </foregroundStates>
151.16860 + <borderStates/>
151.16861 + <regions/>
151.16862 + </uiComponent>
151.16863 + <uiComponent opaque="false" type="javax.swing.JSeparator" name="Separator" ui="SeparatorUI" subregion="false">
151.16864 + <stateTypes/>
151.16865 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.16866 + <style>
151.16867 + <textForeground/>
151.16868 + <textBackground/>
151.16869 + <background/>
151.16870 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.16871 + <cacheMode>NO_CACHING</cacheMode>
151.16872 + <uiproperties/>
151.16873 + </style>
151.16874 + <backgroundStates>
151.16875 + <state stateKeys="Enabled" inverted="true">
151.16876 + <style>
151.16877 + <textForeground/>
151.16878 + <textBackground/>
151.16879 + <background/>
151.16880 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.16881 + <uiproperties/>
151.16882 + </style>
151.16883 + <canvas>
151.16884 + <size width="100" height="3"/>
151.16885 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.16886 + <stretchingInsets top="0" bottom="0" left="40" right="40"/>
151.16887 + <layer name="Layer 1">
151.16888 + <opacity>1.0</opacity>
151.16889 + <fillOpacity>1.0</fillOpacity>
151.16890 + <blendingMode>NORMAL</blendingMode>
151.16891 + <locked>false</locked>
151.16892 + <visible>true</visible>
151.16893 + <shapes>
151.16894 + <rectangle x1="0.0" x2="100.0" y1="1.0" y2="2.0" rounding="0.0">
151.16895 + <matte red="167" green="172" blue="180" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.03830409" brightnessOffset="-0.039215684" alphaOffset="0"/>
151.16896 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.16897 + </rectangle>
151.16898 + </shapes>
151.16899 + <effects/>
151.16900 + </layer>
151.16901 + </canvas>
151.16902 + </state>
151.16903 + </backgroundStates>
151.16904 + <foregroundStates/>
151.16905 + <borderStates/>
151.16906 + <regions/>
151.16907 + </uiComponent>
151.16908 + <uiComponent opaque="true" type="javax.swing.JScrollBar" name="ScrollBar" ui="ScrollBarUI" subregion="false">
151.16909 + <stateTypes/>
151.16910 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.16911 + <style>
151.16912 + <textForeground/>
151.16913 + <textBackground/>
151.16914 + <background/>
151.16915 + <uiproperties>
151.16916 + <uiProperty name="incrementButtonGap" type="INT" value="-8"/>
151.16917 + <uiProperty name="decrementButtonGap" type="INT" value="-8"/>
151.16918 + <uiProperty name="thumbHeight" type="INT" value="15"/>
151.16919 + <uiProperty name="minimumThumbSize" type="DIMENSION">
151.16920 + <dimension width="29" height="29"/>
151.16921 + </uiProperty>
151.16922 + <uiProperty name="maximumThumbSize" type="DIMENSION">
151.16923 + <dimension width="1000" height="1000"/>
151.16924 + </uiProperty>
151.16925 + </uiproperties>
151.16926 + </style>
151.16927 + <backgroundStates/>
151.16928 + <foregroundStates/>
151.16929 + <borderStates/>
151.16930 + <regions>
151.16931 + <uiComponent opaque="false" componentName="ScrollBar.button" type="javax.swing.plaf.synth.SynthArrowButton" name="ArrowButton" ui="SynthArrowButtonUI" subregion="true">
151.16932 + <stateTypes/>
151.16933 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.16934 + <style>
151.16935 + <textForeground/>
151.16936 + <textBackground/>
151.16937 + <background/>
151.16938 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.16939 + <uiproperties>
151.16940 + <uiProperty name="size" type="INT" value="25"/>
151.16941 + </uiproperties>
151.16942 + </style>
151.16943 + <backgroundStates/>
151.16944 + <foregroundStates>
151.16945 + <state stateKeys="Enabled">
151.16946 + <style>
151.16947 + <textForeground/>
151.16948 + <textBackground/>
151.16949 + <background/>
151.16950 + <uiproperties/>
151.16951 + </style>
151.16952 + <canvas>
151.16953 + <size width="25" height="15"/>
151.16954 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.16955 + <stretchingInsets top="1" bottom="1" left="1" right="1"/>
151.16956 + <layer name="Layer 1">
151.16957 + <opacity>1.0</opacity>
151.16958 + <fillOpacity>1.0</fillOpacity>
151.16959 + <blendingMode>NORMAL</blendingMode>
151.16960 + <locked>false</locked>
151.16961 + <visible>true</visible>
151.16962 + <shapes>
151.16963 + <path>
151.16964 + <matte red="255" green="255" blue="255" alpha="90" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-165"/>
151.16965 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.16966 + <points>
151.16967 + <point x="16.441176470588236" y="2.0" cp1x="15.705882352941176" cp1y="2.0" cp2x="17.176470588235297" cp2y="2.0"/>
151.16968 + <point x="17.52941176470588" y="6.323529411764706" cp1x="16.617647058823525" cp1y="4.117647058823527" cp2x="18.441176470588236" cp2y="8.529411764705884"/>
151.16969 + <point x="20.41176470588234" y="11.323529411764707" cp1x="18.05882352941175" cp1y="9.47058823529412" cp2x="22.76470588235293" cp2y="13.176470588235293"/>
151.16970 + <point x="24.499999999999993" y="14.235294117647056" cp1x="24.499999999999993" cp1y="14.235294117647056" cp2x="24.499999999999993" cp2y="14.235294117647056"/>
151.16971 + <point x="24.352941176470587" y="14.823529411764707" cp1x="24.352941176470587" cp1y="14.823529411764707" cp2x="24.352941176470587" cp2y="14.823529411764707"/>
151.16972 + <point x="19.823529411764667" y="11.970588235294116" cp1x="21.382352941176432" cp1y="13.352941176470583" cp2x="18.264705882352903" cp2y="10.588235294117649"/>
151.16973 + <point x="16.970588235294116" y="7.294117647058823" cp1x="17.76470588235294" cp1y="9.294117647058822" cp2x="16.176470588235293" cp2y="5.294117647058824"/>
151.16974 + </points>
151.16975 + </path>
151.16976 + <path>
151.16977 + <gradient cycleMethod="NO_CYCLE">
151.16978 + <stop position="0.0" midpoint="0.5">
151.16979 + <matte red="45" green="45" blue="46" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.08878718" brightnessOffset="-0.5647059" alphaOffset="0"/>
151.16980 + </stop>
151.16981 + <stop position="0.5928144" midpoint="0.5">
151.16982 + <matte red="64" green="65" blue="66" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.080223285" brightnessOffset="-0.4862745" alphaOffset="0"/>
151.16983 + </stop>
151.16984 + <stop position="0.994012" midpoint="0.5">
151.16985 + <matte red="129" green="131" blue="131" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.111111104" saturationOffset="-0.09525914" brightnessOffset="-0.23137254" alphaOffset="0"/>
151.16986 + </stop>
151.16987 + </gradient>
151.16988 + <paintPoints x1="0.924999994635583" y1="0.9285714285714283" x2="0.9249999986092253" y2="0.004201680672268871"/>
151.16989 + <points>
151.16990 + <point x="12.0" y="4.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="4.0"/>
151.16991 + <point x="12.0" y="11.0" cp1x="12.0" cp1y="11.0" cp2x="12.0" cp2y="11.0"/>
151.16992 + <point x="4.9411764705882355" y="7.499999999999999" cp1x="4.9411764705882355" cp1y="7.499999999999999" cp2x="4.9411764705882355" cp2y="7.499999999999999"/>
151.16993 + </points>
151.16994 + </path>
151.16995 + <path>
151.16996 + <gradient cycleMethod="NO_CYCLE">
151.16997 + <stop position="0.0" midpoint="0.5">
151.16998 + <matte red="112" green="114" blue="115" alpha="119" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.055555522" saturationOffset="-0.08443936" brightnessOffset="-0.29411766" alphaOffset="-136"/>
151.16999 + </stop>
151.17000 + <stop position="1.0" midpoint="0.5">
151.17001 + <matte red="252" green="254" blue="255" alpha="77" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.055555522" saturationOffset="-0.09876161" brightnessOffset="0.25490195" alphaOffset="-178"/>
151.17002 + </stop>
151.17003 + </gradient>
151.17004 + <paintPoints x1="0.0" y1="0.5" x2="0.573529411764707" y2="0.5"/>
151.17005 + <points>
151.17006 + <point x="-0.058823529411764705" y="1.0294117647058822" cp1x="-0.058823529411764705" cp1y="1.0294117647058822" cp2x="-0.058823529411764705" cp2y="1.0294117647058822"/>
151.17007 + <point x="0.9705882352941175" y="1.4999999999999987" cp1x="0.9705882352941175" cp1y="1.4999999999999987" cp2x="0.9705882352941175" cp2y="1.4999999999999987"/>
151.17008 + <point x="1.9411764705882355" y="2.0294117647058822" cp1x="1.9411764705882355" cp1y="2.0294117647058822" cp2x="1.9411764705882355" cp2y="2.0294117647058822"/>
151.17009 + <point x="1.9411764705882355" y="15.029411764705882" cp1x="1.9411764705882355" cp1y="15.029411764705882" cp2x="1.9411764705882355" cp2y="15.029411764705882"/>
151.17010 + <point x="-0.058823529411764705" y="15.029411764705882" cp1x="-0.058823529411764705" cp1y="15.029411764705882" cp2x="-0.058823529411764705" cp2y="15.029411764705882"/>
151.17011 + </points>
151.17012 + </path>
151.17013 + <path>
151.17014 + <gradient cycleMethod="NO_CYCLE">
151.17015 + <stop position="0.0" midpoint="0.5">
151.17016 + <matte red="147" green="149" blue="152" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.07763158" brightnessOffset="-0.1490196" alphaOffset="0"/>
151.17017 + </stop>
151.17018 + <stop position="0.065868266" midpoint="0.5">
151.17019 + <matte red="211" green="212" blue="212" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.111111104" saturationOffset="-0.10580933" brightnessOffset="0.086274505" alphaOffset="0"/>
151.17020 + </stop>
151.17021 + <stop position="0.11377245" midpoint="0.5">
151.17022 + <matte red="240" green="241" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.102261856" brightnessOffset="0.20392156" alphaOffset="0"/>
151.17023 + </stop>
151.17024 + <stop position="0.3473054" midpoint="0.5">
151.17025 + <matte red="217" green="221" blue="224" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.039682567" saturationOffset="-0.079276316" brightnessOffset="0.13333333" alphaOffset="0"/>
151.17026 + </stop>
151.17027 + <stop position="0.6407186" midpoint="0.5">
151.17028 + <matte red="210" green="214" blue="218" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.07382907" brightnessOffset="0.109803915" alphaOffset="0"/>
151.17029 + </stop>
151.17030 + <stop position="0.92814374" midpoint="0.5">
151.17031 + <matte red="242" green="246" blue="249" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.039682567" saturationOffset="-0.08241387" brightnessOffset="0.23137254" alphaOffset="0"/>
151.17032 + </stop>
151.17033 + </gradient>
151.17034 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.17035 + <points>
151.17036 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.17037 + <point x="17.0" y="0.0" cp1x="17.0" cp1y="0.0" cp2x="17.0" cp2y="0.0"/>
151.17038 + <point x="17.0" y="5.0" cp1x="16.294117647058837" cp1y="1.9705882352941178" cp2x="17.705882352941163" cp2y="8.029411764705882"/>
151.17039 + <point x="20.0" y="11.0" cp1x="18.0" cp1y="9.058823529411764" cp2x="22.0" cp2y="12.941176470588236"/>
151.17040 + <point x="25.0" y="14.0" cp1x="25.0" cp1y="14.0" cp2x="25.0" cp2y="14.0"/>
151.17041 + <point x="25.0" y="15.0" cp1x="25.0" cp1y="15.0" cp2x="25.0" cp2y="15.0"/>
151.17042 + <point x="0.0" y="15.0" cp1x="0.0" cp1y="15.0" cp2x="0.0" cp2y="15.0"/>
151.17043 + </points>
151.17044 + </path>
151.17045 + <path>
151.17046 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.17047 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.17048 + <points>
151.17049 + <point x="25.0" y="15.0" cp1x="25.0" cp1y="15.0" cp2x="25.0" cp2y="15.0"/>
151.17050 + </points>
151.17051 + </path>
151.17052 + </shapes>
151.17053 + <effects/>
151.17054 + </layer>
151.17055 + <templateLayer fileName="113e702fdf8.png">
151.17056 + <layer name="Template" type="template">
151.17057 + <opacity>1.0</opacity>
151.17058 + <fillOpacity>1.0</fillOpacity>
151.17059 + <blendingMode>NORMAL</blendingMode>
151.17060 + <locked>false</locked>
151.17061 + <visible>false</visible>
151.17062 + <shapes/>
151.17063 + <effects/>
151.17064 + </layer>
151.17065 + </templateLayer>
151.17066 + </canvas>
151.17067 + </state>
151.17068 + <state stateKeys="Disabled">
151.17069 + <style>
151.17070 + <textForeground/>
151.17071 + <textBackground/>
151.17072 + <background/>
151.17073 + <uiproperties/>
151.17074 + </style>
151.17075 + <canvas>
151.17076 + <size width="25" height="15"/>
151.17077 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.17078 + <stretchingInsets top="1" bottom="1" left="1" right="1"/>
151.17079 + <layer name="Layer 1">
151.17080 + <opacity>1.0</opacity>
151.17081 + <fillOpacity>1.0</fillOpacity>
151.17082 + <blendingMode>NORMAL</blendingMode>
151.17083 + <locked>false</locked>
151.17084 + <visible>true</visible>
151.17085 + <shapes>
151.17086 + <path>
151.17087 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.17088 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.17089 + <points>
151.17090 + <point x="25.0" y="15.0" cp1x="25.0" cp1y="15.0" cp2x="25.0" cp2y="15.0"/>
151.17091 + </points>
151.17092 + </path>
151.17093 + </shapes>
151.17094 + <effects/>
151.17095 + </layer>
151.17096 + </canvas>
151.17097 + </state>
151.17098 + <state stateKeys="MouseOver">
151.17099 + <style>
151.17100 + <textForeground/>
151.17101 + <textBackground/>
151.17102 + <background/>
151.17103 + <uiproperties/>
151.17104 + </style>
151.17105 + <canvas>
151.17106 + <size width="25" height="15"/>
151.17107 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.17108 + <stretchingInsets top="1" bottom="1" left="1" right="1"/>
151.17109 + <layer name="Layer 1">
151.17110 + <opacity>1.0</opacity>
151.17111 + <fillOpacity>1.0</fillOpacity>
151.17112 + <blendingMode>NORMAL</blendingMode>
151.17113 + <locked>false</locked>
151.17114 + <visible>true</visible>
151.17115 + <shapes>
151.17116 + <path>
151.17117 + <matte red="255" green="255" blue="255" alpha="90" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-165"/>
151.17118 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.17119 + <points>
151.17120 + <point x="16.441176470588236" y="2.0" cp1x="15.705882352941176" cp1y="2.0" cp2x="17.176470588235297" cp2y="2.0"/>
151.17121 + <point x="17.52941176470588" y="6.323529411764706" cp1x="16.617647058823525" cp1y="4.117647058823527" cp2x="18.441176470588236" cp2y="8.529411764705884"/>
151.17122 + <point x="20.41176470588234" y="11.323529411764707" cp1x="18.05882352941175" cp1y="9.47058823529412" cp2x="22.76470588235293" cp2y="13.176470588235293"/>
151.17123 + <point x="24.499999999999993" y="14.235294117647056" cp1x="24.499999999999993" cp1y="14.235294117647056" cp2x="24.499999999999993" cp2y="14.235294117647056"/>
151.17124 + <point x="24.352941176470587" y="14.823529411764707" cp1x="24.352941176470587" cp1y="14.823529411764707" cp2x="24.352941176470587" cp2y="14.823529411764707"/>
151.17125 + <point x="19.823529411764667" y="11.970588235294116" cp1x="21.382352941176432" cp1y="13.352941176470583" cp2x="18.264705882352903" cp2y="10.588235294117649"/>
151.17126 + <point x="16.970588235294116" y="7.294117647058823" cp1x="17.76470588235294" cp1y="9.294117647058822" cp2x="16.176470588235293" cp2y="5.294117647058824"/>
151.17127 + </points>
151.17128 + </path>
151.17129 + <path>
151.17130 + <gradient cycleMethod="NO_CYCLE">
151.17131 + <stop position="0.0" midpoint="0.5">
151.17132 + <matte red="64" green="64" blue="65" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.0951417" brightnessOffset="-0.49019608" alphaOffset="0"/>
151.17133 + </stop>
151.17134 + <stop position="0.5928144" midpoint="0.5">
151.17135 + <matte red="83" green="84" blue="85" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.086996906" brightnessOffset="-0.4117647" alphaOffset="0"/>
151.17136 + </stop>
151.17137 + <stop position="0.994012" midpoint="0.5">
151.17138 + <matte red="148" green="150" blue="150" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.111111104" saturationOffset="-0.09719298" brightnessOffset="-0.15686274" alphaOffset="0"/>
151.17139 + </stop>
151.17140 + </gradient>
151.17141 + <paintPoints x1="0.924999994635583" y1="0.9285714285714283" x2="0.9249999986092253" y2="0.004201680672268871"/>
151.17142 + <points>
151.17143 + <point x="12.0" y="4.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="4.0"/>
151.17144 + <point x="12.0" y="11.0" cp1x="12.0" cp1y="11.0" cp2x="12.0" cp2y="11.0"/>
151.17145 + <point x="4.9411764705882355" y="7.499999999999999" cp1x="4.9411764705882355" cp1y="7.499999999999999" cp2x="4.9411764705882355" cp2y="7.499999999999999"/>
151.17146 + </points>
151.17147 + </path>
151.17148 + <path>
151.17149 + <gradient cycleMethod="NO_CYCLE">
151.17150 + <stop position="0.19518717" midpoint="0.5">
151.17151 + <matte red="160" green="163" blue="165" alpha="186" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.04444444" saturationOffset="-0.080223285" brightnessOffset="-0.09803921" alphaOffset="-69"/>
151.17152 + </stop>
151.17153 + <stop position="1.0" midpoint="0.5">
151.17154 + <matte red="252" green="254" blue="255" alpha="215" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.055555522" saturationOffset="-0.09876161" brightnessOffset="0.25490195" alphaOffset="-39"/>
151.17155 + </stop>
151.17156 + </gradient>
151.17157 + <paintPoints x1="0.0" y1="0.5" x2="0.573529411764707" y2="0.5"/>
151.17158 + <points>
151.17159 + <point x="-0.058823529411764705" y="1.0294117647058822" cp1x="-0.058823529411764705" cp1y="1.0294117647058822" cp2x="-0.058823529411764705" cp2y="1.0294117647058822"/>
151.17160 + <point x="0.9705882352941175" y="1.4999999999999987" cp1x="0.9705882352941175" cp1y="1.4999999999999987" cp2x="0.9705882352941175" cp2y="1.4999999999999987"/>
151.17161 + <point x="1.9411764705882355" y="2.0294117647058822" cp1x="1.9411764705882355" cp1y="2.0294117647058822" cp2x="1.9411764705882355" cp2y="2.0294117647058822"/>
151.17162 + <point x="1.9411764705882355" y="15.029411764705882" cp1x="1.9411764705882355" cp1y="15.029411764705882" cp2x="1.9411764705882355" cp2y="15.029411764705882"/>
151.17163 + <point x="-0.058823529411764705" y="15.029411764705882" cp1x="-0.058823529411764705" cp1y="15.029411764705882" cp2x="-0.058823529411764705" cp2y="15.029411764705882"/>
151.17164 + </points>
151.17165 + </path>
151.17166 + <path>
151.17167 + <gradient cycleMethod="NO_CYCLE">
151.17168 + <stop position="0.0" midpoint="0.5">
151.17169 + <matte red="160" green="163" blue="165" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.04444444" saturationOffset="-0.080223285" brightnessOffset="-0.09803921" alphaOffset="0"/>
151.17170 + </stop>
151.17171 + <stop position="0.065868266" midpoint="0.5">
151.17172 + <matte red="217" green="217" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="0.10588235" alphaOffset="0"/>
151.17173 + </stop>
151.17174 + <stop position="0.11377245" midpoint="0.5">
151.17175 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.17176 + </stop>
151.17177 + <stop position="0.3473054" midpoint="0.5">
151.17178 + <matte red="236" green="240" blue="243" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.039682567" saturationOffset="-0.081719734" brightnessOffset="0.20784312" alphaOffset="0"/>
151.17179 + </stop>
151.17180 + <stop position="0.6407186" midpoint="0.5">
151.17181 + <matte red="229" green="233" blue="237" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.07677104" brightnessOffset="0.18431371" alphaOffset="0"/>
151.17182 + </stop>
151.17183 + <stop position="0.92814374" midpoint="0.5">
151.17184 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.17185 + </stop>
151.17186 + </gradient>
151.17187 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.17188 + <points>
151.17189 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.17190 + <point x="17.0" y="0.0" cp1x="17.0" cp1y="0.0" cp2x="17.0" cp2y="0.0"/>
151.17191 + <point x="17.0" y="5.0" cp1x="16.294117647058837" cp1y="1.9705882352941178" cp2x="17.705882352941163" cp2y="8.029411764705882"/>
151.17192 + <point x="20.0" y="11.0" cp1x="18.0" cp1y="9.058823529411764" cp2x="22.0" cp2y="12.941176470588236"/>
151.17193 + <point x="25.0" y="14.0" cp1x="25.0" cp1y="14.0" cp2x="25.0" cp2y="14.0"/>
151.17194 + <point x="25.0" y="15.0" cp1x="25.0" cp1y="15.0" cp2x="25.0" cp2y="15.0"/>
151.17195 + <point x="0.0" y="15.0" cp1x="0.0" cp1y="15.0" cp2x="0.0" cp2y="15.0"/>
151.17196 + </points>
151.17197 + </path>
151.17198 + <path>
151.17199 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.17200 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.17201 + <points>
151.17202 + <point x="25.0" y="15.0" cp1x="25.0" cp1y="15.0" cp2x="25.0" cp2y="15.0"/>
151.17203 + </points>
151.17204 + </path>
151.17205 + </shapes>
151.17206 + <effects/>
151.17207 + </layer>
151.17208 + <templateLayer fileName="114d988b120.png">
151.17209 + <layer name="Template" type="template">
151.17210 + <opacity>1.0</opacity>
151.17211 + <fillOpacity>1.0</fillOpacity>
151.17212 + <blendingMode>NORMAL</blendingMode>
151.17213 + <locked>false</locked>
151.17214 + <visible>true</visible>
151.17215 + <shapes/>
151.17216 + <effects/>
151.17217 + </layer>
151.17218 + </templateLayer>
151.17219 + </canvas>
151.17220 + </state>
151.17221 + <state stateKeys="Pressed">
151.17222 + <style>
151.17223 + <textForeground/>
151.17224 + <textBackground/>
151.17225 + <background/>
151.17226 + <uiproperties/>
151.17227 + </style>
151.17228 + <canvas>
151.17229 + <size width="25" height="15"/>
151.17230 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.17231 + <stretchingInsets top="1" bottom="1" left="1" right="1"/>
151.17232 + <layer name="Layer 1">
151.17233 + <opacity>1.0</opacity>
151.17234 + <fillOpacity>1.0</fillOpacity>
151.17235 + <blendingMode>NORMAL</blendingMode>
151.17236 + <locked>false</locked>
151.17237 + <visible>true</visible>
151.17238 + <shapes>
151.17239 + <path>
151.17240 + <matte red="255" green="255" blue="255" alpha="90" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-165"/>
151.17241 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.17242 + <points>
151.17243 + <point x="16.441176470588236" y="2.0" cp1x="15.705882352941176" cp1y="2.0" cp2x="17.176470588235297" cp2y="2.0"/>
151.17244 + <point x="17.52941176470588" y="6.323529411764706" cp1x="16.617647058823525" cp1y="4.117647058823527" cp2x="18.441176470588236" cp2y="8.529411764705884"/>
151.17245 + <point x="20.41176470588234" y="11.323529411764707" cp1x="18.05882352941175" cp1y="9.47058823529412" cp2x="22.76470588235293" cp2y="13.176470588235293"/>
151.17246 + <point x="24.499999999999993" y="14.235294117647056" cp1x="24.499999999999993" cp1y="14.235294117647056" cp2x="24.499999999999993" cp2y="14.235294117647056"/>
151.17247 + <point x="24.352941176470587" y="14.823529411764707" cp1x="24.352941176470587" cp1y="14.823529411764707" cp2x="24.352941176470587" cp2y="14.823529411764707"/>
151.17248 + <point x="19.823529411764667" y="11.970588235294116" cp1x="21.382352941176432" cp1y="13.352941176470583" cp2x="18.264705882352903" cp2y="10.588235294117649"/>
151.17249 + <point x="16.970588235294116" y="7.294117647058823" cp1x="17.76470588235294" cp1y="9.294117647058822" cp2x="16.176470588235293" cp2y="5.294117647058824"/>
151.17250 + </points>
151.17251 + </path>
151.17252 + <path>
151.17253 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="0"/>
151.17254 + <paintPoints x1="0.924999994635583" y1="0.9285714285714283" x2="0.9249999986092253" y2="0.004201680672268871"/>
151.17255 + <points>
151.17256 + <point x="12.0" y="4.0" cp1x="12.0" cp1y="4.0" cp2x="12.0" cp2y="4.0"/>
151.17257 + <point x="12.0" y="11.0" cp1x="12.0" cp1y="11.0" cp2x="12.0" cp2y="11.0"/>
151.17258 + <point x="4.9411764705882355" y="7.499999999999999" cp1x="4.9411764705882355" cp1y="7.499999999999999" cp2x="4.9411764705882355" cp2y="7.499999999999999"/>
151.17259 + </points>
151.17260 + </path>
151.17261 + <path>
151.17262 + <gradient cycleMethod="NO_CYCLE">
151.17263 + <stop position="0.0" midpoint="0.5">
151.17264 + <matte red="126" green="131" blue="135" alpha="211" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.037037015" saturationOffset="-0.043859646" brightnessOffset="-0.21568626" alphaOffset="-44"/>
151.17265 + </stop>
151.17266 + <stop position="1.0" midpoint="0.5">
151.17267 + <matte red="252" green="254" blue="255" alpha="77" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.055555522" saturationOffset="-0.09876161" brightnessOffset="0.25490195" alphaOffset="-178"/>
151.17268 + </stop>
151.17269 + </gradient>
151.17270 + <paintPoints x1="0.0" y1="0.5" x2="0.573529411764707" y2="0.5"/>
151.17271 + <points>
151.17272 + <point x="-0.058823529411764705" y="1.0294117647058822" cp1x="-0.058823529411764705" cp1y="1.0294117647058822" cp2x="-0.058823529411764705" cp2y="1.0294117647058822"/>
151.17273 + <point x="0.9705882352941175" y="1.4999999999999987" cp1x="0.9705882352941175" cp1y="1.4999999999999987" cp2x="0.9705882352941175" cp2y="1.4999999999999987"/>
151.17274 + <point x="1.9411764705882355" y="2.0294117647058822" cp1x="1.9411764705882355" cp1y="2.0294117647058822" cp2x="1.9411764705882355" cp2y="2.0294117647058822"/>
151.17275 + <point x="1.9411764705882355" y="15.029411764705882" cp1x="1.9411764705882355" cp1y="15.029411764705882" cp2x="1.9411764705882355" cp2y="15.029411764705882"/>
151.17276 + <point x="-0.058823529411764705" y="15.029411764705882" cp1x="-0.058823529411764705" cp1y="15.029411764705882" cp2x="-0.058823529411764705" cp2y="15.029411764705882"/>
151.17277 + </points>
151.17278 + </path>
151.17279 + <path>
151.17280 + <gradient cycleMethod="NO_CYCLE">
151.17281 + <stop position="0.0" midpoint="0.5">
151.17282 + <matte red="126" green="131" blue="135" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.037037015" saturationOffset="-0.043859646" brightnessOffset="-0.21568626" alphaOffset="0"/>
151.17283 + </stop>
151.17284 + <stop position="0.065868266" midpoint="0.5">
151.17285 + <matte red="180" green="185" blue="187" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.06349206" saturationOffset="-0.07309316" brightnessOffset="-0.011764705" alphaOffset="0"/>
151.17286 + </stop>
151.17287 + <stop position="0.11377245" midpoint="0.5">
151.17288 + <matte red="205" green="210" blue="213" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.048611104" saturationOffset="-0.07296763" brightnessOffset="0.09019607" alphaOffset="0"/>
151.17289 + </stop>
151.17290 + <stop position="0.3473054" midpoint="0.5">
151.17291 + <matte red="187" green="193" blue="198" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.03535354" saturationOffset="-0.05497076" brightnessOffset="0.031372547" alphaOffset="0"/>
151.17292 + </stop>
151.17293 + <stop position="0.6407186" midpoint="0.5">
151.17294 + <matte red="180" green="187" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.034188032" saturationOffset="-0.043168806" brightnessOffset="0.011764705" alphaOffset="0"/>
151.17295 + </stop>
151.17296 + <stop position="0.92814374" midpoint="0.5">
151.17297 + <matte red="207" green="213" blue="218" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.03535354" saturationOffset="-0.0600676" brightnessOffset="0.109803915" alphaOffset="0"/>
151.17298 + </stop>
151.17299 + </gradient>
151.17300 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.17301 + <points>
151.17302 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.17303 + <point x="17.0" y="0.0" cp1x="17.0" cp1y="0.0" cp2x="17.0" cp2y="0.0"/>
151.17304 + <point x="17.0" y="5.0" cp1x="16.294117647058837" cp1y="1.9705882352941178" cp2x="17.705882352941163" cp2y="8.029411764705882"/>
151.17305 + <point x="20.0" y="11.0" cp1x="18.0" cp1y="9.058823529411764" cp2x="22.0" cp2y="12.941176470588236"/>
151.17306 + <point x="25.0" y="14.0" cp1x="25.0" cp1y="14.0" cp2x="25.0" cp2y="14.0"/>
151.17307 + <point x="25.0" y="15.0" cp1x="25.0" cp1y="15.0" cp2x="25.0" cp2y="15.0"/>
151.17308 + <point x="0.0" y="15.0" cp1x="0.0" cp1y="15.0" cp2x="0.0" cp2y="15.0"/>
151.17309 + </points>
151.17310 + </path>
151.17311 + <path>
151.17312 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.17313 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.17314 + <points>
151.17315 + <point x="25.0" y="15.0" cp1x="25.0" cp1y="15.0" cp2x="25.0" cp2y="15.0"/>
151.17316 + </points>
151.17317 + </path>
151.17318 + </shapes>
151.17319 + <effects/>
151.17320 + </layer>
151.17321 + <templateLayer fileName="114d98aee62.png">
151.17322 + <layer name="Template" type="template">
151.17323 + <opacity>1.0</opacity>
151.17324 + <fillOpacity>1.0</fillOpacity>
151.17325 + <blendingMode>NORMAL</blendingMode>
151.17326 + <locked>false</locked>
151.17327 + <visible>true</visible>
151.17328 + <shapes/>
151.17329 + <effects/>
151.17330 + </layer>
151.17331 + </templateLayer>
151.17332 + </canvas>
151.17333 + </state>
151.17334 + </foregroundStates>
151.17335 + <borderStates/>
151.17336 + <regions/>
151.17337 + </uiComponent>
151.17338 + <region name="ScrollBarThumb" subregion="true">
151.17339 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.17340 + <style>
151.17341 + <textForeground/>
151.17342 + <textBackground/>
151.17343 + <background/>
151.17344 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.17345 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.17346 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.17347 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.17348 + <uiproperties/>
151.17349 + </style>
151.17350 + <backgroundStates>
151.17351 + <state stateKeys="Disabled">
151.17352 + <style>
151.17353 + <textForeground/>
151.17354 + <textBackground/>
151.17355 + <background/>
151.17356 + <uiproperties/>
151.17357 + </style>
151.17358 + <canvas>
151.17359 + <size width="100" height="30"/>
151.17360 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.17361 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.17362 + <layer name="Layer 1">
151.17363 + <opacity>1.0</opacity>
151.17364 + <fillOpacity>1.0</fillOpacity>
151.17365 + <blendingMode>NORMAL</blendingMode>
151.17366 + <locked>false</locked>
151.17367 + <visible>true</visible>
151.17368 + <shapes/>
151.17369 + <effects/>
151.17370 + </layer>
151.17371 + </canvas>
151.17372 + </state>
151.17373 + <state stateKeys="Enabled">
151.17374 + <style>
151.17375 + <textForeground/>
151.17376 + <textBackground/>
151.17377 + <background/>
151.17378 + <uiproperties/>
151.17379 + </style>
151.17380 + <canvas>
151.17381 + <size width="38" height="15"/>
151.17382 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.17383 + <stretchingInsets top="0" bottom="0" left="15" right="15"/>
151.17384 + <layer name="Layer 1">
151.17385 + <opacity>1.0</opacity>
151.17386 + <fillOpacity>1.0</fillOpacity>
151.17387 + <blendingMode>NORMAL</blendingMode>
151.17388 + <locked>false</locked>
151.17389 + <visible>true</visible>
151.17390 + <shapes>
151.17391 + <path>
151.17392 + <gradient cycleMethod="NO_CYCLE">
151.17393 + <stop position="0.0" midpoint="0.5">
151.17394 + <matte red="104" green="125" blue="143" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.362987" brightnessOffset="0.011764705" alphaOffset="0"/>
151.17395 + </stop>
151.17396 + <stop position="1.0" midpoint="0.5">
151.17397 + <matte red="104" green="125" blue="143" alpha="0" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.362987" brightnessOffset="0.011764705" alphaOffset="-255"/>
151.17398 + </stop>
151.17399 + </gradient>
151.17400 + <paintPoints x1="0.940909090909089" y1="0.03592814412291934" x2="0.5954545454545457" y2="0.26347304548015776"/>
151.17401 + <points>
151.17402 + <point x="37.04545454545455" y="0.0" cp1x="37.04545454545455" cp1y="0.0" cp2x="37.04545454545455" cp2y="0.0"/>
151.17403 + <point x="32.04545454545455" y="0.0" cp1x="32.04545454545455" cp1y="0.0" cp2x="32.04545454545455" cp2y="0.0"/>
151.17404 + <point x="34.681818181818194" y="2.0" cp1x="34.00000000000002" cp1y="0.7727272727272729" cp2x="35.36363636363637" cp2y="3.227272727272727"/>
151.17405 + <point x="35.59090909090908" y="7.590909090909094" cp1x="35.59090909090908" cp1y="7.590909090909094" cp2x="35.59090909090908" cp2y="7.590909090909094"/>
151.17406 + </points>
151.17407 + </path>
151.17408 + <path>
151.17409 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.17410 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.17411 + <points>
151.17412 + <point x="29.363636363636367" y="7.681818181818182" cp1x="29.363636363636367" cp1y="7.681818181818182" cp2x="29.363636363636367" cp2y="7.681818181818182"/>
151.17413 + </points>
151.17414 + </path>
151.17415 + <path>
151.17416 + <gradient cycleMethod="NO_CYCLE">
151.17417 + <stop position="0.0" midpoint="0.5">
151.17418 + <matte red="104" green="125" blue="143" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.362987" brightnessOffset="0.011764705" alphaOffset="0"/>
151.17419 + </stop>
151.17420 + <stop position="1.0" midpoint="0.5">
151.17421 + <matte red="129" green="148" blue="165" alpha="33" uiDefaultParentName="nimbusBase" hueOffset="5.2034855E-5" saturationOffset="-0.41753247" brightnessOffset="0.09803921" alphaOffset="-222"/>
151.17422 + </stop>
151.17423 + </gradient>
151.17424 + <paintPoints x1="0.06818181818181814" y1="-0.005952381053749398" x2="0.36890908871182554" y2="0.23929171756874906"/>
151.17425 + <points>
151.17426 + <point x="6.0" y="0.0" cp1x="6.0" cp1y="0.0" cp2x="6.0" cp2y="0.0"/>
151.17427 + <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
151.17428 + <point x="2.4090909090909083" y="7.636363636363642" cp1x="2.4090909090909083" cp1y="7.636363636363642" cp2x="2.4090909090909083" cp2y="7.636363636363642"/>
151.17429 + <point x="3.0000000000000004" y="2.0454545454545503" cp1x="2.045454545454544" cp1y="3.5909090909090975" cp2x="3.954545454545457" cp2y="0.5000000000000031"/>
151.17430 + </points>
151.17431 + </path>
151.17432 + <path>
151.17433 + <gradient cycleMethod="NO_CYCLE">
151.17434 + <stop position="0.038922157" midpoint="0.5">
151.17435 + <matte red="183" green="194" blue="204" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="7.13408E-4" saturationOffset="-0.53277314" brightnessOffset="0.25098038" alphaOffset="0"/>
151.17436 + </stop>
151.17437 + <stop position="0.06287425" midpoint="0.5">
151.17438 + <matte red="252" green="253" blue="253" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.07865167" saturationOffset="-0.6317617" brightnessOffset="0.44313723" alphaOffset="0"/>
151.17439 + </stop>
151.17440 + <stop position="0.32934132" midpoint="0.5">
151.17441 + <matte red="168" green="189" blue="208" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.44340658" brightnessOffset="0.26666665" alphaOffset="0"/>
151.17442 + </stop>
151.17443 + <stop position="0.6497006" midpoint="0.5">
151.17444 + <matte red="197" green="218" blue="237" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4669379" brightnessOffset="0.38039213" alphaOffset="0"/>
151.17445 + </stop>
151.17446 + <stop position="1.0" midpoint="0.5">
151.17447 + <matte red="237" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.07865167" saturationOffset="-0.56512606" brightnessOffset="0.45098037" alphaOffset="0"/>
151.17448 + </stop>
151.17449 + </gradient>
151.17450 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.17451 + <points>
151.17452 + <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
151.17453 + <point x="1.0" y="1.0" cp1x="1.0" cp1y="1.0" cp2x="0.9545454545454546" cp2y="9.45454545454545"/>
151.17454 + <point x="15.0" y="14.0" cp1x="9.136363636363646" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
151.17455 + <point x="23.0" y="14.0" cp1x="23.0" cp1y="14.0" cp2x="28.909090909090935" cp2y="13.999999999999996"/>
151.17456 + <point x="37.0" y="1.0" cp1x="36.95454545454545" cp1y="9.36363636363636" cp2x="37.0" cp2y="1.0"/>
151.17457 + <point x="37.0" y="0.0" cp1x="37.0" cp1y="0.0" cp2x="37.0" cp2y="0.0"/>
151.17458 + </points>
151.17459 + </path>
151.17460 + <path>
151.17461 + <gradient cycleMethod="NO_CYCLE">
151.17462 + <stop position="0.0" midpoint="0.5">
151.17463 + <matte red="9" green="30" blue="49" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="0.18061227" brightnessOffset="-0.35686278" alphaOffset="0"/>
151.17464 + </stop>
151.17465 + <stop position="1.0" midpoint="0.5">
151.17466 + <matte red="54" green="75" blue="94" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.21018237" brightnessOffset="-0.18039218" alphaOffset="0"/>
151.17467 + </stop>
151.17468 + </gradient>
151.17469 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.17470 + <points>
151.17471 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.17472 + <point x="0.0" y="1.0" cp1x="0.0" cp1y="1.0" cp2x="0.0" cp2y="7.0"/>
151.17473 + <point x="15.0" y="15.0" cp1x="5.0" cp1y="15.0" cp2x="15.0" cp2y="15.0"/>
151.17474 + <point x="23.0" y="15.0" cp1x="23.0" cp1y="15.0" cp2x="33.0" cp2y="15.0"/>
151.17475 + <point x="38.0" y="1.0" cp1x="38.0" cp1y="7.0" cp2x="38.0" cp2y="1.0"/>
151.17476 + <point x="38.0" y="0.0" cp1x="38.0" cp1y="0.0" cp2x="38.0" cp2y="0.0"/>
151.17477 + </points>
151.17478 + </path>
151.17479 + </shapes>
151.17480 + <effects/>
151.17481 + </layer>
151.17482 + <templateLayer fileName="113e6a24589.png">
151.17483 + <layer name="Template" type="template">
151.17484 + <opacity>1.0</opacity>
151.17485 + <fillOpacity>1.0</fillOpacity>
151.17486 + <blendingMode>NORMAL</blendingMode>
151.17487 + <locked>false</locked>
151.17488 + <visible>false</visible>
151.17489 + <shapes/>
151.17490 + <effects/>
151.17491 + </layer>
151.17492 + </templateLayer>
151.17493 + </canvas>
151.17494 + </state>
151.17495 + <state stateKeys="Focused">
151.17496 + <style>
151.17497 + <textForeground/>
151.17498 + <textBackground/>
151.17499 + <background/>
151.17500 + <uiproperties/>
151.17501 + </style>
151.17502 + <canvas>
151.17503 + <size width="100" height="30"/>
151.17504 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.17505 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.17506 + <layer name="Layer 1">
151.17507 + <opacity>1.0</opacity>
151.17508 + <fillOpacity>1.0</fillOpacity>
151.17509 + <blendingMode>NORMAL</blendingMode>
151.17510 + <locked>false</locked>
151.17511 + <visible>true</visible>
151.17512 + <shapes/>
151.17513 + <effects/>
151.17514 + </layer>
151.17515 + </canvas>
151.17516 + </state>
151.17517 + <state stateKeys="MouseOver">
151.17518 + <style>
151.17519 + <textForeground/>
151.17520 + <textBackground/>
151.17521 + <background/>
151.17522 + <uiproperties/>
151.17523 + </style>
151.17524 + <canvas>
151.17525 + <size width="38" height="15"/>
151.17526 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.17527 + <stretchingInsets top="0" bottom="0" left="15" right="15"/>
151.17528 + <layer name="Layer 1">
151.17529 + <opacity>1.0</opacity>
151.17530 + <fillOpacity>1.0</fillOpacity>
151.17531 + <blendingMode>NORMAL</blendingMode>
151.17532 + <locked>false</locked>
151.17533 + <visible>true</visible>
151.17534 + <shapes>
151.17535 + <path>
151.17536 + <gradient cycleMethod="NO_CYCLE">
151.17537 + <stop position="0.0" midpoint="0.5">
151.17538 + <matte red="104" green="125" blue="143" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.362987" brightnessOffset="0.011764705" alphaOffset="0"/>
151.17539 + </stop>
151.17540 + <stop position="1.0" midpoint="0.5">
151.17541 + <matte red="104" green="125" blue="143" alpha="0" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.362987" brightnessOffset="0.011764705" alphaOffset="-255"/>
151.17542 + </stop>
151.17543 + </gradient>
151.17544 + <paintPoints x1="0.940909090909089" y1="0.03592814412291934" x2="0.5954545454545457" y2="0.26347304548015776"/>
151.17545 + <points>
151.17546 + <point x="37.04545454545455" y="0.0" cp1x="37.04545454545455" cp1y="0.0" cp2x="37.04545454545455" cp2y="0.0"/>
151.17547 + <point x="32.04545454545455" y="0.0" cp1x="32.04545454545455" cp1y="0.0" cp2x="32.04545454545455" cp2y="0.0"/>
151.17548 + <point x="34.681818181818194" y="2.0" cp1x="34.00000000000002" cp1y="0.7727272727272729" cp2x="35.36363636363637" cp2y="3.227272727272727"/>
151.17549 + <point x="35.59090909090908" y="7.590909090909094" cp1x="35.59090909090908" cp1y="7.590909090909094" cp2x="35.59090909090908" cp2y="7.590909090909094"/>
151.17550 + </points>
151.17551 + </path>
151.17552 + <path>
151.17553 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.17554 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.17555 + <points>
151.17556 + <point x="29.363636363636367" y="7.681818181818182" cp1x="29.363636363636367" cp1y="7.681818181818182" cp2x="29.363636363636367" cp2y="7.681818181818182"/>
151.17557 + </points>
151.17558 + </path>
151.17559 + <path>
151.17560 + <gradient cycleMethod="NO_CYCLE">
151.17561 + <stop position="0.0" midpoint="0.5">
151.17562 + <matte red="104" green="125" blue="143" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.362987" brightnessOffset="0.011764705" alphaOffset="0"/>
151.17563 + </stop>
151.17564 + <stop position="1.0" midpoint="0.5">
151.17565 + <matte red="129" green="148" blue="165" alpha="33" uiDefaultParentName="nimbusBase" hueOffset="5.2034855E-5" saturationOffset="-0.41753247" brightnessOffset="0.09803921" alphaOffset="-222"/>
151.17566 + </stop>
151.17567 + </gradient>
151.17568 + <paintPoints x1="0.06818181818181814" y1="-0.005952381053749398" x2="0.36890908871182554" y2="0.23929171756874906"/>
151.17569 + <points>
151.17570 + <point x="6.0" y="0.0" cp1x="6.0" cp1y="0.0" cp2x="6.0" cp2y="0.0"/>
151.17571 + <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
151.17572 + <point x="2.4090909090909083" y="7.636363636363642" cp1x="2.4090909090909083" cp1y="7.636363636363642" cp2x="2.4090909090909083" cp2y="7.636363636363642"/>
151.17573 + <point x="3.0000000000000004" y="2.0454545454545503" cp1x="2.045454545454544" cp1y="3.5909090909090975" cp2x="3.954545454545457" cp2y="0.5000000000000031"/>
151.17574 + </points>
151.17575 + </path>
151.17576 + <path>
151.17577 + <gradient cycleMethod="NO_CYCLE">
151.17578 + <stop position="0.038922157" midpoint="0.5">
151.17579 + <matte red="189" green="196" blue="204" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.010237217" saturationOffset="-0.5621849" brightnessOffset="0.25098038" alphaOffset="0"/>
151.17580 + </stop>
151.17581 + <stop position="0.06287425" midpoint="0.5">
151.17582 + <matte red="253" green="253" blue="254" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.6317773" brightnessOffset="0.4470588" alphaOffset="0"/>
151.17583 + </stop>
151.17584 + <stop position="0.32934132" midpoint="0.5">
151.17585 + <matte red="187" green="208" blue="227" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.45950285" brightnessOffset="0.34117645" alphaOffset="0"/>
151.17586 + </stop>
151.17587 + <stop position="0.6497006" midpoint="0.5">
151.17588 + <matte red="216" green="237" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.48277313" brightnessOffset="0.45098037" alphaOffset="0"/>
151.17589 + </stop>
151.17590 + <stop position="1.0" midpoint="0.5">
151.17591 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.17592 + </stop>
151.17593 + </gradient>
151.17594 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.17595 + <points>
151.17596 + <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
151.17597 + <point x="1.0" y="1.0" cp1x="1.0" cp1y="1.0" cp2x="0.9545454545454546" cp2y="9.45454545454545"/>
151.17598 + <point x="15.0" y="14.0" cp1x="9.136363636363646" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
151.17599 + <point x="23.0" y="14.0" cp1x="23.0" cp1y="14.0" cp2x="28.909090909090935" cp2y="13.999999999999996"/>
151.17600 + <point x="37.0" y="1.0" cp1x="36.95454545454545" cp1y="9.36363636363636" cp2x="37.0" cp2y="1.0"/>
151.17601 + <point x="37.0" y="0.0" cp1x="37.0" cp1y="0.0" cp2x="37.0" cp2y="0.0"/>
151.17602 + </points>
151.17603 + </path>
151.17604 + <path>
151.17605 + <gradient cycleMethod="NO_CYCLE">
151.17606 + <stop position="0.0" midpoint="0.5">
151.17607 + <matte red="9" green="30" blue="49" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="0.18061227" brightnessOffset="-0.35686278" alphaOffset="0"/>
151.17608 + </stop>
151.17609 + <stop position="1.0" midpoint="0.5">
151.17610 + <matte red="54" green="75" blue="94" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.21018237" brightnessOffset="-0.18039218" alphaOffset="0"/>
151.17611 + </stop>
151.17612 + </gradient>
151.17613 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.17614 + <points>
151.17615 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.17616 + <point x="0.0" y="1.0" cp1x="0.0" cp1y="1.0" cp2x="0.0" cp2y="7.0"/>
151.17617 + <point x="15.0" y="15.0" cp1x="5.0" cp1y="15.0" cp2x="15.0" cp2y="15.0"/>
151.17618 + <point x="23.0" y="15.0" cp1x="23.0" cp1y="15.0" cp2x="33.0" cp2y="15.0"/>
151.17619 + <point x="38.0" y="1.0" cp1x="38.0" cp1y="7.0" cp2x="38.0" cp2y="1.0"/>
151.17620 + <point x="38.0" y="0.0" cp1x="38.0" cp1y="0.0" cp2x="38.0" cp2y="0.0"/>
151.17621 + </points>
151.17622 + </path>
151.17623 + </shapes>
151.17624 + <effects/>
151.17625 + </layer>
151.17626 + <templateLayer fileName="1141ec296f1.png">
151.17627 + <layer name="Template" type="template">
151.17628 + <opacity>1.0</opacity>
151.17629 + <fillOpacity>1.0</fillOpacity>
151.17630 + <blendingMode>NORMAL</blendingMode>
151.17631 + <locked>false</locked>
151.17632 + <visible>false</visible>
151.17633 + <shapes/>
151.17634 + <effects/>
151.17635 + </layer>
151.17636 + </templateLayer>
151.17637 + </canvas>
151.17638 + </state>
151.17639 + <state stateKeys="Pressed">
151.17640 + <style>
151.17641 + <textForeground/>
151.17642 + <textBackground/>
151.17643 + <background/>
151.17644 + <uiproperties/>
151.17645 + </style>
151.17646 + <canvas>
151.17647 + <size width="38" height="15"/>
151.17648 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.17649 + <stretchingInsets top="0" bottom="0" left="15" right="15"/>
151.17650 + <layer name="Layer 1">
151.17651 + <opacity>1.0</opacity>
151.17652 + <fillOpacity>1.0</fillOpacity>
151.17653 + <blendingMode>NORMAL</blendingMode>
151.17654 + <locked>false</locked>
151.17655 + <visible>true</visible>
151.17656 + <shapes>
151.17657 + <path>
151.17658 + <gradient cycleMethod="NO_CYCLE">
151.17659 + <stop position="0.0" midpoint="0.5">
151.17660 + <matte red="36" green="42" blue="48" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.3857143" brightnessOffset="-0.36078435" alphaOffset="0"/>
151.17661 + </stop>
151.17662 + <stop position="1.0" midpoint="0.5">
151.17663 + <matte red="104" green="125" blue="143" alpha="0" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.362987" brightnessOffset="0.011764705" alphaOffset="-255"/>
151.17664 + </stop>
151.17665 + </gradient>
151.17666 + <paintPoints x1="0.940909090909089" y1="0.03592814412291934" x2="0.3761563291933634" y2="0.3491017889731149"/>
151.17667 + <points>
151.17668 + <point x="37.04545454545455" y="0.0" cp1x="37.04545454545455" cp1y="0.0" cp2x="37.04545454545455" cp2y="0.0"/>
151.17669 + <point x="31.34545454545454" y="0.0" cp1x="31.34545454545454" cp1y="0.0" cp2x="31.34545454545454" cp2y="0.0"/>
151.17670 + <point x="34.38181818181821" y="2.0999999999999996" cp1x="33.70000000000004" cp1y="0.872727272727273" cp2x="35.063636363636384" cp2y="3.3272727272727267"/>
151.17671 + <point x="35.59090909090908" y="7.590909090909094" cp1x="35.59090909090908" cp1y="7.590909090909094" cp2x="35.59090909090908" cp2y="7.590909090909094"/>
151.17672 + </points>
151.17673 + </path>
151.17674 + <path>
151.17675 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.17676 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.17677 + <points>
151.17678 + <point x="29.363636363636367" y="7.681818181818182" cp1x="29.363636363636367" cp1y="7.681818181818182" cp2x="29.363636363636367" cp2y="7.681818181818182"/>
151.17679 + </points>
151.17680 + </path>
151.17681 + <path>
151.17682 + <gradient cycleMethod="NO_CYCLE">
151.17683 + <stop position="0.0" midpoint="0.5">
151.17684 + <matte red="39" green="47" blue="54" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-8.738637E-4" saturationOffset="-0.3579365" brightnessOffset="-0.33725494" alphaOffset="0"/>
151.17685 + </stop>
151.17686 + <stop position="1.0" midpoint="0.5">
151.17687 + <matte red="129" green="148" blue="165" alpha="33" uiDefaultParentName="nimbusBase" hueOffset="5.2034855E-5" saturationOffset="-0.41753247" brightnessOffset="0.09803921" alphaOffset="-222"/>
151.17688 + </stop>
151.17689 + </gradient>
151.17690 + <paintPoints x1="0.06818181818181814" y1="-0.005952381053749398" x2="0.36890908871182554" y2="0.23929171756874906"/>
151.17691 + <points>
151.17692 + <point x="6.0" y="0.0" cp1x="6.0" cp1y="0.0" cp2x="6.0" cp2y="0.0"/>
151.17693 + <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
151.17694 + <point x="2.4090909090909083" y="7.636363636363642" cp1x="2.4090909090909083" cp1y="7.636363636363642" cp2x="2.4090909090909083" cp2y="7.636363636363642"/>
151.17695 + <point x="3.0000000000000004" y="2.0454545454545503" cp1x="2.045454545454544" cp1y="3.5909090909090975" cp2x="3.954545454545457" cp2y="0.5000000000000031"/>
151.17696 + </points>
151.17697 + </path>
151.17698 + <path>
151.17699 + <gradient cycleMethod="NO_CYCLE">
151.17700 + <stop position="0.038922157" midpoint="0.5">
151.17701 + <matte red="89" green="113" blue="136" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.002908647" saturationOffset="-0.29012606" brightnessOffset="-0.015686274" alphaOffset="0"/>
151.17702 + </stop>
151.17703 + <stop position="0.06287425" midpoint="0.5">
151.17704 + <matte red="151" green="175" blue="196" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-8.738637E-4" saturationOffset="-0.40612245" brightnessOffset="0.21960783" alphaOffset="0"/>
151.17705 + </stop>
151.17706 + <stop position="0.32934132" midpoint="0.5">
151.17707 + <matte red="55" green="102" blue="144" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.01765871" brightnessOffset="0.015686274" alphaOffset="0"/>
151.17708 + </stop>
151.17709 + <stop position="0.6497006" midpoint="0.5">
151.17710 + <matte red="86" green="133" blue="175" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.12714285" brightnessOffset="0.1372549" alphaOffset="0"/>
151.17711 + </stop>
151.17712 + <stop position="1.0" midpoint="0.5">
151.17713 + <matte red="131" green="177" blue="220" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0018727183" saturationOffset="-0.23116884" brightnessOffset="0.31372547" alphaOffset="0"/>
151.17714 + </stop>
151.17715 + </gradient>
151.17716 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.17717 + <points>
151.17718 + <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
151.17719 + <point x="1.0" y="1.0" cp1x="1.0" cp1y="1.0" cp2x="0.9545454545454546" cp2y="9.45454545454545"/>
151.17720 + <point x="15.0" y="14.0" cp1x="9.136363636363646" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
151.17721 + <point x="23.0" y="14.0" cp1x="23.0" cp1y="14.0" cp2x="28.909090909090935" cp2y="13.999999999999996"/>
151.17722 + <point x="37.0" y="1.0" cp1x="36.95454545454545" cp1y="9.36363636363636" cp2x="37.0" cp2y="1.0"/>
151.17723 + <point x="37.0" y="0.0" cp1x="37.0" cp1y="0.0" cp2x="37.0" cp2y="0.0"/>
151.17724 + </points>
151.17725 + </path>
151.17726 + <path>
151.17727 + <gradient cycleMethod="NO_CYCLE">
151.17728 + <stop position="0.0" midpoint="0.5">
151.17729 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.17730 + </stop>
151.17731 + <stop position="1.0" midpoint="0.5">
151.17732 + <matte red="4" green="30" blue="54" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="0.29021162" brightnessOffset="-0.33725494" alphaOffset="0"/>
151.17733 + </stop>
151.17734 + </gradient>
151.17735 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.17736 + <points>
151.17737 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.17738 + <point x="0.0" y="1.0" cp1x="0.0" cp1y="1.0" cp2x="0.0" cp2y="7.0"/>
151.17739 + <point x="15.0" y="15.0" cp1x="5.0" cp1y="15.0" cp2x="15.0" cp2y="15.0"/>
151.17740 + <point x="23.0" y="15.0" cp1x="23.0" cp1y="15.0" cp2x="33.0" cp2y="15.0"/>
151.17741 + <point x="38.0" y="1.0" cp1x="38.0" cp1y="7.0" cp2x="38.0" cp2y="1.0"/>
151.17742 + <point x="38.0" y="0.0" cp1x="38.0" cp1y="0.0" cp2x="38.0" cp2y="0.0"/>
151.17743 + </points>
151.17744 + </path>
151.17745 + </shapes>
151.17746 + <effects/>
151.17747 + </layer>
151.17748 + <templateLayer fileName="114d984fa41.png">
151.17749 + <layer name="Template" type="template">
151.17750 + <opacity>1.0</opacity>
151.17751 + <fillOpacity>1.0</fillOpacity>
151.17752 + <blendingMode>NORMAL</blendingMode>
151.17753 + <locked>false</locked>
151.17754 + <visible>false</visible>
151.17755 + <shapes/>
151.17756 + <effects/>
151.17757 + </layer>
151.17758 + </templateLayer>
151.17759 + </canvas>
151.17760 + </state>
151.17761 + </backgroundStates>
151.17762 + <foregroundStates/>
151.17763 + <borderStates/>
151.17764 + <regions/>
151.17765 + </region>
151.17766 + <region name="ScrollBarTrack" subregion="true">
151.17767 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.17768 + <style>
151.17769 + <textForeground/>
151.17770 + <textBackground/>
151.17771 + <background/>
151.17772 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.17773 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.17774 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.17775 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.17776 + <uiproperties/>
151.17777 + </style>
151.17778 + <backgroundStates>
151.17779 + <state stateKeys="Disabled">
151.17780 + <style>
151.17781 + <textForeground/>
151.17782 + <textBackground/>
151.17783 + <background/>
151.17784 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.17785 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.17786 + <uiproperties/>
151.17787 + </style>
151.17788 + <canvas>
151.17789 + <size width="18" height="15"/>
151.17790 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.17791 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.17792 + <layer name="Layer 1">
151.17793 + <opacity>1.0</opacity>
151.17794 + <fillOpacity>1.0</fillOpacity>
151.17795 + <blendingMode>NORMAL</blendingMode>
151.17796 + <locked>false</locked>
151.17797 + <visible>true</visible>
151.17798 + <shapes>
151.17799 + <rectangle x1="0.0" x2="18.0" y1="0.0" y2="15.0" rounding="0.0">
151.17800 + <gradient cycleMethod="NO_CYCLE">
151.17801 + <stop position="0.016129032" midpoint="0.5">
151.17802 + <matte red="191" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.10016362" brightnessOffset="0.011764705" alphaOffset="0"/>
151.17803 + </stop>
151.17804 + <stop position="0.061290324" midpoint="0.49019608">
151.17805 + <matte red="197" green="198" blue="199" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.100476064" brightnessOffset="0.035294116" alphaOffset="0"/>
151.17806 + </stop>
151.17807 + <stop position="0.26451612" midpoint="0.27979276">
151.17808 + <matte red="223" green="223" blue="224" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10606203" brightnessOffset="0.13333333" alphaOffset="0"/>
151.17809 + </stop>
151.17810 + <stop position="0.88387096" midpoint="0.5">
151.17811 + <matte red="253" green="253" blue="253" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="0.24705881" alphaOffset="0"/>
151.17812 + </stop>
151.17813 + </gradient>
151.17814 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.17815 + </rectangle>
151.17816 + </shapes>
151.17817 + <effects/>
151.17818 + </layer>
151.17819 + <templateLayer fileName="1140138e9be.png">
151.17820 + <layer name="Template" type="template">
151.17821 + <opacity>1.0</opacity>
151.17822 + <fillOpacity>1.0</fillOpacity>
151.17823 + <blendingMode>NORMAL</blendingMode>
151.17824 + <locked>false</locked>
151.17825 + <visible>true</visible>
151.17826 + <shapes/>
151.17827 + <effects/>
151.17828 + </layer>
151.17829 + </templateLayer>
151.17830 + </canvas>
151.17831 + </state>
151.17832 + <state stateKeys="Enabled">
151.17833 + <style>
151.17834 + <textForeground/>
151.17835 + <textBackground/>
151.17836 + <background/>
151.17837 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.17838 + <uiproperties/>
151.17839 + </style>
151.17840 + <canvas>
151.17841 + <size width="34" height="15"/>
151.17842 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.17843 + <stretchingInsets top="5" bottom="5" left="10" right="9"/>
151.17844 + <layer name="Layer 2">
151.17845 + <opacity>1.0</opacity>
151.17846 + <fillOpacity>1.0</fillOpacity>
151.17847 + <blendingMode>NORMAL</blendingMode>
151.17848 + <locked>false</locked>
151.17849 + <visible>true</visible>
151.17850 + <shapes>
151.17851 + <path>
151.17852 + <gradient cycleMethod="NO_CYCLE">
151.17853 + <stop position="0.0" midpoint="0.5">
151.17854 + <matte red="160" green="163" blue="167" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.06861015" brightnessOffset="-0.09019607" alphaOffset="0"/>
151.17855 + </stop>
151.17856 + <stop position="1.0" midpoint="0.5">
151.17857 + <matte red="201" green="204" blue="210" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06766917" brightnessOffset="0.07843137" alphaOffset="0"/>
151.17858 + </stop>
151.17859 + </gradient>
151.17860 + <paintPoints x1="0.8645834554400952" y1="0.20952380952380953" x2="0.020833188460903894" y2="0.9523809523809526"/>
151.17861 + <points>
151.17862 + <point x="25.99999999999998" y="13.499999999999998" cp1x="25.571428571428548" cp1y="12.85714285714286" cp2x="26.42857142857141" cp2y="14.142857142857137"/>
151.17863 + <point x="30.642857142857142" y="10.999999999999996" cp1x="29.07142857142857" cp1y="12.642857142857135" cp2x="32.214285714285715" cp2y="9.357142857142858"/>
151.17864 + <point x="32.57142857142857" y="6.928571428571431" cp1x="33.28571428571429" cp1y="7.5714285714285765" cp2x="31.857142857142847" cp2y="6.285714285714285"/>
151.17865 + <point x="29.71428571428571" y="10.285714285714285" cp1x="30.428571428571423" cp1y="9.42857142857143" cp2x="29.0" cp2y="11.142857142857139"/>
151.17866 + </points>
151.17867 + </path>
151.17868 + <path>
151.17869 + <gradient cycleMethod="NO_CYCLE">
151.17870 + <stop position="0.0" midpoint="0.5">
151.17871 + <matte red="155" green="158" blue="162" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.06731644" brightnessOffset="-0.109803915" alphaOffset="0"/>
151.17872 + </stop>
151.17873 + <stop position="1.0" midpoint="0.5">
151.17874 + <matte red="209" green="212" blue="218" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06924191" brightnessOffset="0.109803915" alphaOffset="0"/>
151.17875 + </stop>
151.17876 + </gradient>
151.17877 + <paintPoints x1="0.12719298862023998" y1="0.1315789407640286" x2="0.907894728916834" y2="0.8771929886202403"/>
151.17878 + <points>
151.17879 + <point x="1.1428571428571428" y="6.857142857142858" cp1x="0.3571428571428572" cp1y="7.428571428571431" cp2x="1.9285714285714284" cp2y="6.285714285714285"/>
151.17880 + <point x="4.642857142857142" y="10.35714285714286" cp1x="3.285714285714285" cp1y="8.78571428571429" cp2x="6.0" cp2y="11.928571428571429"/>
151.17881 + <point x="8.714285714285712" y="13.64285714285714" cp1x="8.928571428571425" cp1y="12.64285714285714" cp2x="8.499999999999998" cp2y="14.64285714285714"/>
151.17882 + <point x="3.5714285714285707" y="11.571428571428573" cp1x="5.071428571428571" cp1y="13.214285714285719" cp2x="2.0714285714285703" cp2y="9.928571428571427"/>
151.17883 + </points>
151.17884 + </path>
151.17885 + <path>
151.17886 + <gradient cycleMethod="NO_CYCLE">
151.17887 + <stop position="0.0" midpoint="0.87096775">
151.17888 + <matte red="60" green="61" blue="62" alpha="0" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.07826825" brightnessOffset="-0.5019608" alphaOffset="-255"/>
151.17889 + </stop>
151.17890 + <stop position="1.0" midpoint="0.5">
151.17891 + <matte red="56" green="57" blue="59" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.05967886" brightnessOffset="-0.5137255" alphaOffset="0"/>
151.17892 + </stop>
151.17893 + </gradient>
151.17894 + <paintPoints x1="-0.045918367346938736" y1="0.1833642539170922" x2="0.8724489795918368" y2="0.040507111059949225"/>
151.17895 + <points>
151.17896 + <point x="34.0" y="0.0" cp1x="34.0" cp1y="0.0" cp2x="34.0" cp2y="0.0"/>
151.17897 + <point x="27.0" y="0.0" cp1x="27.0" cp1y="0.0" cp2x="27.0" cp2y="0.0"/>
151.17898 + <point x="27.0" y="14.0" cp1x="27.0" cp1y="14.0" cp2x="27.0" cp2y="14.0"/>
151.17899 + <point x="31.07142857142855" y="10.928571428571425" cp1x="30.07142857142855" cp1y="11.928571428571425" cp2x="32.071428571428555" cp2y="9.928571428571425"/>
151.17900 + <point x="34.0" y="6.0" cp1x="34.0" cp1y="6.0" cp2x="34.0" cp2y="6.0"/>
151.17901 + </points>
151.17902 + </path>
151.17903 + <path>
151.17904 + <gradient cycleMethod="NO_CYCLE">
151.17905 + <stop position="0.0" midpoint="0.1">
151.17906 + <matte red="56" green="57" blue="59" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.05967886" brightnessOffset="-0.5137255" alphaOffset="0"/>
151.17907 + </stop>
151.17908 + <stop position="1.0" midpoint="0.5">
151.17909 + <matte red="56" green="57" blue="59" alpha="0" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.05967886" brightnessOffset="-0.5137255" alphaOffset="-255"/>
151.17910 + </stop>
151.17911 + </gradient>
151.17912 + <paintPoints x1="0.0" y1="0.0" x2="0.9285714285714282" y2="0.12244897959183673"/>
151.17913 + <points>
151.17914 + <point x="7.0" y="0.0" cp1x="7.0" cp1y="0.0" cp2x="7.0" cp2y="0.0"/>
151.17915 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.17916 + <point x="0.0" y="6.0" cp1x="0.0" cp1y="6.0" cp2x="0.0" cp2y="6.0"/>
151.17917 + <point x="3.0" y="11.0" cp1x="2.0" cp1y="10.0" cp2x="4.0" cp2y="12.0"/>
151.17918 + <point x="6.785714285714284" y="13.999999999999995" cp1x="6.785714285714284" cp1y="13.999999999999995" cp2x="6.785714285714284" cp2y="13.999999999999995"/>
151.17919 + </points>
151.17920 + </path>
151.17921 + </shapes>
151.17922 + <effects/>
151.17923 + </layer>
151.17924 + <layer name="Layer 1">
151.17925 + <opacity>1.0</opacity>
151.17926 + <fillOpacity>1.0</fillOpacity>
151.17927 + <blendingMode>NORMAL</blendingMode>
151.17928 + <locked>false</locked>
151.17929 + <visible>true</visible>
151.17930 + <shapes>
151.17931 + <rectangle x1="0.0" x2="34.0" y1="0.0" y2="15.0" rounding="0.0">
151.17932 + <gradient cycleMethod="NO_CYCLE">
151.17933 + <stop position="0.0" midpoint="0.5">
151.17934 + <matte red="104" green="105" blue="109" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.02222228" saturationOffset="-0.06465475" brightnessOffset="-0.31764707" alphaOffset="0"/>
151.17935 + </stop>
151.17936 + <stop position="0.061290324" midpoint="0.5">
151.17937 + <matte red="134" green="136" blue="140" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06766917" brightnessOffset="-0.19607842" alphaOffset="0"/>
151.17938 + </stop>
151.17939 + <stop position="0.13225806" midpoint="0.5">
151.17940 + <matte red="170" green="173" blue="178" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.0655825" brightnessOffset="-0.04705882" alphaOffset="0"/>
151.17941 + </stop>
151.17942 + <stop position="0.30967742" midpoint="0.32105264">
151.17943 + <matte red="195" green="197" blue="203" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0138888955" saturationOffset="-0.071117446" brightnessOffset="0.05098039" alphaOffset="0"/>
151.17944 + </stop>
151.17945 + <stop position="0.82258064" midpoint="0.5">
151.17946 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.17947 + </stop>
151.17948 + </gradient>
151.17949 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.17950 + </rectangle>
151.17951 + </shapes>
151.17952 + <effects/>
151.17953 + </layer>
151.17954 + <templateLayer fileName="1140122fb90.png">
151.17955 + <layer name="Template" type="template">
151.17956 + <opacity>1.0</opacity>
151.17957 + <fillOpacity>1.0</fillOpacity>
151.17958 + <blendingMode>NORMAL</blendingMode>
151.17959 + <locked>false</locked>
151.17960 + <visible>true</visible>
151.17961 + <shapes/>
151.17962 + <effects/>
151.17963 + </layer>
151.17964 + </templateLayer>
151.17965 + </canvas>
151.17966 + </state>
151.17967 + </backgroundStates>
151.17968 + <foregroundStates/>
151.17969 + <borderStates/>
151.17970 + <regions/>
151.17971 + </region>
151.17972 + </regions>
151.17973 + </uiComponent>
151.17974 + <uiComponent opaque="false" type="javax.swing.JScrollPane" name="ScrollPane" ui="ScrollPaneUI" subregion="false">
151.17975 + <stateTypes/>
151.17976 + <contentMargins top="3" bottom="3" left="3" right="3"/>
151.17977 + <style>
151.17978 + <textForeground/>
151.17979 + <textBackground/>
151.17980 + <background/>
151.17981 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.17982 + <cacheMode>NO_CACHING</cacheMode>
151.17983 + <uiproperties>
151.17984 + <uiProperty name="useChildTextComponentFocus" type="BOOLEAN" value="true"/>
151.17985 + </uiproperties>
151.17986 + </style>
151.17987 + <backgroundStates>
151.17988 + <state stateKeys="Enabled">
151.17989 + <style>
151.17990 + <textForeground/>
151.17991 + <textBackground/>
151.17992 + <background/>
151.17993 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.17994 + <uiproperties/>
151.17995 + </style>
151.17996 + <canvas>
151.17997 + <size width="100" height="30"/>
151.17998 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.17999 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.18000 + <layer name="Layer 1">
151.18001 + <opacity>1.0</opacity>
151.18002 + <fillOpacity>1.0</fillOpacity>
151.18003 + <blendingMode>NORMAL</blendingMode>
151.18004 + <locked>false</locked>
151.18005 + <visible>true</visible>
151.18006 + <shapes/>
151.18007 + <effects/>
151.18008 + </layer>
151.18009 + </canvas>
151.18010 + </state>
151.18011 + </backgroundStates>
151.18012 + <foregroundStates/>
151.18013 + <borderStates>
151.18014 + <state stateKeys="Enabled+Focused">
151.18015 + <style>
151.18016 + <textForeground/>
151.18017 + <textBackground/>
151.18018 + <background/>
151.18019 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.18020 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.18021 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.18022 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.18023 + <uiproperties/>
151.18024 + </style>
151.18025 + <canvas>
151.18026 + <size width="122" height="24"/>
151.18027 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.18028 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.18029 + <layer name="Layer 2">
151.18030 + <opacity>1.0</opacity>
151.18031 + <fillOpacity>1.0</fillOpacity>
151.18032 + <blendingMode>NORMAL</blendingMode>
151.18033 + <locked>false</locked>
151.18034 + <visible>true</visible>
151.18035 + <shapes>
151.18036 + <path>
151.18037 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18038 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.18039 + <points>
151.18040 + <point x="2.0" y="2.0" cp1x="2.0" cp1y="2.0" cp2x="2.0" cp2y="2.0"/>
151.18041 + <point x="2.0" y="22.0" cp1x="2.0" cp1y="22.0" cp2x="2.0" cp2y="22.0"/>
151.18042 + <point x="120.0" y="22.0" cp1x="120.0" cp1y="22.0" cp2x="120.0" cp2y="22.0"/>
151.18043 + <point x="120.0" y="2.0" cp1x="120.0" cp1y="2.0" cp2x="120.0" cp2y="2.0"/>
151.18044 + <point x="121.4" y="2.0" cp1x="121.5" cp1y="2.0" cp2x="121.5" cp2y="2.0"/>
151.18045 + <point x="121.4" y="23.4" cp1x="121.4" cp1y="23.4" cp2x="121.4" cp2y="23.4"/>
151.18046 + <point x="0.6" y="23.4" cp1x="0.6" cp1y="23.4" cp2x="0.6" cp2y="23.4"/>
151.18047 + <point x="0.6" y="0.6" cp1x="0.6" cp1y="0.6" cp2x="0.6" cp2y="0.6"/>
151.18048 + <point x="121.4" y="0.6" cp1x="121.4" cp1y="0.6" cp2x="121.4" cp2y="0.6"/>
151.18049 + <point x="121.4" y="2.0" cp1x="121.4" cp1y="2.0" cp2x="121.4" cp2y="2.0"/>
151.18050 + </points>
151.18051 + </path>
151.18052 + <rectangle x1="3.0" x2="119.0" y1="21.0" y2="22.0" rounding="0.0">
151.18053 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18054 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.18055 + </rectangle>
151.18056 + <rectangle x1="119.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
151.18057 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18058 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.18059 + </rectangle>
151.18060 + <rectangle x1="2.0" x2="3.0" y1="2.0" y2="22.0" rounding="0.0">
151.18061 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18062 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.18063 + </rectangle>
151.18064 + <rectangle x1="3.0" x2="119.0" y1="2.0" y2="3.0" rounding="0.0">
151.18065 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18066 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.18067 + </rectangle>
151.18068 + </shapes>
151.18069 + <effects/>
151.18070 + </layer>
151.18071 + </canvas>
151.18072 + </state>
151.18073 + <state stateKeys="Enabled">
151.18074 + <style>
151.18075 + <textForeground/>
151.18076 + <textBackground/>
151.18077 + <background/>
151.18078 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.18079 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.18080 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.18081 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.18082 + <uiproperties/>
151.18083 + </style>
151.18084 + <canvas>
151.18085 + <size width="122" height="24"/>
151.18086 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.18087 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.18088 + <layer name="Layer 2">
151.18089 + <opacity>1.0</opacity>
151.18090 + <fillOpacity>1.0</fillOpacity>
151.18091 + <blendingMode>NORMAL</blendingMode>
151.18092 + <locked>false</locked>
151.18093 + <visible>true</visible>
151.18094 + <shapes>
151.18095 + <rectangle x1="3.0" x2="119.0" y1="21.0" y2="22.0" rounding="0.0">
151.18096 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18097 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.18098 + </rectangle>
151.18099 + <rectangle x1="119.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
151.18100 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18101 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.18102 + </rectangle>
151.18103 + <rectangle x1="2.0" x2="3.0" y1="2.0" y2="22.0" rounding="0.0">
151.18104 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18105 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.18106 + </rectangle>
151.18107 + <rectangle x1="3.0" x2="119.0" y1="2.0" y2="3.0" rounding="0.0">
151.18108 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18109 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.18110 + </rectangle>
151.18111 + </shapes>
151.18112 + <effects/>
151.18113 + </layer>
151.18114 + </canvas>
151.18115 + </state>
151.18116 + </borderStates>
151.18117 + <regions/>
151.18118 + </uiComponent>
151.18119 + <uiComponent opaque="true" type="javax.swing.JViewport" name="Viewport" ui="ViewportUI" subregion="false">
151.18120 + <stateTypes/>
151.18121 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.18122 + <style>
151.18123 + <textForeground/>
151.18124 + <textBackground/>
151.18125 + <background/>
151.18126 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.18127 + <cacheMode>NO_CACHING</cacheMode>
151.18128 + <uiproperties/>
151.18129 + </style>
151.18130 + <backgroundStates/>
151.18131 + <foregroundStates/>
151.18132 + <borderStates/>
151.18133 + <regions/>
151.18134 + </uiComponent>
151.18135 + <uiComponent opaque="false" type="javax.swing.JSlider" name="Slider" ui="SliderUI" subregion="false">
151.18136 + <stateTypes>
151.18137 + <stateType key="Enabled"/>
151.18138 + <stateType key="MouseOver"/>
151.18139 + <stateType key="Pressed"/>
151.18140 + <stateType key="Disabled"/>
151.18141 + <stateType key="Focused"/>
151.18142 + <stateType key="Selected"/>
151.18143 + <stateType key="ArrowShape">
151.18144 + <codeSnippet><![CDATA[ return c.getClientProperty("Slider.paintThumbArrowShape") == Boolean.TRUE; ]]></codeSnippet>
151.18145 + </stateType>
151.18146 + </stateTypes>
151.18147 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.18148 + <style>
151.18149 + <textForeground/>
151.18150 + <textBackground/>
151.18151 + <background/>
151.18152 + <uiproperties>
151.18153 + <uiProperty name="thumbWidth" type="INT" value="17"/>
151.18154 + <uiProperty name="thumbHeight" type="INT" value="17"/>
151.18155 + <uiProperty name="trackBorder" type="INT" value="0"/>
151.18156 + <uiProperty name="paintValue" type="BOOLEAN" value="false"/>
151.18157 + <uiProperty name="tickColor" type="COLOR">
151.18158 + <matte red="35" green="40" blue="48" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18159 + </uiProperty>
151.18160 + </uiproperties>
151.18161 + </style>
151.18162 + <backgroundStates/>
151.18163 + <foregroundStates/>
151.18164 + <borderStates/>
151.18165 + <regions>
151.18166 + <region name="SliderThumb" subregion="true">
151.18167 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.18168 + <style>
151.18169 + <textForeground/>
151.18170 + <textBackground/>
151.18171 + <background/>
151.18172 + <uiproperties/>
151.18173 + </style>
151.18174 + <backgroundStates>
151.18175 + <state stateKeys="Disabled">
151.18176 + <style>
151.18177 + <textForeground/>
151.18178 + <textBackground/>
151.18179 + <background/>
151.18180 + <uiproperties/>
151.18181 + </style>
151.18182 + <canvas>
151.18183 + <size width="17" height="17"/>
151.18184 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.18185 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.18186 + <layer name="Layer 1">
151.18187 + <opacity>1.0</opacity>
151.18188 + <fillOpacity>1.0</fillOpacity>
151.18189 + <blendingMode>NORMAL</blendingMode>
151.18190 + <locked>false</locked>
151.18191 + <visible>true</visible>
151.18192 + <shapes>
151.18193 + <ellipse x1="3.0" x2="14.0" y1="3.0" y2="14.0">
151.18194 + <gradient cycleMethod="NO_CYCLE">
151.18195 + <stop position="0.0" midpoint="0.5">
151.18196 + <matte red="221" green="225" blue="231" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.5924243" brightnessOffset="0.35686272" alphaOffset="0"/>
151.18197 + </stop>
151.18198 + <stop position="0.42513368" midpoint="0.5">
151.18199 + <matte red="204" green="210" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56722116" brightnessOffset="0.3098039" alphaOffset="0"/>
151.18200 + </stop>
151.18201 + <stop position="1.0" midpoint="0.5">
151.18202 + <matte red="208" green="214" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56844974" brightnessOffset="0.32549018" alphaOffset="0"/>
151.18203 + </stop>
151.18204 + </gradient>
151.18205 + <paintPoints x1="0.5023510971786834" y1="0.0015673981191222587" x2="0.5023510971786838" y2="1.0"/>
151.18206 + </ellipse>
151.18207 + <ellipse x1="2.0" x2="15.0" y1="2.0" y2="15.0">
151.18208 + <gradient cycleMethod="NO_CYCLE">
151.18209 + <stop position="0.0" midpoint="0.5">
151.18210 + <matte red="190" green="196" blue="205" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.5625436" brightnessOffset="0.25490195" alphaOffset="0"/>
151.18211 + </stop>
151.18212 + <stop position="1.0" midpoint="0.5">
151.18213 + <matte red="173" green="180" blue="189" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.015098333" saturationOffset="-0.55105823" brightnessOffset="0.19215685" alphaOffset="0"/>
151.18214 + </stop>
151.18215 + </gradient>
151.18216 + <paintPoints x1="0.510610079575597" y1="-4.553649124439119E-18" x2="0.4993368700265251" y2="1.0039787798408488"/>
151.18217 + </ellipse>
151.18218 + </shapes>
151.18219 + <effects/>
151.18220 + </layer>
151.18221 + <templateLayer fileName="1139ea2c125.png">
151.18222 + <layer name="Template" type="template">
151.18223 + <opacity>1.0</opacity>
151.18224 + <fillOpacity>1.0</fillOpacity>
151.18225 + <blendingMode>NORMAL</blendingMode>
151.18226 + <locked>false</locked>
151.18227 + <visible>false</visible>
151.18228 + <shapes/>
151.18229 + <effects/>
151.18230 + </layer>
151.18231 + </templateLayer>
151.18232 + </canvas>
151.18233 + </state>
151.18234 + <state stateKeys="Enabled">
151.18235 + <style>
151.18236 + <textForeground/>
151.18237 + <textBackground/>
151.18238 + <background/>
151.18239 + <uiproperties/>
151.18240 + </style>
151.18241 + <canvas>
151.18242 + <size width="17" height="17"/>
151.18243 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.18244 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.18245 + <layer name="Layer 1">
151.18246 + <opacity>1.0</opacity>
151.18247 + <fillOpacity>1.0</fillOpacity>
151.18248 + <blendingMode>NORMAL</blendingMode>
151.18249 + <locked>false</locked>
151.18250 + <visible>true</visible>
151.18251 + <shapes>
151.18252 + <ellipse x1="3.0" x2="14.0" y1="3.0" y2="14.0">
151.18253 + <gradient cycleMethod="NO_CYCLE">
151.18254 + <stop position="0.0" midpoint="0.5">
151.18255 + <matte red="249" green="251" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.023096085" saturationOffset="-0.6238095" brightnessOffset="0.43921566" alphaOffset="0"/>
151.18256 + </stop>
151.18257 + <stop position="0.42513368" midpoint="0.5">
151.18258 + <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
151.18259 + </stop>
151.18260 + <stop position="0.69786096" midpoint="0.5">
151.18261 + <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
151.18262 + </stop>
151.18263 + <stop position="1.0" midpoint="0.5">
151.18264 + <matte red="184" green="205" blue="224" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.45714286" brightnessOffset="0.32941175" alphaOffset="0"/>
151.18265 + </stop>
151.18266 + </gradient>
151.18267 + <paintPoints x1="0.5" y1="0.0015673981191222587" x2="0.5" y2="1.0"/>
151.18268 + </ellipse>
151.18269 + <ellipse x1="2.0" x2="15.0" y1="2.0" y2="15.0">
151.18270 + <gradient cycleMethod="NO_CYCLE">
151.18271 + <stop position="0.0" midpoint="0.5">
151.18272 + <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
151.18273 + </stop>
151.18274 + <stop position="1.0" midpoint="0.5">
151.18275 + <matte red="36" green="57" blue="75" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.11571431" brightnessOffset="-0.25490198" alphaOffset="0"/>
151.18276 + </stop>
151.18277 + </gradient>
151.18278 + <paintPoints x1="0.51" y1="-4.553649124439119E-18" x2="0.51" y2="1.0039787798408488"/>
151.18279 + </ellipse>
151.18280 + <ellipse x1="2.0" x2="15.0" y1="3.0" y2="16.0">
151.18281 + <matte red="111" green="116" blue="125" alpha="99" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.003968239" saturationOffset="0.0014736876" brightnessOffset="-0.25490198" alphaOffset="-156"/>
151.18282 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.18283 + </ellipse>
151.18284 + </shapes>
151.18285 + <effects/>
151.18286 + </layer>
151.18287 + <templateLayer fileName="1139e25a3ea.png">
151.18288 + <layer name="Template" type="template">
151.18289 + <opacity>1.0</opacity>
151.18290 + <fillOpacity>1.0</fillOpacity>
151.18291 + <blendingMode>NORMAL</blendingMode>
151.18292 + <locked>false</locked>
151.18293 + <visible>false</visible>
151.18294 + <shapes/>
151.18295 + <effects/>
151.18296 + </layer>
151.18297 + </templateLayer>
151.18298 + </canvas>
151.18299 + </state>
151.18300 + <state stateKeys="Focused">
151.18301 + <style>
151.18302 + <textForeground/>
151.18303 + <textBackground/>
151.18304 + <background/>
151.18305 + <uiproperties/>
151.18306 + </style>
151.18307 + <canvas>
151.18308 + <size width="17" height="17"/>
151.18309 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.18310 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.18311 + <layer name="Layer 1">
151.18312 + <opacity>1.0</opacity>
151.18313 + <fillOpacity>1.0</fillOpacity>
151.18314 + <blendingMode>NORMAL</blendingMode>
151.18315 + <locked>false</locked>
151.18316 + <visible>true</visible>
151.18317 + <shapes>
151.18318 + <ellipse x1="3.0" x2="14.0" y1="3.0" y2="14.0">
151.18319 + <gradient cycleMethod="NO_CYCLE">
151.18320 + <stop position="0.0" midpoint="0.5">
151.18321 + <matte red="249" green="251" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.023096085" saturationOffset="-0.6238095" brightnessOffset="0.43921566" alphaOffset="0"/>
151.18322 + </stop>
151.18323 + <stop position="0.42513368" midpoint="0.5">
151.18324 + <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
151.18325 + </stop>
151.18326 + <stop position="0.69786096" midpoint="0.5">
151.18327 + <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
151.18328 + </stop>
151.18329 + <stop position="1.0" midpoint="0.5">
151.18330 + <matte red="184" green="205" blue="224" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.45714286" brightnessOffset="0.32941175" alphaOffset="0"/>
151.18331 + </stop>
151.18332 + </gradient>
151.18333 + <paintPoints x1="0.5" y1="0.0015673981191222587" x2="0.5" y2="1.0"/>
151.18334 + </ellipse>
151.18335 + <ellipse x1="2.0" x2="15.0" y1="2.0" y2="15.0">
151.18336 + <gradient cycleMethod="NO_CYCLE">
151.18337 + <stop position="0.0" midpoint="0.5">
151.18338 + <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
151.18339 + </stop>
151.18340 + <stop position="1.0" midpoint="0.5">
151.18341 + <matte red="36" green="57" blue="75" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.11571431" brightnessOffset="-0.25490198" alphaOffset="0"/>
151.18342 + </stop>
151.18343 + </gradient>
151.18344 + <paintPoints x1="0.51" y1="-4.553649124439119E-18" x2="0.51" y2="1.0039787798408488"/>
151.18345 + </ellipse>
151.18346 + <ellipse x1="0.6" x2="16.4" y1="0.6" y2="16.4">
151.18347 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18348 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.18349 + </ellipse>
151.18350 + </shapes>
151.18351 + <effects/>
151.18352 + </layer>
151.18353 + </canvas>
151.18354 + </state>
151.18355 + <state stateKeys="Focused+MouseOver">
151.18356 + <style>
151.18357 + <textForeground/>
151.18358 + <textBackground/>
151.18359 + <background/>
151.18360 + <uiproperties/>
151.18361 + </style>
151.18362 + <canvas>
151.18363 + <size width="17" height="17"/>
151.18364 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.18365 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.18366 + <layer name="Layer 1">
151.18367 + <opacity>1.0</opacity>
151.18368 + <fillOpacity>1.0</fillOpacity>
151.18369 + <blendingMode>NORMAL</blendingMode>
151.18370 + <locked>false</locked>
151.18371 + <visible>true</visible>
151.18372 + <shapes>
151.18373 + <ellipse x1="3.0" x2="14.0" y1="3.0" y2="14.0">
151.18374 + <gradient cycleMethod="NO_CYCLE">
151.18375 + <stop position="0.0" midpoint="0.5">
151.18376 + <matte red="251" green="252" blue="253" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.62780917" brightnessOffset="0.44313723" alphaOffset="0"/>
151.18377 + </stop>
151.18378 + <stop position="0.42513368" midpoint="0.5">
151.18379 + <matte red="185" green="205" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.4653107" brightnessOffset="0.32549018" alphaOffset="0"/>
151.18380 + </stop>
151.18381 + <stop position="0.69786096" midpoint="0.5">
151.18382 + <matte red="183" green="204" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4563421" brightnessOffset="0.32549018" alphaOffset="0"/>
151.18383 + </stop>
151.18384 + <stop position="1.0" midpoint="0.5">
151.18385 + <matte red="201" green="222" blue="240" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.4732143" brightnessOffset="0.39215684" alphaOffset="0"/>
151.18386 + </stop>
151.18387 + </gradient>
151.18388 + <paintPoints x1="0.5023510971786834" y1="0.0015673981191222587" x2="0.5023510971786838" y2="1.0"/>
151.18389 + </ellipse>
151.18390 + <ellipse x1="2.0" x2="15.0" y1="2.0" y2="15.0">
151.18391 + <gradient cycleMethod="NO_CYCLE">
151.18392 + <stop position="0.0" midpoint="0.5">
151.18393 + <matte red="53" green="80" blue="102" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0038217902" saturationOffset="-0.15532213" brightnessOffset="-0.14901963" alphaOffset="0"/>
151.18394 + </stop>
151.18395 + <stop position="1.0" midpoint="0.5">
151.18396 + <matte red="1" green="1" blue="1" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54509807" alphaOffset="0"/>
151.18397 + </stop>
151.18398 + </gradient>
151.18399 + <paintPoints x1="0.510610079575597" y1="-4.553649124439119E-18" x2="0.4993368700265251" y2="1.0039787798408488"/>
151.18400 + </ellipse>
151.18401 + <ellipse x1="0.6" x2="16.4" y1="0.6" y2="16.4">
151.18402 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18403 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.18404 + </ellipse>
151.18405 + </shapes>
151.18406 + <effects/>
151.18407 + </layer>
151.18408 + <templateLayer fileName="1139ea4a6e6.png">
151.18409 + <layer name="Template" type="template">
151.18410 + <opacity>1.0</opacity>
151.18411 + <fillOpacity>1.0</fillOpacity>
151.18412 + <blendingMode>NORMAL</blendingMode>
151.18413 + <locked>false</locked>
151.18414 + <visible>false</visible>
151.18415 + <shapes/>
151.18416 + <effects/>
151.18417 + </layer>
151.18418 + </templateLayer>
151.18419 + </canvas>
151.18420 + </state>
151.18421 + <state stateKeys="Focused+Pressed">
151.18422 + <style>
151.18423 + <textForeground/>
151.18424 + <textBackground/>
151.18425 + <background/>
151.18426 + <uiproperties/>
151.18427 + </style>
151.18428 + <canvas>
151.18429 + <size width="17" height="17"/>
151.18430 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.18431 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.18432 + <layer name="Layer 1">
151.18433 + <opacity>1.0</opacity>
151.18434 + <fillOpacity>1.0</fillOpacity>
151.18435 + <blendingMode>NORMAL</blendingMode>
151.18436 + <locked>false</locked>
151.18437 + <visible>true</visible>
151.18438 + <shapes>
151.18439 + <ellipse x1="3.0" x2="14.0" y1="3.0" y2="14.0">
151.18440 + <gradient cycleMethod="NO_CYCLE">
151.18441 + <stop position="0.0" midpoint="0.5">
151.18442 + <matte red="166" green="186" blue="204" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.44943976" brightnessOffset="0.25098038" alphaOffset="0"/>
151.18443 + </stop>
151.18444 + <stop position="0.47593582" midpoint="0.5">
151.18445 + <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18446 + </stop>
151.18447 + <stop position="0.5962567" midpoint="0.5">
151.18448 + <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18449 + </stop>
151.18450 + <stop position="1.0" midpoint="0.5">
151.18451 + <matte red="83" green="129" blue="171" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.121094406" brightnessOffset="0.12156862" alphaOffset="0"/>
151.18452 + </stop>
151.18453 + </gradient>
151.18454 + <paintPoints x1="0.5023510971786834" y1="0.0015673981191222587" x2="0.5023510971786838" y2="1.0"/>
151.18455 + </ellipse>
151.18456 + <ellipse x1="2.0" x2="15.0" y1="2.0" y2="15.0">
151.18457 + <gradient cycleMethod="NO_CYCLE">
151.18458 + <stop position="0.0" midpoint="0.5">
151.18459 + <matte red="1" green="1" blue="1" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54509807" alphaOffset="0"/>
151.18460 + </stop>
151.18461 + <stop position="1.0" midpoint="0.5">
151.18462 + <matte red="38" green="66" blue="92" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.04875779" brightnessOffset="-0.18823531" alphaOffset="0"/>
151.18463 + </stop>
151.18464 + </gradient>
151.18465 + <paintPoints x1="0.510610079575597" y1="-4.553649124439119E-18" x2="0.4993368700265251" y2="1.0039787798408488"/>
151.18466 + </ellipse>
151.18467 + <ellipse x1="0.6" x2="16.4" y1="0.6" y2="16.4">
151.18468 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18469 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.18470 + </ellipse>
151.18471 + </shapes>
151.18472 + <effects/>
151.18473 + </layer>
151.18474 + <templateLayer fileName="1139ea77546.png">
151.18475 + <layer name="Template" type="template">
151.18476 + <opacity>1.0</opacity>
151.18477 + <fillOpacity>1.0</fillOpacity>
151.18478 + <blendingMode>NORMAL</blendingMode>
151.18479 + <locked>false</locked>
151.18480 + <visible>false</visible>
151.18481 + <shapes/>
151.18482 + <effects/>
151.18483 + </layer>
151.18484 + </templateLayer>
151.18485 + </canvas>
151.18486 + </state>
151.18487 + <state stateKeys="MouseOver">
151.18488 + <style>
151.18489 + <textForeground/>
151.18490 + <textBackground/>
151.18491 + <background/>
151.18492 + <uiproperties/>
151.18493 + </style>
151.18494 + <canvas>
151.18495 + <size width="17" height="17"/>
151.18496 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.18497 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.18498 + <layer name="Layer 1">
151.18499 + <opacity>1.0</opacity>
151.18500 + <fillOpacity>1.0</fillOpacity>
151.18501 + <blendingMode>NORMAL</blendingMode>
151.18502 + <locked>false</locked>
151.18503 + <visible>true</visible>
151.18504 + <shapes>
151.18505 + <ellipse x1="3.0" x2="14.0" y1="3.0" y2="14.0">
151.18506 + <gradient cycleMethod="NO_CYCLE">
151.18507 + <stop position="0.0" midpoint="0.5">
151.18508 + <matte red="251" green="252" blue="253" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.62780917" brightnessOffset="0.44313723" alphaOffset="0"/>
151.18509 + </stop>
151.18510 + <stop position="0.42513368" midpoint="0.5">
151.18511 + <matte red="185" green="205" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.4653107" brightnessOffset="0.32549018" alphaOffset="0"/>
151.18512 + </stop>
151.18513 + <stop position="0.69786096" midpoint="0.5">
151.18514 + <matte red="183" green="204" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4563421" brightnessOffset="0.32549018" alphaOffset="0"/>
151.18515 + </stop>
151.18516 + <stop position="1.0" midpoint="0.5">
151.18517 + <matte red="201" green="222" blue="240" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.4732143" brightnessOffset="0.39215684" alphaOffset="0"/>
151.18518 + </stop>
151.18519 + </gradient>
151.18520 + <paintPoints x1="0.5023510971786834" y1="0.0015673981191222587" x2="0.5023510971786838" y2="1.0"/>
151.18521 + </ellipse>
151.18522 + <ellipse x1="2.0" x2="15.0" y1="2.0" y2="15.0">
151.18523 + <gradient cycleMethod="NO_CYCLE">
151.18524 + <stop position="0.0" midpoint="0.5">
151.18525 + <matte red="53" green="80" blue="102" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0038217902" saturationOffset="-0.15532213" brightnessOffset="-0.14901963" alphaOffset="0"/>
151.18526 + </stop>
151.18527 + <stop position="1.0" midpoint="0.5">
151.18528 + <matte red="1" green="1" blue="1" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54509807" alphaOffset="0"/>
151.18529 + </stop>
151.18530 + </gradient>
151.18531 + <paintPoints x1="0.510610079575597" y1="-4.553649124439119E-18" x2="0.4993368700265251" y2="1.0039787798408488"/>
151.18532 + </ellipse>
151.18533 + <ellipse x1="2.0" x2="15.0" y1="3.0" y2="16.0">
151.18534 + <matte red="111" green="116" blue="125" alpha="99" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.003968239" saturationOffset="0.0014736876" brightnessOffset="-0.25490198" alphaOffset="-156"/>
151.18535 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.18536 + </ellipse>
151.18537 + </shapes>
151.18538 + <effects/>
151.18539 + </layer>
151.18540 + <templateLayer fileName="1139ea4a6e6.png">
151.18541 + <layer name="Template" type="template">
151.18542 + <opacity>1.0</opacity>
151.18543 + <fillOpacity>1.0</fillOpacity>
151.18544 + <blendingMode>NORMAL</blendingMode>
151.18545 + <locked>false</locked>
151.18546 + <visible>false</visible>
151.18547 + <shapes/>
151.18548 + <effects/>
151.18549 + </layer>
151.18550 + </templateLayer>
151.18551 + </canvas>
151.18552 + </state>
151.18553 + <state stateKeys="Pressed">
151.18554 + <style>
151.18555 + <textForeground/>
151.18556 + <textBackground/>
151.18557 + <background/>
151.18558 + <uiproperties/>
151.18559 + </style>
151.18560 + <canvas>
151.18561 + <size width="17" height="17"/>
151.18562 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.18563 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.18564 + <layer name="Layer 1">
151.18565 + <opacity>1.0</opacity>
151.18566 + <fillOpacity>1.0</fillOpacity>
151.18567 + <blendingMode>NORMAL</blendingMode>
151.18568 + <locked>false</locked>
151.18569 + <visible>true</visible>
151.18570 + <shapes>
151.18571 + <ellipse x1="3.0" x2="14.0" y1="3.0" y2="14.0">
151.18572 + <gradient cycleMethod="NO_CYCLE">
151.18573 + <stop position="0.0" midpoint="0.5">
151.18574 + <matte red="166" green="186" blue="204" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.44943976" brightnessOffset="0.25098038" alphaOffset="0"/>
151.18575 + </stop>
151.18576 + <stop position="0.47593582" midpoint="0.5">
151.18577 + <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18578 + </stop>
151.18579 + <stop position="0.5962567" midpoint="0.5">
151.18580 + <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18581 + </stop>
151.18582 + <stop position="1.0" midpoint="0.5">
151.18583 + <matte red="83" green="129" blue="171" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.121094406" brightnessOffset="0.12156862" alphaOffset="0"/>
151.18584 + </stop>
151.18585 + </gradient>
151.18586 + <paintPoints x1="0.5023510971786834" y1="0.0015673981191222587" x2="0.5023510971786838" y2="1.0"/>
151.18587 + </ellipse>
151.18588 + <ellipse x1="2.0" x2="15.0" y1="2.0" y2="15.0">
151.18589 + <gradient cycleMethod="NO_CYCLE">
151.18590 + <stop position="0.0" midpoint="0.5">
151.18591 + <matte red="1" green="1" blue="1" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54509807" alphaOffset="0"/>
151.18592 + </stop>
151.18593 + <stop position="1.0" midpoint="0.5">
151.18594 + <matte red="38" green="66" blue="92" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.04875779" brightnessOffset="-0.18823531" alphaOffset="0"/>
151.18595 + </stop>
151.18596 + </gradient>
151.18597 + <paintPoints x1="0.510610079575597" y1="-4.553649124439119E-18" x2="0.4993368700265251" y2="1.0039787798408488"/>
151.18598 + </ellipse>
151.18599 + <ellipse x1="2.0" x2="15.0" y1="3.0" y2="16.0">
151.18600 + <matte red="255" green="255" blue="255" alpha="134" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-121"/>
151.18601 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.18602 + </ellipse>
151.18603 + </shapes>
151.18604 + <effects/>
151.18605 + </layer>
151.18606 + <templateLayer fileName="1139ea77546.png">
151.18607 + <layer name="Template" type="template">
151.18608 + <opacity>1.0</opacity>
151.18609 + <fillOpacity>1.0</fillOpacity>
151.18610 + <blendingMode>NORMAL</blendingMode>
151.18611 + <locked>false</locked>
151.18612 + <visible>false</visible>
151.18613 + <shapes/>
151.18614 + <effects/>
151.18615 + </layer>
151.18616 + </templateLayer>
151.18617 + </canvas>
151.18618 + </state>
151.18619 + <state stateKeys="Enabled+ArrowShape">
151.18620 + <style>
151.18621 + <textForeground/>
151.18622 + <textBackground/>
151.18623 + <background/>
151.18624 + <uiproperties/>
151.18625 + </style>
151.18626 + <canvas>
151.18627 + <size width="17" height="17"/>
151.18628 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.18629 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.18630 + <layer name="Layer 1">
151.18631 + <opacity>1.0</opacity>
151.18632 + <fillOpacity>1.0</fillOpacity>
151.18633 + <blendingMode>NORMAL</blendingMode>
151.18634 + <locked>false</locked>
151.18635 + <visible>true</visible>
151.18636 + <shapes>
151.18637 + <path>
151.18638 + <gradient cycleMethod="NO_CYCLE">
151.18639 + <stop position="0.061290324" midpoint="0.5">
151.18640 + <matte red="248" green="250" blue="251" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.023096085" saturationOffset="-0.62376213" brightnessOffset="0.4352941" alphaOffset="0"/>
151.18641 + </stop>
151.18642 + <stop position="0.14193548" midpoint="0.5">
151.18643 + <matte red="232" green="237" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.594392" brightnessOffset="0.39999998" alphaOffset="0"/>
151.18644 + </stop>
151.18645 + <stop position="0.46129033" midpoint="0.5">
151.18646 + <matte red="166" green="187" blue="205" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.4454704" brightnessOffset="0.25490195" alphaOffset="0"/>
151.18647 + </stop>
151.18648 + <stop position="0.7354839" midpoint="0.5">
151.18649 + <matte red="191" green="212" blue="231" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4625541" brightnessOffset="0.35686272" alphaOffset="0"/>
151.18650 + </stop>
151.18651 + <stop position="0.8516129" midpoint="0.5">
151.18652 + <matte red="208" green="229" blue="248" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.47442397" brightnessOffset="0.4235294" alphaOffset="0"/>
151.18653 + </stop>
151.18654 + </gradient>
151.18655 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.18656 + <points>
151.18657 + <point x="4.027803030303029" y="3.004848484848486" cp1x="3.032649021149256" cp1y="4.6674981382317355" cp2x="4.536011975539247" cp2y="2.155760385045938"/>
151.18658 + <point x="13.846363636363638" y="9.291818181818181" cp1x="13.849548242977425" cp1y="8.685129924076254" cp2x="13.842473440242545" cp2y="10.03292582656201"/>
151.18659 + <point x="3.9727272727272753" y="13.966363636363635" cp1x="4.359824654142523" cp1y="15.207145646334764" cp2x="3.5863614419930605" cp2y="12.727926501268922"/>
151.18660 + </points>
151.18661 + </path>
151.18662 + <path>
151.18663 + <gradient cycleMethod="NO_CYCLE">
151.18664 + <stop position="0.0" midpoint="0.5">
151.18665 + <matte red="104" green="121" blue="135" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0033828616" saturationOffset="-0.40608466" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.18666 + </stop>
151.18667 + <stop position="0.48064515" midpoint="0.5">
151.18668 + <matte red="47" green="68" blue="87" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.17594418" brightnessOffset="-0.20784315" alphaOffset="0"/>
151.18669 + </stop>
151.18670 + <stop position="1.0" midpoint="0.5">
151.18671 + <matte red="32" green="50" blue="67" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0023007393" saturationOffset="-0.11332625" brightnessOffset="-0.28627452" alphaOffset="0"/>
151.18672 + </stop>
151.18673 + </gradient>
151.18674 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.18675 + <points>
151.18676 + <point x="3.077651515151513" y="14.977272727272723" cp1x="2.3276635759026876" cp1y="13.892921695242634" cp2x="3.9874604605873967" cp2y="16.29269690585581"/>
151.18677 + <point x="15.07575757575758" y="9.278409090909093" cp1x="15.090346383854083" cp1y="10.207961161875609" cp2x="15.062102395509116" cp2y="8.408344792618548"/>
151.18678 + <point x="3.046195652173914" y="2.035820158102767" cp1x="4.019189127078684" cp1y="0.6109557613825192" cp2x="2.297674764597527" cp2y="3.1319639559976284"/>
151.18679 + </points>
151.18680 + </path>
151.18681 + <path>
151.18682 + <matte red="150" green="156" blue="168" alpha="146" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18683 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.18684 + <points>
151.18685 + <point x="4.083333333333332" y="2.503787878787879" cp1x="2.2198078146656997" cp1y="2.872783314232221" cp2x="5.647660212943894" cp2y="2.194036564766758"/>
151.18686 + <point x="15.962727272727284" y="9.281818181818181" cp1x="16.020900857276246" cp1y="8.817054690620388" cp2x="15.621858714169313" cp2y="12.005103372910728"/>
151.18687 + <point x="3.5031818181818175" y="15.846818181818183" cp1x="8.071309735244107" cp1y="15.840803266669884" cp2x="-0.020213740918331703" cp2y="15.85145748389261"/>
151.18688 + </points>
151.18689 + </path>
151.18690 + </shapes>
151.18691 + <effects/>
151.18692 + </layer>
151.18693 + </canvas>
151.18694 + </state>
151.18695 + <state stateKeys="Disabled+ArrowShape">
151.18696 + <style>
151.18697 + <textForeground/>
151.18698 + <textBackground/>
151.18699 + <background/>
151.18700 + <uiproperties/>
151.18701 + </style>
151.18702 + <canvas>
151.18703 + <size width="17" height="17"/>
151.18704 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.18705 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.18706 + <layer name="Layer 1">
151.18707 + <opacity>1.0</opacity>
151.18708 + <fillOpacity>1.0</fillOpacity>
151.18709 + <blendingMode>NORMAL</blendingMode>
151.18710 + <locked>false</locked>
151.18711 + <visible>true</visible>
151.18712 + <shapes>
151.18713 + <path>
151.18714 + <gradient cycleMethod="NO_CYCLE">
151.18715 + <stop position="0.0" midpoint="0.5">
151.18716 + <matte red="221" green="225" blue="231" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.5924243" brightnessOffset="0.35686272" alphaOffset="0"/>
151.18717 + </stop>
151.18718 + <stop position="0.42513368" midpoint="0.5">
151.18719 + <matte red="204" green="210" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56722116" brightnessOffset="0.3098039" alphaOffset="0"/>
151.18720 + </stop>
151.18721 + <stop position="1.0" midpoint="0.5">
151.18722 + <matte red="208" green="214" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56844974" brightnessOffset="0.32549018" alphaOffset="0"/>
151.18723 + </stop>
151.18724 + </gradient>
151.18725 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.18726 + <points>
151.18727 + <point x="4.027803030303029" y="3.004848484848486" cp1x="3.032649021149256" cp1y="4.6674981382317355" cp2x="4.536011975539247" cp2y="2.155760385045938"/>
151.18728 + <point x="13.846363636363638" y="9.291818181818181" cp1x="13.849548242977425" cp1y="8.685129924076254" cp2x="13.842473440242545" cp2y="10.03292582656201"/>
151.18729 + <point x="3.9727272727272753" y="13.966363636363635" cp1x="4.359824654142523" cp1y="15.207145646334764" cp2x="3.5863614419930605" cp2y="12.727926501268922"/>
151.18730 + </points>
151.18731 + </path>
151.18732 + <path>
151.18733 + <gradient cycleMethod="NO_CYCLE">
151.18734 + <stop position="0.0" midpoint="0.5">
151.18735 + <matte red="190" green="196" blue="205" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.5625436" brightnessOffset="0.25490195" alphaOffset="0"/>
151.18736 + </stop>
151.18737 + <stop position="1.0" midpoint="0.5">
151.18738 + <matte red="173" green="180" blue="189" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.015098333" saturationOffset="-0.55105823" brightnessOffset="0.19215685" alphaOffset="0"/>
151.18739 + </stop>
151.18740 + </gradient>
151.18741 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.18742 + <points>
151.18743 + <point x="3.077651515151513" y="14.977272727272723" cp1x="2.3276635759026876" cp1y="13.892921695242634" cp2x="3.9874604605873967" cp2y="16.29269690585581"/>
151.18744 + <point x="15.07575757575758" y="9.278409090909093" cp1x="15.090346383854083" cp1y="10.207961161875609" cp2x="15.062102395509116" cp2y="8.408344792618548"/>
151.18745 + <point x="3.046195652173914" y="2.035820158102767" cp1x="4.019189127078684" cp1y="0.6109557613825192" cp2x="2.297674764597527" cp2y="3.1319639559976284"/>
151.18746 + </points>
151.18747 + </path>
151.18748 + </shapes>
151.18749 + <effects/>
151.18750 + </layer>
151.18751 + </canvas>
151.18752 + </state>
151.18753 + <state stateKeys="MouseOver+ArrowShape">
151.18754 + <style>
151.18755 + <textForeground/>
151.18756 + <textBackground/>
151.18757 + <background/>
151.18758 + <uiproperties/>
151.18759 + </style>
151.18760 + <canvas>
151.18761 + <size width="17" height="17"/>
151.18762 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.18763 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.18764 + <layer name="Layer 1">
151.18765 + <opacity>1.0</opacity>
151.18766 + <fillOpacity>1.0</fillOpacity>
151.18767 + <blendingMode>NORMAL</blendingMode>
151.18768 + <locked>false</locked>
151.18769 + <visible>true</visible>
151.18770 + <shapes>
151.18771 + <path>
151.18772 + <gradient cycleMethod="NO_CYCLE">
151.18773 + <stop position="0.0" midpoint="0.5">
151.18774 + <matte red="251" green="252" blue="253" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.62780917" brightnessOffset="0.44313723" alphaOffset="0"/>
151.18775 + </stop>
151.18776 + <stop position="0.42513368" midpoint="0.5">
151.18777 + <matte red="185" green="205" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.4653107" brightnessOffset="0.32549018" alphaOffset="0"/>
151.18778 + </stop>
151.18779 + <stop position="0.69786096" midpoint="0.5">
151.18780 + <matte red="183" green="204" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4563421" brightnessOffset="0.32549018" alphaOffset="0"/>
151.18781 + </stop>
151.18782 + <stop position="1.0" midpoint="0.5">
151.18783 + <matte red="201" green="222" blue="240" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.4732143" brightnessOffset="0.39215684" alphaOffset="0"/>
151.18784 + </stop>
151.18785 + </gradient>
151.18786 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.18787 + <points>
151.18788 + <point x="4.027803030303029" y="3.004848484848486" cp1x="3.032649021149256" cp1y="4.6674981382317355" cp2x="4.536011975539247" cp2y="2.155760385045938"/>
151.18789 + <point x="13.846363636363638" y="9.291818181818181" cp1x="13.849548242977425" cp1y="8.685129924076254" cp2x="13.842473440242545" cp2y="10.03292582656201"/>
151.18790 + <point x="3.9727272727272753" y="13.966363636363635" cp1x="4.359824654142523" cp1y="15.207145646334764" cp2x="3.5863614419930605" cp2y="12.727926501268922"/>
151.18791 + </points>
151.18792 + </path>
151.18793 + <path>
151.18794 + <gradient cycleMethod="NO_CYCLE">
151.18795 + <stop position="0.0" midpoint="0.5">
151.18796 + <matte red="53" green="80" blue="102" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0038217902" saturationOffset="-0.15532213" brightnessOffset="-0.14901963" alphaOffset="0"/>
151.18797 + </stop>
151.18798 + <stop position="1.0" midpoint="0.5">
151.18799 + <matte red="1" green="1" blue="1" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54509807" alphaOffset="0"/>
151.18800 + </stop>
151.18801 + </gradient>
151.18802 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.18803 + <points>
151.18804 + <point x="3.077651515151513" y="14.977272727272723" cp1x="2.3276635759026876" cp1y="13.892921695242634" cp2x="3.9874604605873967" cp2y="16.29269690585581"/>
151.18805 + <point x="15.07575757575758" y="9.278409090909093" cp1x="15.090346383854083" cp1y="10.207961161875609" cp2x="15.062102395509116" cp2y="8.408344792618548"/>
151.18806 + <point x="3.046195652173914" y="2.035820158102767" cp1x="4.019189127078684" cp1y="0.6109557613825192" cp2x="2.297674764597527" cp2y="3.1319639559976284"/>
151.18807 + </points>
151.18808 + </path>
151.18809 + <path>
151.18810 + <matte red="150" green="156" blue="168" alpha="146" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18811 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.18812 + <points>
151.18813 + <point x="4.083333333333332" y="2.503787878787879" cp1x="2.2198078146656997" cp1y="2.872783314232221" cp2x="5.647660212943894" cp2y="2.194036564766758"/>
151.18814 + <point x="15.962727272727284" y="9.281818181818181" cp1x="16.020900857276246" cp1y="8.817054690620388" cp2x="15.621858714169313" cp2y="12.005103372910728"/>
151.18815 + <point x="3.5031818181818175" y="15.846818181818183" cp1x="8.071309735244107" cp1y="15.840803266669884" cp2x="-0.020213740918331703" cp2y="15.85145748389261"/>
151.18816 + </points>
151.18817 + </path>
151.18818 + </shapes>
151.18819 + <effects/>
151.18820 + </layer>
151.18821 + </canvas>
151.18822 + </state>
151.18823 + <state stateKeys="Pressed+ArrowShape">
151.18824 + <style>
151.18825 + <textForeground/>
151.18826 + <textBackground/>
151.18827 + <background/>
151.18828 + <uiproperties/>
151.18829 + </style>
151.18830 + <canvas>
151.18831 + <size width="17" height="17"/>
151.18832 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.18833 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.18834 + <layer name="Layer 1">
151.18835 + <opacity>1.0</opacity>
151.18836 + <fillOpacity>1.0</fillOpacity>
151.18837 + <blendingMode>NORMAL</blendingMode>
151.18838 + <locked>false</locked>
151.18839 + <visible>true</visible>
151.18840 + <shapes>
151.18841 + <path>
151.18842 + <gradient cycleMethod="NO_CYCLE">
151.18843 + <stop position="0.0" midpoint="0.5">
151.18844 + <matte red="166" green="186" blue="204" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.44943976" brightnessOffset="0.25098038" alphaOffset="0"/>
151.18845 + </stop>
151.18846 + <stop position="0.47593582" midpoint="0.5">
151.18847 + <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18848 + </stop>
151.18849 + <stop position="0.5962567" midpoint="0.5">
151.18850 + <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18851 + </stop>
151.18852 + <stop position="1.0" midpoint="0.5">
151.18853 + <matte red="83" green="129" blue="171" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.121094406" brightnessOffset="0.12156862" alphaOffset="0"/>
151.18854 + </stop>
151.18855 + </gradient>
151.18856 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.18857 + <points>
151.18858 + <point x="4.027803030303029" y="3.004848484848486" cp1x="3.032649021149256" cp1y="4.6674981382317355" cp2x="4.536011975539247" cp2y="2.155760385045938"/>
151.18859 + <point x="13.846363636363638" y="9.291818181818181" cp1x="13.849548242977425" cp1y="8.685129924076254" cp2x="13.842473440242545" cp2y="10.03292582656201"/>
151.18860 + <point x="3.9727272727272753" y="13.966363636363635" cp1x="4.359824654142523" cp1y="15.207145646334764" cp2x="3.5863614419930605" cp2y="12.727926501268922"/>
151.18861 + </points>
151.18862 + </path>
151.18863 + <path>
151.18864 + <gradient cycleMethod="NO_CYCLE">
151.18865 + <stop position="0.0" midpoint="0.5">
151.18866 + <matte red="1" green="1" blue="1" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54509807" alphaOffset="0"/>
151.18867 + </stop>
151.18868 + <stop position="1.0" midpoint="0.5">
151.18869 + <matte red="38" green="66" blue="92" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.04875779" brightnessOffset="-0.18823531" alphaOffset="0"/>
151.18870 + </stop>
151.18871 + </gradient>
151.18872 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.18873 + <points>
151.18874 + <point x="3.077651515151513" y="14.977272727272723" cp1x="2.3276635759026876" cp1y="13.892921695242634" cp2x="3.9874604605873967" cp2y="16.29269690585581"/>
151.18875 + <point x="15.07575757575758" y="9.278409090909093" cp1x="15.090346383854083" cp1y="10.207961161875609" cp2x="15.062102395509116" cp2y="8.408344792618548"/>
151.18876 + <point x="3.046195652173914" y="2.035820158102767" cp1x="4.019189127078684" cp1y="0.6109557613825192" cp2x="2.297674764597527" cp2y="3.1319639559976284"/>
151.18877 + </points>
151.18878 + </path>
151.18879 + <path>
151.18880 + <matte red="150" green="156" blue="168" alpha="146" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18881 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.18882 + <points>
151.18883 + <point x="4.083333333333332" y="2.503787878787879" cp1x="2.2198078146656997" cp1y="2.872783314232221" cp2x="5.647660212943894" cp2y="2.194036564766758"/>
151.18884 + <point x="15.962727272727284" y="9.281818181818181" cp1x="16.020900857276246" cp1y="8.817054690620388" cp2x="15.621858714169313" cp2y="12.005103372910728"/>
151.18885 + <point x="3.5031818181818175" y="15.846818181818183" cp1x="8.071309735244107" cp1y="15.840803266669884" cp2x="-0.020213740918331703" cp2y="15.85145748389261"/>
151.18886 + </points>
151.18887 + </path>
151.18888 + </shapes>
151.18889 + <effects/>
151.18890 + </layer>
151.18891 + </canvas>
151.18892 + </state>
151.18893 + <state stateKeys="Focused+ArrowShape">
151.18894 + <style>
151.18895 + <textForeground/>
151.18896 + <textBackground/>
151.18897 + <background/>
151.18898 + <uiproperties/>
151.18899 + </style>
151.18900 + <canvas>
151.18901 + <size width="17" height="17"/>
151.18902 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.18903 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.18904 + <layer name="Layer 1">
151.18905 + <opacity>1.0</opacity>
151.18906 + <fillOpacity>1.0</fillOpacity>
151.18907 + <blendingMode>NORMAL</blendingMode>
151.18908 + <locked>false</locked>
151.18909 + <visible>true</visible>
151.18910 + <shapes>
151.18911 + <path>
151.18912 + <gradient cycleMethod="NO_CYCLE">
151.18913 + <stop position="0.061290324" midpoint="0.5">
151.18914 + <matte red="248" green="250" blue="251" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.023096085" saturationOffset="-0.62376213" brightnessOffset="0.4352941" alphaOffset="0"/>
151.18915 + </stop>
151.18916 + <stop position="0.14193548" midpoint="0.5">
151.18917 + <matte red="232" green="237" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.594392" brightnessOffset="0.39999998" alphaOffset="0"/>
151.18918 + </stop>
151.18919 + <stop position="0.46129033" midpoint="0.5">
151.18920 + <matte red="166" green="187" blue="205" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.4454704" brightnessOffset="0.25490195" alphaOffset="0"/>
151.18921 + </stop>
151.18922 + <stop position="0.7354839" midpoint="0.5">
151.18923 + <matte red="191" green="212" blue="231" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4625541" brightnessOffset="0.35686272" alphaOffset="0"/>
151.18924 + </stop>
151.18925 + <stop position="0.8516129" midpoint="0.5">
151.18926 + <matte red="208" green="229" blue="248" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.47442397" brightnessOffset="0.4235294" alphaOffset="0"/>
151.18927 + </stop>
151.18928 + </gradient>
151.18929 + <paintPoints x1="0.4925773044082732" y1="0.08201986267797506" x2="0.4925773044082731" y2="0.9179801373220249"/>
151.18930 + <points>
151.18931 + <point x="4.027803030303029" y="3.004848484848486" cp1x="3.032649021149256" cp1y="4.6674981382317355" cp2x="4.536011975539247" cp2y="2.155760385045938"/>
151.18932 + <point x="13.846363636363638" y="9.291818181818181" cp1x="13.849548242977425" cp1y="8.685129924076254" cp2x="13.842473440242545" cp2y="10.03292582656201"/>
151.18933 + <point x="3.9727272727272753" y="13.966363636363635" cp1x="4.359824654142523" cp1y="15.207145646334764" cp2x="3.5863614419930605" cp2y="12.727926501268922"/>
151.18934 + </points>
151.18935 + </path>
151.18936 + <path>
151.18937 + <gradient cycleMethod="NO_CYCLE">
151.18938 + <stop position="0.0" midpoint="0.5">
151.18939 + <matte red="104" green="121" blue="135" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0033828616" saturationOffset="-0.40608466" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.18940 + </stop>
151.18941 + <stop position="0.48064515" midpoint="0.5">
151.18942 + <matte red="47" green="68" blue="87" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.17594418" brightnessOffset="-0.20784315" alphaOffset="0"/>
151.18943 + </stop>
151.18944 + <stop position="1.0" midpoint="0.5">
151.18945 + <matte red="32" green="50" blue="67" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0023007393" saturationOffset="-0.11332625" brightnessOffset="-0.28627452" alphaOffset="0"/>
151.18946 + </stop>
151.18947 + </gradient>
151.18948 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.18949 + <points>
151.18950 + <point x="3.077651515151513" y="14.977272727272723" cp1x="2.3276635759026876" cp1y="13.892921695242634" cp2x="3.9874604605873967" cp2y="16.29269690585581"/>
151.18951 + <point x="15.07575757575758" y="9.278409090909093" cp1x="15.090346383854083" cp1y="10.207961161875609" cp2x="15.062102395509116" cp2y="8.408344792618548"/>
151.18952 + <point x="3.046195652173914" y="2.035820158102767" cp1x="4.019189127078684" cp1y="0.6109557613825192" cp2x="2.297674764597527" cp2y="3.1319639559976284"/>
151.18953 + </points>
151.18954 + </path>
151.18955 + <path>
151.18956 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.18957 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.18958 + <points>
151.18959 + <point x="3.0029761904761894" y="0.5863771645021645" cp1x="1.139450671808557" cp1y="0.9553725999465068" cp2x="4.5673030700867505" cp2y="0.27662585048104366"/>
151.18960 + <point x="15.962727272727284" y="9.281818181818181" cp1x="15.967133116737259" cp1y="8.093702027571416" cp2x="15.955362732066009" cp2y="11.267800824067251"/>
151.18961 + <point x="3.5031818181818175" y="16.34681818181818" cp1x="6.274868164827076" cp1y="16.33784359983059" cp2x="-0.25171732582327255" cp2y="16.358976357747352"/>
151.18962 + </points>
151.18963 + </path>
151.18964 + </shapes>
151.18965 + <effects/>
151.18966 + </layer>
151.18967 + </canvas>
151.18968 + </state>
151.18969 + <state stateKeys="Focused+MouseOver+ArrowShape">
151.18970 + <style>
151.18971 + <textForeground/>
151.18972 + <textBackground/>
151.18973 + <background/>
151.18974 + <uiproperties/>
151.18975 + </style>
151.18976 + <canvas>
151.18977 + <size width="17" height="17"/>
151.18978 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.18979 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.18980 + <layer name="Layer 1">
151.18981 + <opacity>1.0</opacity>
151.18982 + <fillOpacity>1.0</fillOpacity>
151.18983 + <blendingMode>NORMAL</blendingMode>
151.18984 + <locked>false</locked>
151.18985 + <visible>true</visible>
151.18986 + <shapes>
151.18987 + <path>
151.18988 + <gradient cycleMethod="NO_CYCLE">
151.18989 + <stop position="0.0" midpoint="0.5">
151.18990 + <matte red="251" green="252" blue="253" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.62780917" brightnessOffset="0.44313723" alphaOffset="0"/>
151.18991 + </stop>
151.18992 + <stop position="0.42513368" midpoint="0.5">
151.18993 + <matte red="185" green="205" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.4653107" brightnessOffset="0.32549018" alphaOffset="0"/>
151.18994 + </stop>
151.18995 + <stop position="0.69786096" midpoint="0.5">
151.18996 + <matte red="183" green="204" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4563421" brightnessOffset="0.32549018" alphaOffset="0"/>
151.18997 + </stop>
151.18998 + <stop position="1.0" midpoint="0.5">
151.18999 + <matte red="201" green="222" blue="240" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.4732143" brightnessOffset="0.39215684" alphaOffset="0"/>
151.19000 + </stop>
151.19001 + </gradient>
151.19002 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19003 + <points>
151.19004 + <point x="4.027803030303029" y="3.004848484848486" cp1x="3.032649021149256" cp1y="4.6674981382317355" cp2x="4.536011975539247" cp2y="2.155760385045938"/>
151.19005 + <point x="13.846363636363638" y="9.291818181818181" cp1x="13.849548242977425" cp1y="8.685129924076254" cp2x="13.842473440242545" cp2y="10.03292582656201"/>
151.19006 + <point x="3.9727272727272753" y="13.966363636363635" cp1x="4.359824654142523" cp1y="15.207145646334764" cp2x="3.5863614419930605" cp2y="12.727926501268922"/>
151.19007 + </points>
151.19008 + </path>
151.19009 + <path>
151.19010 + <gradient cycleMethod="NO_CYCLE">
151.19011 + <stop position="0.0" midpoint="0.5">
151.19012 + <matte red="53" green="80" blue="102" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0038217902" saturationOffset="-0.15532213" brightnessOffset="-0.14901963" alphaOffset="0"/>
151.19013 + </stop>
151.19014 + <stop position="1.0" midpoint="0.5">
151.19015 + <matte red="1" green="1" blue="1" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54509807" alphaOffset="0"/>
151.19016 + </stop>
151.19017 + </gradient>
151.19018 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19019 + <points>
151.19020 + <point x="3.077651515151513" y="14.977272727272723" cp1x="2.3276635759026876" cp1y="13.892921695242634" cp2x="3.9874604605873967" cp2y="16.29269690585581"/>
151.19021 + <point x="15.07575757575758" y="9.278409090909093" cp1x="15.090346383854083" cp1y="10.207961161875609" cp2x="15.062102395509116" cp2y="8.408344792618548"/>
151.19022 + <point x="3.046195652173914" y="2.035820158102767" cp1x="4.019189127078684" cp1y="0.6109557613825192" cp2x="2.297674764597527" cp2y="3.1319639559976284"/>
151.19023 + </points>
151.19024 + </path>
151.19025 + <path>
151.19026 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.19027 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19028 + <points>
151.19029 + <point x="3.0029761904761894" y="0.5863771645021645" cp1x="1.139450671808557" cp1y="0.9553725999465068" cp2x="4.5673030700867505" cp2y="0.27662585048104366"/>
151.19030 + <point x="15.962727272727284" y="9.281818181818181" cp1x="15.967133116737259" cp1y="8.093702027571416" cp2x="15.955362732066009" cp2y="11.267800824067251"/>
151.19031 + <point x="3.5031818181818175" y="16.34681818181818" cp1x="6.274868164827076" cp1y="16.33784359983059" cp2x="-0.25171732582327255" cp2y="16.358976357747352"/>
151.19032 + </points>
151.19033 + </path>
151.19034 + </shapes>
151.19035 + <effects/>
151.19036 + </layer>
151.19037 + </canvas>
151.19038 + </state>
151.19039 + <state stateKeys="Focused+Pressed+ArrowShape">
151.19040 + <style>
151.19041 + <textForeground/>
151.19042 + <textBackground/>
151.19043 + <background/>
151.19044 + <uiproperties/>
151.19045 + </style>
151.19046 + <canvas>
151.19047 + <size width="17" height="17"/>
151.19048 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.19049 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.19050 + <layer name="Layer 1">
151.19051 + <opacity>1.0</opacity>
151.19052 + <fillOpacity>1.0</fillOpacity>
151.19053 + <blendingMode>NORMAL</blendingMode>
151.19054 + <locked>false</locked>
151.19055 + <visible>true</visible>
151.19056 + <shapes>
151.19057 + <path>
151.19058 + <gradient cycleMethod="NO_CYCLE">
151.19059 + <stop position="0.0" midpoint="0.5">
151.19060 + <matte red="166" green="186" blue="204" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.44943976" brightnessOffset="0.25098038" alphaOffset="0"/>
151.19061 + </stop>
151.19062 + <stop position="0.47593582" midpoint="0.5">
151.19063 + <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.19064 + </stop>
151.19065 + <stop position="0.5962567" midpoint="0.5">
151.19066 + <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.19067 + </stop>
151.19068 + <stop position="1.0" midpoint="0.5">
151.19069 + <matte red="83" green="129" blue="171" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.121094406" brightnessOffset="0.12156862" alphaOffset="0"/>
151.19070 + </stop>
151.19071 + </gradient>
151.19072 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19073 + <points>
151.19074 + <point x="4.027803030303029" y="3.004848484848486" cp1x="3.032649021149256" cp1y="4.6674981382317355" cp2x="4.536011975539247" cp2y="2.155760385045938"/>
151.19075 + <point x="13.846363636363638" y="9.291818181818181" cp1x="13.849548242977425" cp1y="8.685129924076254" cp2x="13.842473440242545" cp2y="10.03292582656201"/>
151.19076 + <point x="3.9727272727272753" y="13.966363636363635" cp1x="4.359824654142523" cp1y="15.207145646334764" cp2x="3.5863614419930605" cp2y="12.727926501268922"/>
151.19077 + </points>
151.19078 + </path>
151.19079 + <path>
151.19080 + <gradient cycleMethod="NO_CYCLE">
151.19081 + <stop position="0.0" midpoint="0.5">
151.19082 + <matte red="1" green="1" blue="1" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54509807" alphaOffset="0"/>
151.19083 + </stop>
151.19084 + <stop position="1.0" midpoint="0.5">
151.19085 + <matte red="38" green="66" blue="92" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.04875779" brightnessOffset="-0.18823531" alphaOffset="0"/>
151.19086 + </stop>
151.19087 + </gradient>
151.19088 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19089 + <points>
151.19090 + <point x="3.077651515151513" y="14.977272727272723" cp1x="2.3276635759026876" cp1y="13.892921695242634" cp2x="3.9874604605873967" cp2y="16.29269690585581"/>
151.19091 + <point x="15.07575757575758" y="9.278409090909093" cp1x="15.090346383854083" cp1y="10.207961161875609" cp2x="15.062102395509116" cp2y="8.408344792618548"/>
151.19092 + <point x="3.046195652173914" y="2.035820158102767" cp1x="4.019189127078684" cp1y="0.6109557613825192" cp2x="2.297674764597527" cp2y="3.1319639559976284"/>
151.19093 + </points>
151.19094 + </path>
151.19095 + <path>
151.19096 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.19097 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19098 + <points>
151.19099 + <point x="3.0029761904761894" y="0.5863771645021645" cp1x="1.139450671808557" cp1y="0.9553725999465068" cp2x="4.5673030700867505" cp2y="0.27662585048104366"/>
151.19100 + <point x="15.962727272727284" y="9.281818181818181" cp1x="15.967133116737259" cp1y="8.093702027571416" cp2x="15.955362732066009" cp2y="11.267800824067251"/>
151.19101 + <point x="3.5031818181818175" y="16.34681818181818" cp1x="6.274868164827076" cp1y="16.33784359983059" cp2x="-0.25171732582327255" cp2y="16.358976357747352"/>
151.19102 + </points>
151.19103 + </path>
151.19104 + </shapes>
151.19105 + <effects/>
151.19106 + </layer>
151.19107 + </canvas>
151.19108 + </state>
151.19109 + </backgroundStates>
151.19110 + <foregroundStates/>
151.19111 + <borderStates/>
151.19112 + <regions/>
151.19113 + </region>
151.19114 + <region name="SliderTrack" subregion="true">
151.19115 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.19116 + <style>
151.19117 + <textForeground/>
151.19118 + <textBackground/>
151.19119 + <background/>
151.19120 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.19121 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.19122 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.19123 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.19124 + <uiproperties/>
151.19125 + </style>
151.19126 + <backgroundStates>
151.19127 + <state stateKeys="Disabled">
151.19128 + <style>
151.19129 + <textForeground/>
151.19130 + <textBackground/>
151.19131 + <background/>
151.19132 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.19133 + <maxVertCachedImgScaling>2.0</maxVertCachedImgScaling>
151.19134 + <uiproperties/>
151.19135 + </style>
151.19136 + <canvas>
151.19137 + <size width="23" height="17"/>
151.19138 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.19139 + <stretchingInsets top="6" bottom="6" left="5" right="5"/>
151.19140 + <layer name="Layer 1">
151.19141 + <opacity>1.0</opacity>
151.19142 + <fillOpacity>1.0</fillOpacity>
151.19143 + <blendingMode>NORMAL</blendingMode>
151.19144 + <locked>false</locked>
151.19145 + <visible>true</visible>
151.19146 + <shapes>
151.19147 + <rectangle x1="1.4705882352941173" x2="21.529411764705873" y1="7.0" y2="11.0" rounding="3.999999999999999">
151.19148 + <gradient cycleMethod="NO_CYCLE">
151.19149 + <stop position="0.0" midpoint="0.5">
151.19150 + <matte red="196" green="200" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.061982628" brightnessOffset="0.062745094" alphaOffset="0"/>
151.19151 + </stop>
151.19152 + <stop position="0.27540106" midpoint="0.5">
151.19153 + <matte red="201" green="205" blue="212" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.058639523" brightnessOffset="0.086274505" alphaOffset="0"/>
151.19154 + </stop>
151.19155 + <stop position="1.0" midpoint="0.5">
151.19156 + <matte red="206" green="209" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.01010108" saturationOffset="-0.059835073" brightnessOffset="0.10588235" alphaOffset="0"/>
151.19157 + </stop>
151.19158 + </gradient>
151.19159 + <paintPoints x1="0.25" y1="0.0" x2="0.25" y2="1.0"/>
151.19160 + </rectangle>
151.19161 + <rectangle x1="0.0" x2="23.0" y1="6.0" y2="11.0" rounding="4.941176470588243">
151.19162 + <gradient cycleMethod="NO_CYCLE">
151.19163 + <stop position="0.0" midpoint="0.5">
151.19164 + <matte red="193" green="196" blue="203" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.061265234" brightnessOffset="0.05098039" alphaOffset="0"/>
151.19165 + </stop>
151.19166 + <stop position="1.0" midpoint="0.5">
151.19167 + <matte red="206" green="209" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.01010108" saturationOffset="-0.059835073" brightnessOffset="0.10588235" alphaOffset="0"/>
151.19168 + </stop>
151.19169 + </gradient>
151.19170 + <paintPoints x1="0.25" y1="0.07647058823529412" x2="0.25" y2="0.9117647058823533"/>
151.19171 + </rectangle>
151.19172 + <rectangle x1="1.0" x2="22.0" y1="9.0" y2="16.0" rounding="8.705882352941174">
151.19173 + <matte red="255" green="255" blue="255" alpha="10" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-245"/>
151.19174 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19175 + </rectangle>
151.19176 + </shapes>
151.19177 + <effects/>
151.19178 + </layer>
151.19179 + <templateLayer fileName="1139e90e32c.png">
151.19180 + <layer name="Template" type="template">
151.19181 + <opacity>1.0</opacity>
151.19182 + <fillOpacity>1.0</fillOpacity>
151.19183 + <blendingMode>NORMAL</blendingMode>
151.19184 + <locked>false</locked>
151.19185 + <visible>false</visible>
151.19186 + <shapes/>
151.19187 + <effects/>
151.19188 + </layer>
151.19189 + </templateLayer>
151.19190 + </canvas>
151.19191 + </state>
151.19192 + <state stateKeys="Enabled">
151.19193 + <style>
151.19194 + <textForeground/>
151.19195 + <textBackground/>
151.19196 + <background/>
151.19197 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.19198 + <uiproperties/>
151.19199 + </style>
151.19200 + <canvas>
151.19201 + <size width="23" height="17"/>
151.19202 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.19203 + <stretchingInsets top="6" bottom="6" left="5" right="5"/>
151.19204 + <layer name="Layer 1">
151.19205 + <opacity>1.0</opacity>
151.19206 + <fillOpacity>1.0</fillOpacity>
151.19207 + <blendingMode>NORMAL</blendingMode>
151.19208 + <locked>false</locked>
151.19209 + <visible>true</visible>
151.19210 + <shapes>
151.19211 + <rectangle x1="1.441176470588235" x2="21.49999999999999" y1="7.0" y2="11.0" rounding="3.999999999999999">
151.19212 + <gradient cycleMethod="NO_CYCLE">
151.19213 + <stop position="0.0" midpoint="0.5">
151.19214 + <matte red="155" green="160" blue="168" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.03314536" brightnessOffset="-0.086274505" alphaOffset="0"/>
151.19215 + </stop>
151.19216 + <stop position="0.27540106" midpoint="0.5">
151.19217 + <matte red="172" green="176" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.004273474" saturationOffset="-0.040256046" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.19218 + </stop>
151.19219 + <stop position="0.7058824" midpoint="0.5">
151.19220 + <matte red="187" green="192" blue="202" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.03626889" brightnessOffset="0.04705882" alphaOffset="0"/>
151.19221 + </stop>
151.19222 + </gradient>
151.19223 + <paintPoints x1="0.25" y1="0.0" x2="0.25" y2="1.0"/>
151.19224 + </rectangle>
151.19225 + <rectangle x1="0.0" x2="23.0" y1="6.0" y2="11.0" rounding="4.941176470588243">
151.19226 + <gradient cycleMethod="NO_CYCLE">
151.19227 + <stop position="0.0" midpoint="0.5">
151.19228 + <matte red="145" green="149" blue="157" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.034093194" brightnessOffset="-0.12941176" alphaOffset="0"/>
151.19229 + </stop>
151.19230 + <stop position="1.0" midpoint="0.5">
151.19231 + <matte red="158" green="162" blue="173" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.01111114" saturationOffset="-0.023821115" brightnessOffset="-0.06666666" alphaOffset="0"/>
151.19232 + </stop>
151.19233 + </gradient>
151.19234 + <paintPoints x1="0.25" y1="0.07647058823529412" x2="0.25" y2="0.9117647058823533"/>
151.19235 + </rectangle>
151.19236 + <rectangle x1="1.0" x2="22.0" y1="9.0" y2="12.0" rounding="8.705882352941174">
151.19237 + <matte red="255" green="255" blue="255" alpha="144" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-111"/>
151.19238 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19239 + </rectangle>
151.19240 + </shapes>
151.19241 + <effects/>
151.19242 + </layer>
151.19243 + <templateLayer fileName="1139e0a2168.png">
151.19244 + <layer name="Template" type="template">
151.19245 + <opacity>1.0</opacity>
151.19246 + <fillOpacity>1.0</fillOpacity>
151.19247 + <blendingMode>NORMAL</blendingMode>
151.19248 + <locked>false</locked>
151.19249 + <visible>false</visible>
151.19250 + <shapes/>
151.19251 + <effects/>
151.19252 + </layer>
151.19253 + </templateLayer>
151.19254 + </canvas>
151.19255 + </state>
151.19256 + </backgroundStates>
151.19257 + <foregroundStates/>
151.19258 + <borderStates/>
151.19259 + <regions/>
151.19260 + </region>
151.19261 + </regions>
151.19262 + </uiComponent>
151.19263 + <uiComponent opaque="false" type="javax.swing.JSpinner" name="Spinner" ui="SpinnerUI" subregion="false">
151.19264 + <stateTypes/>
151.19265 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.19266 + <style>
151.19267 + <textForeground/>
151.19268 + <textBackground/>
151.19269 + <background/>
151.19270 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.19271 + <cacheMode>NO_CACHING</cacheMode>
151.19272 + <uiproperties/>
151.19273 + </style>
151.19274 + <backgroundStates>
151.19275 + <state stateKeys="Enabled">
151.19276 + <style>
151.19277 + <textForeground/>
151.19278 + <textBackground/>
151.19279 + <background/>
151.19280 + <uiproperties/>
151.19281 + </style>
151.19282 + <canvas>
151.19283 + <size width="100" height="30"/>
151.19284 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.19285 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.19286 + <layer name="Layer 1">
151.19287 + <opacity>1.0</opacity>
151.19288 + <fillOpacity>1.0</fillOpacity>
151.19289 + <blendingMode>NORMAL</blendingMode>
151.19290 + <locked>false</locked>
151.19291 + <visible>true</visible>
151.19292 + <shapes/>
151.19293 + <effects/>
151.19294 + </layer>
151.19295 + </canvas>
151.19296 + </state>
151.19297 + </backgroundStates>
151.19298 + <foregroundStates/>
151.19299 + <borderStates/>
151.19300 + <regions>
151.19301 + <uiComponent opaque="false" componentName="Spinner.editor" type="javax.swing.JPanel" name="Panel" ui="PanelUI" subregion="true">
151.19302 + <stateTypes/>
151.19303 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.19304 + <style>
151.19305 + <textForeground/>
151.19306 + <textBackground/>
151.19307 + <background/>
151.19308 + <uiproperties/>
151.19309 + </style>
151.19310 + <backgroundStates/>
151.19311 + <foregroundStates/>
151.19312 + <borderStates/>
151.19313 + <regions/>
151.19314 + </uiComponent>
151.19315 + <uiComponent opaque="false" type="javax.swing.JFormattedTextField" name="FormattedTextField" ui="FormattedTextFieldUI" subregion="true" key="Panel:"Spinner.formattedTextField"">
151.19316 + <stateTypes/>
151.19317 + <contentMargins top="6" bottom="5" left="6" right="6"/>
151.19318 + <style>
151.19319 + <textForeground/>
151.19320 + <textBackground/>
151.19321 + <background/>
151.19322 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.19323 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.19324 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.19325 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.19326 + <uiproperties/>
151.19327 + </style>
151.19328 + <backgroundStates>
151.19329 + <state stateKeys="Disabled">
151.19330 + <style>
151.19331 + <textForeground>
151.19332 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.19333 + </textForeground>
151.19334 + <textBackground/>
151.19335 + <background/>
151.19336 + <inherit-textForeground>false</inherit-textForeground>
151.19337 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.19338 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.19339 + <uiproperties/>
151.19340 + </style>
151.19341 + <canvas>
151.19342 + <size width="64" height="24"/>
151.19343 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.19344 + <stretchingInsets top="5" bottom="3" left="3" right="1"/>
151.19345 + <layer name="Layer 1">
151.19346 + <opacity>1.0</opacity>
151.19347 + <fillOpacity>1.0</fillOpacity>
151.19348 + <blendingMode>NORMAL</blendingMode>
151.19349 + <locked>false</locked>
151.19350 + <visible>true</visible>
151.19351 + <shapes>
151.19352 + <rectangle x1="3.0" x2="64.0" y1="5.0" y2="21.0" rounding="0.0">
151.19353 + <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.016586483" saturationOffset="-0.6051466" brightnessOffset="0.3490196" alphaOffset="0"/>
151.19354 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19355 + </rectangle>
151.19356 + <rectangle x1="2.0" x2="64.0" y1="5.0" y2="22.0" rounding="0.0">
151.19357 + <matte red="208" green="210" blue="215" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.040395975" saturationOffset="-0.60315615" brightnessOffset="0.29411763" alphaOffset="0"/>
151.19358 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19359 + </rectangle>
151.19360 + <rectangle x1="3.0" x2="64.0" y1="3.0" y2="5.0" rounding="0.0">
151.19361 + <gradient cycleMethod="NO_CYCLE">
151.19362 + <stop position="0.0" midpoint="0.5">
151.19363 + <matte red="220" green="222" blue="227" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07968931" brightnessOffset="0.14509803" alphaOffset="0"/>
151.19364 + </stop>
151.19365 + <stop position="1.0" midpoint="0.5">
151.19366 + <matte red="212" green="214" blue="219" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07856284" brightnessOffset="0.11372548" alphaOffset="0"/>
151.19367 + </stop>
151.19368 + </gradient>
151.19369 + <paintPoints x1="0.5" y1="1.0" x2="0.5" y2="0.0"/>
151.19370 + </rectangle>
151.19371 + <rectangle x1="2.0" x2="64.0" y1="2.0" y2="5.0" rounding="0.0">
151.19372 + <gradient cycleMethod="NO_CYCLE">
151.19373 + <stop position="0.0" midpoint="0.5">
151.19374 + <matte red="199" green="202" blue="207" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.07187897" brightnessOffset="0.06666666" alphaOffset="0"/>
151.19375 + </stop>
151.19376 + <stop position="1.0" midpoint="0.5">
151.19377 + <matte red="202" green="204" blue="209" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07703349" brightnessOffset="0.0745098" alphaOffset="0"/>
151.19378 + </stop>
151.19379 + </gradient>
151.19380 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19381 + </rectangle>
151.19382 + <rectangle x1="2.0" x2="64.0" y1="22.0" y2="23.0" rounding="0.0">
151.19383 + <matte red="0" green="0" blue="0" alpha="18" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-237"/>
151.19384 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19385 + </rectangle>
151.19386 + </shapes>
151.19387 + <effects/>
151.19388 + </layer>
151.19389 + </canvas>
151.19390 + </state>
151.19391 + <state stateKeys="Enabled">
151.19392 + <style>
151.19393 + <textForeground/>
151.19394 + <textBackground/>
151.19395 + <background/>
151.19396 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.19397 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.19398 + <uiproperties/>
151.19399 + </style>
151.19400 + <canvas>
151.19401 + <size width="64" height="24"/>
151.19402 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.19403 + <stretchingInsets top="5" bottom="3" left="3" right="1"/>
151.19404 + <layer name="Layer 1">
151.19405 + <opacity>1.0</opacity>
151.19406 + <fillOpacity>1.0</fillOpacity>
151.19407 + <blendingMode>NORMAL</blendingMode>
151.19408 + <locked>false</locked>
151.19409 + <visible>true</visible>
151.19410 + <shapes>
151.19411 + <rectangle x1="3.0" x2="64.0" y1="5.0" y2="21.0" rounding="0.0">
151.19412 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.19413 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19414 + </rectangle>
151.19415 + <rectangle x1="2.0" x2="64.0" y1="5.0" y2="22.0" rounding="0.0">
151.19416 + <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
151.19417 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19418 + </rectangle>
151.19419 + <rectangle x1="3.0" x2="64.0" y1="3.0" y2="5.0" rounding="0.0">
151.19420 + <gradient cycleMethod="NO_CYCLE">
151.19421 + <stop position="0.0" midpoint="0.1684492">
151.19422 + <matte red="203" green="203" blue="204" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105624355" brightnessOffset="0.054901958" alphaOffset="0"/>
151.19423 + </stop>
151.19424 + <stop position="1.0" midpoint="0.5">
151.19425 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.19426 + </stop>
151.19427 + </gradient>
151.19428 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19429 + </rectangle>
151.19430 + <rectangle x1="2.0" x2="64.0" y1="2.0" y2="5.0" rounding="0.0">
151.19431 + <gradient cycleMethod="NO_CYCLE">
151.19432 + <stop position="0.0" midpoint="0.5">
151.19433 + <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
151.19434 + </stop>
151.19435 + <stop position="0.99147725" midpoint="0.5">
151.19436 + <matte red="196" green="196" blue="194" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.08" alphaOffset="0"/>
151.19437 + </stop>
151.19438 + </gradient>
151.19439 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19440 + </rectangle>
151.19441 + <rectangle x1="2.0" x2="64.0" y1="22.0" y2="23.0" rounding="0.0">
151.19442 + <matte red="0" green="0" blue="0" alpha="18" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-237"/>
151.19443 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19444 + </rectangle>
151.19445 + </shapes>
151.19446 + <effects/>
151.19447 + </layer>
151.19448 + </canvas>
151.19449 + </state>
151.19450 + <state stateKeys="Focused">
151.19451 + <style>
151.19452 + <textForeground/>
151.19453 + <textBackground/>
151.19454 + <background/>
151.19455 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.19456 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.19457 + <uiproperties/>
151.19458 + </style>
151.19459 + <canvas>
151.19460 + <size width="64" height="24"/>
151.19461 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.19462 + <stretchingInsets top="5" bottom="3" left="3" right="1"/>
151.19463 + <layer name="Layer 1">
151.19464 + <opacity>1.0</opacity>
151.19465 + <fillOpacity>1.0</fillOpacity>
151.19466 + <blendingMode>NORMAL</blendingMode>
151.19467 + <locked>false</locked>
151.19468 + <visible>true</visible>
151.19469 + <shapes>
151.19470 + <rectangle x1="3.0" x2="64.0" y1="5.0" y2="21.0" rounding="0.0">
151.19471 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.19472 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19473 + </rectangle>
151.19474 + <rectangle x1="2.0" x2="64.0" y1="5.0" y2="22.0" rounding="0.0">
151.19475 + <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
151.19476 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19477 + </rectangle>
151.19478 + <rectangle x1="3.0" x2="64.0" y1="3.0" y2="5.0" rounding="0.0">
151.19479 + <gradient cycleMethod="NO_CYCLE">
151.19480 + <stop position="0.0" midpoint="0.1684492">
151.19481 + <matte red="203" green="203" blue="204" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105624355" brightnessOffset="0.054901958" alphaOffset="0"/>
151.19482 + </stop>
151.19483 + <stop position="1.0" midpoint="0.5">
151.19484 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.19485 + </stop>
151.19486 + </gradient>
151.19487 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19488 + </rectangle>
151.19489 + <rectangle x1="2.0" x2="64.0" y1="2.0" y2="5.0" rounding="0.0">
151.19490 + <gradient cycleMethod="NO_CYCLE">
151.19491 + <stop position="0.0" midpoint="0.5">
151.19492 + <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
151.19493 + </stop>
151.19494 + <stop position="0.99147725" midpoint="0.5">
151.19495 + <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
151.19496 + </stop>
151.19497 + </gradient>
151.19498 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19499 + </rectangle>
151.19500 + <rectangle x1="0.6666666666666666" x2="63.91666666666666" y1="0.6666666666666666" y2="23.249999999999996" rounding="0.0">
151.19501 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.19502 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19503 + </rectangle>
151.19504 + </shapes>
151.19505 + <effects/>
151.19506 + </layer>
151.19507 + </canvas>
151.19508 + </state>
151.19509 + <state stateKeys="Selected">
151.19510 + <style>
151.19511 + <textForeground>
151.19512 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.19513 + </textForeground>
151.19514 + <textBackground/>
151.19515 + <background/>
151.19516 + <inherit-textForeground>false</inherit-textForeground>
151.19517 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.19518 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.19519 + <uiproperties/>
151.19520 + </style>
151.19521 + <canvas>
151.19522 + <size width="64" height="24"/>
151.19523 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.19524 + <stretchingInsets top="5" bottom="3" left="3" right="1"/>
151.19525 + <layer name="Layer 1">
151.19526 + <opacity>1.0</opacity>
151.19527 + <fillOpacity>1.0</fillOpacity>
151.19528 + <blendingMode>NORMAL</blendingMode>
151.19529 + <locked>false</locked>
151.19530 + <visible>true</visible>
151.19531 + <shapes>
151.19532 + <rectangle x1="3.0" x2="64.0" y1="5.0" y2="21.0" rounding="0.0">
151.19533 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.19534 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19535 + </rectangle>
151.19536 + <rectangle x1="2.0" x2="64.0" y1="5.0" y2="22.0" rounding="0.0">
151.19537 + <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
151.19538 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19539 + </rectangle>
151.19540 + <rectangle x1="3.0" x2="64.0" y1="3.0" y2="5.0" rounding="0.0">
151.19541 + <gradient cycleMethod="NO_CYCLE">
151.19542 + <stop position="0.0" midpoint="0.1684492">
151.19543 + <matte red="203" green="203" blue="204" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105624355" brightnessOffset="0.054901958" alphaOffset="0"/>
151.19544 + </stop>
151.19545 + <stop position="1.0" midpoint="0.5">
151.19546 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.19547 + </stop>
151.19548 + </gradient>
151.19549 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19550 + </rectangle>
151.19551 + <rectangle x1="2.0" x2="64.0" y1="2.0" y2="5.0" rounding="0.0">
151.19552 + <gradient cycleMethod="NO_CYCLE">
151.19553 + <stop position="0.0" midpoint="0.5">
151.19554 + <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
151.19555 + </stop>
151.19556 + <stop position="0.99147725" midpoint="0.5">
151.19557 + <matte red="196" green="196" blue="194" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.08" alphaOffset="0"/>
151.19558 + </stop>
151.19559 + </gradient>
151.19560 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19561 + </rectangle>
151.19562 + <rectangle x1="2.0" x2="64.0" y1="22.0" y2="23.0" rounding="0.0">
151.19563 + <matte red="0" green="0" blue="0" alpha="18" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.74509805" alphaOffset="-237"/>
151.19564 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19565 + </rectangle>
151.19566 + </shapes>
151.19567 + <effects/>
151.19568 + </layer>
151.19569 + </canvas>
151.19570 + </state>
151.19571 + <state stateKeys="Selected+Focused">
151.19572 + <style>
151.19573 + <textForeground>
151.19574 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.19575 + </textForeground>
151.19576 + <textBackground/>
151.19577 + <background/>
151.19578 + <inherit-textForeground>false</inherit-textForeground>
151.19579 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.19580 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.19581 + <uiproperties/>
151.19582 + </style>
151.19583 + <canvas>
151.19584 + <size width="64" height="24"/>
151.19585 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.19586 + <stretchingInsets top="5" bottom="3" left="3" right="1"/>
151.19587 + <layer name="Layer 1">
151.19588 + <opacity>1.0</opacity>
151.19589 + <fillOpacity>1.0</fillOpacity>
151.19590 + <blendingMode>NORMAL</blendingMode>
151.19591 + <locked>false</locked>
151.19592 + <visible>true</visible>
151.19593 + <shapes>
151.19594 + <rectangle x1="3.0" x2="64.0" y1="5.0" y2="21.0" rounding="0.0">
151.19595 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.19596 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19597 + </rectangle>
151.19598 + <rectangle x1="2.0" x2="64.0" y1="5.0" y2="22.0" rounding="0.0">
151.19599 + <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
151.19600 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19601 + </rectangle>
151.19602 + <rectangle x1="3.0" x2="64.0" y1="3.0" y2="5.0" rounding="0.0">
151.19603 + <gradient cycleMethod="NO_CYCLE">
151.19604 + <stop position="0.0" midpoint="0.1684492">
151.19605 + <matte red="203" green="203" blue="204" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105624355" brightnessOffset="0.054901958" alphaOffset="0"/>
151.19606 + </stop>
151.19607 + <stop position="1.0" midpoint="0.5">
151.19608 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.19609 + </stop>
151.19610 + </gradient>
151.19611 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19612 + </rectangle>
151.19613 + <rectangle x1="2.0" x2="64.0" y1="2.0" y2="5.0" rounding="0.0">
151.19614 + <gradient cycleMethod="NO_CYCLE">
151.19615 + <stop position="0.0" midpoint="0.5">
151.19616 + <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
151.19617 + </stop>
151.19618 + <stop position="0.99147725" midpoint="0.5">
151.19619 + <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
151.19620 + </stop>
151.19621 + </gradient>
151.19622 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19623 + </rectangle>
151.19624 + <rectangle x1="0.6666666666666666" x2="63.91666666666666" y1="0.6666666666666666" y2="23.249999999999996" rounding="0.0">
151.19625 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.19626 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19627 + </rectangle>
151.19628 + </shapes>
151.19629 + <effects/>
151.19630 + </layer>
151.19631 + </canvas>
151.19632 + </state>
151.19633 + </backgroundStates>
151.19634 + <foregroundStates/>
151.19635 + <borderStates/>
151.19636 + <regions/>
151.19637 + </uiComponent>
151.19638 + <uiComponent opaque="false" componentName="Spinner.previousButton" type="javax.swing.plaf.synth.SynthArrowButton" name="ArrowButton" ui="SynthArrowButtonUI" subregion="true">
151.19639 + <stateTypes/>
151.19640 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.19641 + <style>
151.19642 + <textForeground/>
151.19643 + <textBackground/>
151.19644 + <background/>
151.19645 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.19646 + <uiproperties>
151.19647 + <uiProperty name="size" type="INT" value="20"/>
151.19648 + </uiproperties>
151.19649 + </style>
151.19650 + <backgroundStates>
151.19651 + <state stateKeys="Disabled">
151.19652 + <style>
151.19653 + <textForeground/>
151.19654 + <textBackground/>
151.19655 + <background/>
151.19656 + <uiproperties/>
151.19657 + </style>
151.19658 + <canvas>
151.19659 + <size width="20" height="12"/>
151.19660 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.19661 + <stretchingInsets top="0" bottom="6" left="1" right="7"/>
151.19662 + <layer name="Layer 1">
151.19663 + <opacity>1.0</opacity>
151.19664 + <fillOpacity>1.0</fillOpacity>
151.19665 + <blendingMode>NORMAL</blendingMode>
151.19666 + <locked>false</locked>
151.19667 + <visible>true</visible>
151.19668 + <shapes>
151.19669 + <path>
151.19670 + <gradient cycleMethod="NO_CYCLE">
151.19671 + <stop position="0.0" midpoint="0.5">
151.19672 + <matte red="212" green="217" blue="224" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.018570602" saturationOffset="-0.5821429" brightnessOffset="0.32941175" alphaOffset="0"/>
151.19673 + </stop>
151.19674 + <stop position="0.11497326" midpoint="0.5">
151.19675 + <matte red="204" green="210" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56722116" brightnessOffset="0.3098039" alphaOffset="0"/>
151.19676 + </stop>
151.19677 + <stop position="1.0" midpoint="0.5">
151.19678 + <matte red="206" green="212" blue="221" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.567841" brightnessOffset="0.31764704" alphaOffset="0"/>
151.19679 + </stop>
151.19680 + </gradient>
151.19681 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19682 + <points>
151.19683 + <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
151.19684 + <point x="1.0" y="9.0" cp1x="1.0" cp1y="9.0" cp2x="1.0" cp2y="9.0"/>
151.19685 + <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="16.0" cp2y="9.0"/>
151.19686 + <point x="17.0" y="6.0" cp1x="17.0" cp1y="7.0" cp2x="17.0" cp2y="6.0"/>
151.19687 + <point x="17.0" y="0.0" cp1x="17.0" cp1y="0.0" cp2x="17.0" cp2y="0.0"/>
151.19688 + </points>
151.19689 + </path>
151.19690 + <path>
151.19691 + <gradient cycleMethod="NO_CYCLE">
151.19692 + <stop position="0.0" midpoint="0.5">
151.19693 + <matte red="184" green="191" blue="200" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.015098333" saturationOffset="-0.5557143" brightnessOffset="0.2352941" alphaOffset="0"/>
151.19694 + </stop>
151.19695 + <stop position="1.0" midpoint="0.5">
151.19696 + <matte red="178" green="185" blue="193" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.010237217" saturationOffset="-0.55799407" brightnessOffset="0.20784312" alphaOffset="0"/>
151.19697 + </stop>
151.19698 + </gradient>
151.19699 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19700 + <points>
151.19701 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.19702 + <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
151.19703 + <point x="14.0" y="10.0" cp1x="14.0" cp1y="10.0" cp2x="17.0" cp2y="10.0"/>
151.19704 + <point x="18.0" y="6.0" cp1x="18.0" cp1y="8.0" cp2x="18.0" cp2y="6.0"/>
151.19705 + <point x="18.0" y="0.0" cp1x="18.0" cp1y="0.0" cp2x="18.0" cp2y="0.0"/>
151.19706 + </points>
151.19707 + </path>
151.19708 + </shapes>
151.19709 + <effects/>
151.19710 + </layer>
151.19711 + <templateLayer fileName="113a3d47f23.png">
151.19712 + <layer name="Template" type="template">
151.19713 + <opacity>1.0</opacity>
151.19714 + <fillOpacity>1.0</fillOpacity>
151.19715 + <blendingMode>NORMAL</blendingMode>
151.19716 + <locked>false</locked>
151.19717 + <visible>false</visible>
151.19718 + <shapes/>
151.19719 + <effects/>
151.19720 + </layer>
151.19721 + </templateLayer>
151.19722 + </canvas>
151.19723 + </state>
151.19724 + <state stateKeys="Enabled">
151.19725 + <style>
151.19726 + <textForeground/>
151.19727 + <textBackground/>
151.19728 + <background/>
151.19729 + <uiproperties/>
151.19730 + </style>
151.19731 + <canvas>
151.19732 + <size width="20" height="12"/>
151.19733 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.19734 + <stretchingInsets top="0" bottom="6" left="1" right="7"/>
151.19735 + <layer name="Layer 1">
151.19736 + <opacity>1.0</opacity>
151.19737 + <fillOpacity>1.0</fillOpacity>
151.19738 + <blendingMode>NORMAL</blendingMode>
151.19739 + <locked>false</locked>
151.19740 + <visible>true</visible>
151.19741 + <shapes>
151.19742 + <path>
151.19743 + <gradient cycleMethod="NO_CYCLE">
151.19744 + <stop position="0.0" midpoint="0.5">
151.19745 + <matte red="204" green="215" blue="226" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.5383692" brightnessOffset="0.33725488" alphaOffset="0"/>
151.19746 + </stop>
151.19747 + <stop position="0.11497326" midpoint="0.5">
151.19748 + <matte red="165" green="186" blue="204" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.44453782" brightnessOffset="0.25098038" alphaOffset="0"/>
151.19749 + </stop>
151.19750 + <stop position="0.36898395" midpoint="0.5">
151.19751 + <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
151.19752 + </stop>
151.19753 + <stop position="1.0" midpoint="0.5">
151.19754 + <matte red="191" green="212" blue="231" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4625541" brightnessOffset="0.35686272" alphaOffset="0"/>
151.19755 + </stop>
151.19756 + </gradient>
151.19757 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19758 + <points>
151.19759 + <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
151.19760 + <point x="1.0" y="9.0" cp1x="1.0" cp1y="9.0" cp2x="1.0" cp2y="9.0"/>
151.19761 + <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="16.0" cp2y="9.0"/>
151.19762 + <point x="17.0" y="6.0" cp1x="17.0" cp1y="7.0" cp2x="17.0" cp2y="6.0"/>
151.19763 + <point x="17.0" y="0.0" cp1x="17.0" cp1y="0.0" cp2x="17.0" cp2y="0.0"/>
151.19764 + </points>
151.19765 + </path>
151.19766 + <path>
151.19767 + <gradient cycleMethod="NO_CYCLE">
151.19768 + <stop position="0.0" midpoint="0.5">
151.19769 + <matte red="66" green="87" blue="106" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.2583558" brightnessOffset="-0.13333336" alphaOffset="0"/>
151.19770 + </stop>
151.19771 + <stop position="1.0" midpoint="0.5">
151.19772 + <matte red="34" green="55" blue="74" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.095173776" brightnessOffset="-0.25882354" alphaOffset="0"/>
151.19773 + </stop>
151.19774 + </gradient>
151.19775 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19776 + <points>
151.19777 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.19778 + <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
151.19779 + <point x="14.0" y="10.0" cp1x="14.0" cp1y="10.0" cp2x="17.0" cp2y="10.0"/>
151.19780 + <point x="18.0" y="6.0" cp1x="18.0" cp1y="8.0" cp2x="18.0" cp2y="6.0"/>
151.19781 + <point x="18.0" y="0.0" cp1x="18.0" cp1y="0.0" cp2x="18.0" cp2y="0.0"/>
151.19782 + </points>
151.19783 + </path>
151.19784 + <path>
151.19785 + <matte red="100" green="104" blue="112" alpha="107" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.0033834577" brightnessOffset="-0.30588236" alphaOffset="-148"/>
151.19786 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19787 + <points>
151.19788 + <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
151.19789 + <point x="0.0" y="11.0" cp1x="0.0" cp1y="11.0" cp2x="0.0" cp2y="11.0"/>
151.19790 + <point x="13.227272727272727" y="11.0" cp1x="13.227272727272727" cp1y="11.0" cp2x="15.340909090909106" cp2y="11.0"/>
151.19791 + <point x="18.0" y="6.0" cp1x="18.0" cp1y="9.0" cp2x="18.0" cp2y="6.0"/>
151.19792 + </points>
151.19793 + </path>
151.19794 + </shapes>
151.19795 + <effects/>
151.19796 + </layer>
151.19797 + <templateLayer fileName="113a3b7c40b.png">
151.19798 + <layer name="Template" type="template">
151.19799 + <opacity>1.0</opacity>
151.19800 + <fillOpacity>1.0</fillOpacity>
151.19801 + <blendingMode>NORMAL</blendingMode>
151.19802 + <locked>false</locked>
151.19803 + <visible>false</visible>
151.19804 + <shapes/>
151.19805 + <effects/>
151.19806 + </layer>
151.19807 + </templateLayer>
151.19808 + </canvas>
151.19809 + </state>
151.19810 + <state stateKeys="Focused">
151.19811 + <style>
151.19812 + <textForeground/>
151.19813 + <textBackground/>
151.19814 + <background/>
151.19815 + <uiproperties/>
151.19816 + </style>
151.19817 + <canvas>
151.19818 + <size width="20" height="12"/>
151.19819 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.19820 + <stretchingInsets top="0" bottom="6" left="1" right="7"/>
151.19821 + <layer name="Layer 1">
151.19822 + <opacity>1.0</opacity>
151.19823 + <fillOpacity>1.0</fillOpacity>
151.19824 + <blendingMode>NORMAL</blendingMode>
151.19825 + <locked>false</locked>
151.19826 + <visible>true</visible>
151.19827 + <shapes>
151.19828 + <path>
151.19829 + <gradient cycleMethod="NO_CYCLE">
151.19830 + <stop position="0.0" midpoint="0.5">
151.19831 + <matte red="204" green="215" blue="226" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.5383692" brightnessOffset="0.33725488" alphaOffset="0"/>
151.19832 + </stop>
151.19833 + <stop position="0.11497326" midpoint="0.5">
151.19834 + <matte red="165" green="186" blue="204" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.44453782" brightnessOffset="0.25098038" alphaOffset="0"/>
151.19835 + </stop>
151.19836 + <stop position="0.36898395" midpoint="0.5">
151.19837 + <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
151.19838 + </stop>
151.19839 + <stop position="1.0" midpoint="0.5">
151.19840 + <matte red="191" green="212" blue="231" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4625541" brightnessOffset="0.35686272" alphaOffset="0"/>
151.19841 + </stop>
151.19842 + </gradient>
151.19843 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19844 + <points>
151.19845 + <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
151.19846 + <point x="1.0" y="9.0" cp1x="1.0" cp1y="9.0" cp2x="1.0" cp2y="9.0"/>
151.19847 + <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="16.0" cp2y="9.0"/>
151.19848 + <point x="17.0" y="6.0" cp1x="17.0" cp1y="7.0" cp2x="17.0" cp2y="6.0"/>
151.19849 + <point x="17.0" y="0.0" cp1x="17.0" cp1y="0.0" cp2x="17.0" cp2y="0.0"/>
151.19850 + </points>
151.19851 + </path>
151.19852 + <path>
151.19853 + <gradient cycleMethod="NO_CYCLE">
151.19854 + <stop position="0.0" midpoint="0.5">
151.19855 + <matte red="66" green="87" blue="106" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.2583558" brightnessOffset="-0.13333336" alphaOffset="0"/>
151.19856 + </stop>
151.19857 + <stop position="1.0" midpoint="0.5">
151.19858 + <matte red="34" green="55" blue="74" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.095173776" brightnessOffset="-0.25882354" alphaOffset="0"/>
151.19859 + </stop>
151.19860 + </gradient>
151.19861 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19862 + <points>
151.19863 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.19864 + <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
151.19865 + <point x="14.0" y="10.0" cp1x="14.0" cp1y="10.0" cp2x="17.0" cp2y="10.0"/>
151.19866 + <point x="18.0" y="6.0" cp1x="18.0" cp1y="8.0" cp2x="18.0" cp2y="6.0"/>
151.19867 + <point x="18.0" y="0.0" cp1x="18.0" cp1y="0.0" cp2x="18.0" cp2y="0.0"/>
151.19868 + </points>
151.19869 + </path>
151.19870 + <path>
151.19871 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.19872 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19873 + <points>
151.19874 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.19875 + <point x="0.0" y="11.4" cp1x="0.0" cp1y="11.4" cp2x="0.0" cp2y="11.4"/>
151.19876 + <point x="14.4" y="11.4" cp1x="14.4" cp1y="11.4" cp2x="17.4" cp2y="11.4"/>
151.19877 + <point x="19.4" y="7.4" cp1x="19.4" cp1y="10.4" cp2x="19.4" cp2y="7.4"/>
151.19878 + <point x="19.4" y="0.0" cp1x="19.4" cp1y="0.0" cp2x="19.4" cp2y="0.0"/>
151.19879 + </points>
151.19880 + </path>
151.19881 + </shapes>
151.19882 + <effects/>
151.19883 + </layer>
151.19884 + </canvas>
151.19885 + </state>
151.19886 + <state stateKeys="MouseOver+Focused">
151.19887 + <style>
151.19888 + <textForeground/>
151.19889 + <textBackground/>
151.19890 + <background/>
151.19891 + <uiproperties/>
151.19892 + </style>
151.19893 + <canvas>
151.19894 + <size width="20" height="12"/>
151.19895 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.19896 + <stretchingInsets top="3" bottom="6" left="1" right="7"/>
151.19897 + <layer name="Layer 1">
151.19898 + <opacity>1.0</opacity>
151.19899 + <fillOpacity>1.0</fillOpacity>
151.19900 + <blendingMode>NORMAL</blendingMode>
151.19901 + <locked>false</locked>
151.19902 + <visible>true</visible>
151.19903 + <shapes>
151.19904 + <path>
151.19905 + <gradient cycleMethod="NO_CYCLE">
151.19906 + <stop position="0.0" midpoint="0.5">
151.19907 + <matte red="221" green="233" blue="244" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0010585189" saturationOffset="-0.541452" brightnessOffset="0.4078431" alphaOffset="0"/>
151.19908 + </stop>
151.19909 + <stop position="0.11497326" midpoint="0.5">
151.19910 + <matte red="184" green="204" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.00254488" saturationOffset="-0.4608264" brightnessOffset="0.32549018" alphaOffset="0"/>
151.19911 + </stop>
151.19912 + <stop position="0.36898395" midpoint="0.5">
151.19913 + <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
151.19914 + </stop>
151.19915 + <stop position="1.0" midpoint="0.5">
151.19916 + <matte red="210" green="231" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4757143" brightnessOffset="0.43137252" alphaOffset="0"/>
151.19917 + </stop>
151.19918 + </gradient>
151.19919 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19920 + <points>
151.19921 + <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
151.19922 + <point x="1.0" y="9.0" cp1x="1.0" cp1y="9.0" cp2x="1.0" cp2y="9.0"/>
151.19923 + <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="16.0" cp2y="9.0"/>
151.19924 + <point x="17.0" y="6.0" cp1x="17.0" cp1y="7.0" cp2x="17.0" cp2y="6.0"/>
151.19925 + <point x="17.0" y="0.0" cp1x="17.0" cp1y="0.0" cp2x="17.0" cp2y="0.0"/>
151.19926 + </points>
151.19927 + </path>
151.19928 + <path>
151.19929 + <gradient cycleMethod="NO_CYCLE">
151.19930 + <stop position="0.0" midpoint="0.5">
151.19931 + <matte red="19" green="45" blue="69" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="0.088923395" brightnessOffset="-0.2784314" alphaOffset="0"/>
151.19932 + </stop>
151.19933 + <stop position="1.0" midpoint="0.5">
151.19934 + <matte red="0" green="5" blue="29" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.059279382" saturationOffset="0.3642857" brightnessOffset="-0.43529415" alphaOffset="0"/>
151.19935 + </stop>
151.19936 + </gradient>
151.19937 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19938 + <points>
151.19939 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.19940 + <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
151.19941 + <point x="14.0" y="10.0" cp1x="14.0" cp1y="10.0" cp2x="17.0" cp2y="10.0"/>
151.19942 + <point x="18.0" y="6.0" cp1x="18.0" cp1y="8.0" cp2x="18.0" cp2y="6.0"/>
151.19943 + <point x="18.0" y="0.0" cp1x="18.0" cp1y="0.0" cp2x="18.0" cp2y="0.0"/>
151.19944 + </points>
151.19945 + </path>
151.19946 + <path>
151.19947 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.19948 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.19949 + <points>
151.19950 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.19951 + <point x="0.0" y="11.4" cp1x="0.0" cp1y="11.4" cp2x="0.0" cp2y="11.4"/>
151.19952 + <point x="14.4" y="11.4" cp1x="14.4" cp1y="11.4" cp2x="17.4" cp2y="11.4"/>
151.19953 + <point x="19.4" y="7.4" cp1x="19.4" cp1y="10.4" cp2x="19.4" cp2y="7.4"/>
151.19954 + <point x="19.4" y="0.0" cp1x="19.4" cp1y="0.0" cp2x="19.4" cp2y="0.0"/>
151.19955 + </points>
151.19956 + </path>
151.19957 + </shapes>
151.19958 + <effects/>
151.19959 + </layer>
151.19960 + </canvas>
151.19961 + </state>
151.19962 + <state stateKeys="Pressed+Focused">
151.19963 + <style>
151.19964 + <textForeground/>
151.19965 + <textBackground/>
151.19966 + <background/>
151.19967 + <uiproperties/>
151.19968 + </style>
151.19969 + <canvas>
151.19970 + <size width="20" height="12"/>
151.19971 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.19972 + <stretchingInsets top="0" bottom="6" left="1" right="7"/>
151.19973 + <layer name="Layer 1">
151.19974 + <opacity>1.0</opacity>
151.19975 + <fillOpacity>1.0</fillOpacity>
151.19976 + <blendingMode>NORMAL</blendingMode>
151.19977 + <locked>false</locked>
151.19978 + <visible>true</visible>
151.19979 + <shapes>
151.19980 + <path>
151.19981 + <gradient cycleMethod="NO_CYCLE">
151.19982 + <stop position="0.0" midpoint="0.5">
151.19983 + <matte red="107" green="141" blue="172" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.354783E-4" saturationOffset="-0.2578073" brightnessOffset="0.12549019" alphaOffset="0"/>
151.19984 + </stop>
151.19985 + <stop position="0.11497326" midpoint="0.5">
151.19986 + <matte red="54" green="100" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.01599598" brightnessOffset="0.007843137" alphaOffset="0"/>
151.19987 + </stop>
151.19988 + <stop position="0.36898395" midpoint="0.5">
151.19989 + <matte red="53" green="100" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.00895375" brightnessOffset="0.007843137" alphaOffset="0"/>
151.19990 + </stop>
151.19991 + <stop position="1.0" midpoint="0.5">
151.19992 + <matte red="89" green="135" blue="177" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.13853917" brightnessOffset="0.14509803" alphaOffset="0"/>
151.19993 + </stop>
151.19994 + </gradient>
151.19995 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.19996 + <points>
151.19997 + <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
151.19998 + <point x="1.0" y="9.0" cp1x="1.0" cp1y="9.0" cp2x="1.0" cp2y="9.0"/>
151.19999 + <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="16.0" cp2y="9.0"/>
151.20000 + <point x="17.0" y="6.0" cp1x="17.0" cp1y="7.0" cp2x="17.0" cp2y="6.0"/>
151.20001 + <point x="17.0" y="0.0" cp1x="17.0" cp1y="0.0" cp2x="17.0" cp2y="0.0"/>
151.20002 + </points>
151.20003 + </path>
151.20004 + <path>
151.20005 + <gradient cycleMethod="NO_CYCLE">
151.20006 + <stop position="0.0" midpoint="0.5">
151.20007 + <matte red="0" green="5" blue="31" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.061133325" saturationOffset="0.3642857" brightnessOffset="-0.427451" alphaOffset="0"/>
151.20008 + </stop>
151.20009 + <stop position="1.0" midpoint="0.5">
151.20010 + <matte red="28" green="56" blue="81" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.018606722" brightnessOffset="-0.23137257" alphaOffset="0"/>
151.20011 + </stop>
151.20012 + </gradient>
151.20013 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.20014 + <points>
151.20015 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.20016 + <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
151.20017 + <point x="14.0" y="10.0" cp1x="14.0" cp1y="10.0" cp2x="17.0" cp2y="10.0"/>
151.20018 + <point x="18.0" y="6.0" cp1x="18.0" cp1y="8.0" cp2x="18.0" cp2y="6.0"/>
151.20019 + <point x="18.0" y="0.0" cp1x="18.0" cp1y="0.0" cp2x="18.0" cp2y="0.0"/>
151.20020 + </points>
151.20021 + </path>
151.20022 + <path>
151.20023 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.20024 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.20025 + <points>
151.20026 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.20027 + <point x="0.0" y="11.4" cp1x="0.0" cp1y="11.4" cp2x="0.0" cp2y="11.4"/>
151.20028 + <point x="14.4" y="11.4" cp1x="14.4" cp1y="11.4" cp2x="17.4" cp2y="11.4"/>
151.20029 + <point x="19.4" y="7.4" cp1x="19.4" cp1y="10.4" cp2x="19.4" cp2y="7.4"/>
151.20030 + <point x="19.4" y="0.0" cp1x="19.4" cp1y="0.0" cp2x="19.4" cp2y="0.0"/>
151.20031 + </points>
151.20032 + </path>
151.20033 + </shapes>
151.20034 + <effects/>
151.20035 + </layer>
151.20036 + </canvas>
151.20037 + </state>
151.20038 + <state stateKeys="MouseOver">
151.20039 + <style>
151.20040 + <textForeground/>
151.20041 + <textBackground/>
151.20042 + <background/>
151.20043 + <uiproperties/>
151.20044 + </style>
151.20045 + <canvas>
151.20046 + <size width="20" height="12"/>
151.20047 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.20048 + <stretchingInsets top="0" bottom="6" left="1" right="7"/>
151.20049 + <layer name="Layer 1">
151.20050 + <opacity>1.0</opacity>
151.20051 + <fillOpacity>1.0</fillOpacity>
151.20052 + <blendingMode>NORMAL</blendingMode>
151.20053 + <locked>false</locked>
151.20054 + <visible>true</visible>
151.20055 + <shapes>
151.20056 + <path>
151.20057 + <gradient cycleMethod="NO_CYCLE">
151.20058 + <stop position="0.0" midpoint="0.5">
151.20059 + <matte red="221" green="233" blue="244" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0010585189" saturationOffset="-0.541452" brightnessOffset="0.4078431" alphaOffset="0"/>
151.20060 + </stop>
151.20061 + <stop position="0.11497326" midpoint="0.5">
151.20062 + <matte red="184" green="204" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.00254488" saturationOffset="-0.4608264" brightnessOffset="0.32549018" alphaOffset="0"/>
151.20063 + </stop>
151.20064 + <stop position="0.36898395" midpoint="0.5">
151.20065 + <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
151.20066 + </stop>
151.20067 + <stop position="1.0" midpoint="0.5">
151.20068 + <matte red="210" green="231" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4757143" brightnessOffset="0.43137252" alphaOffset="0"/>
151.20069 + </stop>
151.20070 + </gradient>
151.20071 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.20072 + <points>
151.20073 + <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
151.20074 + <point x="1.0" y="9.0" cp1x="1.0" cp1y="9.0" cp2x="1.0" cp2y="9.0"/>
151.20075 + <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="16.0" cp2y="9.0"/>
151.20076 + <point x="17.0" y="6.0" cp1x="17.0" cp1y="7.0" cp2x="17.0" cp2y="6.0"/>
151.20077 + <point x="17.0" y="0.0" cp1x="17.0" cp1y="0.0" cp2x="17.0" cp2y="0.0"/>
151.20078 + </points>
151.20079 + </path>
151.20080 + <path>
151.20081 + <gradient cycleMethod="NO_CYCLE">
151.20082 + <stop position="0.0" midpoint="0.5">
151.20083 + <matte red="19" green="45" blue="69" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="0.088923395" brightnessOffset="-0.2784314" alphaOffset="0"/>
151.20084 + </stop>
151.20085 + <stop position="1.0" midpoint="0.5">
151.20086 + <matte red="0" green="5" blue="29" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.059279382" saturationOffset="0.3642857" brightnessOffset="-0.43529415" alphaOffset="0"/>
151.20087 + </stop>
151.20088 + </gradient>
151.20089 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.20090 + <points>
151.20091 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.20092 + <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
151.20093 + <point x="14.0" y="10.0" cp1x="14.0" cp1y="10.0" cp2x="17.0" cp2y="10.0"/>
151.20094 + <point x="18.0" y="6.0" cp1x="18.0" cp1y="8.0" cp2x="18.0" cp2y="6.0"/>
151.20095 + <point x="18.0" y="0.0" cp1x="18.0" cp1y="0.0" cp2x="18.0" cp2y="0.0"/>
151.20096 + </points>
151.20097 + </path>
151.20098 + <path>
151.20099 + <matte red="28" green="28" blue="28" alpha="76" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.63529414" alphaOffset="-179"/>
151.20100 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.20101 + <points>
151.20102 + <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
151.20103 + <point x="0.0" y="11.0" cp1x="0.0" cp1y="11.0" cp2x="0.0" cp2y="11.0"/>
151.20104 + <point x="13.227272727272727" y="11.0" cp1x="13.227272727272727" cp1y="11.0" cp2x="15.340909090909106" cp2y="11.0"/>
151.20105 + <point x="18.0" y="6.0" cp1x="18.0" cp1y="9.0" cp2x="18.0" cp2y="6.0"/>
151.20106 + </points>
151.20107 + </path>
151.20108 + </shapes>
151.20109 + <effects/>
151.20110 + </layer>
151.20111 + <templateLayer fileName="113a3d6c675.png">
151.20112 + <layer name="Template" type="template">
151.20113 + <opacity>1.0</opacity>
151.20114 + <fillOpacity>1.0</fillOpacity>
151.20115 + <blendingMode>NORMAL</blendingMode>
151.20116 + <locked>false</locked>
151.20117 + <visible>false</visible>
151.20118 + <shapes/>
151.20119 + <effects/>
151.20120 + </layer>
151.20121 + </templateLayer>
151.20122 + </canvas>
151.20123 + </state>
151.20124 + <state stateKeys="Pressed">
151.20125 + <style>
151.20126 + <textForeground/>
151.20127 + <textBackground/>
151.20128 + <background/>
151.20129 + <uiproperties/>
151.20130 + </style>
151.20131 + <canvas>
151.20132 + <size width="20" height="12"/>
151.20133 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.20134 + <stretchingInsets top="0" bottom="6" left="1" right="7"/>
151.20135 + <layer name="Layer 1">
151.20136 + <opacity>1.0</opacity>
151.20137 + <fillOpacity>1.0</fillOpacity>
151.20138 + <blendingMode>NORMAL</blendingMode>
151.20139 + <locked>false</locked>
151.20140 + <visible>true</visible>
151.20141 + <shapes>
151.20142 + <path>
151.20143 + <gradient cycleMethod="NO_CYCLE">
151.20144 + <stop position="0.0" midpoint="0.5">
151.20145 + <matte red="107" green="141" blue="172" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.354783E-4" saturationOffset="-0.2578073" brightnessOffset="0.12549019" alphaOffset="0"/>
151.20146 + </stop>
151.20147 + <stop position="0.11497326" midpoint="0.5">
151.20148 + <matte red="54" green="100" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.01599598" brightnessOffset="0.007843137" alphaOffset="0"/>
151.20149 + </stop>
151.20150 + <stop position="0.36898395" midpoint="0.5">
151.20151 + <matte red="53" green="100" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.00895375" brightnessOffset="0.007843137" alphaOffset="0"/>
151.20152 + </stop>
151.20153 + <stop position="1.0" midpoint="0.5">
151.20154 + <matte red="89" green="135" blue="177" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="8.9377165E-4" saturationOffset="-0.13853917" brightnessOffset="0.14509803" alphaOffset="0"/>
151.20155 + </stop>
151.20156 + </gradient>
151.20157 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.20158 + <points>
151.20159 + <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
151.20160 + <point x="1.0" y="9.0" cp1x="1.0" cp1y="9.0" cp2x="1.0" cp2y="9.0"/>
151.20161 + <point x="14.0" y="9.0" cp1x="14.0" cp1y="9.0" cp2x="16.0" cp2y="9.0"/>
151.20162 + <point x="17.0" y="6.0" cp1x="17.0" cp1y="7.0" cp2x="17.0" cp2y="6.0"/>
151.20163 + <point x="17.0" y="0.0" cp1x="17.0" cp1y="0.0" cp2x="17.0" cp2y="0.0"/>
151.20164 + </points>
151.20165 + </path>
151.20166 + <path>
151.20167 + <gradient cycleMethod="NO_CYCLE">
151.20168 + <stop position="0.0" midpoint="0.5">
151.20169 + <matte red="0" green="5" blue="31" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.061133325" saturationOffset="0.3642857" brightnessOffset="-0.427451" alphaOffset="0"/>
151.20170 + </stop>
151.20171 + <stop position="1.0" midpoint="0.5">
151.20172 + <matte red="28" green="56" blue="81" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-3.528595E-5" saturationOffset="0.018606722" brightnessOffset="-0.23137257" alphaOffset="0"/>
151.20173 + </stop>
151.20174 + </gradient>
151.20175 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.20176 + <points>
151.20177 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.20178 + <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
151.20179 + <point x="14.0" y="10.0" cp1x="14.0" cp1y="10.0" cp2x="17.0" cp2y="10.0"/>
151.20180 + <point x="18.0" y="6.0" cp1x="18.0" cp1y="8.0" cp2x="18.0" cp2y="6.0"/>
151.20181 + <point x="18.0" y="0.0" cp1x="18.0" cp1y="0.0" cp2x="18.0" cp2y="0.0"/>
151.20182 + </points>
151.20183 + </path>
151.20184 + <path>
151.20185 + <matte red="255" green="255" blue="255" alpha="69" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-186"/>
151.20186 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.20187 + <points>
151.20188 + <point x="0.0" y="10.0" cp1x="0.0" cp1y="10.0" cp2x="0.0" cp2y="10.0"/>
151.20189 + <point x="0.0" y="11.0" cp1x="0.0" cp1y="11.0" cp2x="0.0" cp2y="11.0"/>
151.20190 + <point x="13.227272727272727" y="11.0" cp1x="11.113636363636347" cp1y="11.0" cp2x="15.340909090909106" cp2y="11.0"/>
151.20191 + <point x="18.0" y="6.0" cp1x="18.0" cp1y="9.0" cp2x="18.0" cp2y="6.0"/>
151.20192 + </points>
151.20193 + </path>
151.20194 + </shapes>
151.20195 + <effects/>
151.20196 + </layer>
151.20197 + <templateLayer fileName="113a3d7e1c5.png">
151.20198 + <layer name="Template" type="template">
151.20199 + <opacity>1.0</opacity>
151.20200 + <fillOpacity>1.0</fillOpacity>
151.20201 + <blendingMode>NORMAL</blendingMode>
151.20202 + <locked>false</locked>
151.20203 + <visible>false</visible>
151.20204 + <shapes/>
151.20205 + <effects/>
151.20206 + </layer>
151.20207 + </templateLayer>
151.20208 + </canvas>
151.20209 + </state>
151.20210 + </backgroundStates>
151.20211 + <foregroundStates>
151.20212 + <state stateKeys="Disabled" inverted="true">
151.20213 + <style>
151.20214 + <textForeground/>
151.20215 + <textBackground/>
151.20216 + <background/>
151.20217 + <uiproperties/>
151.20218 + </style>
151.20219 + <canvas>
151.20220 + <size width="20" height="12"/>
151.20221 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.20222 + <stretchingInsets top="3" bottom="5" left="6" right="9"/>
151.20223 + <layer name="Layer 1">
151.20224 + <opacity>1.0</opacity>
151.20225 + <fillOpacity>1.0</fillOpacity>
151.20226 + <blendingMode>NORMAL</blendingMode>
151.20227 + <locked>false</locked>
151.20228 + <visible>true</visible>
151.20229 + <shapes>
151.20230 + <path>
151.20231 + <matte red="163" green="168" blue="175" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.018570602" saturationOffset="-0.56714284" brightnessOffset="0.1372549" alphaOffset="0"/>
151.20232 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.20233 + <points>
151.20234 + <point x="6.0" y="3.0" cp1x="6.0" cp1y="3.0" cp2x="6.0" cp2y="3.0"/>
151.20235 + <point x="8.522727272727263" y="6.9772727272727275" cp1x="8.522727272727263" cp1y="6.9772727272727275" cp2x="8.522727272727263" cp2y="6.9772727272727275"/>
151.20236 + <point x="11.0" y="3.0" cp1x="11.0" cp1y="3.0" cp2x="11.0" cp2y="3.0"/>
151.20237 + </points>
151.20238 + </path>
151.20239 + </shapes>
151.20240 + <effects/>
151.20241 + </layer>
151.20242 + </canvas>
151.20243 + </state>
151.20244 + <state stateKeys="Enabled" inverted="true">
151.20245 + <style>
151.20246 + <textForeground/>
151.20247 + <textBackground/>
151.20248 + <background/>
151.20249 + <uiproperties/>
151.20250 + </style>
151.20251 + <canvas>
151.20252 + <size width="20" height="12"/>
151.20253 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.20254 + <stretchingInsets top="3" bottom="5" left="6" right="9"/>
151.20255 + <layer name="Layer 1">
151.20256 + <opacity>1.0</opacity>
151.20257 + <fillOpacity>1.0</fillOpacity>
151.20258 + <blendingMode>NORMAL</blendingMode>
151.20259 + <locked>false</locked>
151.20260 + <visible>true</visible>
151.20261 + <shapes>
151.20262 + <path>
151.20263 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.20264 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.20265 + <points>
151.20266 + <point x="6.0" y="3.0" cp1x="6.0" cp1y="3.0" cp2x="6.0" cp2y="3.0"/>
151.20267 + <point x="8.522727272727263" y="6.9772727272727275" cp1x="8.522727272727263" cp1y="6.9772727272727275" cp2x="8.522727272727263" cp2y="6.9772727272727275"/>
151.20268 + <point x="11.0" y="3.0" cp1x="11.0" cp1y="3.0" cp2x="11.0" cp2y="3.0"/>
151.20269 + </points>
151.20270 + </path>
151.20271 + </shapes>
151.20272 + <effects/>
151.20273 + </layer>
151.20274 + </canvas>
151.20275 + </state>
151.20276 + <state stateKeys="Focused" inverted="true">
151.20277 + <style>
151.20278 + <textForeground/>
151.20279 + <textBackground/>
151.20280 + <background/>
151.20281 + <uiproperties/>
151.20282 + </style>
151.20283 + <canvas>
151.20284 + <size width="20" height="12"/>
151.20285 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.20286 + <stretchingInsets top="3" bottom="5" left="6" right="9"/>
151.20287 + <layer name="Layer 1">
151.20288 + <opacity>1.0</opacity>
151.20289 + <fillOpacity>1.0</fillOpacity>
151.20290 + <blendingMode>NORMAL</blendingMode>
151.20291 + <locked>false</locked>
151.20292 + <visible>true</visible>
151.20293 + <shapes>
151.20294 + <path>
151.20295 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.20296 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.20297 + <points>
151.20298 + <point x="6.0" y="3.0" cp1x="6.0" cp1y="3.0" cp2x="6.0" cp2y="3.0"/>
151.20299 + <point x="8.522727272727263" y="6.9772727272727275" cp1x="8.522727272727263" cp1y="6.9772727272727275" cp2x="8.522727272727263" cp2y="6.9772727272727275"/>
151.20300 + <point x="11.0" y="3.0" cp1x="11.0" cp1y="3.0" cp2x="11.0" cp2y="3.0"/>
151.20301 + </points>
151.20302 + </path>
151.20303 + </shapes>
151.20304 + <effects/>
151.20305 + </layer>
151.20306 + </canvas>
151.20307 + </state>
151.20308 + <state stateKeys="MouseOver+Focused" inverted="true">
151.20309 + <style>
151.20310 + <textForeground/>
151.20311 + <textBackground/>
151.20312 + <background/>
151.20313 + <uiproperties/>
151.20314 + </style>
151.20315 + <canvas>
151.20316 + <size width="20" height="12"/>
151.20317 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.20318 + <stretchingInsets top="3" bottom="5" left="6" right="9"/>
151.20319 + <layer name="Layer 1">
151.20320 + <opacity>1.0</opacity>
151.20321 + <fillOpacity>1.0</fillOpacity>
151.20322 + <blendingMode>NORMAL</blendingMode>
151.20323 + <locked>false</locked>
151.20324 + <visible>true</visible>
151.20325 + <shapes>
151.20326 + <path>
151.20327 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.20328 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.20329 + <points>
151.20330 + <point x="6.0" y="3.0" cp1x="6.0" cp1y="3.0" cp2x="6.0" cp2y="3.0"/>
151.20331 + <point x="8.522727272727263" y="6.9772727272727275" cp1x="8.522727272727263" cp1y="6.9772727272727275" cp2x="8.522727272727263" cp2y="6.9772727272727275"/>
151.20332 + <point x="11.0" y="3.0" cp1x="11.0" cp1y="3.0" cp2x="11.0" cp2y="3.0"/>
151.20333 + </points>
151.20334 + </path>
151.20335 + </shapes>
151.20336 + <effects/>
151.20337 + </layer>
151.20338 + </canvas>
151.20339 + </state>
151.20340 + <state stateKeys="Pressed+Focused" inverted="true">
151.20341 + <style>
151.20342 + <textForeground/>
151.20343 + <textBackground/>
151.20344 + <background/>
151.20345 + <uiproperties/>
151.20346 + </style>
151.20347 + <canvas>
151.20348 + <size width="20" height="12"/>
151.20349 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.20350 + <stretchingInsets top="3" bottom="5" left="6" right="9"/>
151.20351 + <layer name="Layer 1">
151.20352 + <opacity>1.0</opacity>
151.20353 + <fillOpacity>1.0</fillOpacity>
151.20354 + <blendingMode>NORMAL</blendingMode>
151.20355 + <locked>false</locked>
151.20356 + <visible>true</visible>
151.20357 + <shapes>
151.20358 + <path>
151.20359 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.20360 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.20361 + <points>
151.20362 + <point x="6.0" y="3.0" cp1x="6.0" cp1y="3.0" cp2x="6.0" cp2y="3.0"/>
151.20363 + <point x="8.522727272727263" y="6.9772727272727275" cp1x="8.522727272727263" cp1y="6.9772727272727275" cp2x="8.522727272727263" cp2y="6.9772727272727275"/>
151.20364 + <point x="11.0" y="3.0" cp1x="11.0" cp1y="3.0" cp2x="11.0" cp2y="3.0"/>
151.20365 + </points>
151.20366 + </path>
151.20367 + </shapes>
151.20368 + <effects/>
151.20369 + </layer>
151.20370 + </canvas>
151.20371 + </state>
151.20372 + <state stateKeys="MouseOver" inverted="true">
151.20373 + <style>
151.20374 + <textForeground/>
151.20375 + <textBackground/>
151.20376 + <background/>
151.20377 + <uiproperties/>
151.20378 + </style>
151.20379 + <canvas>
151.20380 + <size width="20" height="12"/>
151.20381 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.20382 + <stretchingInsets top="3" bottom="5" left="6" right="9"/>
151.20383 + <layer name="Layer 1">
151.20384 + <opacity>1.0</opacity>
151.20385 + <fillOpacity>1.0</fillOpacity>
151.20386 + <blendingMode>NORMAL</blendingMode>
151.20387 + <locked>false</locked>
151.20388 + <visible>true</visible>
151.20389 + <shapes>
151.20390 + <path>
151.20391 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.20392 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.20393 + <points>
151.20394 + <point x="6.0" y="3.0" cp1x="6.0" cp1y="3.0" cp2x="6.0" cp2y="3.0"/>
151.20395 + <point x="8.522727272727263" y="6.9772727272727275" cp1x="8.522727272727263" cp1y="6.9772727272727275" cp2x="8.522727272727263" cp2y="6.9772727272727275"/>
151.20396 + <point x="11.0" y="3.0" cp1x="11.0" cp1y="3.0" cp2x="11.0" cp2y="3.0"/>
151.20397 + </points>
151.20398 + </path>
151.20399 + </shapes>
151.20400 + <effects/>
151.20401 + </layer>
151.20402 + </canvas>
151.20403 + </state>
151.20404 + <state stateKeys="Pressed" inverted="true">
151.20405 + <style>
151.20406 + <textForeground/>
151.20407 + <textBackground/>
151.20408 + <background/>
151.20409 + <uiproperties/>
151.20410 + </style>
151.20411 + <canvas>
151.20412 + <size width="20" height="12"/>
151.20413 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.20414 + <stretchingInsets top="3" bottom="5" left="6" right="9"/>
151.20415 + <layer name="Layer 1">
151.20416 + <opacity>1.0</opacity>
151.20417 + <fillOpacity>1.0</fillOpacity>
151.20418 + <blendingMode>NORMAL</blendingMode>
151.20419 + <locked>false</locked>
151.20420 + <visible>true</visible>
151.20421 + <shapes>
151.20422 + <path>
151.20423 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.20424 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.20425 + <points>
151.20426 + <point x="6.0" y="3.0" cp1x="6.0" cp1y="3.0" cp2x="6.0" cp2y="3.0"/>
151.20427 + <point x="8.522727272727263" y="6.9772727272727275" cp1x="8.522727272727263" cp1y="6.9772727272727275" cp2x="8.522727272727263" cp2y="6.9772727272727275"/>
151.20428 + <point x="11.0" y="3.0" cp1x="11.0" cp1y="3.0" cp2x="11.0" cp2y="3.0"/>
151.20429 + </points>
151.20430 + </path>
151.20431 + </shapes>
151.20432 + <effects/>
151.20433 + </layer>
151.20434 + </canvas>
151.20435 + </state>
151.20436 + </foregroundStates>
151.20437 + <borderStates/>
151.20438 + <regions/>
151.20439 + </uiComponent>
151.20440 + <uiComponent opaque="false" componentName="Spinner.nextButton" type="javax.swing.plaf.synth.SynthArrowButton" name="ArrowButton" ui="SynthArrowButtonUI" subregion="true">
151.20441 + <stateTypes/>
151.20442 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.20443 + <style>
151.20444 + <textForeground/>
151.20445 + <textBackground/>
151.20446 + <background/>
151.20447 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.20448 + <uiproperties>
151.20449 + <uiProperty name="size" type="INT" value="20"/>
151.20450 + </uiproperties>
151.20451 + </style>
151.20452 + <backgroundStates>
151.20453 + <state stateKeys="Disabled">
151.20454 + <style>
151.20455 + <textForeground/>
151.20456 + <textBackground/>
151.20457 + <background/>
151.20458 + <uiproperties/>
151.20459 + </style>
151.20460 + <canvas>
151.20461 + <size width="20" height="12"/>
151.20462 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.20463 + <stretchingInsets top="7" bottom="1" left="1" right="7"/>
151.20464 + <layer name="Layer 1">
151.20465 + <opacity>1.0</opacity>
151.20466 + <fillOpacity>1.0</fillOpacity>
151.20467 + <blendingMode>NORMAL</blendingMode>
151.20468 + <locked>false</locked>
151.20469 + <visible>true</visible>
151.20470 + <shapes>
151.20471 + <rectangle x1="1.0" x2="17.0" y1="11.0" y2="12.0" rounding="0.0">
151.20472 + <matte red="188" green="194" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56182265" brightnessOffset="0.24705881" alphaOffset="0"/>
151.20473 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.20474 + </rectangle>
151.20475 + <path>
151.20476 + <gradient cycleMethod="NO_CYCLE">
151.20477 + <stop position="0.0" midpoint="0.5">
151.20478 + <matte red="220" green="224" blue="230" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.59223604" brightnessOffset="0.35294116" alphaOffset="0"/>
151.20479 + </stop>
151.20480 + <stop position="1.0" midpoint="0.033333335">
151.20481 + <matte red="207" green="213" blue="221" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.016586483" saturationOffset="-0.5723659" brightnessOffset="0.31764704" alphaOffset="0"/>
151.20482 + </stop>
151.20483 + </gradient>
151.20484 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.20485 + <points>
151.20486 + <point x="1.0" y="11.0" cp1x="1.0" cp1y="11.0" cp2x="1.0" cp2y="11.0"/>
151.20487 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
151.20488 + <point x="13.0" y="3.0" cp1x="10.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
151.20489 + <point x="17.0" y="7.0" cp1x="17.0" cp1y="5.0" cp2x="17.0" cp2y="9.0"/>
151.20490 + <point x="17.0" y="11.0" cp1x="17.0" cp1y="11.0" cp2x="17.0" cp2y="11.0"/>
151.20491 + </points>
151.20492 + </path>
151.20493 + <path>
151.20494 + <gradient cycleMethod="NO_CYCLE">
151.20495 + <stop position="0.0" midpoint="0.5">
151.20496 + <matte red="191" green="197" blue="206" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.56289876" brightnessOffset="0.2588235" alphaOffset="0"/>
151.20497 + </stop>
151.20498 + <stop position="1.0" midpoint="0.5">
151.20499 + <matte red="185" green="192" blue="200" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.010237217" saturationOffset="-0.5607143" brightnessOffset="0.2352941" alphaOffset="0"/>
151.20500 + </stop>
151.20501 + </gradient>
151.20502 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.20503 + <points>
151.20504 + <point x="0.0" y="12.0" cp1x="0.0" cp1y="12.0" cp2x="0.0" cp2y="12.0"/>
151.20505 + <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
151.20506 + <point x="13.0" y="2.0" cp1x="9.36363636363636" cp1y="2.0" cp2x="16.63636363636364" cp2y="2.0"/>
151.20507 + <point x="18.0" y="7.0" cp1x="17.977272727272727" cp1y="3.250000000000001" cp2x="18.022727272727273" cp2y="10.75"/>
151.20508 + <point x="18.0" y="12.0" cp1x="18.0" cp1y="12.0" cp2x="18.0" cp2y="12.0"/>
151.20509 + </points>
151.20510 + </path>
151.20511 + </shapes>
151.20512 + <effects/>
151.20513 + </layer>
151.20514 + <templateLayer fileName="113a3cf2041.png">
151.20515 + <layer name="Template" type="template">
151.20516 + <opacity>1.0</opacity>
151.20517 + <fillOpacity>1.0</fillOpacity>
151.20518 + <blendingMode>NORMAL</blendingMode>
151.20519 + <locked>false</locked>
151.20520 + <visible>false</visible>
151.20521 + <shapes/>
151.20522 + <effects/>
151.20523 + </layer>
151.20524 + </templateLayer>
151.20525 + </canvas>
151.20526 + </state>
151.20527 + <state stateKeys="Enabled">
151.20528 + <style>
151.20529 + <textForeground/>
151.20530 + <textBackground/>
151.20531 + <background/>
151.20532 + <uiproperties/>
151.20533 + </style>
151.20534 + <canvas>
151.20535 + <size width="20" height="12"/>
151.20536 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.20537 + <stretchingInsets top="7" bottom="1" left="1" right="7"/>
151.20538 + <layer name="Layer 1">
151.20539 + <opacity>1.0</opacity>
151.20540 + <fillOpacity>1.0</fillOpacity>
151.20541 + <blendingMode>NORMAL</blendingMode>
151.20542 + <locked>false</locked>
151.20543 + <visible>true</visible>
151.20544 + <shapes>
151.20545 + <rectangle x1="1.0" x2="17.0" y1="11.0" y2="12.0" rounding="0.0">
151.20546 + <matte red="93" green="111" blue="128" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0023007393" saturationOffset="-0.3622768" brightnessOffset="-0.04705882" alphaOffset="0"/>
151.20547 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.20548 + </rectangle>
151.20549 + <path>
151.20550 + <gradient cycleMethod="NO_CYCLE">
151.20551 + <stop position="0.0" midpoint="0.5">
151.20552 + <matte red="246" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
151.20553 + </stop>
151.20554 + <stop position="0.72994655" midpoint="0.5">
151.20555 + <matte red="191" green="206" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0012707114" saturationOffset="-0.5078604" brightnessOffset="0.3098039" alphaOffset="0"/>
151.20556 + </stop>
151.20557 + <stop position="1.0" midpoint="0.033333335">
151.20558 + <matte red="179" green="197" blue="212" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0028941035" saturationOffset="-0.4800539" brightnessOffset="0.28235292" alphaOffset="0"/>
151.20559 + </stop>
151.20560 + </gradient>
151.20561 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.20562 + <points>
151.20563 + <point x="1.0" y="11.0" cp1x="1.0" cp1y="11.0" cp2x="1.0" cp2y="11.0"/>
151.20564 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
151.20565 + <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
151.20566 + <point x="17.0" y="7.0" cp1x="17.0" cp1y="5.0" cp2x="17.0" cp2y="7.0"/>
151.20567 + <point x="17.0" y="11.0" cp1x="17.0" cp1y="11.0" cp2x="17.0" cp2y="11.0"/>
151.20568 + </points>
151.20569 + </path>
151.20570 + <path>
151.20571 + <gradient cycleMethod="NO_CYCLE">
151.20572 + <stop position="0.0" midpoint="0.5">
151.20573 + <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
151.20574 + </stop>
151.20575 + <stop position="1.0" midpoint="0.5">
151.20576 + <matte red="70" green="91" blue="110" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.27207792" brightnessOffset="-0.11764708" alphaOffset="0"/>
151.20577 + </stop>
151.20578 + </gradient>
151.20579 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.20580 + <points>
151.20581 + <point x="0.0" y="12.0" cp1x="0.0" cp1y="12.0" cp2x="0.0" cp2y="12.0"/>
151.20582 + <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
151.20583 + <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.63636363636364" cp2y="2.0"/>
151.20584 + <point x="18.0" y="7.0" cp1x="17.977272727272727" cp1y="3.250000000000001" cp2x="18.0" cp2y="7.0"/>
151.20585 + <point x="18.0" y="12.0" cp1x="18.0" cp1y="12.0" cp2x="18.0" cp2y="12.0"/>
151.20586 + </points>
151.20587 + </path>
151.20588 + </shapes>
151.20589 + <effects/>
151.20590 + </layer>
151.20591 + <templateLayer fileName="113a3c06513.png">
151.20592 + <layer name="Template" type="template">
151.20593 + <opacity>1.0</opacity>
151.20594 + <fillOpacity>1.0</fillOpacity>
151.20595 + <blendingMode>NORMAL</blendingMode>
151.20596 + <locked>false</locked>
151.20597 + <visible>false</visible>
151.20598 + <shapes/>
151.20599 + <effects/>
151.20600 + </layer>
151.20601 + </templateLayer>
151.20602 + </canvas>
151.20603 + </state>
151.20604 + <state stateKeys="Focused">
151.20605 + <style>
151.20606 + <textForeground/>
151.20607 + <textBackground/>
151.20608 + <background/>
151.20609 + <uiproperties/>
151.20610 + </style>
151.20611 + <canvas>
151.20612 + <size width="20" height="12"/>
151.20613 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.20614 + <stretchingInsets top="7" bottom="1" left="1" right="7"/>
151.20615 + <layer name="Layer 1">
151.20616 + <opacity>1.0</opacity>
151.20617 + <fillOpacity>1.0</fillOpacity>
151.20618 + <blendingMode>NORMAL</blendingMode>
151.20619 + <locked>false</locked>
151.20620 + <visible>true</visible>
151.20621 + <shapes>
151.20622 + <rectangle x1="1.0" x2="17.0" y1="11.0" y2="12.0" rounding="0.0">
151.20623 + <matte red="93" green="111" blue="128" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0023007393" saturationOffset="-0.3622768" brightnessOffset="-0.04705882" alphaOffset="0"/>
151.20624 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.20625 + </rectangle>
151.20626 + <path>
151.20627 + <gradient cycleMethod="NO_CYCLE">
151.20628 + <stop position="0.0" midpoint="0.5">
151.20629 + <matte red="246" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
151.20630 + </stop>
151.20631 + <stop position="0.7513369" midpoint="0.5">
151.20632 + <matte red="191" green="206" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0012707114" saturationOffset="-0.5078604" brightnessOffset="0.3098039" alphaOffset="0"/>
151.20633 + </stop>
151.20634 + <stop position="1.0" midpoint="0.033333335">
151.20635 + <matte red="179" green="197" blue="212" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0028941035" saturationOffset="-0.4800539" brightnessOffset="0.28235292" alphaOffset="0"/>
151.20636 + </stop>
151.20637 + </gradient>
151.20638 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.20639 + <points>
151.20640 + <point x="1.0" y="11.0" cp1x="1.0" cp1y="11.0" cp2x="1.0" cp2y="11.0"/>
151.20641 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
151.20642 + <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
151.20643 + <point x="17.0" y="7.0" cp1x="17.0" cp1y="5.0" cp2x="17.0" cp2y="7.0"/>
151.20644 + <point x="17.0" y="11.0" cp1x="17.0" cp1y="11.0" cp2x="17.0" cp2y="11.0"/>
151.20645 + </points>
151.20646 + </path>
151.20647 + <path>
151.20648 + <gradient cycleMethod="NO_CYCLE">
151.20649 + <stop position="0.0" midpoint="0.5">
151.20650 + <matte red="98" green="119" blue="138" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.34585923" brightnessOffset="-0.007843137" alphaOffset="0"/>
151.20651 + </stop>
151.20652 + <stop position="1.0" midpoint="0.5">
151.20653 + <matte red="70" green="91" blue="110" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.27207792" brightnessOffset="-0.11764708" alphaOffset="0"/>
151.20654 + </stop>
151.20655 + </gradient>
151.20656 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.20657 + <points>
151.20658 + <point x="0.0" y="12.0" cp1x="0.0" cp1y="12.0" cp2x="0.0" cp2y="12.0"/>
151.20659 + <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
151.20660 + <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.63636363636364" cp2y="2.0"/>
151.20661 + <point x="18.0" y="7.0" cp1x="17.977272727272727" cp1y="3.250000000000001" cp2x="18.0" cp2y="7.0"/>
151.20662 + <point x="18.0" y="12.0" cp1x="18.0" cp1y="12.0" cp2x="18.0" cp2y="12.0"/>
151.20663 + </points>
151.20664 + </path>
151.20665 + <path>
151.20666 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.20667 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.20668 + <points>
151.20669 + <point x="0.0" y="12.0" cp1x="0.0" cp1y="12.0" cp2x="0.0" cp2y="12.0"/>
151.20670 + <point x="0.0" y="0.6" cp1x="0.0" cp1y="0.6" cp2x="0.0" cp2y="0.6"/>
151.20671 + <point x="14.0" y="0.6" cp1x="14.0" cp1y="0.6" cp2x="17.4" cp2y="0.6"/>
151.20672 + <point x="19.4" y="7.0" cp1x="19.4" cp1y="3.6" cp2x="19.4" cp2y="7.0"/>
151.20673 + <point x="19.4" y="12.0" cp1x="19.4" cp1y="12.0" cp2x="19.4" cp2y="12.0"/>
151.20674 + </points>
151.20675 + </path>
151.20676 + </shapes>
151.20677 + <effects/>
151.20678 + </layer>
151.20679 + </canvas>
151.20680 + </state>
151.20681 + <state stateKeys="MouseOver+Focused">
151.20682 + <style>
151.20683 + <textForeground/>
151.20684 + <textBackground/>
151.20685 + <background/>
151.20686 + <uiproperties/>
151.20687 + </style>
151.20688 + <canvas>
151.20689 + <size width="20" height="12"/>
151.20690 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.20691 + <stretchingInsets top="7" bottom="1" left="1" right="7"/>
151.20692 + <layer name="Layer 1">
151.20693 + <opacity>1.0</opacity>
151.20694 + <fillOpacity>1.0</fillOpacity>
151.20695 + <blendingMode>NORMAL</blendingMode>
151.20696 + <locked>false</locked>
151.20697 + <visible>true</visible>
151.20698 + <shapes>
151.20699 + <rectangle x1="1.0" x2="17.0" y1="11.0" y2="12.0" rounding="0.0">
151.20700 + <matte red="109" green="128" blue="145" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.2034855E-5" saturationOffset="-0.38743842" brightnessOffset="0.019607842" alphaOffset="0"/>
151.20701 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.20702 + </rectangle>
151.20703 + <path>
151.20704 + <gradient cycleMethod="NO_CYCLE">
151.20705 + <stop position="0.0" midpoint="0.5">
151.20706 + <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
151.20707 + </stop>
151.20708 + <stop position="0.7593583" midpoint="0.5">
151.20709 + <matte red="204" green="219" blue="232" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0012707114" saturationOffset="-0.51502466" brightnessOffset="0.3607843" alphaOffset="0"/>
151.20710 + </stop>
151.20711 + <stop position="1.0" midpoint="0.033333335">
151.20712 + <matte red="195" green="212" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0021564364" saturationOffset="-0.49097747" brightnessOffset="0.34509802" alphaOffset="0"/>
151.20713 + </stop>
151.20714 + </gradient>
151.20715 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.20716 + <points>
151.20717 + <point x="1.0" y="11.0" cp1x="1.0" cp1y="11.0" cp2x="1.0" cp2y="11.0"/>
151.20718 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
151.20719 + <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
151.20720 + <point x="17.0" y="7.0" cp1x="17.0" cp1y="5.0" cp2x="17.0" cp2y="7.0"/>
151.20721 + <point x="17.0" y="11.0" cp1x="17.0" cp1y="11.0" cp2x="17.0" cp2y="11.0"/>
151.20722 + </points>
151.20723 + </path>
151.20724 + <path>
151.20725 + <gradient cycleMethod="NO_CYCLE">
151.20726 + <stop position="0.0" midpoint="0.5">
151.20727 + <matte red="59" green="85" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.1769987" brightnessOffset="-0.12156865" alphaOffset="0"/>
151.20728 + </stop>
151.20729 + <stop position="1.0" midpoint="0.5">
151.20730 + <matte red="24" green="50" blue="74" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="0.039961398" brightnessOffset="-0.25882354" alphaOffset="0"/>
151.20731 + </stop>
151.20732 + </gradient>
151.20733 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.20734 + <points>
151.20735 + <point x="0.0" y="12.0" cp1x="0.0" cp1y="12.0" cp2x="0.0" cp2y="12.0"/>
151.20736 + <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
151.20737 + <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.63636363636364" cp2y="2.0"/>
151.20738 + <point x="18.0" y="7.0" cp1x="17.977272727272727" cp1y="3.250000000000001" cp2x="18.0" cp2y="7.0"/>
151.20739 + <point x="18.0" y="12.0" cp1x="18.0" cp1y="12.0" cp2x="18.0" cp2y="12.0"/>
151.20740 + </points>
151.20741 + </path>
151.20742 + <path>
151.20743 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.20744 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.20745 + <points>
151.20746 + <point x="0.0" y="12.0" cp1x="0.0" cp1y="12.0" cp2x="0.0" cp2y="12.0"/>
151.20747 + <point x="0.0" y="0.6" cp1x="0.0" cp1y="0.6" cp2x="0.0" cp2y="0.6"/>
151.20748 + <point x="14.0" y="0.6" cp1x="14.0" cp1y="0.6" cp2x="17.4" cp2y="0.6"/>
151.20749 + <point x="19.4" y="7.0" cp1x="19.4" cp1y="3.6" cp2x="19.4" cp2y="7.0"/>
151.20750 + <point x="19.4" y="12.0" cp1x="19.4" cp1y="12.0" cp2x="19.4" cp2y="12.0"/>
151.20751 + </points>
151.20752 + </path>
151.20753 + </shapes>
151.20754 + <effects/>
151.20755 + </layer>
151.20756 + </canvas>
151.20757 + </state>
151.20758 + <state stateKeys="Pressed+Focused">
151.20759 + <style>
151.20760 + <textForeground/>
151.20761 + <textBackground/>
151.20762 + <background/>
151.20763 + <uiproperties/>
151.20764 + </style>
151.20765 + <canvas>
151.20766 + <size width="20" height="12"/>
151.20767 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.20768 + <stretchingInsets top="7" bottom="1" left="1" right="7"/>
151.20769 + <layer name="Layer 1">
151.20770 + <opacity>1.0</opacity>
151.20771 + <fillOpacity>1.0</fillOpacity>
151.20772 + <blendingMode>NORMAL</blendingMode>
151.20773 + <locked>false</locked>
151.20774 + <visible>true</visible>
151.20775 + <shapes>
151.20776 + <rectangle x1="1.0" x2="17.0" y1="11.0" y2="12.0" rounding="0.0">
151.20777 + <matte red="15" green="43" blue="82" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.018363237" saturationOffset="0.18135887" brightnessOffset="-0.227451" alphaOffset="0"/>
151.20778 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.20779 + </rectangle>
151.20780 + <path>
151.20781 + <gradient cycleMethod="NO_CYCLE">
151.20782 + <stop position="0.0" midpoint="0.5">
151.20783 + <matte red="143" green="169" blue="192" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
151.20784 + </stop>
151.20785 + <stop position="0.7433155" midpoint="0.5">
151.20786 + <matte red="82" green="122" blue="158" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.15470162" brightnessOffset="0.07058823" alphaOffset="0"/>
151.20787 + </stop>
151.20788 + <stop position="1.0" midpoint="0.033333335">
151.20789 + <matte red="69" green="112" blue="150" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-4.6235323E-4" saturationOffset="-0.09571427" brightnessOffset="0.039215684" alphaOffset="0"/>
151.20790 + </stop>
151.20791 + </gradient>
151.20792 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.20793 + <points>
151.20794 + <point x="1.0" y="11.0" cp1x="1.0" cp1y="11.0" cp2x="1.0" cp2y="11.0"/>
151.20795 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
151.20796 + <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
151.20797 + <point x="17.0" y="7.0" cp1x="17.0" cp1y="5.0" cp2x="17.0" cp2y="7.0"/>
151.20798 + <point x="17.0" y="11.0" cp1x="17.0" cp1y="11.0" cp2x="17.0" cp2y="11.0"/>
151.20799 + </points>
151.20800 + </path>
151.20801 + <path>
151.20802 + <gradient cycleMethod="NO_CYCLE">
151.20803 + <stop position="0.0" midpoint="0.5">
151.20804 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.20805 + </stop>
151.20806 + <stop position="1.0" midpoint="0.5">
151.20807 + <matte red="0" green="0" blue="24" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.454902" alphaOffset="0"/>
151.20808 + </stop>
151.20809 + </gradient>
151.20810 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.20811 + <points>
151.20812 + <point x="0.0" y="12.0" cp1x="0.0" cp1y="12.0" cp2x="0.0" cp2y="12.0"/>
151.20813 + <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
151.20814 + <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.454545454545453" cp2y="2.0"/>
151.20815 + <point x="18.0" y="7.0" cp1x="17.977272727272727" cp1y="3.5227272727272734" cp2x="18.0" cp2y="7.0"/>
151.20816 + <point x="18.0" y="12.0" cp1x="18.0" cp1y="12.0" cp2x="18.0" cp2y="12.0"/>
151.20817 + </points>
151.20818 + </path>
151.20819 + <path>
151.20820 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.20821 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.20822 + <points>
151.20823 + <point x="0.0" y="12.0" cp1x="0.0" cp1y="12.0" cp2x="0.0" cp2y="12.0"/>
151.20824 + <point x="0.0" y="0.6" cp1x="0.0" cp1y="0.6" cp2x="0.0" cp2y="0.6"/>
151.20825 + <point x="14.0" y="0.6" cp1x="14.0" cp1y="0.6" cp2x="17.4" cp2y="0.6"/>
151.20826 + <point x="19.4" y="7.0" cp1x="19.4" cp1y="3.6" cp2x="19.4" cp2y="7.0"/>
151.20827 + <point x="19.4" y="12.0" cp1x="19.4" cp1y="12.0" cp2x="19.4" cp2y="12.0"/>
151.20828 + </points>
151.20829 + </path>
151.20830 + </shapes>
151.20831 + <effects/>
151.20832 + </layer>
151.20833 + </canvas>
151.20834 + </state>
151.20835 + <state stateKeys="MouseOver">
151.20836 + <style>
151.20837 + <textForeground/>
151.20838 + <textBackground/>
151.20839 + <background/>
151.20840 + <uiproperties/>
151.20841 + </style>
151.20842 + <canvas>
151.20843 + <size width="20" height="12"/>
151.20844 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.20845 + <stretchingInsets top="7" bottom="1" left="1" right="7"/>
151.20846 + <layer name="Layer 1">
151.20847 + <opacity>1.0</opacity>
151.20848 + <fillOpacity>1.0</fillOpacity>
151.20849 + <blendingMode>NORMAL</blendingMode>
151.20850 + <locked>false</locked>
151.20851 + <visible>true</visible>
151.20852 + <shapes>
151.20853 + <rectangle x1="1.0" x2="17.0" y1="11.0" y2="12.0" rounding="0.0">
151.20854 + <matte red="109" green="128" blue="145" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.2034855E-5" saturationOffset="-0.38743842" brightnessOffset="0.019607842" alphaOffset="0"/>
151.20855 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.20856 + </rectangle>
151.20857 + <path>
151.20858 + <gradient cycleMethod="NO_CYCLE">
151.20859 + <stop position="0.0" midpoint="0.5">
151.20860 + <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
151.20861 + </stop>
151.20862 + <stop position="0.7941176" midpoint="0.5">
151.20863 + <matte red="204" green="219" blue="232" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0012707114" saturationOffset="-0.51502466" brightnessOffset="0.3607843" alphaOffset="0"/>
151.20864 + </stop>
151.20865 + <stop position="1.0" midpoint="0.033333335">
151.20866 + <matte red="195" green="212" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0021564364" saturationOffset="-0.49097747" brightnessOffset="0.34509802" alphaOffset="0"/>
151.20867 + </stop>
151.20868 + </gradient>
151.20869 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.20870 + <points>
151.20871 + <point x="1.0" y="11.0" cp1x="1.0" cp1y="11.0" cp2x="1.0" cp2y="11.0"/>
151.20872 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
151.20873 + <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
151.20874 + <point x="17.0" y="7.0" cp1x="17.0" cp1y="5.0" cp2x="17.0" cp2y="7.0"/>
151.20875 + <point x="17.0" y="11.0" cp1x="17.0" cp1y="11.0" cp2x="17.0" cp2y="11.0"/>
151.20876 + </points>
151.20877 + </path>
151.20878 + <path>
151.20879 + <gradient cycleMethod="NO_CYCLE">
151.20880 + <stop position="0.0" midpoint="0.5">
151.20881 + <matte red="59" green="85" blue="109" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.1769987" brightnessOffset="-0.12156865" alphaOffset="0"/>
151.20882 + </stop>
151.20883 + <stop position="1.0" midpoint="0.5">
151.20884 + <matte red="24" green="50" blue="74" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="0.039961398" brightnessOffset="-0.25882354" alphaOffset="0"/>
151.20885 + </stop>
151.20886 + </gradient>
151.20887 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.20888 + <points>
151.20889 + <point x="0.0" y="12.0" cp1x="0.0" cp1y="12.0" cp2x="0.0" cp2y="12.0"/>
151.20890 + <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
151.20891 + <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.63636363636364" cp2y="2.0"/>
151.20892 + <point x="18.0" y="7.0" cp1x="17.977272727272727" cp1y="3.250000000000001" cp2x="18.0" cp2y="7.0"/>
151.20893 + <point x="18.0" y="12.0" cp1x="18.0" cp1y="12.0" cp2x="18.0" cp2y="12.0"/>
151.20894 + </points>
151.20895 + </path>
151.20896 + </shapes>
151.20897 + <effects/>
151.20898 + </layer>
151.20899 + <templateLayer fileName="113a3d0fda8.png">
151.20900 + <layer name="Template" type="template">
151.20901 + <opacity>1.0</opacity>
151.20902 + <fillOpacity>1.0</fillOpacity>
151.20903 + <blendingMode>NORMAL</blendingMode>
151.20904 + <locked>false</locked>
151.20905 + <visible>false</visible>
151.20906 + <shapes/>
151.20907 + <effects/>
151.20908 + </layer>
151.20909 + </templateLayer>
151.20910 + </canvas>
151.20911 + </state>
151.20912 + <state stateKeys="Pressed">
151.20913 + <style>
151.20914 + <textForeground/>
151.20915 + <textBackground/>
151.20916 + <background/>
151.20917 + <uiproperties/>
151.20918 + </style>
151.20919 + <canvas>
151.20920 + <size width="20" height="12"/>
151.20921 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.20922 + <stretchingInsets top="7" bottom="1" left="1" right="7"/>
151.20923 + <layer name="Layer 1">
151.20924 + <opacity>1.0</opacity>
151.20925 + <fillOpacity>1.0</fillOpacity>
151.20926 + <blendingMode>NORMAL</blendingMode>
151.20927 + <locked>false</locked>
151.20928 + <visible>true</visible>
151.20929 + <shapes>
151.20930 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.20931 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.20932 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.20933 + </rectangle>
151.20934 + <rectangle x1="1.0" x2="17.0" y1="11.0" y2="12.0" rounding="0.0">
151.20935 + <matte red="15" green="43" blue="82" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.018363237" saturationOffset="0.18135887" brightnessOffset="-0.227451" alphaOffset="0"/>
151.20936 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.20937 + </rectangle>
151.20938 + <path>
151.20939 + <gradient cycleMethod="NO_CYCLE">
151.20940 + <stop position="0.0" midpoint="0.5">
151.20941 + <matte red="143" green="169" blue="192" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
151.20942 + </stop>
151.20943 + <stop position="0.8636364" midpoint="0.5">
151.20944 + <matte red="82" green="122" blue="158" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.15470162" brightnessOffset="0.07058823" alphaOffset="0"/>
151.20945 + </stop>
151.20946 + <stop position="1.0" midpoint="0.033333335">
151.20947 + <matte red="69" green="112" blue="150" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-4.6235323E-4" saturationOffset="-0.09571427" brightnessOffset="0.039215684" alphaOffset="0"/>
151.20948 + </stop>
151.20949 + </gradient>
151.20950 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.20951 + <points>
151.20952 + <point x="1.0" y="11.0" cp1x="1.0" cp1y="11.0" cp2x="1.0" cp2y="11.0"/>
151.20953 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
151.20954 + <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="16.0" cp2y="3.0"/>
151.20955 + <point x="17.0" y="7.0" cp1x="17.0" cp1y="5.0" cp2x="17.0" cp2y="7.0"/>
151.20956 + <point x="17.0" y="11.0" cp1x="17.0" cp1y="11.0" cp2x="17.0" cp2y="11.0"/>
151.20957 + </points>
151.20958 + </path>
151.20959 + <path>
151.20960 + <gradient cycleMethod="NO_CYCLE">
151.20961 + <stop position="0.0" midpoint="0.5">
151.20962 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.20963 + </stop>
151.20964 + <stop position="1.0" midpoint="0.5">
151.20965 + <matte red="0" green="0" blue="24" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.454902" alphaOffset="0"/>
151.20966 + </stop>
151.20967 + </gradient>
151.20968 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.20969 + <points>
151.20970 + <point x="0.0" y="12.0" cp1x="0.0" cp1y="12.0" cp2x="0.0" cp2y="12.0"/>
151.20971 + <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
151.20972 + <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="16.454545454545453" cp2y="2.0"/>
151.20973 + <point x="18.0" y="7.0" cp1x="17.977272727272727" cp1y="3.5227272727272734" cp2x="18.0" cp2y="7.0"/>
151.20974 + <point x="18.0" y="12.0" cp1x="18.0" cp1y="12.0" cp2x="18.0" cp2y="12.0"/>
151.20975 + </points>
151.20976 + </path>
151.20977 + </shapes>
151.20978 + <effects/>
151.20979 + </layer>
151.20980 + <templateLayer fileName="113a3d22070.png">
151.20981 + <layer name="Template" type="template">
151.20982 + <opacity>1.0</opacity>
151.20983 + <fillOpacity>1.0</fillOpacity>
151.20984 + <blendingMode>NORMAL</blendingMode>
151.20985 + <locked>false</locked>
151.20986 + <visible>false</visible>
151.20987 + <shapes/>
151.20988 + <effects/>
151.20989 + </layer>
151.20990 + </templateLayer>
151.20991 + </canvas>
151.20992 + </state>
151.20993 + </backgroundStates>
151.20994 + <foregroundStates>
151.20995 + <state stateKeys="Disabled" inverted="true">
151.20996 + <style>
151.20997 + <textForeground/>
151.20998 + <textBackground/>
151.20999 + <background/>
151.21000 + <uiproperties/>
151.21001 + </style>
151.21002 + <canvas>
151.21003 + <size width="20" height="12"/>
151.21004 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.21005 + <stretchingInsets top="5" bottom="3" left="6" right="9"/>
151.21006 + <layer name="Layer 1">
151.21007 + <opacity>1.0</opacity>
151.21008 + <fillOpacity>1.0</fillOpacity>
151.21009 + <blendingMode>NORMAL</blendingMode>
151.21010 + <locked>false</locked>
151.21011 + <visible>true</visible>
151.21012 + <shapes>
151.21013 + <path>
151.21014 + <matte red="173" green="177" blue="183" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.58106947" brightnessOffset="0.16862744" alphaOffset="0"/>
151.21015 + <paintPoints x1="0.4863636363636362" y1="0.011695906106605689" x2="0.4909090909090911" y2="0.888888891987246"/>
151.21016 + <points>
151.21017 + <point x="6.0" y="9.0" cp1x="6.0" cp1y="9.0" cp2x="6.0" cp2y="9.0"/>
151.21018 + <point x="8.454545454545453" y="5.1136363636363615" cp1x="8.454545454545453" cp1y="5.1136363636363615" cp2x="8.454545454545453" cp2y="5.1136363636363615"/>
151.21019 + <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
151.21020 + </points>
151.21021 + </path>
151.21022 + </shapes>
151.21023 + <effects/>
151.21024 + </layer>
151.21025 + </canvas>
151.21026 + </state>
151.21027 + <state stateKeys="Enabled" inverted="true">
151.21028 + <style>
151.21029 + <textForeground/>
151.21030 + <textBackground/>
151.21031 + <background/>
151.21032 + <uiproperties/>
151.21033 + </style>
151.21034 + <canvas>
151.21035 + <size width="20" height="12"/>
151.21036 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.21037 + <stretchingInsets top="5" bottom="3" left="6" right="9"/>
151.21038 + <layer name="Layer 1">
151.21039 + <opacity>1.0</opacity>
151.21040 + <fillOpacity>1.0</fillOpacity>
151.21041 + <blendingMode>NORMAL</blendingMode>
151.21042 + <locked>false</locked>
151.21043 + <visible>true</visible>
151.21044 + <shapes>
151.21045 + <path>
151.21046 + <gradient cycleMethod="NO_CYCLE">
151.21047 + <stop position="0.0" midpoint="0.5">
151.21048 + <matte red="129" green="129" blue="129" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.043137252" alphaOffset="0"/>
151.21049 + </stop>
151.21050 + <stop position="1.0" midpoint="0.5">
151.21051 + <matte red="78" green="78" blue="78" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.24313727" alphaOffset="0"/>
151.21052 + </stop>
151.21053 + </gradient>
151.21054 + <paintPoints x1="0.4863636363636362" y1="0.011695906106605689" x2="0.4909090909090911" y2="0.888888891987246"/>
151.21055 + <points>
151.21056 + <point x="6.0" y="9.0" cp1x="6.0" cp1y="9.0" cp2x="6.0" cp2y="9.0"/>
151.21057 + <point x="8.454545454545453" y="5.1136363636363615" cp1x="8.454545454545453" cp1y="5.1136363636363615" cp2x="8.454545454545453" cp2y="5.1136363636363615"/>
151.21058 + <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
151.21059 + </points>
151.21060 + </path>
151.21061 + </shapes>
151.21062 + <effects/>
151.21063 + </layer>
151.21064 + </canvas>
151.21065 + </state>
151.21066 + <state stateKeys="Focused" inverted="true">
151.21067 + <style>
151.21068 + <textForeground/>
151.21069 + <textBackground/>
151.21070 + <background/>
151.21071 + <uiproperties/>
151.21072 + </style>
151.21073 + <canvas>
151.21074 + <size width="20" height="12"/>
151.21075 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.21076 + <stretchingInsets top="3" bottom="3" left="6" right="9"/>
151.21077 + <layer name="Layer 1">
151.21078 + <opacity>1.0</opacity>
151.21079 + <fillOpacity>1.0</fillOpacity>
151.21080 + <blendingMode>NORMAL</blendingMode>
151.21081 + <locked>false</locked>
151.21082 + <visible>true</visible>
151.21083 + <shapes>
151.21084 + <path>
151.21085 + <gradient cycleMethod="NO_CYCLE">
151.21086 + <stop position="0.0" midpoint="0.5">
151.21087 + <matte red="129" green="129" blue="129" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.043137252" alphaOffset="0"/>
151.21088 + </stop>
151.21089 + <stop position="1.0" midpoint="0.5">
151.21090 + <matte red="78" green="78" blue="78" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.24313727" alphaOffset="0"/>
151.21091 + </stop>
151.21092 + </gradient>
151.21093 + <paintPoints x1="0.4863636363636362" y1="0.011695906106605689" x2="0.4909090909090911" y2="0.888888891987246"/>
151.21094 + <points>
151.21095 + <point x="6.0" y="9.0" cp1x="6.0" cp1y="9.0" cp2x="6.0" cp2y="9.0"/>
151.21096 + <point x="8.454545454545453" y="5.1136363636363615" cp1x="8.454545454545453" cp1y="5.1136363636363615" cp2x="8.454545454545453" cp2y="5.1136363636363615"/>
151.21097 + <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
151.21098 + </points>
151.21099 + </path>
151.21100 + </shapes>
151.21101 + <effects/>
151.21102 + </layer>
151.21103 + </canvas>
151.21104 + </state>
151.21105 + <state stateKeys="MouseOver+Focused" inverted="true">
151.21106 + <style>
151.21107 + <textForeground/>
151.21108 + <textBackground/>
151.21109 + <background/>
151.21110 + <uiproperties/>
151.21111 + </style>
151.21112 + <canvas>
151.21113 + <size width="20" height="12"/>
151.21114 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.21115 + <stretchingInsets top="3" bottom="3" left="6" right="9"/>
151.21116 + <layer name="Layer 1">
151.21117 + <opacity>1.0</opacity>
151.21118 + <fillOpacity>1.0</fillOpacity>
151.21119 + <blendingMode>NORMAL</blendingMode>
151.21120 + <locked>false</locked>
151.21121 + <visible>true</visible>
151.21122 + <shapes>
151.21123 + <path>
151.21124 + <gradient cycleMethod="NO_CYCLE">
151.21125 + <stop position="0.0" midpoint="0.5">
151.21126 + <matte red="129" green="129" blue="129" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.043137252" alphaOffset="0"/>
151.21127 + </stop>
151.21128 + <stop position="1.0" midpoint="0.5">
151.21129 + <matte red="78" green="78" blue="78" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.24313727" alphaOffset="0"/>
151.21130 + </stop>
151.21131 + </gradient>
151.21132 + <paintPoints x1="0.4863636363636362" y1="0.011695906106605689" x2="0.4909090909090911" y2="0.888888891987246"/>
151.21133 + <points>
151.21134 + <point x="6.0" y="9.0" cp1x="6.0" cp1y="9.0" cp2x="6.0" cp2y="9.0"/>
151.21135 + <point x="8.454545454545453" y="5.1136363636363615" cp1x="8.454545454545453" cp1y="5.1136363636363615" cp2x="8.454545454545453" cp2y="5.1136363636363615"/>
151.21136 + <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
151.21137 + </points>
151.21138 + </path>
151.21139 + </shapes>
151.21140 + <effects/>
151.21141 + </layer>
151.21142 + </canvas>
151.21143 + </state>
151.21144 + <state stateKeys="Pressed+Focused" inverted="true">
151.21145 + <style>
151.21146 + <textForeground/>
151.21147 + <textBackground/>
151.21148 + <background/>
151.21149 + <uiproperties/>
151.21150 + </style>
151.21151 + <canvas>
151.21152 + <size width="20" height="12"/>
151.21153 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.21154 + <stretchingInsets top="5" bottom="3" left="6" right="9"/>
151.21155 + <layer name="Layer 1">
151.21156 + <opacity>1.0</opacity>
151.21157 + <fillOpacity>1.0</fillOpacity>
151.21158 + <blendingMode>NORMAL</blendingMode>
151.21159 + <locked>false</locked>
151.21160 + <visible>true</visible>
151.21161 + <shapes>
151.21162 + <path>
151.21163 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.21164 + <paintPoints x1="0.4863636363636362" y1="0.011695906106605689" x2="0.4909090909090911" y2="0.888888891987246"/>
151.21165 + <points>
151.21166 + <point x="6.0" y="9.0" cp1x="6.0" cp1y="9.0" cp2x="6.0" cp2y="9.0"/>
151.21167 + <point x="8.522727272727273" y="5.318181818181818" cp1x="8.522727272727273" cp1y="5.318181818181818" cp2x="8.522727272727273" cp2y="5.318181818181818"/>
151.21168 + <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
151.21169 + </points>
151.21170 + </path>
151.21171 + </shapes>
151.21172 + <effects/>
151.21173 + </layer>
151.21174 + </canvas>
151.21175 + </state>
151.21176 + <state stateKeys="MouseOver" inverted="true">
151.21177 + <style>
151.21178 + <textForeground/>
151.21179 + <textBackground/>
151.21180 + <background/>
151.21181 + <uiproperties/>
151.21182 + </style>
151.21183 + <canvas>
151.21184 + <size width="20" height="12"/>
151.21185 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.21186 + <stretchingInsets top="5" bottom="3" left="6" right="9"/>
151.21187 + <layer name="Layer 1">
151.21188 + <opacity>1.0</opacity>
151.21189 + <fillOpacity>1.0</fillOpacity>
151.21190 + <blendingMode>NORMAL</blendingMode>
151.21191 + <locked>false</locked>
151.21192 + <visible>true</visible>
151.21193 + <shapes>
151.21194 + <path>
151.21195 + <gradient cycleMethod="NO_CYCLE">
151.21196 + <stop position="0.0" midpoint="0.5">
151.21197 + <matte red="129" green="129" blue="129" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.043137252" alphaOffset="0"/>
151.21198 + </stop>
151.21199 + <stop position="1.0" midpoint="0.5">
151.21200 + <matte red="78" green="78" blue="78" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.24313727" alphaOffset="0"/>
151.21201 + </stop>
151.21202 + </gradient>
151.21203 + <paintPoints x1="0.4863636363636362" y1="0.011695906106605689" x2="0.4909090909090911" y2="0.888888891987246"/>
151.21204 + <points>
151.21205 + <point x="6.0" y="9.0" cp1x="6.0" cp1y="9.0" cp2x="6.0" cp2y="9.0"/>
151.21206 + <point x="8.454545454545453" y="5.1136363636363615" cp1x="8.454545454545453" cp1y="5.1136363636363615" cp2x="8.454545454545453" cp2y="5.1136363636363615"/>
151.21207 + <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
151.21208 + </points>
151.21209 + </path>
151.21210 + </shapes>
151.21211 + <effects/>
151.21212 + </layer>
151.21213 + </canvas>
151.21214 + </state>
151.21215 + <state stateKeys="Pressed" inverted="true">
151.21216 + <style>
151.21217 + <textForeground/>
151.21218 + <textBackground/>
151.21219 + <background/>
151.21220 + <uiproperties/>
151.21221 + </style>
151.21222 + <canvas>
151.21223 + <size width="20" height="12"/>
151.21224 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.21225 + <stretchingInsets top="5" bottom="3" left="6" right="9"/>
151.21226 + <layer name="Layer 1">
151.21227 + <opacity>1.0</opacity>
151.21228 + <fillOpacity>1.0</fillOpacity>
151.21229 + <blendingMode>NORMAL</blendingMode>
151.21230 + <locked>false</locked>
151.21231 + <visible>true</visible>
151.21232 + <shapes>
151.21233 + <path>
151.21234 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="0"/>
151.21235 + <paintPoints x1="0.4863636363636362" y1="0.011695906106605689" x2="0.4909090909090911" y2="0.888888891987246"/>
151.21236 + <points>
151.21237 + <point x="6.0" y="9.0" cp1x="6.0" cp1y="9.0" cp2x="6.0" cp2y="9.0"/>
151.21238 + <point x="8.522727272727273" y="5.318181818181818" cp1x="8.522727272727273" cp1y="5.318181818181818" cp2x="8.522727272727273" cp2y="5.318181818181818"/>
151.21239 + <point x="11.0" y="9.0" cp1x="11.0" cp1y="9.0" cp2x="11.0" cp2y="9.0"/>
151.21240 + </points>
151.21241 + </path>
151.21242 + </shapes>
151.21243 + <effects/>
151.21244 + </layer>
151.21245 + </canvas>
151.21246 + </state>
151.21247 + </foregroundStates>
151.21248 + <borderStates/>
151.21249 + <regions/>
151.21250 + </uiComponent>
151.21251 + </regions>
151.21252 + </uiComponent>
151.21253 + <uiComponent opaque="false" type="javax.swing.JSplitPane" name="SplitPane" ui="SplitPaneUI" subregion="false">
151.21254 + <stateTypes>
151.21255 + <stateType key="Enabled"/>
151.21256 + <stateType key="MouseOver"/>
151.21257 + <stateType key="Pressed"/>
151.21258 + <stateType key="Disabled"/>
151.21259 + <stateType key="Focused"/>
151.21260 + <stateType key="Selected"/>
151.21261 + <stateType key="Vertical">
151.21262 + <codeSnippet><![CDATA[
151.21263 + return c instanceof JSplitPane && (((JSplitPane)c).getOrientation() == 1);]]></codeSnippet>
151.21264 + </stateType>
151.21265 + </stateTypes>
151.21266 + <contentMargins top="1" bottom="1" left="1" right="1"/>
151.21267 + <style>
151.21268 + <textForeground/>
151.21269 + <textBackground/>
151.21270 + <background/>
151.21271 + <uiproperties>
151.21272 + <uiProperty name="size" type="INT" value="10"/>
151.21273 + <uiProperty name="dividerSize" type="INT" value="10"/>
151.21274 + <uiProperty name="centerOneTouchButtons" type="BOOLEAN" value="true"/>
151.21275 + <uiProperty name="oneTouchButtonOffset" type="INT" value="30"/>
151.21276 + <uiProperty name="oneTouchExpandable" type="BOOLEAN" value="false"/>
151.21277 + <uiProperty name="continuousLayout" type="BOOLEAN" value="true"/>
151.21278 + </uiproperties>
151.21279 + </style>
151.21280 + <backgroundStates>
151.21281 + <state stateKeys="Enabled">
151.21282 + <style>
151.21283 + <textForeground/>
151.21284 + <textBackground/>
151.21285 + <background/>
151.21286 + <uiproperties/>
151.21287 + </style>
151.21288 + <canvas>
151.21289 + <size width="18" height="15"/>
151.21290 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.21291 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.21292 + <layer name="Layer 1">
151.21293 + <opacity>1.0</opacity>
151.21294 + <fillOpacity>1.0</fillOpacity>
151.21295 + <blendingMode>NORMAL</blendingMode>
151.21296 + <locked>false</locked>
151.21297 + <visible>true</visible>
151.21298 + <shapes/>
151.21299 + <effects/>
151.21300 + </layer>
151.21301 + </canvas>
151.21302 + </state>
151.21303 + </backgroundStates>
151.21304 + <foregroundStates/>
151.21305 + <borderStates/>
151.21306 + <regions>
151.21307 + <region name="SplitPaneDivider" subregion="true">
151.21308 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.21309 + <style>
151.21310 + <textForeground/>
151.21311 + <textBackground/>
151.21312 + <background/>
151.21313 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.21314 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.21315 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.21316 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.21317 + <uiproperties/>
151.21318 + </style>
151.21319 + <backgroundStates>
151.21320 + <state stateKeys="Enabled">
151.21321 + <style>
151.21322 + <textForeground/>
151.21323 + <textBackground/>
151.21324 + <background/>
151.21325 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.21326 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.21327 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.21328 + <uiproperties/>
151.21329 + </style>
151.21330 + <canvas>
151.21331 + <size width="68" height="10"/>
151.21332 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.21333 + <stretchingInsets top="3" bottom="3" left="0" right="0"/>
151.21334 + <layer name="Layer 1">
151.21335 + <opacity>1.0</opacity>
151.21336 + <fillOpacity>1.0</fillOpacity>
151.21337 + <blendingMode>NORMAL</blendingMode>
151.21338 + <locked>false</locked>
151.21339 + <visible>true</visible>
151.21340 + <shapes>
151.21341 + <rectangle x1="0.0" x2="68.0" y1="0.0" y2="10.0" rounding="0.0">
151.21342 + <gradient cycleMethod="NO_CYCLE">
151.21343 + <stop position="0.058064517" midpoint="0.5">
151.21344 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.017358616" brightnessOffset="-0.11372548" alphaOffset="0"/>
151.21345 + </stop>
151.21346 + <stop position="0.103225805" midpoint="0.5">
151.21347 + <matte red="244" green="244" blue="246" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.102396235" brightnessOffset="0.21960783" alphaOffset="0"/>
151.21348 + </stop>
151.21349 + <stop position="0.12903225" midpoint="0.5">
151.21350 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.21351 + </stop>
151.21352 + <stop position="0.7387097" midpoint="0.5">
151.21353 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.21354 + </stop>
151.21355 + <stop position="0.81935483" midpoint="0.5">
151.21356 + <matte red="244" green="244" blue="246" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.102396235" brightnessOffset="0.21960783" alphaOffset="0"/>
151.21357 + </stop>
151.21358 + <stop position="0.8967742" midpoint="0.5">
151.21359 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.017358616" brightnessOffset="-0.11372548" alphaOffset="0"/>
151.21360 + </stop>
151.21361 + </gradient>
151.21362 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.21363 + </rectangle>
151.21364 + </shapes>
151.21365 + <effects/>
151.21366 + </layer>
151.21367 + <templateLayer fileName="1140562314d.png">
151.21368 + <layer name="Template" type="template">
151.21369 + <opacity>1.0</opacity>
151.21370 + <fillOpacity>1.0</fillOpacity>
151.21371 + <blendingMode>NORMAL</blendingMode>
151.21372 + <locked>false</locked>
151.21373 + <visible>true</visible>
151.21374 + <shapes/>
151.21375 + <effects/>
151.21376 + </layer>
151.21377 + </templateLayer>
151.21378 + </canvas>
151.21379 + </state>
151.21380 + <state stateKeys="Focused">
151.21381 + <style>
151.21382 + <textForeground/>
151.21383 + <textBackground/>
151.21384 + <background/>
151.21385 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.21386 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.21387 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.21388 + <uiproperties/>
151.21389 + </style>
151.21390 + <canvas>
151.21391 + <size width="68" height="10"/>
151.21392 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.21393 + <stretchingInsets top="3" bottom="3" left="0" right="0"/>
151.21394 + <layer name="Layer 1">
151.21395 + <opacity>1.0</opacity>
151.21396 + <fillOpacity>1.0</fillOpacity>
151.21397 + <blendingMode>NORMAL</blendingMode>
151.21398 + <locked>false</locked>
151.21399 + <visible>true</visible>
151.21400 + <shapes>
151.21401 + <rectangle x1="0.0" x2="68.0" y1="0.0" y2="10.0" rounding="0.0">
151.21402 + <gradient cycleMethod="NO_CYCLE">
151.21403 + <stop position="0.058064517" midpoint="0.5">
151.21404 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.017358616" brightnessOffset="-0.11372548" alphaOffset="0"/>
151.21405 + </stop>
151.21406 + <stop position="0.103225805" midpoint="0.5">
151.21407 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.21408 + </stop>
151.21409 + <stop position="0.13" midpoint="0.5">
151.21410 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.21411 + </stop>
151.21412 + <stop position="0.73" midpoint="0.5">
151.21413 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.21414 + </stop>
151.21415 + <stop position="0.81935483" midpoint="0.5">
151.21416 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.21417 + </stop>
151.21418 + <stop position="0.8967742" midpoint="0.5">
151.21419 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.017358616" brightnessOffset="-0.11372548" alphaOffset="0"/>
151.21420 + </stop>
151.21421 + </gradient>
151.21422 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.21423 + </rectangle>
151.21424 + </shapes>
151.21425 + <effects/>
151.21426 + </layer>
151.21427 + <templateLayer fileName="1140562314d.png">
151.21428 + <layer name="Template" type="template">
151.21429 + <opacity>1.0</opacity>
151.21430 + <fillOpacity>1.0</fillOpacity>
151.21431 + <blendingMode>NORMAL</blendingMode>
151.21432 + <locked>false</locked>
151.21433 + <visible>true</visible>
151.21434 + <shapes/>
151.21435 + <effects/>
151.21436 + </layer>
151.21437 + </templateLayer>
151.21438 + </canvas>
151.21439 + </state>
151.21440 + </backgroundStates>
151.21441 + <foregroundStates>
151.21442 + <state stateKeys="Enabled" inverted="true">
151.21443 + <style>
151.21444 + <textForeground/>
151.21445 + <textBackground/>
151.21446 + <background/>
151.21447 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.21448 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.21449 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.21450 + <uiproperties/>
151.21451 + </style>
151.21452 + <canvas>
151.21453 + <size width="68" height="10"/>
151.21454 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.21455 + <stretchingInsets top="0" bottom="0" left="24" right="24"/>
151.21456 + <layer name="Layer 1">
151.21457 + <opacity>1.0</opacity>
151.21458 + <fillOpacity>1.0</fillOpacity>
151.21459 + <blendingMode>NORMAL</blendingMode>
151.21460 + <locked>false</locked>
151.21461 + <visible>true</visible>
151.21462 + <shapes>
151.21463 + <rectangle x1="26.0" x2="42.0" y1="4.0" y2="7.0" rounding="4.0">
151.21464 + <gradient cycleMethod="NO_CYCLE">
151.21465 + <stop position="0.090322584" midpoint="0.5">
151.21466 + <matte red="180" green="184" blue="192" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.048026316" brightnessOffset="0.007843137" alphaOffset="0"/>
151.21467 + </stop>
151.21468 + <stop position="0.5" midpoint="0.5">
151.21469 + <matte red="235" green="238" blue="245" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.06970999" brightnessOffset="0.21568626" alphaOffset="0"/>
151.21470 + </stop>
151.21471 + <stop position="0.66451615" midpoint="0.5">
151.21472 + <matte red="198" green="201" blue="207" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06704806" brightnessOffset="0.06666666" alphaOffset="0"/>
151.21473 + </stop>
151.21474 + </gradient>
151.21475 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.21476 + </rectangle>
151.21477 + <rectangle x1="25.0" x2="43.0" y1="3.0" y2="8.0" rounding="3.6666666666666927">
151.21478 + <gradient cycleMethod="NO_CYCLE">
151.21479 + <stop position="0.20645161" midpoint="0.5">
151.21480 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.017358616" brightnessOffset="-0.11372548" alphaOffset="0"/>
151.21481 + </stop>
151.21482 + <stop position="0.7935484" midpoint="0.5">
151.21483 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.21484 + </stop>
151.21485 + </gradient>
151.21486 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.21487 + </rectangle>
151.21488 + </shapes>
151.21489 + <effects/>
151.21490 + </layer>
151.21491 + <templateLayer fileName="1140562314d.png">
151.21492 + <layer name="Template" type="template">
151.21493 + <opacity>1.0</opacity>
151.21494 + <fillOpacity>1.0</fillOpacity>
151.21495 + <blendingMode>NORMAL</blendingMode>
151.21496 + <locked>false</locked>
151.21497 + <visible>true</visible>
151.21498 + <shapes/>
151.21499 + <effects/>
151.21500 + </layer>
151.21501 + </templateLayer>
151.21502 + </canvas>
151.21503 + </state>
151.21504 + <state stateKeys="Enabled+Vertical" inverted="true">
151.21505 + <style>
151.21506 + <textForeground/>
151.21507 + <textBackground/>
151.21508 + <background/>
151.21509 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.21510 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.21511 + <uiproperties/>
151.21512 + </style>
151.21513 + <canvas>
151.21514 + <size width="10" height="38"/>
151.21515 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.21516 + <stretchingInsets top="5" bottom="5" left="0" right="0"/>
151.21517 + <layer name="Layer 1">
151.21518 + <opacity>1.0</opacity>
151.21519 + <fillOpacity>1.0</fillOpacity>
151.21520 + <blendingMode>NORMAL</blendingMode>
151.21521 + <locked>false</locked>
151.21522 + <visible>true</visible>
151.21523 + <shapes>
151.21524 + <!--<rectangle x1="3.9545454545454546" x2="6.0" y1="26.49999999999998" y2="10.772727272727275" rounding="2.000000000000001">-->
151.21525 +
151.21526 + <rectangle x1="4" x2="6.0" y1="10" y2="26.5" rounding="2">
151.21527 + <gradient cycleMethod="NO_CYCLE">
151.21528 + <stop position="0.0" midpoint="0.5">
151.21529 + <matte red="184" green="188" blue="196" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.049301825" brightnessOffset="0.02352941" alphaOffset="0"/>
151.21530 + </stop>
151.21531 + <stop position="0.16129032" midpoint="0.5">
151.21532 + <matte red="211" green="214" blue="219" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.07399663" brightnessOffset="0.11372548" alphaOffset="0"/>
151.21533 + </stop>
151.21534 + <stop position="0.86451614" midpoint="0.5">
151.21535 + <matte red="213" green="217" blue="222" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.018518567" saturationOffset="-0.06998578" brightnessOffset="0.12549019" alphaOffset="0"/>
151.21536 + </stop>
151.21537 + <stop position="0.90645164" midpoint="0.5">
151.21538 + <matte red="188" green="192" blue="200" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.050526317" brightnessOffset="0.039215684" alphaOffset="0"/>
151.21539 + </stop>
151.21540 + </gradient>
151.21541 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.21542 + </rectangle>
151.21543 + <rectangle x1="3.0" x2="7.0" y1="9.0" y2="28.0" rounding="4.0">
151.21544 + <gradient cycleMethod="NO_CYCLE">
151.21545 + <stop position="0.0" midpoint="0.5">
151.21546 + <matte red="150" green="155" blue="165" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.019617222" brightnessOffset="-0.09803921" alphaOffset="0"/>
151.21547 + </stop>
151.21548 + <stop position="0.84193546" midpoint="0.5">
151.21549 + <matte red="166" green="170" blue="179" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.004273474" saturationOffset="-0.03790062" brightnessOffset="-0.043137252" alphaOffset="0"/>
151.21550 + </stop>
151.21551 + <stop position="0.9483871" midpoint="0.5">
151.21552 + <matte red="252" green="253" blue="253" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.111111104" saturationOffset="-0.106573746" brightnessOffset="0.24705881" alphaOffset="0"/>
151.21553 + </stop>
151.21554 + </gradient>
151.21555 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.21556 + </rectangle>
151.21557 + </shapes>
151.21558 + <effects/>
151.21559 + </layer>
151.21560 + <templateLayer fileName="114056ef58e.png">
151.21561 + <layer name="Template" type="template">
151.21562 + <opacity>1.0</opacity>
151.21563 + <fillOpacity>1.0</fillOpacity>
151.21564 + <blendingMode>NORMAL</blendingMode>
151.21565 + <locked>false</locked>
151.21566 + <visible>true</visible>
151.21567 + <shapes/>
151.21568 + <effects/>
151.21569 + </layer>
151.21570 + </templateLayer>
151.21571 + </canvas>
151.21572 + </state>
151.21573 + </foregroundStates>
151.21574 + <borderStates/>
151.21575 + <regions/>
151.21576 + </region>
151.21577 + </regions>
151.21578 + </uiComponent>
151.21579 + <uiComponent opaque="false" type="javax.swing.JTabbedPane" name="TabbedPane" ui="TabbedPaneUI" subregion="false">
151.21580 + <stateTypes/>
151.21581 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.21582 + <style>
151.21583 + <textForeground/>
151.21584 + <textBackground/>
151.21585 + <background/>
151.21586 + <uiproperties>
151.21587 + <uiProperty name="tabAreaStatesMatchSelectedTab" type="BOOLEAN" value="true"/>
151.21588 + <uiProperty name="nudgeSelectedLabel" type="BOOLEAN" value="false"/>
151.21589 + <uiProperty name="tabRunOverlay" type="INT" value="2"/>
151.21590 + <uiProperty name="tabOverlap" type="INT" value="-1"/>
151.21591 + <uiProperty name="extendTabsToBase" type="BOOLEAN" value="true"/>
151.21592 + <uiProperty name="useBasicArrows" type="BOOLEAN" value="true"/>
151.21593 + <uiProperty name="shadow" type="COLOR">
151.21594 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.21595 + </uiProperty>
151.21596 + <uiProperty name="darkShadow" type="COLOR">
151.21597 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="text" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.21598 + </uiProperty>
151.21599 + <uiProperty name="highlight" type="COLOR">
151.21600 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.21601 + </uiProperty>
151.21602 + </uiproperties>
151.21603 + </style>
151.21604 + <backgroundStates>
151.21605 + <state stateKeys="Disabled">
151.21606 + <style>
151.21607 + <textForeground/>
151.21608 + <textBackground/>
151.21609 + <background/>
151.21610 + <uiproperties/>
151.21611 + </style>
151.21612 + <canvas>
151.21613 + <size width="100" height="30"/>
151.21614 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.21615 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.21616 + <layer name="Layer 1">
151.21617 + <opacity>1.0</opacity>
151.21618 + <fillOpacity>1.0</fillOpacity>
151.21619 + <blendingMode>NORMAL</blendingMode>
151.21620 + <locked>false</locked>
151.21621 + <visible>true</visible>
151.21622 + <shapes/>
151.21623 + <effects/>
151.21624 + </layer>
151.21625 + </canvas>
151.21626 + </state>
151.21627 + <state stateKeys="Enabled">
151.21628 + <style>
151.21629 + <textForeground/>
151.21630 + <textBackground/>
151.21631 + <background/>
151.21632 + <uiproperties/>
151.21633 + </style>
151.21634 + <canvas>
151.21635 + <size width="100" height="30"/>
151.21636 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.21637 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.21638 + <layer name="Layer 1">
151.21639 + <opacity>1.0</opacity>
151.21640 + <fillOpacity>1.0</fillOpacity>
151.21641 + <blendingMode>NORMAL</blendingMode>
151.21642 + <locked>false</locked>
151.21643 + <visible>true</visible>
151.21644 + <shapes/>
151.21645 + <effects/>
151.21646 + </layer>
151.21647 + </canvas>
151.21648 + </state>
151.21649 + <state stateKeys="Focused">
151.21650 + <style>
151.21651 + <textForeground/>
151.21652 + <textBackground/>
151.21653 + <background/>
151.21654 + <uiproperties/>
151.21655 + </style>
151.21656 + <canvas>
151.21657 + <size width="100" height="30"/>
151.21658 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.21659 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.21660 + <layer name="Layer 1">
151.21661 + <opacity>1.0</opacity>
151.21662 + <fillOpacity>1.0</fillOpacity>
151.21663 + <blendingMode>NORMAL</blendingMode>
151.21664 + <locked>false</locked>
151.21665 + <visible>true</visible>
151.21666 + <shapes/>
151.21667 + <effects/>
151.21668 + </layer>
151.21669 + </canvas>
151.21670 + </state>
151.21671 + <state stateKeys="MouseOver">
151.21672 + <style>
151.21673 + <textForeground/>
151.21674 + <textBackground/>
151.21675 + <background/>
151.21676 + <uiproperties/>
151.21677 + </style>
151.21678 + <canvas>
151.21679 + <size width="100" height="30"/>
151.21680 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.21681 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.21682 + <layer name="Layer 1">
151.21683 + <opacity>1.0</opacity>
151.21684 + <fillOpacity>1.0</fillOpacity>
151.21685 + <blendingMode>NORMAL</blendingMode>
151.21686 + <locked>false</locked>
151.21687 + <visible>true</visible>
151.21688 + <shapes/>
151.21689 + <effects/>
151.21690 + </layer>
151.21691 + </canvas>
151.21692 + </state>
151.21693 + <state stateKeys="Pressed">
151.21694 + <style>
151.21695 + <textForeground/>
151.21696 + <textBackground/>
151.21697 + <background/>
151.21698 + <uiproperties/>
151.21699 + </style>
151.21700 + <canvas>
151.21701 + <size width="100" height="30"/>
151.21702 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.21703 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.21704 + <layer name="Layer 1">
151.21705 + <opacity>1.0</opacity>
151.21706 + <fillOpacity>1.0</fillOpacity>
151.21707 + <blendingMode>NORMAL</blendingMode>
151.21708 + <locked>false</locked>
151.21709 + <visible>true</visible>
151.21710 + <shapes/>
151.21711 + <effects/>
151.21712 + </layer>
151.21713 + </canvas>
151.21714 + </state>
151.21715 + </backgroundStates>
151.21716 + <foregroundStates/>
151.21717 + <borderStates/>
151.21718 + <regions>
151.21719 + <region name="TabbedPaneTab" subregion="true">
151.21720 + <contentMargins top="2" bottom="3" left="8" right="8"/>
151.21721 + <style>
151.21722 + <textForeground/>
151.21723 + <textBackground/>
151.21724 + <background/>
151.21725 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.21726 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.21727 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.21728 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.21729 + <uiproperties/>
151.21730 + </style>
151.21731 + <backgroundStates>
151.21732 + <state stateKeys="Enabled">
151.21733 + <style>
151.21734 + <textForeground/>
151.21735 + <textBackground/>
151.21736 + <background/>
151.21737 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.21738 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.21739 + <uiproperties/>
151.21740 + </style>
151.21741 + <canvas>
151.21742 + <size width="44" height="20"/>
151.21743 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.21744 + <stretchingInsets top="7" bottom="1" left="7" right="7"/>
151.21745 + <layer name="Layer 1">
151.21746 + <opacity>1.0</opacity>
151.21747 + <fillOpacity>1.0</fillOpacity>
151.21748 + <blendingMode>NORMAL</blendingMode>
151.21749 + <locked>false</locked>
151.21750 + <visible>true</visible>
151.21751 + <shapes>
151.21752 + <path>
151.21753 + <gradient cycleMethod="NO_CYCLE">
151.21754 + <stop position="0.0" midpoint="0.5">
151.21755 + <matte red="251" green="251" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.63174605" brightnessOffset="0.43921566" alphaOffset="0"/>
151.21756 + </stop>
151.21757 + <stop position="0.2" midpoint="0.5">
151.21758 + <matte red="231" green="232" blue="236" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.05468172" saturationOffset="-0.6145278" brightnessOffset="0.37647057" alphaOffset="0"/>
151.21759 + </stop>
151.21760 + <stop position="1.0" midpoint="0.5">
151.21761 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5953556" brightnessOffset="0.32549018" alphaOffset="0"/>
151.21762 + </stop>
151.21763 + </gradient>
151.21764 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.21765 + <points>
151.21766 + <point x="1.0" y="19.0" cp1x="1.0" cp1y="19.0" cp2x="1.0" cp2y="19.0"/>
151.21767 + <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.555555555555554" cp2x="1.0" cp2y="2.4444444444444464"/>
151.21768 + <point x="6.0" y="1.0" cp1x="2.555555555555557" cp1y="1.0" cp2x="9.444444444444443" cp2y="1.0"/>
151.21769 + <point x="38.0" y="1.0" cp1x="34.66666666666666" cp1y="1.0" cp2x="41.33333333333334" cp2y="1.0"/>
151.21770 + <point x="43.0" y="6.0" cp1x="43.0" cp1y="2.722222222222223" cp2x="43.0" cp2y="9.277777777777777"/>
151.21771 + <point x="43.0" y="19.0" cp1x="43.0" cp1y="19.0" cp2x="43.0" cp2y="19.0"/>
151.21772 + </points>
151.21773 + </path>
151.21774 + <path>
151.21775 + <gradient cycleMethod="NO_CYCLE">
151.21776 + <stop position="0.0" midpoint="0.5">
151.21777 + <matte red="103" green="106" blue="112" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.55535716" brightnessOffset="-0.109803945" alphaOffset="0"/>
151.21778 + </stop>
151.21779 + <stop position="1.0" midpoint="0.5">
151.21780 + <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
151.21781 + </stop>
151.21782 + </gradient>
151.21783 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.21784 + <points>
151.21785 + <point x="0.0" y="5.0" cp1x="0.0" cp1y="8.0" cp2x="0.0" cp2y="2.0"/>
151.21786 + <point x="5.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="8.0" cp2y="0.0"/>
151.21787 + <point x="39.0" y="0.0" cp1x="36.0" cp1y="0.0" cp2x="42.0" cp2y="0.0"/>
151.21788 + <point x="44.0" y="5.0" cp1x="44.0" cp1y="2.0" cp2x="44.0" cp2y="8.0"/>
151.21789 + <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
151.21790 + <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
151.21791 + </points>
151.21792 + </path>
151.21793 + </shapes>
151.21794 + <effects/>
151.21795 + </layer>
151.21796 + <templateLayer fileName="11404048a3e.png">
151.21797 + <layer name="Template" type="template">
151.21798 + <opacity>1.0</opacity>
151.21799 + <fillOpacity>1.0</fillOpacity>
151.21800 + <blendingMode>NORMAL</blendingMode>
151.21801 + <locked>false</locked>
151.21802 + <visible>false</visible>
151.21803 + <shapes/>
151.21804 + <effects/>
151.21805 + </layer>
151.21806 + </templateLayer>
151.21807 + </canvas>
151.21808 + </state>
151.21809 + <state stateKeys="Enabled+MouseOver">
151.21810 + <style>
151.21811 + <textForeground/>
151.21812 + <textBackground/>
151.21813 + <background/>
151.21814 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.21815 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.21816 + <uiproperties/>
151.21817 + </style>
151.21818 + <canvas>
151.21819 + <size width="44" height="20"/>
151.21820 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.21821 + <stretchingInsets top="7" bottom="1" left="7" right="7"/>
151.21822 + <layer name="Layer 1">
151.21823 + <opacity>1.0</opacity>
151.21824 + <fillOpacity>1.0</fillOpacity>
151.21825 + <blendingMode>NORMAL</blendingMode>
151.21826 + <locked>false</locked>
151.21827 + <visible>true</visible>
151.21828 + <shapes>
151.21829 + <path>
151.21830 + <gradient cycleMethod="NO_CYCLE">
151.21831 + <stop position="0.0" midpoint="0.5">
151.21832 + <matte red="253" green="253" blue="254" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="-0.6317773" brightnessOffset="0.4470588" alphaOffset="0"/>
151.21833 + </stop>
151.21834 + <stop position="0.2" midpoint="0.5">
151.21835 + <matte red="242" green="244" blue="247" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.021348298" saturationOffset="-0.61547136" brightnessOffset="0.41960782" alphaOffset="0"/>
151.21836 + </stop>
151.21837 + <stop position="1.0" midpoint="0.5">
151.21838 + <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5985242" brightnessOffset="0.39999998" alphaOffset="0"/>
151.21839 + </stop>
151.21840 + </gradient>
151.21841 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.21842 + <points>
151.21843 + <point x="1.0" y="19.0" cp1x="1.0" cp1y="19.0" cp2x="1.0" cp2y="19.0"/>
151.21844 + <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.555555555555554" cp2x="1.0" cp2y="2.4444444444444464"/>
151.21845 + <point x="6.0" y="1.0" cp1x="2.555555555555557" cp1y="1.0" cp2x="9.444444444444443" cp2y="1.0"/>
151.21846 + <point x="38.0" y="1.0" cp1x="34.66666666666666" cp1y="1.0" cp2x="41.33333333333334" cp2y="1.0"/>
151.21847 + <point x="43.0" y="6.0" cp1x="43.0" cp1y="2.722222222222223" cp2x="43.0" cp2y="9.277777777777777"/>
151.21848 + <point x="43.0" y="19.0" cp1x="43.0" cp1y="19.0" cp2x="43.0" cp2y="19.0"/>
151.21849 + </points>
151.21850 + </path>
151.21851 + <path>
151.21852 + <gradient cycleMethod="NO_CYCLE">
151.21853 + <stop position="0.0" midpoint="0.5">
151.21854 + <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.54616207" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.21855 + </stop>
151.21856 + <stop position="1.0" midpoint="0.5">
151.21857 + <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
151.21858 + </stop>
151.21859 + </gradient>
151.21860 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.21861 + <points>
151.21862 + <point x="0.0" y="5.0" cp1x="0.0" cp1y="8.0" cp2x="0.0" cp2y="2.0"/>
151.21863 + <point x="5.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="8.0" cp2y="0.0"/>
151.21864 + <point x="39.0" y="0.0" cp1x="36.0" cp1y="0.0" cp2x="42.0" cp2y="0.0"/>
151.21865 + <point x="44.0" y="5.0" cp1x="44.0" cp1y="2.0" cp2x="44.0" cp2y="8.0"/>
151.21866 + <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
151.21867 + <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
151.21868 + </points>
151.21869 + </path>
151.21870 + </shapes>
151.21871 + <effects/>
151.21872 + </layer>
151.21873 + <templateLayer fileName="114041a814c.png">
151.21874 + <layer name="Template" type="template">
151.21875 + <opacity>1.0</opacity>
151.21876 + <fillOpacity>1.0</fillOpacity>
151.21877 + <blendingMode>NORMAL</blendingMode>
151.21878 + <locked>false</locked>
151.21879 + <visible>true</visible>
151.21880 + <shapes/>
151.21881 + <effects/>
151.21882 + </layer>
151.21883 + </templateLayer>
151.21884 + </canvas>
151.21885 + </state>
151.21886 + <state stateKeys="Enabled+Pressed">
151.21887 + <style>
151.21888 + <textForeground/>
151.21889 + <textBackground/>
151.21890 + <background/>
151.21891 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.21892 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.21893 + <uiproperties/>
151.21894 + </style>
151.21895 + <canvas>
151.21896 + <size width="44" height="20"/>
151.21897 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.21898 + <stretchingInsets top="7" bottom="1" left="6" right="7"/>
151.21899 + <layer name="Layer 1">
151.21900 + <opacity>1.0</opacity>
151.21901 + <fillOpacity>1.0</fillOpacity>
151.21902 + <blendingMode>NORMAL</blendingMode>
151.21903 + <locked>false</locked>
151.21904 + <visible>true</visible>
151.21905 + <shapes>
151.21906 + <path>
151.21907 + <gradient cycleMethod="NO_CYCLE">
151.21908 + <stop position="0.0" midpoint="0.5">
151.21909 + <matte red="205" green="209" blue="216" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.027408898" saturationOffset="-0.5847884" brightnessOffset="0.2980392" alphaOffset="0"/>
151.21910 + </stop>
151.21911 + <stop position="0.2" midpoint="0.5">
151.21912 + <matte red="183" green="188" blue="199" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.035931647" saturationOffset="-0.5553123" brightnessOffset="0.23137254" alphaOffset="0"/>
151.21913 + </stop>
151.21914 + <stop position="0.64193547" midpoint="0.5">
151.21915 + <matte red="166" green="173" blue="186" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.029681683" saturationOffset="-0.5281874" brightnessOffset="0.18039215" alphaOffset="0"/>
151.21916 + </stop>
151.21917 + <stop position="1.0" midpoint="0.5">
151.21918 + <matte red="202" green="208" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.03801495" saturationOffset="-0.5456242" brightnessOffset="0.3215686" alphaOffset="0"/>
151.21919 + </stop>
151.21920 + </gradient>
151.21921 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.21922 + <points>
151.21923 + <point x="1.0" y="19.0" cp1x="1.0" cp1y="19.0" cp2x="1.0" cp2y="19.0"/>
151.21924 + <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.666666666666664" cp2x="1.0" cp2y="2.3333333333333357"/>
151.21925 + <point x="6.0" y="1.0" cp1x="2.4444444444444464" cp1y="1.0" cp2x="9.555555555555554" cp2y="1.0"/>
151.21926 + <point x="38.0" y="1.0" cp1x="34.499999999999986" cp1y="1.0555555555555556" cp2x="41.500000000000014" cp2y="0.9444444444444444"/>
151.21927 + <point x="43.0" y="6.0" cp1x="43.05555555555556" cp1y="2.3333333333333357" cp2x="42.94444444444444" cp2y="9.666666666666664"/>
151.21928 + <point x="43.0" y="19.0" cp1x="43.0" cp1y="19.0" cp2x="43.0" cp2y="19.0"/>
151.21929 + </points>
151.21930 + </path>
151.21931 + <path>
151.21932 + <gradient cycleMethod="NO_CYCLE">
151.21933 + <stop position="0.0" midpoint="0.5">
151.21934 + <matte red="0" green="0" blue="7" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.52156866" alphaOffset="0"/>
151.21935 + </stop>
151.21936 + <stop position="1.0" midpoint="0.5">
151.21937 + <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
151.21938 + </stop>
151.21939 + <stop position="1.0" midpoint="0.5">
151.21940 + <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
151.21941 + </stop>
151.21942 + </gradient>
151.21943 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.21944 + <points>
151.21945 + <point x="0.0" y="5.0" cp1x="-0.05555555555555555" cp1y="2.3888888888888875" cp2x="0.05555555555555555" cp2y="7.6111111111111125"/>
151.21946 + <point x="5.0" y="0.0" cp1x="2.4999999999999982" cp1y="0.0" cp2x="7.500000000000002" cp2y="0.0"/>
151.21947 + <point x="39.0" y="0.0" cp1x="36.277777777777786" cp1y="0.0" cp2x="41.722222222222214" cp2y="0.0"/>
151.21948 + <point x="44.0" y="5.0" cp1x="43.94444444444444" cp1y="2.277777777777777" cp2x="44.05555555555556" cp2y="7.722222222222223"/>
151.21949 + <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
151.21950 + <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
151.21951 + </points>
151.21952 + </path>
151.21953 + </shapes>
151.21954 + <effects/>
151.21955 + </layer>
151.21956 + <templateLayer fileName="114041b7f56.png">
151.21957 + <layer name="Template" type="template">
151.21958 + <opacity>1.0</opacity>
151.21959 + <fillOpacity>1.0</fillOpacity>
151.21960 + <blendingMode>NORMAL</blendingMode>
151.21961 + <locked>false</locked>
151.21962 + <visible>false</visible>
151.21963 + <shapes/>
151.21964 + <effects/>
151.21965 + </layer>
151.21966 + </templateLayer>
151.21967 + </canvas>
151.21968 + </state>
151.21969 + <state stateKeys="Disabled">
151.21970 + <style>
151.21971 + <textForeground>
151.21972 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.21973 + </textForeground>
151.21974 + <textBackground/>
151.21975 + <background/>
151.21976 + <inherit-textForeground>false</inherit-textForeground>
151.21977 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.21978 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.21979 + <uiproperties/>
151.21980 + </style>
151.21981 + <canvas>
151.21982 + <size width="44" height="20"/>
151.21983 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.21984 + <stretchingInsets top="6" bottom="1" left="7" right="7"/>
151.21985 + <layer name="Layer 1">
151.21986 + <opacity>1.0</opacity>
151.21987 + <fillOpacity>1.0</fillOpacity>
151.21988 + <blendingMode>NORMAL</blendingMode>
151.21989 + <locked>false</locked>
151.21990 + <visible>true</visible>
151.21991 + <shapes>
151.21992 + <path>
151.21993 + <gradient cycleMethod="NO_CYCLE">
151.21994 + <stop position="0.0" midpoint="0.5">
151.21995 + <matte red="220" green="222" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.046348333" saturationOffset="-0.6006266" brightnessOffset="0.34509802" alphaOffset="0"/>
151.21996 + </stop>
151.21997 + <stop position="0.2" midpoint="0.5">
151.21998 + <matte red="217" green="219" blue="225" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.046348333" saturationOffset="-0.60015875" brightnessOffset="0.3333333" alphaOffset="0"/>
151.21999 + </stop>
151.22000 + <stop position="1.0" midpoint="0.5">
151.22001 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.5953556" brightnessOffset="0.32549018" alphaOffset="0"/>
151.22002 + </stop>
151.22003 + </gradient>
151.22004 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.22005 + <points>
151.22006 + <point x="1.0" y="19.0" cp1x="1.0" cp1y="19.0" cp2x="1.0" cp2y="19.0"/>
151.22007 + <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.555555555555554" cp2x="1.0" cp2y="2.4444444444444464"/>
151.22008 + <point x="6.0" y="1.0" cp1x="2.555555555555557" cp1y="1.0" cp2x="9.444444444444443" cp2y="1.0"/>
151.22009 + <point x="38.0" y="1.0" cp1x="34.66666666666666" cp1y="1.0" cp2x="41.33333333333334" cp2y="1.0"/>
151.22010 + <point x="43.0" y="6.0" cp1x="43.0" cp1y="2.722222222222223" cp2x="43.0" cp2y="9.277777777777777"/>
151.22011 + <point x="43.0" y="19.0" cp1x="43.0" cp1y="19.0" cp2x="43.0" cp2y="19.0"/>
151.22012 + </points>
151.22013 + </path>
151.22014 + <path>
151.22015 + <gradient cycleMethod="NO_CYCLE">
151.22016 + <stop position="0.0" midpoint="0.5">
151.22017 + <matte red="196" green="199" blue="205" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.59181184" brightnessOffset="0.25490195" alphaOffset="0"/>
151.22018 + </stop>
151.22019 + <stop position="1.0" midpoint="0.5">
151.22020 + <matte red="180" green="182" blue="190" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.05468172" saturationOffset="-0.58308274" brightnessOffset="0.19607842" alphaOffset="0"/>
151.22021 + </stop>
151.22022 + </gradient>
151.22023 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.22024 + <points>
151.22025 + <point x="0.0" y="5.0" cp1x="0.0" cp1y="8.0" cp2x="0.0" cp2y="2.0"/>
151.22026 + <point x="5.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="8.0" cp2y="0.0"/>
151.22027 + <point x="39.0" y="0.0" cp1x="36.0" cp1y="0.0" cp2x="42.0" cp2y="0.0"/>
151.22028 + <point x="44.0" y="5.0" cp1x="44.0" cp1y="2.0" cp2x="44.0" cp2y="8.0"/>
151.22029 + <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
151.22030 + <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
151.22031 + </points>
151.22032 + </path>
151.22033 + </shapes>
151.22034 + <effects/>
151.22035 + </layer>
151.22036 + <templateLayer fileName="114041da636.png">
151.22037 + <layer name="Template" type="template">
151.22038 + <opacity>1.0</opacity>
151.22039 + <fillOpacity>1.0</fillOpacity>
151.22040 + <blendingMode>NORMAL</blendingMode>
151.22041 + <locked>false</locked>
151.22042 + <visible>false</visible>
151.22043 + <shapes/>
151.22044 + <effects/>
151.22045 + </layer>
151.22046 + </templateLayer>
151.22047 + </canvas>
151.22048 + </state>
151.22049 + <state stateKeys="Selected+Disabled">
151.22050 + <style>
151.22051 + <textForeground/>
151.22052 + <textBackground/>
151.22053 + <background/>
151.22054 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.22055 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.22056 + <uiproperties/>
151.22057 + </style>
151.22058 + <canvas>
151.22059 + <size width="44" height="20"/>
151.22060 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.22061 + <stretchingInsets top="7" bottom="0" left="7" right="7"/>
151.22062 + <layer name="Layer 1">
151.22063 + <opacity>1.0</opacity>
151.22064 + <fillOpacity>1.0</fillOpacity>
151.22065 + <blendingMode>NORMAL</blendingMode>
151.22066 + <locked>false</locked>
151.22067 + <visible>true</visible>
151.22068 + <shapes>
151.22069 + <path>
151.22070 + <gradient cycleMethod="NO_CYCLE">
151.22071 + <stop position="0.0" midpoint="0.5">
151.22072 + <matte red="246" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
151.22073 + </stop>
151.22074 + <stop position="0.2483871" midpoint="0.5">
151.22075 + <matte red="207" green="218" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="7.13408E-4" saturationOffset="-0.543609" brightnessOffset="0.34509802" alphaOffset="0"/>
151.22076 + </stop>
151.22077 + <stop position="0.6032258" midpoint="0.5">
151.22078 + <matte red="169" green="189" blue="206" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0020751357" saturationOffset="-0.45610264" brightnessOffset="0.2588235" alphaOffset="0"/>
151.22079 + </stop>
151.22080 + <stop position="0.7677419" midpoint="0.5">
151.22081 + <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
151.22082 + </stop>
151.22083 + <stop position="1.0" midpoint="0.5">
151.22084 + <matte red="174" green="195" blue="214" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.44879842" brightnessOffset="0.29019606" alphaOffset="0"/>
151.22085 + </stop>
151.22086 + </gradient>
151.22087 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.22088 + <points>
151.22089 + <point x="1.0" y="20.0" cp1x="1.0" cp1y="20.0" cp2x="1.0" cp2y="20.0"/>
151.22090 + <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.555555555555554" cp2x="1.0" cp2y="2.4444444444444464"/>
151.22091 + <point x="6.0" y="1.0" cp1x="2.555555555555557" cp1y="1.0" cp2x="9.444444444444443" cp2y="1.0"/>
151.22092 + <point x="38.0" y="1.0" cp1x="34.66666666666666" cp1y="1.0" cp2x="41.33333333333334" cp2y="1.0"/>
151.22093 + <point x="43.0" y="6.0" cp1x="43.0" cp1y="2.722222222222223" cp2x="43.0" cp2y="9.277777777777777"/>
151.22094 + <point x="43.0" y="20.0" cp1x="43.0" cp1y="20.0" cp2x="43.0" cp2y="20.0"/>
151.22095 + </points>
151.22096 + </path>
151.22097 + <path>
151.22098 + <gradient cycleMethod="NO_CYCLE">
151.22099 + <stop position="0.0" midpoint="0.5">
151.22100 + <matte red="196" green="199" blue="205" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.032459438" saturationOffset="-0.59181184" brightnessOffset="0.25490195" alphaOffset="0"/>
151.22101 + </stop>
151.22102 + <stop position="1.0" midpoint="0.5">
151.22103 + <matte red="180" green="182" blue="190" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.05468172" saturationOffset="-0.58308274" brightnessOffset="0.19607842" alphaOffset="0"/>
151.22104 + </stop>
151.22105 + </gradient>
151.22106 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.22107 + <points>
151.22108 + <point x="0.0" y="5.0" cp1x="0.0" cp1y="8.0" cp2x="0.0" cp2y="2.0"/>
151.22109 + <point x="5.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="8.0" cp2y="0.0"/>
151.22110 + <point x="39.0" y="0.0" cp1x="36.0" cp1y="0.0" cp2x="42.0" cp2y="0.0"/>
151.22111 + <point x="44.0" y="5.0" cp1x="44.0" cp1y="2.0" cp2x="44.0" cp2y="8.0"/>
151.22112 + <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
151.22113 + <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
151.22114 + </points>
151.22115 + </path>
151.22116 + </shapes>
151.22117 + <effects/>
151.22118 + </layer>
151.22119 + <templateLayer fileName="114041e82d1.png">
151.22120 + <layer name="Template" type="template">
151.22121 + <opacity>1.0</opacity>
151.22122 + <fillOpacity>1.0</fillOpacity>
151.22123 + <blendingMode>NORMAL</blendingMode>
151.22124 + <locked>false</locked>
151.22125 + <visible>true</visible>
151.22126 + <shapes/>
151.22127 + <effects/>
151.22128 + </layer>
151.22129 + </templateLayer>
151.22130 + </canvas>
151.22131 + </state>
151.22132 + <state stateKeys="Selected">
151.22133 + <style>
151.22134 + <textForeground/>
151.22135 + <textBackground/>
151.22136 + <background/>
151.22137 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.22138 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.22139 + <uiproperties/>
151.22140 + </style>
151.22141 + <canvas>
151.22142 + <size width="44" height="20"/>
151.22143 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.22144 + <stretchingInsets top="7" bottom="0" left="7" right="7"/>
151.22145 + <layer name="Layer 1">
151.22146 + <opacity>1.0</opacity>
151.22147 + <fillOpacity>1.0</fillOpacity>
151.22148 + <blendingMode>NORMAL</blendingMode>
151.22149 + <locked>false</locked>
151.22150 + <visible>true</visible>
151.22151 + <shapes>
151.22152 + <path>
151.22153 + <gradient cycleMethod="NO_CYCLE">
151.22154 + <stop position="0.0" midpoint="0.5">
151.22155 + <matte red="246" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
151.22156 + </stop>
151.22157 + <stop position="0.2483871" midpoint="0.5">
151.22158 + <matte red="207" green="218" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="7.13408E-4" saturationOffset="-0.543609" brightnessOffset="0.34509802" alphaOffset="0"/>
151.22159 + </stop>
151.22160 + <stop position="0.6032258" midpoint="0.5">
151.22161 + <matte red="169" green="189" blue="206" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0020751357" saturationOffset="-0.45610264" brightnessOffset="0.2588235" alphaOffset="0"/>
151.22162 + </stop>
151.22163 + <stop position="0.7677419" midpoint="0.5">
151.22164 + <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
151.22165 + </stop>
151.22166 + <stop position="1.0" midpoint="0.5">
151.22167 + <matte red="174" green="195" blue="214" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.44879842" brightnessOffset="0.29019606" alphaOffset="0"/>
151.22168 + </stop>
151.22169 + </gradient>
151.22170 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.22171 + <points>
151.22172 + <point x="1.0" y="20.0" cp1x="1.0" cp1y="20.0" cp2x="1.0" cp2y="20.0"/>
151.22173 + <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.555555555555554" cp2x="1.0" cp2y="2.4444444444444464"/>
151.22174 + <point x="6.0" y="1.0" cp1x="2.555555555555557" cp1y="1.0" cp2x="9.444444444444443" cp2y="1.0"/>
151.22175 + <point x="38.0" y="1.0" cp1x="34.66666666666666" cp1y="1.0" cp2x="41.33333333333334" cp2y="1.0"/>
151.22176 + <point x="43.0" y="6.0" cp1x="43.0" cp1y="2.722222222222223" cp2x="43.0" cp2y="9.277777777777777"/>
151.22177 + <point x="43.0" y="20.0" cp1x="43.0" cp1y="20.0" cp2x="43.0" cp2y="20.0"/>
151.22178 + </points>
151.22179 + </path>
151.22180 + <path>
151.22181 + <gradient cycleMethod="NO_CYCLE">
151.22182 + <stop position="0.0" midpoint="0.5">
151.22183 + <matte red="33" green="54" blue="73" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.08776909" brightnessOffset="-0.2627451" alphaOffset="0"/>
151.22184 + </stop>
151.22185 + <stop position="1.0" midpoint="0.5">
151.22186 + <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
151.22187 + </stop>
151.22188 + </gradient>
151.22189 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.22190 + <points>
151.22191 + <point x="0.0" y="5.0" cp1x="0.0" cp1y="8.0" cp2x="0.0" cp2y="2.0"/>
151.22192 + <point x="5.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="8.0" cp2y="0.0"/>
151.22193 + <point x="39.0" y="0.0" cp1x="36.0" cp1y="0.0" cp2x="42.0" cp2y="0.0"/>
151.22194 + <point x="44.0" y="5.0" cp1x="44.0" cp1y="2.0" cp2x="44.0" cp2y="8.0"/>
151.22195 + <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
151.22196 + <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
151.22197 + </points>
151.22198 + </path>
151.22199 + </shapes>
151.22200 + <effects/>
151.22201 + </layer>
151.22202 + <templateLayer fileName="114041e82d1.png">
151.22203 + <layer name="Template" type="template">
151.22204 + <opacity>1.0</opacity>
151.22205 + <fillOpacity>1.0</fillOpacity>
151.22206 + <blendingMode>NORMAL</blendingMode>
151.22207 + <locked>false</locked>
151.22208 + <visible>true</visible>
151.22209 + <shapes/>
151.22210 + <effects/>
151.22211 + </layer>
151.22212 + </templateLayer>
151.22213 + </canvas>
151.22214 + </state>
151.22215 + <state stateKeys="Selected+MouseOver">
151.22216 + <style>
151.22217 + <textForeground/>
151.22218 + <textBackground/>
151.22219 + <background/>
151.22220 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.22221 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.22222 + <uiproperties/>
151.22223 + </style>
151.22224 + <canvas>
151.22225 + <size width="44" height="20"/>
151.22226 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.22227 + <stretchingInsets top="7" bottom="0" left="9" right="9"/>
151.22228 + <layer name="Layer 1">
151.22229 + <opacity>1.0</opacity>
151.22230 + <fillOpacity>1.0</fillOpacity>
151.22231 + <blendingMode>NORMAL</blendingMode>
151.22232 + <locked>false</locked>
151.22233 + <visible>true</visible>
151.22234 + <shapes>
151.22235 + <path>
151.22236 + <gradient cycleMethod="NO_CYCLE">
151.22237 + <stop position="0.0" midpoint="0.5">
151.22238 + <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
151.22239 + </stop>
151.22240 + <stop position="0.2483871" midpoint="0.5">
151.22241 + <matte red="211" green="224" blue="235" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0022627711" saturationOffset="-0.5335866" brightnessOffset="0.372549" alphaOffset="0"/>
151.22242 + </stop>
151.22243 + <stop position="0.6032258" midpoint="0.5">
151.22244 + <matte red="184" green="205" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.4608264" brightnessOffset="0.32549018" alphaOffset="0"/>
151.22245 + </stop>
151.22246 + <stop position="0.7677419" midpoint="0.5">
151.22247 + <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
151.22248 + </stop>
151.22249 + <stop position="0.9677419" midpoint="0.5">
151.22250 + <matte red="193" green="214" blue="233" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.46404046" brightnessOffset="0.36470586" alphaOffset="0"/>
151.22251 + </stop>
151.22252 + </gradient>
151.22253 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.22254 + <points>
151.22255 + <point x="1.0" y="20.0" cp1x="1.0" cp1y="20.0" cp2x="1.0" cp2y="20.0"/>
151.22256 + <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.555555555555554" cp2x="1.0" cp2y="2.4444444444444464"/>
151.22257 + <point x="6.0" y="1.0" cp1x="2.555555555555557" cp1y="1.0" cp2x="9.444444444444443" cp2y="1.0"/>
151.22258 + <point x="38.0" y="1.0" cp1x="34.66666666666666" cp1y="1.0" cp2x="41.33333333333334" cp2y="1.0"/>
151.22259 + <point x="43.0" y="6.0" cp1x="43.0" cp1y="2.722222222222223" cp2x="43.0" cp2y="9.277777777777777"/>
151.22260 + <point x="43.0" y="20.0" cp1x="43.0" cp1y="20.0" cp2x="43.0" cp2y="20.0"/>
151.22261 + </points>
151.22262 + </path>
151.22263 + <path>
151.22264 + <gradient cycleMethod="NO_CYCLE">
151.22265 + <stop position="0.0" midpoint="0.5">
151.22266 + <matte red="0" green="4" blue="27" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.06332368" saturationOffset="0.3642857" brightnessOffset="-0.4431373" alphaOffset="0"/>
151.22267 + </stop>
151.22268 + <stop position="1.0" midpoint="0.5">
151.22269 + <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
151.22270 + </stop>
151.22271 + </gradient>
151.22272 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.22273 + <points>
151.22274 + <point x="0.0" y="5.0" cp1x="0.0" cp1y="8.0" cp2x="0.0" cp2y="2.0"/>
151.22275 + <point x="5.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="8.0" cp2y="0.0"/>
151.22276 + <point x="39.0" y="0.0" cp1x="36.0" cp1y="0.0" cp2x="42.0" cp2y="0.0"/>
151.22277 + <point x="44.0" y="5.0" cp1x="44.0" cp1y="2.0" cp2x="44.0" cp2y="8.0"/>
151.22278 + <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
151.22279 + <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
151.22280 + </points>
151.22281 + </path>
151.22282 + </shapes>
151.22283 + <effects/>
151.22284 + </layer>
151.22285 + <templateLayer fileName="11404247138.png">
151.22286 + <layer name="Template" type="template">
151.22287 + <opacity>1.0</opacity>
151.22288 + <fillOpacity>1.0</fillOpacity>
151.22289 + <blendingMode>NORMAL</blendingMode>
151.22290 + <locked>false</locked>
151.22291 + <visible>true</visible>
151.22292 + <shapes/>
151.22293 + <effects/>
151.22294 + </layer>
151.22295 + </templateLayer>
151.22296 + </canvas>
151.22297 + </state>
151.22298 + <state stateKeys="Selected+Pressed">
151.22299 + <style>
151.22300 + <textForeground>
151.22301 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.22302 + </textForeground>
151.22303 + <textBackground/>
151.22304 + <background/>
151.22305 + <inherit-textForeground>false</inherit-textForeground>
151.22306 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.22307 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.22308 + <uiproperties/>
151.22309 + </style>
151.22310 + <canvas>
151.22311 + <size width="44" height="20"/>
151.22312 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.22313 + <stretchingInsets top="7" bottom="0" left="9" right="9"/>
151.22314 + <layer name="Layer 1">
151.22315 + <opacity>1.0</opacity>
151.22316 + <fillOpacity>1.0</fillOpacity>
151.22317 + <blendingMode>NORMAL</blendingMode>
151.22318 + <locked>false</locked>
151.22319 + <visible>true</visible>
151.22320 + <shapes>
151.22321 + <path>
151.22322 + <gradient cycleMethod="NO_CYCLE">
151.22323 + <stop position="0.0" midpoint="0.5">
151.22324 + <matte red="143" green="169" blue="192" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
151.22325 + </stop>
151.22326 + <stop position="0.2483871" midpoint="0.5">
151.22327 + <matte red="84" green="123" blue="159" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.16401619" brightnessOffset="0.0745098" alphaOffset="0"/>
151.22328 + </stop>
151.22329 + <stop position="0.6032258" midpoint="0.5">
151.22330 + <matte red="54" green="101" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0010001659" saturationOffset="-0.01599598" brightnessOffset="0.007843137" alphaOffset="0"/>
151.22331 + </stop>
151.22332 + <stop position="0.7677419" midpoint="0.5">
151.22333 + <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.22334 + </stop>
151.22335 + <stop position="0.9419355" midpoint="0.5">
151.22336 + <matte red="60" green="106" blue="149" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0018727183" saturationOffset="-0.038398862" brightnessOffset="0.035294116" alphaOffset="0"/>
151.22337 + </stop>
151.22338 + </gradient>
151.22339 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.22340 + <points>
151.22341 + <point x="1.0" y="20.0" cp1x="1.0" cp1y="20.0" cp2x="1.0" cp2y="20.0"/>
151.22342 + <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.555555555555554" cp2x="1.0" cp2y="2.4444444444444464"/>
151.22343 + <point x="6.0" y="1.0" cp1x="2.555555555555557" cp1y="1.0" cp2x="9.444444444444443" cp2y="1.0"/>
151.22344 + <point x="38.0" y="1.0" cp1x="34.66666666666666" cp1y="1.0" cp2x="41.33333333333334" cp2y="1.0"/>
151.22345 + <point x="43.0" y="6.0" cp1x="43.0" cp1y="2.722222222222223" cp2x="43.0" cp2y="9.277777777777777"/>
151.22346 + <point x="43.0" y="20.0" cp1x="43.0" cp1y="20.0" cp2x="43.0" cp2y="20.0"/>
151.22347 + </points>
151.22348 + </path>
151.22349 + <path>
151.22350 + <gradient cycleMethod="NO_CYCLE">
151.22351 + <stop position="0.0" midpoint="0.5">
151.22352 + <matte red="0" green="4" blue="27" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.06332368" saturationOffset="0.3642857" brightnessOffset="-0.4431373" alphaOffset="0"/>
151.22353 + </stop>
151.22354 + <stop position="1.0" midpoint="0.5">
151.22355 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.22356 + </stop>
151.22357 + </gradient>
151.22358 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.22359 + <points>
151.22360 + <point x="0.0" y="5.0" cp1x="0.0" cp1y="8.0" cp2x="0.0" cp2y="2.0"/>
151.22361 + <point x="5.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="8.0" cp2y="0.0"/>
151.22362 + <point x="39.0" y="0.0" cp1x="36.0" cp1y="0.0" cp2x="42.0" cp2y="0.0"/>
151.22363 + <point x="44.0" y="5.0" cp1x="44.0" cp1y="2.0" cp2x="44.0" cp2y="8.0"/>
151.22364 + <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
151.22365 + <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
151.22366 + </points>
151.22367 + </path>
151.22368 + </shapes>
151.22369 + <effects/>
151.22370 + </layer>
151.22371 + <templateLayer fileName="1140425bba6.png">
151.22372 + <layer name="Template" type="template">
151.22373 + <opacity>1.0</opacity>
151.22374 + <fillOpacity>1.0</fillOpacity>
151.22375 + <blendingMode>NORMAL</blendingMode>
151.22376 + <locked>false</locked>
151.22377 + <visible>false</visible>
151.22378 + <shapes/>
151.22379 + <effects/>
151.22380 + </layer>
151.22381 + </templateLayer>
151.22382 + </canvas>
151.22383 + </state>
151.22384 + <state stateKeys="Selected+Focused">
151.22385 + <style>
151.22386 + <textForeground/>
151.22387 + <textBackground/>
151.22388 + <background/>
151.22389 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.22390 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.22391 + <uiproperties/>
151.22392 + </style>
151.22393 + <canvas>
151.22394 + <size width="44" height="20"/>
151.22395 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.22396 + <stretchingInsets top="7" bottom="3" left="7" right="7"/>
151.22397 + <layer name="Layer 1">
151.22398 + <opacity>1.0</opacity>
151.22399 + <fillOpacity>1.0</fillOpacity>
151.22400 + <blendingMode>NORMAL</blendingMode>
151.22401 + <locked>false</locked>
151.22402 + <visible>true</visible>
151.22403 + <shapes>
151.22404 + <path>
151.22405 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.22406 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.22407 + <points>
151.22408 + <point x="20.916666666666664" y="17.749999999999996" cp1x="20.916666666666664" cp1y="17.749999999999996" cp2x="20.916666666666664" cp2y="17.749999999999996"/>
151.22409 + <point x="20.958333333333332" y="19.333333333333332" cp1x="20.958333333333332" cp1y="19.333333333333332" cp2x="20.958333333333332" cp2y="19.333333333333332"/>
151.22410 + <point x="2.6666666666666665" y="19.33333333333334" cp1x="2.6666666666666665" cp1y="19.33333333333334" cp2x="2.6666666666666665" cp2y="19.33333333333334"/>
151.22411 + <point x="2.6249999999999987" y="6.166666666666665" cp1x="2.6249999999999987" cp1y="6.166666666666665" cp2x="2.6249999999999987" cp2y="3.9166666666666647"/>
151.22412 + <point x="5.916666666666664" y="2.666666666666665" cp1x="3.9999999999999996" cp1y="2.666666666666665" cp2x="5.916666666666664" cp2y="2.666666666666665"/>
151.22413 + <point x="37.70833333333333" y="2.6666666666666665" cp1x="37.70833333333333" cp1y="2.6666666666666665" cp2x="39.833333333333314" cp2y="2.6666666666666665"/>
151.22414 + <point x="41.416666666666664" y="6.041666666666667" cp1x="41.416666666666664" cp1y="3.4583333333333353" cp2x="41.416666666666664" cp2y="6.041666666666667"/>
151.22415 + <point x="41.37500000000001" y="19.291666666666657" cp1x="41.37500000000001" cp1y="19.291666666666657" cp2x="41.37500000000001" cp2y="19.291666666666657"/>
151.22416 + <point x="21.000000000000007" y="19.33333333333333" cp1x="21.000000000000007" cp1y="19.33333333333333" cp2x="21.000000000000007" cp2y="19.33333333333333"/>
151.22417 + <point x="20.916666666666668" y="17.708333333333332" cp1x="20.916666666666668" cp1y="17.708333333333332" cp2x="20.916666666666668" cp2y="17.708333333333332"/>
151.22418 + <point x="39.70833333333333" y="17.666666666666668" cp1x="39.70833333333333" cp1y="17.666666666666668" cp2x="39.70833333333333" cp2y="17.666666666666668"/>
151.22419 + <point x="39.625" y="6.083333333333332" cp1x="39.625" cp1y="6.083333333333332" cp2x="39.62499999999999" cp2y="5.166666666666664"/>
151.22420 + <point x="37.666666666666664" y="4.249999999999999" cp1x="38.75" cp1y="4.249999999999997" cp2x="37.666666666666664" cp2y="4.249999999999999"/>
151.22421 + <point x="5.833333333333332" y="4.291666666666666" cp1x="5.833333333333332" cp1y="4.291666666666666" cp2x="4.833333333333332" cp2y="4.291666666666666"/>
151.22422 + <point x="4.374999999999998" y="6.08333333333333" cp1x="4.416666666666665" cp1y="5.1249999999999964" cp2x="4.374999999999998" cp2y="6.08333333333333"/>
151.22423 + <point x="4.291666666666664" y="17.708333333333334" cp1x="4.291666666666664" cp1y="17.708333333333334" cp2x="4.291666666666664" cp2y="17.708333333333334"/>
151.22424 + </points>
151.22425 + </path>
151.22426 + <path>
151.22427 + <gradient cycleMethod="NO_CYCLE">
151.22428 + <stop position="0.0" midpoint="0.5">
151.22429 + <matte red="246" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6197143" brightnessOffset="0.43137252" alphaOffset="0"/>
151.22430 + </stop>
151.22431 + <stop position="0.2483871" midpoint="0.5">
151.22432 + <matte red="207" green="218" blue="228" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="7.13408E-4" saturationOffset="-0.543609" brightnessOffset="0.34509802" alphaOffset="0"/>
151.22433 + </stop>
151.22434 + <stop position="0.6032258" midpoint="0.5">
151.22435 + <matte red="169" green="189" blue="206" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0020751357" saturationOffset="-0.45610264" brightnessOffset="0.2588235" alphaOffset="0"/>
151.22436 + </stop>
151.22437 + <stop position="0.7677419" midpoint="0.5">
151.22438 + <matte red="163" green="184" blue="203" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.43866998" brightnessOffset="0.24705881" alphaOffset="0"/>
151.22439 + </stop>
151.22440 + <stop position="1.0" midpoint="0.5">
151.22441 + <matte red="174" green="195" blue="214" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.44879842" brightnessOffset="0.29019606" alphaOffset="0"/>
151.22442 + </stop>
151.22443 + </gradient>
151.22444 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.22445 + <points>
151.22446 + <point x="1.0" y="20.0" cp1x="1.0" cp1y="20.0" cp2x="1.0" cp2y="20.0"/>
151.22447 + <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.555555555555554" cp2x="1.0" cp2y="2.4444444444444464"/>
151.22448 + <point x="6.0" y="1.0" cp1x="2.555555555555557" cp1y="1.0" cp2x="9.444444444444443" cp2y="1.0"/>
151.22449 + <point x="38.0" y="1.0" cp1x="34.66666666666666" cp1y="1.0" cp2x="41.33333333333334" cp2y="1.0"/>
151.22450 + <point x="43.0" y="6.0" cp1x="43.0" cp1y="2.722222222222223" cp2x="43.0" cp2y="9.277777777777777"/>
151.22451 + <point x="43.0" y="20.0" cp1x="43.0" cp1y="20.0" cp2x="43.0" cp2y="20.0"/>
151.22452 + </points>
151.22453 + </path>
151.22454 + <path>
151.22455 + <gradient cycleMethod="NO_CYCLE">
151.22456 + <stop position="0.0" midpoint="0.5">
151.22457 + <matte red="33" green="54" blue="73" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.08776909" brightnessOffset="-0.2627451" alphaOffset="0"/>
151.22458 + </stop>
151.22459 + <stop position="1.0" midpoint="0.5">
151.22460 + <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
151.22461 + </stop>
151.22462 + </gradient>
151.22463 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.22464 + <points>
151.22465 + <point x="0.0" y="5.0" cp1x="0.0" cp1y="8.0" cp2x="0.0" cp2y="2.0"/>
151.22466 + <point x="5.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="8.0" cp2y="0.0"/>
151.22467 + <point x="39.0" y="0.0" cp1x="36.0" cp1y="0.0" cp2x="42.0" cp2y="0.0"/>
151.22468 + <point x="44.0" y="5.0" cp1x="44.0" cp1y="2.0" cp2x="44.0" cp2y="8.0"/>
151.22469 + <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
151.22470 + <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
151.22471 + </points>
151.22472 + </path>
151.22473 + </shapes>
151.22474 + <effects/>
151.22475 + </layer>
151.22476 + <templateLayer fileName="114041e82d1.png">
151.22477 + <layer name="Template" type="template">
151.22478 + <opacity>1.0</opacity>
151.22479 + <fillOpacity>1.0</fillOpacity>
151.22480 + <blendingMode>NORMAL</blendingMode>
151.22481 + <locked>false</locked>
151.22482 + <visible>true</visible>
151.22483 + <shapes/>
151.22484 + <effects/>
151.22485 + </layer>
151.22486 + </templateLayer>
151.22487 + </canvas>
151.22488 + </state>
151.22489 + <state stateKeys="Selected+MouseOver+Focused">
151.22490 + <style>
151.22491 + <textForeground/>
151.22492 + <textBackground/>
151.22493 + <background/>
151.22494 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.22495 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.22496 + <uiproperties/>
151.22497 + </style>
151.22498 + <canvas>
151.22499 + <size width="44" height="20"/>
151.22500 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.22501 + <stretchingInsets top="7" bottom="3" left="9" right="9"/>
151.22502 + <layer name="Layer 1">
151.22503 + <opacity>1.0</opacity>
151.22504 + <fillOpacity>1.0</fillOpacity>
151.22505 + <blendingMode>NORMAL</blendingMode>
151.22506 + <locked>false</locked>
151.22507 + <visible>true</visible>
151.22508 + <shapes>
151.22509 + <path>
151.22510 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.22511 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.22512 + <points>
151.22513 + <point x="20.916666666666664" y="17.749999999999996" cp1x="20.916666666666664" cp1y="17.749999999999996" cp2x="20.916666666666664" cp2y="17.749999999999996"/>
151.22514 + <point x="20.958333333333332" y="19.333333333333332" cp1x="20.958333333333332" cp1y="19.333333333333332" cp2x="20.958333333333332" cp2y="19.333333333333332"/>
151.22515 + <point x="2.6666666666666665" y="19.33333333333334" cp1x="2.6666666666666665" cp1y="19.33333333333334" cp2x="2.6666666666666665" cp2y="19.33333333333334"/>
151.22516 + <point x="2.6249999999999987" y="6.166666666666665" cp1x="2.6249999999999987" cp1y="6.166666666666665" cp2x="2.6249999999999987" cp2y="3.9166666666666647"/>
151.22517 + <point x="5.916666666666664" y="2.666666666666665" cp1x="3.9999999999999996" cp1y="2.666666666666665" cp2x="5.916666666666664" cp2y="2.666666666666665"/>
151.22518 + <point x="37.70833333333333" y="2.6666666666666665" cp1x="37.70833333333333" cp1y="2.6666666666666665" cp2x="39.833333333333314" cp2y="2.6666666666666665"/>
151.22519 + <point x="41.416666666666664" y="6.041666666666667" cp1x="41.416666666666664" cp1y="3.4583333333333353" cp2x="41.416666666666664" cp2y="6.041666666666667"/>
151.22520 + <point x="41.37500000000001" y="19.291666666666657" cp1x="41.37500000000001" cp1y="19.291666666666657" cp2x="41.37500000000001" cp2y="19.291666666666657"/>
151.22521 + <point x="21.000000000000007" y="19.33333333333333" cp1x="21.000000000000007" cp1y="19.33333333333333" cp2x="21.000000000000007" cp2y="19.33333333333333"/>
151.22522 + <point x="20.916666666666668" y="17.708333333333332" cp1x="20.916666666666668" cp1y="17.708333333333332" cp2x="20.916666666666668" cp2y="17.708333333333332"/>
151.22523 + <point x="39.70833333333333" y="17.666666666666668" cp1x="39.70833333333333" cp1y="17.666666666666668" cp2x="39.70833333333333" cp2y="17.666666666666668"/>
151.22524 + <point x="39.625" y="6.083333333333332" cp1x="39.625" cp1y="6.083333333333332" cp2x="39.62499999999999" cp2y="5.166666666666664"/>
151.22525 + <point x="37.666666666666664" y="4.249999999999999" cp1x="38.75" cp1y="4.249999999999997" cp2x="37.666666666666664" cp2y="4.249999999999999"/>
151.22526 + <point x="5.833333333333332" y="4.291666666666666" cp1x="5.833333333333332" cp1y="4.291666666666666" cp2x="4.833333333333332" cp2y="4.291666666666666"/>
151.22527 + <point x="4.374999999999998" y="6.08333333333333" cp1x="4.416666666666665" cp1y="5.1249999999999964" cp2x="4.374999999999998" cp2y="6.08333333333333"/>
151.22528 + <point x="4.291666666666664" y="17.708333333333334" cp1x="4.291666666666664" cp1y="17.708333333333334" cp2x="4.291666666666664" cp2y="17.708333333333334"/>
151.22529 + </points>
151.22530 + </path>
151.22531 + <path>
151.22532 + <gradient cycleMethod="NO_CYCLE">
151.22533 + <stop position="0.0" midpoint="0.5">
151.22534 + <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
151.22535 + </stop>
151.22536 + <stop position="0.2483871" midpoint="0.5">
151.22537 + <matte red="211" green="224" blue="235" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0022627711" saturationOffset="-0.5335866" brightnessOffset="0.372549" alphaOffset="0"/>
151.22538 + </stop>
151.22539 + <stop position="0.6032258" midpoint="0.5">
151.22540 + <matte red="184" green="205" blue="223" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0017285943" saturationOffset="-0.4608264" brightnessOffset="0.32549018" alphaOffset="0"/>
151.22541 + </stop>
151.22542 + <stop position="0.7677419" midpoint="0.5">
151.22543 + <matte red="182" green="203" blue="222" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4555341" brightnessOffset="0.3215686" alphaOffset="0"/>
151.22544 + </stop>
151.22545 + <stop position="0.9677419" midpoint="0.5">
151.22546 + <matte red="193" green="214" blue="233" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.46404046" brightnessOffset="0.36470586" alphaOffset="0"/>
151.22547 + </stop>
151.22548 + </gradient>
151.22549 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.22550 + <points>
151.22551 + <point x="1.0" y="20.0" cp1x="1.0" cp1y="20.0" cp2x="1.0" cp2y="20.0"/>
151.22552 + <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.555555555555554" cp2x="1.0" cp2y="2.4444444444444464"/>
151.22553 + <point x="6.0" y="1.0" cp1x="2.555555555555557" cp1y="1.0" cp2x="9.444444444444443" cp2y="1.0"/>
151.22554 + <point x="38.0" y="1.0" cp1x="34.66666666666666" cp1y="1.0" cp2x="41.33333333333334" cp2y="1.0"/>
151.22555 + <point x="43.0" y="6.0" cp1x="43.0" cp1y="2.722222222222223" cp2x="43.0" cp2y="9.277777777777777"/>
151.22556 + <point x="43.0" y="20.0" cp1x="43.0" cp1y="20.0" cp2x="43.0" cp2y="20.0"/>
151.22557 + </points>
151.22558 + </path>
151.22559 + <path>
151.22560 + <gradient cycleMethod="NO_CYCLE">
151.22561 + <stop position="0.0" midpoint="0.5">
151.22562 + <matte red="0" green="4" blue="27" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.06332368" saturationOffset="0.3642857" brightnessOffset="-0.4431373" alphaOffset="0"/>
151.22563 + </stop>
151.22564 + <stop position="1.0" midpoint="0.5">
151.22565 + <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
151.22566 + </stop>
151.22567 + </gradient>
151.22568 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.22569 + <points>
151.22570 + <point x="0.0" y="5.0" cp1x="0.0" cp1y="8.0" cp2x="0.0" cp2y="2.0"/>
151.22571 + <point x="5.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="8.0" cp2y="0.0"/>
151.22572 + <point x="39.0" y="0.0" cp1x="36.0" cp1y="0.0" cp2x="42.0" cp2y="0.0"/>
151.22573 + <point x="44.0" y="5.0" cp1x="44.0" cp1y="2.0" cp2x="44.0" cp2y="8.0"/>
151.22574 + <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
151.22575 + <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
151.22576 + </points>
151.22577 + </path>
151.22578 + </shapes>
151.22579 + <effects/>
151.22580 + </layer>
151.22581 + <templateLayer fileName="11404247138.png">
151.22582 + <layer name="Template" type="template">
151.22583 + <opacity>1.0</opacity>
151.22584 + <fillOpacity>1.0</fillOpacity>
151.22585 + <blendingMode>NORMAL</blendingMode>
151.22586 + <locked>false</locked>
151.22587 + <visible>true</visible>
151.22588 + <shapes/>
151.22589 + <effects/>
151.22590 + </layer>
151.22591 + </templateLayer>
151.22592 + </canvas>
151.22593 + </state>
151.22594 + <state stateKeys="Selected+Pressed+Focused">
151.22595 + <style>
151.22596 + <textForeground>
151.22597 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.22598 + </textForeground>
151.22599 + <textBackground/>
151.22600 + <background/>
151.22601 + <inherit-textForeground>false</inherit-textForeground>
151.22602 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.22603 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.22604 + <uiproperties/>
151.22605 + </style>
151.22606 + <canvas>
151.22607 + <size width="44" height="20"/>
151.22608 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.22609 + <stretchingInsets top="7" bottom="3" left="9" right="9"/>
151.22610 + <layer name="Layer 1">
151.22611 + <opacity>1.0</opacity>
151.22612 + <fillOpacity>1.0</fillOpacity>
151.22613 + <blendingMode>NORMAL</blendingMode>
151.22614 + <locked>false</locked>
151.22615 + <visible>true</visible>
151.22616 + <shapes>
151.22617 + <path>
151.22618 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.22619 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.22620 + <points>
151.22621 + <point x="20.916666666666664" y="17.749999999999996" cp1x="20.916666666666664" cp1y="17.749999999999996" cp2x="20.916666666666664" cp2y="17.749999999999996"/>
151.22622 + <point x="20.958333333333332" y="19.333333333333332" cp1x="20.958333333333332" cp1y="19.333333333333332" cp2x="20.958333333333332" cp2y="19.333333333333332"/>
151.22623 + <point x="2.6666666666666665" y="19.33333333333334" cp1x="2.6666666666666665" cp1y="19.33333333333334" cp2x="2.6666666666666665" cp2y="19.33333333333334"/>
151.22624 + <point x="2.6249999999999987" y="6.166666666666665" cp1x="2.6249999999999987" cp1y="6.166666666666665" cp2x="2.6249999999999987" cp2y="3.9166666666666647"/>
151.22625 + <point x="5.916666666666664" y="2.666666666666665" cp1x="3.9999999999999996" cp1y="2.666666666666665" cp2x="5.916666666666664" cp2y="2.666666666666665"/>
151.22626 + <point x="37.70833333333333" y="2.6666666666666665" cp1x="37.70833333333333" cp1y="2.6666666666666665" cp2x="39.833333333333314" cp2y="2.6666666666666665"/>
151.22627 + <point x="41.416666666666664" y="6.041666666666667" cp1x="41.416666666666664" cp1y="3.4583333333333353" cp2x="41.416666666666664" cp2y="6.041666666666667"/>
151.22628 + <point x="41.37500000000001" y="19.291666666666657" cp1x="41.37500000000001" cp1y="19.291666666666657" cp2x="41.37500000000001" cp2y="19.291666666666657"/>
151.22629 + <point x="21.000000000000007" y="19.33333333333333" cp1x="21.000000000000007" cp1y="19.33333333333333" cp2x="21.000000000000007" cp2y="19.33333333333333"/>
151.22630 + <point x="20.916666666666668" y="17.708333333333332" cp1x="20.916666666666668" cp1y="17.708333333333332" cp2x="20.916666666666668" cp2y="17.708333333333332"/>
151.22631 + <point x="39.70833333333333" y="17.666666666666668" cp1x="39.70833333333333" cp1y="17.666666666666668" cp2x="39.70833333333333" cp2y="17.666666666666668"/>
151.22632 + <point x="39.625" y="6.083333333333332" cp1x="39.625" cp1y="6.083333333333332" cp2x="39.62499999999999" cp2y="5.166666666666664"/>
151.22633 + <point x="37.666666666666664" y="4.249999999999999" cp1x="38.75" cp1y="4.249999999999997" cp2x="37.666666666666664" cp2y="4.249999999999999"/>
151.22634 + <point x="5.833333333333332" y="4.291666666666666" cp1x="5.833333333333332" cp1y="4.291666666666666" cp2x="4.833333333333332" cp2y="4.291666666666666"/>
151.22635 + <point x="4.374999999999998" y="6.08333333333333" cp1x="4.416666666666665" cp1y="5.1249999999999964" cp2x="4.374999999999998" cp2y="6.08333333333333"/>
151.22636 + <point x="4.291666666666664" y="17.708333333333334" cp1x="4.291666666666664" cp1y="17.708333333333334" cp2x="4.291666666666664" cp2y="17.708333333333334"/>
151.22637 + </points>
151.22638 + </path>
151.22639 + <path>
151.22640 + <gradient cycleMethod="NO_CYCLE">
151.22641 + <stop position="0.0" midpoint="0.5">
151.22642 + <matte red="143" green="169" blue="192" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-4.2033195E-4" saturationOffset="-0.38050595" brightnessOffset="0.20392156" alphaOffset="0"/>
151.22643 + </stop>
151.22644 + <stop position="0.2483871" midpoint="0.5">
151.22645 + <matte red="84" green="123" blue="159" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0013483167" saturationOffset="-0.16401619" brightnessOffset="0.0745098" alphaOffset="0"/>
151.22646 + </stop>
151.22647 + <stop position="0.6032258" midpoint="0.5">
151.22648 + <matte red="54" green="101" blue="142" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0010001659" saturationOffset="-0.01599598" brightnessOffset="0.007843137" alphaOffset="0"/>
151.22649 + </stop>
151.22650 + <stop position="0.7677419" midpoint="0.5">
151.22651 + <matte red="51" green="98" blue="140" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.22652 + </stop>
151.22653 + <stop position="0.9419355" midpoint="0.5">
151.22654 + <matte red="60" green="106" blue="149" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0018727183" saturationOffset="-0.038398862" brightnessOffset="0.035294116" alphaOffset="0"/>
151.22655 + </stop>
151.22656 + </gradient>
151.22657 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.22658 + <points>
151.22659 + <point x="1.0" y="20.0" cp1x="1.0" cp1y="20.0" cp2x="1.0" cp2y="20.0"/>
151.22660 + <point x="1.0" y="6.0" cp1x="1.0" cp1y="9.555555555555554" cp2x="1.0" cp2y="2.4444444444444464"/>
151.22661 + <point x="6.0" y="1.0" cp1x="2.555555555555557" cp1y="1.0" cp2x="9.444444444444443" cp2y="1.0"/>
151.22662 + <point x="38.0" y="1.0" cp1x="34.66666666666666" cp1y="1.0" cp2x="41.33333333333334" cp2y="1.0"/>
151.22663 + <point x="43.0" y="6.0" cp1x="43.0" cp1y="2.722222222222223" cp2x="43.0" cp2y="9.277777777777777"/>
151.22664 + <point x="43.0" y="20.0" cp1x="43.0" cp1y="20.0" cp2x="43.0" cp2y="20.0"/>
151.22665 + </points>
151.22666 + </path>
151.22667 + <path>
151.22668 + <gradient cycleMethod="NO_CYCLE">
151.22669 + <stop position="0.0" midpoint="0.5">
151.22670 + <matte red="0" green="4" blue="27" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.06332368" saturationOffset="0.3642857" brightnessOffset="-0.4431373" alphaOffset="0"/>
151.22671 + </stop>
151.22672 + <stop position="1.0" midpoint="0.5">
151.22673 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.22674 + </stop>
151.22675 + </gradient>
151.22676 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.22677 + <points>
151.22678 + <point x="0.0" y="5.0" cp1x="0.0" cp1y="8.0" cp2x="0.0" cp2y="2.0"/>
151.22679 + <point x="5.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="8.0" cp2y="0.0"/>
151.22680 + <point x="39.0" y="0.0" cp1x="36.0" cp1y="0.0" cp2x="42.0" cp2y="0.0"/>
151.22681 + <point x="44.0" y="5.0" cp1x="44.0" cp1y="2.0" cp2x="44.0" cp2y="8.0"/>
151.22682 + <point x="44.0" y="20.0" cp1x="44.0" cp1y="20.0" cp2x="44.0" cp2y="20.0"/>
151.22683 + <point x="0.0" y="20.0" cp1x="0.0" cp1y="20.0" cp2x="0.0" cp2y="20.0"/>
151.22684 + </points>
151.22685 + </path>
151.22686 + </shapes>
151.22687 + <effects/>
151.22688 + </layer>
151.22689 + <templateLayer fileName="1140425bba6.png">
151.22690 + <layer name="Template" type="template">
151.22691 + <opacity>1.0</opacity>
151.22692 + <fillOpacity>1.0</fillOpacity>
151.22693 + <blendingMode>NORMAL</blendingMode>
151.22694 + <locked>false</locked>
151.22695 + <visible>false</visible>
151.22696 + <shapes/>
151.22697 + <effects/>
151.22698 + </layer>
151.22699 + </templateLayer>
151.22700 + </canvas>
151.22701 + </state>
151.22702 + </backgroundStates>
151.22703 + <foregroundStates/>
151.22704 + <borderStates/>
151.22705 + <regions/>
151.22706 + </region>
151.22707 + <region name="TabbedPaneTabArea" subregion="true">
151.22708 + <contentMargins top="3" bottom="4" left="10" right="10"/>
151.22709 + <style>
151.22710 + <textForeground/>
151.22711 + <textBackground/>
151.22712 + <background/>
151.22713 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.22714 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.22715 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.22716 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.22717 + <uiproperties/>
151.22718 + </style>
151.22719 + <backgroundStates>
151.22720 + <state stateKeys="Enabled">
151.22721 + <style>
151.22722 + <textForeground/>
151.22723 + <textBackground/>
151.22724 + <background/>
151.22725 + <uiproperties/>
151.22726 + </style>
151.22727 + <canvas>
151.22728 + <size width="5" height="24"/>
151.22729 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.22730 + <stretchingInsets top="0" bottom="6" left="5" right="5"/>
151.22731 + <layer name="Layer 1">
151.22732 + <opacity>1.0</opacity>
151.22733 + <fillOpacity>1.0</fillOpacity>
151.22734 + <blendingMode>NORMAL</blendingMode>
151.22735 + <locked>false</locked>
151.22736 + <visible>true</visible>
151.22737 + <shapes>
151.22738 + <rectangle x1="0.0" x2="5.0" y1="19.0" y2="24.0" rounding="0.0">
151.22739 + <gradient cycleMethod="NO_CYCLE">
151.22740 + <stop position="0.08387097" midpoint="0.5">
151.22741 + <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
151.22742 + </stop>
151.22743 + <stop position="0.10967742" midpoint="0.5">
151.22744 + <matte red="181" green="202" blue="221" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.45471883" brightnessOffset="0.31764704" alphaOffset="0"/>
151.22745 + </stop>
151.22746 + <stop position="0.7645161" midpoint="0.5">
151.22747 + <matte red="192" green="213" blue="232" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4633005" brightnessOffset="0.3607843" alphaOffset="0"/>
151.22748 + </stop>
151.22749 + <stop position="0.7870968" midpoint="0.5">
151.22750 + <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
151.22751 + </stop>
151.22752 + </gradient>
151.22753 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.22754 + </rectangle>
151.22755 + <rectangle x1="0.0" x2="0.0" y1="0.0" y2="0.0" rounding="0.0">
151.22756 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.22757 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.22758 + </rectangle>
151.22759 + </shapes>
151.22760 + <effects/>
151.22761 + </layer>
151.22762 + <templateLayer fileName="11404091c22.png">
151.22763 + <layer name="Template" type="template">
151.22764 + <opacity>1.0</opacity>
151.22765 + <fillOpacity>1.0</fillOpacity>
151.22766 + <blendingMode>NORMAL</blendingMode>
151.22767 + <locked>false</locked>
151.22768 + <visible>true</visible>
151.22769 + <shapes/>
151.22770 + <effects/>
151.22771 + </layer>
151.22772 + </templateLayer>
151.22773 + </canvas>
151.22774 + </state>
151.22775 + <state stateKeys="Disabled">
151.22776 + <style>
151.22777 + <textForeground/>
151.22778 + <textBackground/>
151.22779 + <background/>
151.22780 + <uiproperties/>
151.22781 + </style>
151.22782 + <canvas>
151.22783 + <size width="5" height="24"/>
151.22784 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.22785 + <stretchingInsets top="0" bottom="6" left="5" right="5"/>
151.22786 + <layer name="Layer 1">
151.22787 + <opacity>1.0</opacity>
151.22788 + <fillOpacity>1.0</fillOpacity>
151.22789 + <blendingMode>NORMAL</blendingMode>
151.22790 + <locked>false</locked>
151.22791 + <visible>true</visible>
151.22792 + <shapes>
151.22793 + <rectangle x1="0.0" x2="5.0" y1="19.0" y2="24.0" rounding="0.0">
151.22794 + <gradient cycleMethod="NO_CYCLE">
151.22795 + <stop position="0.08387097" midpoint="0.5">
151.22796 + <matte red="180" green="182" blue="190" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.05468172" saturationOffset="-0.58308274" brightnessOffset="0.19607842" alphaOffset="0"/>
151.22797 + </stop>
151.22798 + <stop position="0.10967742" midpoint="0.5">
151.22799 + <matte red="181" green="202" blue="221" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.45471883" brightnessOffset="0.31764704" alphaOffset="0"/>
151.22800 + </stop>
151.22801 + <stop position="0.7645161" midpoint="0.5">
151.22802 + <matte red="192" green="213" blue="232" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4633005" brightnessOffset="0.3607843" alphaOffset="0"/>
151.22803 + </stop>
151.22804 + <stop position="0.7870968" midpoint="0.5">
151.22805 + <matte red="180" green="182" blue="190" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.05468172" saturationOffset="-0.58308274" brightnessOffset="0.19607842" alphaOffset="0"/>
151.22806 + </stop>
151.22807 + </gradient>
151.22808 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.22809 + </rectangle>
151.22810 + </shapes>
151.22811 + <effects/>
151.22812 + </layer>
151.22813 + <templateLayer fileName="11404091c22.png">
151.22814 + <layer name="Template" type="template">
151.22815 + <opacity>1.0</opacity>
151.22816 + <fillOpacity>1.0</fillOpacity>
151.22817 + <blendingMode>NORMAL</blendingMode>
151.22818 + <locked>false</locked>
151.22819 + <visible>true</visible>
151.22820 + <shapes/>
151.22821 + <effects/>
151.22822 + </layer>
151.22823 + </templateLayer>
151.22824 + </canvas>
151.22825 + </state>
151.22826 + <state stateKeys="Enabled+MouseOver">
151.22827 + <style>
151.22828 + <textForeground/>
151.22829 + <textBackground/>
151.22830 + <background/>
151.22831 + <uiproperties/>
151.22832 + </style>
151.22833 + <canvas>
151.22834 + <size width="5" height="24"/>
151.22835 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.22836 + <stretchingInsets top="0" bottom="6" left="5" right="5"/>
151.22837 + <layer name="Layer 1">
151.22838 + <opacity>1.0</opacity>
151.22839 + <fillOpacity>1.0</fillOpacity>
151.22840 + <blendingMode>NORMAL</blendingMode>
151.22841 + <locked>false</locked>
151.22842 + <visible>true</visible>
151.22843 + <shapes>
151.22844 + <rectangle x1="0.0" x2="5.0" y1="19.0" y2="24.0" rounding="0.0">
151.22845 + <gradient cycleMethod="NO_CYCLE">
151.22846 + <stop position="0.08387097" midpoint="0.5">
151.22847 + <matte red="0" green="0" blue="0" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.57865167" saturationOffset="-0.6357143" brightnessOffset="-0.54901963" alphaOffset="0"/>
151.22848 + </stop>
151.22849 + <stop position="0.10967742" midpoint="0.5">
151.22850 + <matte red="200" green="221" blue="240" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.4690476" brightnessOffset="0.39215684" alphaOffset="0"/>
151.22851 + </stop>
151.22852 + <stop position="0.7645161" midpoint="0.5">
151.22853 + <matte red="211" green="232" blue="251" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="5.1498413E-4" saturationOffset="-0.47635174" brightnessOffset="0.4352941" alphaOffset="0"/>
151.22854 + </stop>
151.22855 + <stop position="0.7870968" midpoint="0.5">
151.22856 + <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
151.22857 + </stop>
151.22858 + </gradient>
151.22859 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.22860 + </rectangle>
151.22861 + </shapes>
151.22862 + <effects/>
151.22863 + </layer>
151.22864 + <templateLayer fileName="1140418c3be.png">
151.22865 + <layer name="Template" type="template">
151.22866 + <opacity>1.0</opacity>
151.22867 + <fillOpacity>1.0</fillOpacity>
151.22868 + <blendingMode>NORMAL</blendingMode>
151.22869 + <locked>false</locked>
151.22870 + <visible>true</visible>
151.22871 + <shapes/>
151.22872 + <effects/>
151.22873 + </layer>
151.22874 + </templateLayer>
151.22875 + </canvas>
151.22876 + </state>
151.22877 + <state stateKeys="Enabled+Pressed">
151.22878 + <style>
151.22879 + <textForeground/>
151.22880 + <textBackground/>
151.22881 + <background/>
151.22882 + <uiproperties/>
151.22883 + </style>
151.22884 + <canvas>
151.22885 + <size width="5" height="24"/>
151.22886 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.22887 + <stretchingInsets top="0" bottom="6" left="5" right="5"/>
151.22888 + <layer name="Layer 1">
151.22889 + <opacity>1.0</opacity>
151.22890 + <fillOpacity>1.0</fillOpacity>
151.22891 + <blendingMode>NORMAL</blendingMode>
151.22892 + <locked>false</locked>
151.22893 + <visible>true</visible>
151.22894 + <shapes>
151.22895 + <rectangle x1="0.0" x2="5.0" y1="19.0" y2="24.0" rounding="0.0">
151.22896 + <gradient cycleMethod="NO_CYCLE">
151.22897 + <stop position="0.08387097" midpoint="0.5">
151.22898 + <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
151.22899 + </stop>
151.22900 + <stop position="0.10967742" midpoint="0.5">
151.22901 + <matte red="64" green="111" blue="153" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.05401492" brightnessOffset="0.05098039" alphaOffset="0"/>
151.22902 + </stop>
151.22903 + <stop position="0.7645161" midpoint="0.5">
151.22904 + <matte red="75" green="122" blue="164" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.09303135" brightnessOffset="0.09411764" alphaOffset="0"/>
151.22905 + </stop>
151.22906 + <stop position="0.7870968" midpoint="0.5">
151.22907 + <matte red="0" green="0" blue="18" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.08801502" saturationOffset="0.3642857" brightnessOffset="-0.4784314" alphaOffset="0"/>
151.22908 + </stop>
151.22909 + </gradient>
151.22910 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.22911 + </rectangle>
151.22912 + </shapes>
151.22913 + <effects/>
151.22914 + </layer>
151.22915 + <templateLayer fileName="1140419f9fa.png">
151.22916 + <layer name="Template" type="template">
151.22917 + <opacity>1.0</opacity>
151.22918 + <fillOpacity>1.0</fillOpacity>
151.22919 + <blendingMode>NORMAL</blendingMode>
151.22920 + <locked>false</locked>
151.22921 + <visible>true</visible>
151.22922 + <shapes/>
151.22923 + <effects/>
151.22924 + </layer>
151.22925 + </templateLayer>
151.22926 + </canvas>
151.22927 + </state>
151.22928 + </backgroundStates>
151.22929 + <foregroundStates/>
151.22930 + <borderStates/>
151.22931 + <regions/>
151.22932 + </region>
151.22933 + <region name="TabbedPaneContent" subregion="true">
151.22934 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.22935 + <style>
151.22936 + <textForeground/>
151.22937 + <textBackground/>
151.22938 + <background/>
151.22939 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.22940 + <cacheMode>NO_CACHING</cacheMode>
151.22941 + <uiproperties/>
151.22942 + </style>
151.22943 + <backgroundStates>
151.22944 + <state stateKeys="Enabled">
151.22945 + <style>
151.22946 + <textForeground/>
151.22947 + <textBackground/>
151.22948 + <background/>
151.22949 + <uiproperties/>
151.22950 + </style>
151.22951 + <canvas>
151.22952 + <size width="18" height="15"/>
151.22953 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.22954 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.22955 + <layer name="Layer 1">
151.22956 + <opacity>1.0</opacity>
151.22957 + <fillOpacity>1.0</fillOpacity>
151.22958 + <blendingMode>NORMAL</blendingMode>
151.22959 + <locked>false</locked>
151.22960 + <visible>true</visible>
151.22961 + <shapes/>
151.22962 + <effects/>
151.22963 + </layer>
151.22964 + </canvas>
151.22965 + </state>
151.22966 + </backgroundStates>
151.22967 + <foregroundStates/>
151.22968 + <borderStates/>
151.22969 + <regions/>
151.22970 + </region>
151.22971 + </regions>
151.22972 + </uiComponent>
151.22973 + <uiComponent opaque="true" type="javax.swing.JTable" name="Table" ui="TableUI" subregion="false">
151.22974 + <stateTypes/>
151.22975 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.22976 + <style>
151.22977 + <textForeground>
151.22978 + <matte red="35" green="35" blue="36" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.22979 + </textForeground>
151.22980 + <textBackground/>
151.22981 + <background>
151.22982 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.22983 + </background>
151.22984 + <inherit-textForeground>false</inherit-textForeground>
151.22985 + <inherit-background>false</inherit-background>
151.22986 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.22987 + <cacheMode>NO_CACHING</cacheMode>
151.22988 + <uiproperties>
151.22989 + <uiProperty name="showGrid" type="BOOLEAN" value="false"/>
151.22990 + <uiProperty name="intercellSpacing" type="DIMENSION">
151.22991 + <dimension width="0" height="0"/>
151.22992 + </uiProperty>
151.22993 + <uiProperty name="alternateRowColor" type="COLOR">
151.22994 + <matte red="242" green="242" blue="242" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="-0.05098039" alphaOffset="0" uiResource="false"/>
151.22995 + </uiProperty>
151.22996 + <uiProperty name="rendererUseTableColors" type="BOOLEAN" value="true"/>
151.22997 + <uiProperty name="rendererUseUIBorder" type="BOOLEAN" value="true"/>
151.22998 + <uiProperty name="cellNoFocusBorder" type="BORDER">
151.22999 + <border type="empty" top="2" left="5" bottom="2" right="5"/>
151.23000 + </uiProperty>
151.23001 + <uiProperty name="focusCellHighlightBorder" type="BORDER">
151.23002 + <border type="painter" painter="Tree:TreeCell[Enabled+Focused].backgroundPainter" top="2" left="5" bottom="2" right="5" />
151.23003 + </uiProperty>
151.23004 + <uiProperty name="dropLineColor" type="COLOR">
151.23005 + <matte red="242" green="242" blue="242" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0" alphaOffset="0"/>
151.23006 + </uiProperty>
151.23007 + <uiProperty name="dropLineShortColor" type="COLOR">
151.23008 + <matte red="242" green="242" blue="242" alpha="255" uiDefaultParentName="nimbusOrange" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0" alphaOffset="0"/>
151.23009 + </uiProperty>
151.23010 + </uiproperties>
151.23011 + </style>
151.23012 + <backgroundStates>
151.23013 + <state stateKeys="Enabled+Selected">
151.23014 + <style>
151.23015 + <textForeground>
151.23016 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
151.23017 + </textForeground>
151.23018 + <textBackground>
151.23019 + <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
151.23020 + </textBackground>
151.23021 + <background/>
151.23022 + <inherit-textForeground>false</inherit-textForeground>
151.23023 + <inherit-textBackground>false</inherit-textBackground>
151.23024 + <uiproperties/>
151.23025 + </style>
151.23026 + <canvas>
151.23027 + <size width="100" height="30"/>
151.23028 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.23029 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.23030 + <layer name="Layer 1">
151.23031 + <opacity>1.0</opacity>
151.23032 + <fillOpacity>1.0</fillOpacity>
151.23033 + <blendingMode>NORMAL</blendingMode>
151.23034 + <locked>false</locked>
151.23035 + <visible>true</visible>
151.23036 + <shapes/>
151.23037 + <effects/>
151.23038 + </layer>
151.23039 + </canvas>
151.23040 + </state>
151.23041 + <state stateKeys="Disabled+Selected">
151.23042 + <style>
151.23043 + <textForeground/>
151.23044 + <textBackground>
151.23045 + <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
151.23046 + </textBackground>
151.23047 + <background/>
151.23048 + <inherit-textBackground>false</inherit-textBackground>
151.23049 + <uiproperties/>
151.23050 + </style>
151.23051 + <canvas>
151.23052 + <size width="100" height="30"/>
151.23053 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.23054 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.23055 + <layer name="Layer 1">
151.23056 + <opacity>1.0</opacity>
151.23057 + <fillOpacity>1.0</fillOpacity>
151.23058 + <blendingMode>NORMAL</blendingMode>
151.23059 + <locked>false</locked>
151.23060 + <visible>true</visible>
151.23061 + <shapes/>
151.23062 + <effects/>
151.23063 + </layer>
151.23064 + </canvas>
151.23065 + </state>
151.23066 + </backgroundStates>
151.23067 + <foregroundStates/>
151.23068 + <borderStates/>
151.23069 + <regions>
151.23070 + <uiComponent opaque="true" componentName="Table.cellRenderer" type="javax.swing.JLabel" name="Label" ui="LabelUI" subregion="true">
151.23071 + <stateTypes/>
151.23072 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.23073 + <style>
151.23074 + <textForeground/>
151.23075 + <textBackground/>
151.23076 + <background>
151.23077 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
151.23078 + </background>
151.23079 + <inherit-background>false</inherit-background>
151.23080 + <uiproperties/>
151.23081 + </style>
151.23082 + <backgroundStates/>
151.23083 + <foregroundStates/>
151.23084 + <borderStates/>
151.23085 + <regions/>
151.23086 + </uiComponent>
151.23087 + </regions>
151.23088 + </uiComponent>
151.23089 + <uiComponent opaque="true" type="javax.swing.table.JTableHeader" name="TableHeader" ui="TableHeaderUI" subregion="false">
151.23090 + <stateTypes/>
151.23091 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.23092 + <style>
151.23093 + <textForeground/>
151.23094 + <textBackground/>
151.23095 + <background/>
151.23096 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.23097 + <cacheMode>NO_CACHING</cacheMode>
151.23098 + <uiproperties>
151.23099 + <uiProperty name="rightAlignSortArrow" type="BOOLEAN" value="true"/>
151.23100 + </uiproperties>
151.23101 + </style>
151.23102 + <backgroundStates/>
151.23103 + <foregroundStates/>
151.23104 + <borderStates/>
151.23105 + <regions>
151.23106 + <uiIconRegion name="AscendingSortIcon" subregion="true" key="ascendingSortIcon" basicKey="Table.ascendingSortIcon">
151.23107 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.23108 + <style>
151.23109 + <textForeground/>
151.23110 + <textBackground/>
151.23111 + <background/>
151.23112 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.23113 + <uiproperties/>
151.23114 + </style>
151.23115 + <backgroundStates>
151.23116 + <state stateKeys="Enabled">
151.23117 + <style>
151.23118 + <textForeground/>
151.23119 + <textBackground/>
151.23120 + <background/>
151.23121 + <uiproperties/>
151.23122 + </style>
151.23123 + <canvas>
151.23124 + <size width="7" height="7"/>
151.23125 + <nextLayerNameIndex>5</nextLayerNameIndex>
151.23126 + <stretchingInsets top="0" bottom="0" left="0" right="2"/>
151.23127 + <layer name="Button">
151.23128 + <opacity>1.0</opacity>
151.23129 + <fillOpacity>1.0</fillOpacity>
151.23130 + <blendingMode>NORMAL</blendingMode>
151.23131 + <locked>false</locked>
151.23132 + <visible>true</visible>
151.23133 + <shapes>
151.23134 + <path>
151.23135 + <gradient cycleMethod="NO_CYCLE">
151.23136 + <stop position="0.0" midpoint="0.5">
151.23137 + <matte red="105" green="142" blue="180" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0057927966" saturationOffset="-0.21904764" brightnessOffset="0.15686274" alphaOffset="0"/>
151.23138 + </stop>
151.23139 + <stop position="1.0" midpoint="0.5">
151.23140 + <matte red="53" green="104" blue="154" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0038565993" saturationOffset="0.02012986" brightnessOffset="0.054901958" alphaOffset="0"/>
151.23141 + </stop>
151.23142 + </gradient>
151.23143 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.23144 + <points>
151.23145 + <point x="0.0" y="7.0" cp1x="0.0" cp1y="7.0" cp2x="0.0" cp2y="7.0"/>
151.23146 + <point x="3.5350877192982466" y="-0.008771929824561403" cp1x="3.5350877192982466" cp1y="-0.008771929824561403" cp2x="3.5350877192982466" cp2y="-0.008771929824561403"/>
151.23147 + <point x="7.0" y="7.0" cp1x="7.0" cp1y="7.0" cp2x="7.0" cp2y="7.0"/>
151.23148 + </points>
151.23149 + </path>
151.23150 + </shapes>
151.23151 + <effects/>
151.23152 + </layer>
151.23153 + <templateLayer fileName="11423a6c52f.png">
151.23154 + <layer name="Template" type="template">
151.23155 + <opacity>1.0</opacity>
151.23156 + <fillOpacity>1.0</fillOpacity>
151.23157 + <blendingMode>NORMAL</blendingMode>
151.23158 + <locked>false</locked>
151.23159 + <visible>false</visible>
151.23160 + <shapes/>
151.23161 + <effects/>
151.23162 + </layer>
151.23163 + </templateLayer>
151.23164 + </canvas>
151.23165 + </state>
151.23166 + </backgroundStates>
151.23167 + <foregroundStates/>
151.23168 + <borderStates/>
151.23169 + <regions/>
151.23170 + </uiIconRegion>
151.23171 + <uiIconRegion name="DescendingSortIcon" subregion="true" key="descendingSortIcon" basicKey="Table.descendingSortIcon">
151.23172 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.23173 + <style>
151.23174 + <textForeground/>
151.23175 + <textBackground/>
151.23176 + <background/>
151.23177 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.23178 + <uiproperties/>
151.23179 + </style>
151.23180 + <backgroundStates>
151.23181 + <state stateKeys="Enabled">
151.23182 + <style>
151.23183 + <textForeground/>
151.23184 + <textBackground/>
151.23185 + <background/>
151.23186 + <uiproperties/>
151.23187 + </style>
151.23188 + <canvas>
151.23189 + <size width="7" height="7"/>
151.23190 + <nextLayerNameIndex>5</nextLayerNameIndex>
151.23191 + <stretchingInsets top="0" bottom="0" left="0" right="0"/>
151.23192 + <layer name="Button">
151.23193 + <opacity>1.0</opacity>
151.23194 + <fillOpacity>1.0</fillOpacity>
151.23195 + <blendingMode>NORMAL</blendingMode>
151.23196 + <locked>false</locked>
151.23197 + <visible>true</visible>
151.23198 + <shapes>
151.23199 + <path>
151.23200 + <gradient cycleMethod="NO_CYCLE">
151.23201 + <stop position="0.0" midpoint="0.5">
151.23202 + <matte red="105" green="142" blue="180" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0057927966" saturationOffset="-0.21904764" brightnessOffset="0.15686274" alphaOffset="0"/>
151.23203 + </stop>
151.23204 + <stop position="1.0" midpoint="0.5">
151.23205 + <matte red="53" green="104" blue="154" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0038565993" saturationOffset="0.02012986" brightnessOffset="0.054901958" alphaOffset="0"/>
151.23206 + </stop>
151.23207 + </gradient>
151.23208 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.23209 + <points>
151.23210 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.23211 + <point x="7.0" y="0.0" cp1x="7.0" cp1y="0.0" cp2x="7.0" cp2y="0.0"/>
151.23212 + <point x="3.5175438596491224" y="7.0" cp1x="3.5175438596491224" cp1y="7.0" cp2x="3.5175438596491224" cp2y="7.0"/>
151.23213 + </points>
151.23214 + </path>
151.23215 + </shapes>
151.23216 + <effects/>
151.23217 + </layer>
151.23218 + <templateLayer fileName="11423ac362a.png">
151.23219 + <layer name="Template" type="template">
151.23220 + <opacity>1.0</opacity>
151.23221 + <fillOpacity>1.0</fillOpacity>
151.23222 + <blendingMode>NORMAL</blendingMode>
151.23223 + <locked>false</locked>
151.23224 + <visible>false</visible>
151.23225 + <shapes/>
151.23226 + <effects/>
151.23227 + </layer>
151.23228 + </templateLayer>
151.23229 + </canvas>
151.23230 + </state>
151.23231 + </backgroundStates>
151.23232 + <foregroundStates/>
151.23233 + <borderStates/>
151.23234 + <regions/>
151.23235 + </uiIconRegion>
151.23236 + <uiComponent opaque="true" componentName="TableHeader.renderer" type="javax.swing.JLabel" name="Label" ui="LabelUI" subregion="true">
151.23237 + <stateTypes>
151.23238 + <stateType key="Enabled"/>
151.23239 + <stateType key="MouseOver"/>
151.23240 + <stateType key="Pressed"/>
151.23241 + <stateType key="Disabled"/>
151.23242 + <stateType key="Focused"/>
151.23243 + <stateType key="Selected"/>
151.23244 + <stateType key="Sorted">
151.23245 + <codeSnippet><![CDATA[
151.23246 + String sortOrder = (String)c.getClientProperty("Table.sortOrder");
151.23247 + return sortOrder != null && ("ASCENDING".equals(sortOrder) || "DESCENDING".equals(sortOrder)); ]]></codeSnippet>
151.23248 + </stateType>
151.23249 + </stateTypes>
151.23250 + <contentMargins top="2" bottom="4" left="5" right="5"/>
151.23251 + <style>
151.23252 + <textForeground/>
151.23253 + <textBackground/>
151.23254 + <background/>
151.23255 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.23256 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.23257 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.23258 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.23259 + <uiproperties/>
151.23260 + </style>
151.23261 + <backgroundStates>
151.23262 + <state stateKeys="Disabled">
151.23263 + <style>
151.23264 + <textForeground/>
151.23265 + <textBackground/>
151.23266 + <background/>
151.23267 + <uiproperties/>
151.23268 + </style>
151.23269 + <canvas>
151.23270 + <size width="22" height="20"/>
151.23271 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.23272 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.23273 + <layer name="Layer 1">
151.23274 + <opacity>1.0</opacity>
151.23275 + <fillOpacity>1.0</fillOpacity>
151.23276 + <blendingMode>NORMAL</blendingMode>
151.23277 + <locked>false</locked>
151.23278 + <visible>true</visible>
151.23279 + <shapes>
151.23280 + <rectangle x1="0.0" x2="21.0" y1="0.0" y2="19.0" rounding="0.0">
151.23281 + <gradient cycleMethod="NO_CYCLE">
151.23282 + <stop position="0.0" midpoint="0.24742268">
151.23283 + <matte red="251" green="251" blue="252" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10655806" brightnessOffset="0.24313724" alphaOffset="0"/>
151.23284 + </stop>
151.23285 + <stop position="0.2888889" midpoint="0.6272727">
151.23286 + <matte red="225" green="227" blue="231" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08455229" brightnessOffset="0.1607843" alphaOffset="0"/>
151.23287 + </stop>
151.23288 + <stop position="0.7037037" midpoint="0.5">
151.23289 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.23290 + </stop>
151.23291 + <stop position="1.0" midpoint="0.5">
151.23292 + <matte red="242" green="245" blue="251" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07466974" brightnessOffset="0.23921567" alphaOffset="0"/>
151.23293 + </stop>
151.23294 + </gradient>
151.23295 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.23296 + </rectangle>
151.23297 + <rectangle x1="21.0" x2="22.0" y1="0.0" y2="19.0" rounding="0.0">
151.23298 + <gradient cycleMethod="NO_CYCLE">
151.23299 + <stop position="0.0" midpoint="0.33043477">
151.23300 + <matte red="201" green="203" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.08625447" brightnessOffset="0.062745094" alphaOffset="0"/>
151.23301 + </stop>
151.23302 + <stop position="0.43703705" midpoint="0.5">
151.23303 + <matte red="134" green="139" blue="146" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.028334536" brightnessOffset="-0.17254901" alphaOffset="0"/>
151.23304 + </stop>
151.23305 + <stop position="0.75185186" midpoint="0.5">
151.23306 + <matte red="136" green="141" blue="148" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.029445238" brightnessOffset="-0.16470587" alphaOffset="0"/>
151.23307 + </stop>
151.23308 + <stop position="1.0" midpoint="0.5">
151.23309 + <matte red="182" green="187" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.02020204" saturationOffset="-0.053531498" brightnessOffset="0.011764705" alphaOffset="0"/>
151.23310 + </stop>
151.23311 + </gradient>
151.23312 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.23313 + </rectangle>
151.23314 + <rectangle x1="0.0" x2="22.0" y1="19.0" y2="20.0" rounding="0.0">
151.23315 + <matte red="116" green="121" blue="128" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="-0.013888836" saturationOffset="5.823001E-4" brightnessOffset="-0.12941176" alphaOffset="0"/>
151.23316 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.23317 + </rectangle>
151.23318 + </shapes>
151.23319 + <effects/>
151.23320 + </layer>
151.23321 + </canvas>
151.23322 + </state>
151.23323 + <state stateKeys="Enabled">
151.23324 + <style>
151.23325 + <textForeground/>
151.23326 + <textBackground/>
151.23327 + <background/>
151.23328 + <uiproperties/>
151.23329 + </style>
151.23330 + <canvas>
151.23331 + <size width="22" height="20"/>
151.23332 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.23333 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.23334 + <layer name="Layer 1">
151.23335 + <opacity>1.0</opacity>
151.23336 + <fillOpacity>1.0</fillOpacity>
151.23337 + <blendingMode>NORMAL</blendingMode>
151.23338 + <locked>false</locked>
151.23339 + <visible>true</visible>
151.23340 + <shapes>
151.23341 + <rectangle x1="0.0" x2="21.0" y1="0.0" y2="19.0" rounding="0.0">
151.23342 + <gradient cycleMethod="NO_CYCLE">
151.23343 + <stop position="0.0" midpoint="0.24742268">
151.23344 + <matte red="251" green="251" blue="252" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10655806" brightnessOffset="0.24313724" alphaOffset="0"/>
151.23345 + </stop>
151.23346 + <stop position="0.2888889" midpoint="0.6272727">
151.23347 + <matte red="225" green="227" blue="231" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08455229" brightnessOffset="0.1607843" alphaOffset="0"/>
151.23348 + </stop>
151.23349 + <stop position="0.7037037" midpoint="0.5">
151.23350 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.23351 + </stop>
151.23352 + <stop position="1.0" midpoint="0.5">
151.23353 + <matte red="242" green="245" blue="251" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07466974" brightnessOffset="0.23921567" alphaOffset="0"/>
151.23354 + </stop>
151.23355 + </gradient>
151.23356 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.23357 + </rectangle>
151.23358 + <rectangle x1="21.0" x2="22.0" y1="0.0" y2="19.0" rounding="0.0">
151.23359 + <gradient cycleMethod="NO_CYCLE">
151.23360 + <stop position="0.0" midpoint="0.33043477">
151.23361 + <matte red="201" green="203" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.08625447" brightnessOffset="0.062745094" alphaOffset="0"/>
151.23362 + </stop>
151.23363 + <stop position="0.43703705" midpoint="0.5">
151.23364 + <matte red="134" green="139" blue="146" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.028334536" brightnessOffset="-0.17254901" alphaOffset="0"/>
151.23365 + </stop>
151.23366 + <stop position="0.75185186" midpoint="0.5">
151.23367 + <matte red="136" green="141" blue="148" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.029445238" brightnessOffset="-0.16470587" alphaOffset="0"/>
151.23368 + </stop>
151.23369 + <stop position="1.0" midpoint="0.5">
151.23370 + <matte red="182" green="187" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.02020204" saturationOffset="-0.053531498" brightnessOffset="0.011764705" alphaOffset="0"/>
151.23371 + </stop>
151.23372 + </gradient>
151.23373 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.23374 + </rectangle>
151.23375 + <rectangle x1="0.0" x2="22.0" y1="19.0" y2="20.0" rounding="0.0">
151.23376 + <matte red="116" green="121" blue="128" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="-0.013888836" saturationOffset="5.823001E-4" brightnessOffset="-0.12941176" alphaOffset="0"/>
151.23377 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.23378 + </rectangle>
151.23379 + </shapes>
151.23380 + <effects/>
151.23381 + </layer>
151.23382 + <templateLayer fileName="114235956c5.png">
151.23383 + <layer name="Template" type="template">
151.23384 + <opacity>1.0</opacity>
151.23385 + <fillOpacity>1.0</fillOpacity>
151.23386 + <blendingMode>NORMAL</blendingMode>
151.23387 + <locked>false</locked>
151.23388 + <visible>true</visible>
151.23389 + <shapes/>
151.23390 + <effects/>
151.23391 + </layer>
151.23392 + </templateLayer>
151.23393 + </canvas>
151.23394 + </state>
151.23395 + <state stateKeys="Enabled+Focused">
151.23396 + <style>
151.23397 + <textForeground/>
151.23398 + <textBackground/>
151.23399 + <background/>
151.23400 + <uiproperties/>
151.23401 + </style>
151.23402 + <canvas>
151.23403 + <size width="22" height="20"/>
151.23404 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.23405 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.23406 + <layer name="Layer 1">
151.23407 + <opacity>1.0</opacity>
151.23408 + <fillOpacity>1.0</fillOpacity>
151.23409 + <blendingMode>NORMAL</blendingMode>
151.23410 + <locked>false</locked>
151.23411 + <visible>true</visible>
151.23412 + <shapes>
151.23413 + <path>
151.23414 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.23415 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.23416 + <points>
151.23417 + <point x="0" y="0" cp1x="0" cp1y="0" cp2x="0" cp2y="0"/>
151.23418 + <point x="0" y="20" cp1x="0" cp1y="20" cp2x="0" cp2y="20"/>
151.23419 + <point x="22" y="20" cp1x="22" cp1y="20" cp2x="22" cp2y="20"/>
151.23420 + <point x="22" y="0" cp1x="22" cp1y="0" cp2x="22" cp2y="0"/>
151.23421 + <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
151.23422 + <point x="1.2" y="1.2" cp1x="1.2" cp1y="1.2" cp2x="1.2" cp2y="1.2"/>
151.23423 + <point x="20.8" y="1.2" cp1x="20.8" cp1y="1.2" cp2x="20.8" cp2y="1.2"/>
151.23424 + <point x="20.8" y="18.8" cp1x="20.8" cp1y="18.8" cp2x="20.8" cp2y="18.8"/>
151.23425 + <point x="1.2" y="18.8" cp1x="1.2" cp1y="18.8" cp2x="1.2" cp2y="18.8"/>
151.23426 + <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
151.23427 + </points>
151.23428 + </path>
151.23429 + <rectangle x1="0.0" x2="21.0" y1="0.0" y2="19.0" rounding="0.0">
151.23430 + <gradient cycleMethod="NO_CYCLE">
151.23431 + <stop position="0.0" midpoint="0.24742268">
151.23432 + <matte red="251" green="251" blue="252" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10655806" brightnessOffset="0.24313724" alphaOffset="0"/>
151.23433 + </stop>
151.23434 + <stop position="0.2888889" midpoint="0.6272727">
151.23435 + <matte red="225" green="227" blue="231" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08455229" brightnessOffset="0.1607843" alphaOffset="0"/>
151.23436 + </stop>
151.23437 + <stop position="0.7037037" midpoint="0.5">
151.23438 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.23439 + </stop>
151.23440 + <stop position="1.0" midpoint="0.5">
151.23441 + <matte red="242" green="245" blue="251" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07466974" brightnessOffset="0.23921567" alphaOffset="0"/>
151.23442 + </stop>
151.23443 + </gradient>
151.23444 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.23445 + </rectangle>
151.23446 + <rectangle x1="21.0" x2="22.0" y1="0.0" y2="19.0" rounding="0.0">
151.23447 + <gradient cycleMethod="NO_CYCLE">
151.23448 + <stop position="0.0" midpoint="0.33043477">
151.23449 + <matte red="201" green="203" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.08625447" brightnessOffset="0.062745094" alphaOffset="0"/>
151.23450 + </stop>
151.23451 + <stop position="0.43703705" midpoint="0.5">
151.23452 + <matte red="134" green="139" blue="146" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.028334536" brightnessOffset="-0.17254901" alphaOffset="0"/>
151.23453 + </stop>
151.23454 + <stop position="0.75185186" midpoint="0.5">
151.23455 + <matte red="136" green="141" blue="148" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.029445238" brightnessOffset="-0.16470587" alphaOffset="0"/>
151.23456 + </stop>
151.23457 + <stop position="1.0" midpoint="0.5">
151.23458 + <matte red="182" green="187" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.02020204" saturationOffset="-0.053531498" brightnessOffset="0.011764705" alphaOffset="0"/>
151.23459 + </stop>
151.23460 + </gradient>
151.23461 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.23462 + </rectangle>
151.23463 + <rectangle x1="0.0" x2="22.0" y1="19.0" y2="20.0" rounding="0.0">
151.23464 + <matte red="116" green="121" blue="128" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="-0.013888836" saturationOffset="5.823001E-4" brightnessOffset="-0.12941176" alphaOffset="0"/>
151.23465 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.23466 + </rectangle>
151.23467 + </shapes>
151.23468 + <effects/>
151.23469 + </layer>
151.23470 + </canvas>
151.23471 + </state>
151.23472 + <state stateKeys="MouseOver">
151.23473 + <style>
151.23474 + <textForeground/>
151.23475 + <textBackground/>
151.23476 + <background/>
151.23477 + <uiproperties/>
151.23478 + </style>
151.23479 + <canvas>
151.23480 + <size width="22" height="20"/>
151.23481 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.23482 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.23483 + <layer name="Layer 1">
151.23484 + <opacity>1.0</opacity>
151.23485 + <fillOpacity>1.0</fillOpacity>
151.23486 + <blendingMode>NORMAL</blendingMode>
151.23487 + <locked>false</locked>
151.23488 + <visible>true</visible>
151.23489 + <shapes>
151.23490 + <rectangle x1="0.0" x2="21.0" y1="0.0" y2="19.0" rounding="0.0">
151.23491 + <gradient cycleMethod="NO_CYCLE">
151.23492 + <stop position="0.0" midpoint="0.24742268">
151.23493 + <matte red="253" green="253" blue="254" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10658931" brightnessOffset="0.25098038" alphaOffset="0"/>
151.23494 + </stop>
151.23495 + <stop position="0.2888889" midpoint="0.6272727">
151.23496 + <matte red="240" green="242" blue="246" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08613607" brightnessOffset="0.21960783" alphaOffset="0"/>
151.23497 + </stop>
151.23498 + <stop position="0.7037037" midpoint="0.5">
151.23499 + <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.23500 + </stop>
151.23501 + <stop position="0.88013697" midpoint="0.5">
151.23502 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.23503 + </stop>
151.23504 + </gradient>
151.23505 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.23506 + </rectangle>
151.23507 + <rectangle x1="21.0" x2="22.0" y1="0.0" y2="19.0" rounding="0.0">
151.23508 + <gradient cycleMethod="NO_CYCLE">
151.23509 + <stop position="0.0" midpoint="0.33043477">
151.23510 + <matte red="201" green="203" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.08625447" brightnessOffset="0.062745094" alphaOffset="0"/>
151.23511 + </stop>
151.23512 + <stop position="0.43703705" midpoint="0.5">
151.23513 + <matte red="134" green="139" blue="146" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.028334536" brightnessOffset="-0.17254901" alphaOffset="0"/>
151.23514 + </stop>
151.23515 + <stop position="0.75185186" midpoint="0.5">
151.23516 + <matte red="136" green="141" blue="148" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.029445238" brightnessOffset="-0.16470587" alphaOffset="0"/>
151.23517 + </stop>
151.23518 + <stop position="1.0" midpoint="0.5">
151.23519 + <matte red="182" green="187" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.02020204" saturationOffset="-0.053531498" brightnessOffset="0.011764705" alphaOffset="0"/>
151.23520 + </stop>
151.23521 + </gradient>
151.23522 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.23523 + </rectangle>
151.23524 + <rectangle x1="0.0" x2="22.0" y1="19.0" y2="20.0" rounding="0.0">
151.23525 + <matte red="116" green="121" blue="128" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="-0.013888836" saturationOffset="5.823001E-4" brightnessOffset="-0.12941176" alphaOffset="0"/>
151.23526 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.23527 + </rectangle>
151.23528 + </shapes>
151.23529 + <effects/>
151.23530 + </layer>
151.23531 + <templateLayer fileName="114235b929b.png">
151.23532 + <layer name="Template" type="template">
151.23533 + <opacity>1.0</opacity>
151.23534 + <fillOpacity>1.0</fillOpacity>
151.23535 + <blendingMode>NORMAL</blendingMode>
151.23536 + <locked>false</locked>
151.23537 + <visible>true</visible>
151.23538 + <shapes/>
151.23539 + <effects/>
151.23540 + </layer>
151.23541 + </templateLayer>
151.23542 + </canvas>
151.23543 + </state>
151.23544 + <state stateKeys="Pressed">
151.23545 + <style>
151.23546 + <textForeground/>
151.23547 + <textBackground/>
151.23548 + <background/>
151.23549 + <uiproperties/>
151.23550 + </style>
151.23551 + <canvas>
151.23552 + <size width="22" height="20"/>
151.23553 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.23554 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.23555 + <layer name="Layer 1">
151.23556 + <opacity>1.0</opacity>
151.23557 + <fillOpacity>1.0</fillOpacity>
151.23558 + <blendingMode>NORMAL</blendingMode>
151.23559 + <locked>false</locked>
151.23560 + <visible>true</visible>
151.23561 + <shapes>
151.23562 + <rectangle x1="0.0" x2="21.0" y1="0.0" y2="19.0" rounding="0.0">
151.23563 + <gradient cycleMethod="NO_CYCLE">
151.23564 + <stop position="0.0" midpoint="0.24742268">
151.23565 + <matte red="205" green="209" blue="216" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.05960039" brightnessOffset="0.10196078" alphaOffset="0"/>
151.23566 + </stop>
151.23567 + <stop position="0.2888889" midpoint="0.6272727">
151.23568 + <matte red="176" green="182" blue="194" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.017742813" brightnessOffset="0.015686274" alphaOffset="0"/>
151.23569 + </stop>
151.23570 + <stop position="0.7037037" midpoint="0.5">
151.23571 + <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.23572 + </stop>
151.23573 + <stop position="1.0" midpoint="0.5">
151.23574 + <matte red="202" green="208" blue="222" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.020436227" brightnessOffset="0.12549019" alphaOffset="0"/>
151.23575 + </stop>
151.23576 + </gradient>
151.23577 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.23578 + </rectangle>
151.23579 + <rectangle x1="21.0" x2="22.0" y1="0.0" y2="19.0" rounding="0.0">
151.23580 + <gradient cycleMethod="NO_CYCLE">
151.23581 + <stop position="0.0" midpoint="0.33043477">
151.23582 + <matte red="201" green="203" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.08625447" brightnessOffset="0.062745094" alphaOffset="0"/>
151.23583 + </stop>
151.23584 + <stop position="0.43703705" midpoint="0.5">
151.23585 + <matte red="134" green="139" blue="146" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.028334536" brightnessOffset="-0.17254901" alphaOffset="0"/>
151.23586 + </stop>
151.23587 + <stop position="0.75185186" midpoint="0.5">
151.23588 + <matte red="136" green="141" blue="148" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.029445238" brightnessOffset="-0.16470587" alphaOffset="0"/>
151.23589 + </stop>
151.23590 + <stop position="1.0" midpoint="0.5">
151.23591 + <matte red="182" green="187" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.02020204" saturationOffset="-0.053531498" brightnessOffset="0.011764705" alphaOffset="0"/>
151.23592 + </stop>
151.23593 + </gradient>
151.23594 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.23595 + </rectangle>
151.23596 + <rectangle x1="0.0" x2="22.0" y1="19.0" y2="20.0" rounding="0.0">
151.23597 + <matte red="116" green="121" blue="128" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="-0.013888836" saturationOffset="5.823001E-4" brightnessOffset="-0.12941176" alphaOffset="0"/>
151.23598 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.23599 + </rectangle>
151.23600 + </shapes>
151.23601 + <effects/>
151.23602 + </layer>
151.23603 + <templateLayer fileName="11423668ee0.png">
151.23604 + <layer name="Template" type="template">
151.23605 + <opacity>1.0</opacity>
151.23606 + <fillOpacity>1.0</fillOpacity>
151.23607 + <blendingMode>NORMAL</blendingMode>
151.23608 + <locked>false</locked>
151.23609 + <visible>true</visible>
151.23610 + <shapes/>
151.23611 + <effects/>
151.23612 + </layer>
151.23613 + </templateLayer>
151.23614 + </canvas>
151.23615 + </state>
151.23616 + <state stateKeys="Enabled+Sorted">
151.23617 + <style>
151.23618 + <textForeground/>
151.23619 + <textBackground/>
151.23620 + <background/>
151.23621 + <uiproperties/>
151.23622 + </style>
151.23623 + <canvas>
151.23624 + <size width="22" height="20"/>
151.23625 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.23626 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.23627 + <layer name="Layer 1">
151.23628 + <opacity>1.0</opacity>
151.23629 + <fillOpacity>1.0</fillOpacity>
151.23630 + <blendingMode>NORMAL</blendingMode>
151.23631 + <locked>false</locked>
151.23632 + <visible>true</visible>
151.23633 + <shapes>
151.23634 + <rectangle x1="0.0" x2="21.0" y1="0.0" y2="19.0" rounding="0.0">
151.23635 + <gradient cycleMethod="NO_CYCLE">
151.23636 + <stop position="0.0" midpoint="0.24742268">
151.23637 + <matte red="248" green="250" blue="251" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.023096085" saturationOffset="-0.62376213" brightnessOffset="0.4352941" alphaOffset="0"/>
151.23638 + </stop>
151.23639 + <stop position="0.32534248" midpoint="0.6272727">
151.23640 + <matte red="193" green="208" blue="221" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0012707114" saturationOffset="-0.50901747" brightnessOffset="0.31764704" alphaOffset="0"/>
151.23641 + </stop>
151.23642 + <stop position="0.7037037" midpoint="0.5">
151.23643 + <matte red="178" green="197" blue="213" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.002461195" saturationOffset="-0.47139505" brightnessOffset="0.2862745" alphaOffset="0"/>
151.23644 + </stop>
151.23645 + <stop position="0.97602737" midpoint="0.5">
151.23646 + <matte red="201" green="220" blue="235" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.0051222444" saturationOffset="-0.49103343" brightnessOffset="0.372549" alphaOffset="0"/>
151.23647 + </stop>
151.23648 + </gradient>
151.23649 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.23650 + </rectangle>
151.23651 + <rectangle x1="21.0" x2="22.0" y1="0.0" y2="19.0" rounding="0.0">
151.23652 + <gradient cycleMethod="NO_CYCLE">
151.23653 + <stop position="0.0" midpoint="0.33043477">
151.23654 + <matte red="201" green="203" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.08625447" brightnessOffset="0.062745094" alphaOffset="0"/>
151.23655 + </stop>
151.23656 + <stop position="0.43703705" midpoint="0.5">
151.23657 + <matte red="134" green="139" blue="146" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.028334536" brightnessOffset="-0.17254901" alphaOffset="0"/>
151.23658 + </stop>
151.23659 + <stop position="0.75185186" midpoint="0.5">
151.23660 + <matte red="136" green="141" blue="148" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.029445238" brightnessOffset="-0.16470587" alphaOffset="0"/>
151.23661 + </stop>
151.23662 + <stop position="1.0" midpoint="0.5">
151.23663 + <matte red="182" green="187" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.02020204" saturationOffset="-0.053531498" brightnessOffset="0.011764705" alphaOffset="0"/>
151.23664 + </stop>
151.23665 + </gradient>
151.23666 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.23667 + </rectangle>
151.23668 + <rectangle x1="0.0" x2="22.0" y1="19.0" y2="20.0" rounding="0.0">
151.23669 + <matte red="116" green="121" blue="128" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="-0.013888836" saturationOffset="5.823001E-4" brightnessOffset="-0.12941176" alphaOffset="0"/>
151.23670 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.23671 + </rectangle>
151.23672 + </shapes>
151.23673 + <effects/>
151.23674 + </layer>
151.23675 + <templateLayer fileName="11423677dfd.png">
151.23676 + <layer name="Template" type="template">
151.23677 + <opacity>1.0</opacity>
151.23678 + <fillOpacity>1.0</fillOpacity>
151.23679 + <blendingMode>NORMAL</blendingMode>
151.23680 + <locked>false</locked>
151.23681 + <visible>true</visible>
151.23682 + <shapes/>
151.23683 + <effects/>
151.23684 + </layer>
151.23685 + </templateLayer>
151.23686 + </canvas>
151.23687 + </state>
151.23688 + <state stateKeys="Enabled+Focused+Sorted">
151.23689 + <style>
151.23690 + <textForeground/>
151.23691 + <textBackground/>
151.23692 + <background/>
151.23693 + <uiproperties/>
151.23694 + </style>
151.23695 + <canvas>
151.23696 + <size width="22" height="20"/>
151.23697 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.23698 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.23699 + <layer name="Layer 1">
151.23700 + <opacity>1.0</opacity>
151.23701 + <fillOpacity>1.0</fillOpacity>
151.23702 + <blendingMode>NORMAL</blendingMode>
151.23703 + <locked>false</locked>
151.23704 + <visible>true</visible>
151.23705 + <shapes>
151.23706 + <path>
151.23707 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.23708 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.23709 + <points>
151.23710 + <point x="0" y="0" cp1x="0" cp1y="0" cp2x="0" cp2y="0"/>
151.23711 + <point x="0" y="20" cp1x="0" cp1y="20" cp2x="0" cp2y="20"/>
151.23712 + <point x="22" y="20" cp1x="22" cp1y="20" cp2x="22" cp2y="20"/>
151.23713 + <point x="22" y="0" cp1x="22" cp1y="0" cp2x="22" cp2y="0"/>
151.23714 + <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
151.23715 + <point x="1.2" y="1.2" cp1x="1.2" cp1y="1.2" cp2x="1.2" cp2y="1.2"/>
151.23716 + <point x="20.8" y="1.2" cp1x="20.8" cp1y="1.2" cp2x="20.8" cp2y="1.2"/>
151.23717 + <point x="20.8" y="18.8" cp1x="20.8" cp1y="18.8" cp2x="20.8" cp2y="18.8"/>
151.23718 + <point x="1.2" y="18.8" cp1x="1.2" cp1y="18.8" cp2x="1.2" cp2y="18.8"/>
151.23719 + <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
151.23720 + </points>
151.23721 + </path>
151.23722 + <rectangle x1="0.0" x2="21.0" y1="0.0" y2="19.0" rounding="0.0">
151.23723 + <gradient cycleMethod="NO_CYCLE">
151.23724 + <stop position="0.0" midpoint="0.24742268">
151.23725 + <matte red="248" green="250" blue="251" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.023096085" saturationOffset="-0.62376213" brightnessOffset="0.4352941" alphaOffset="0"/>
151.23726 + </stop>
151.23727 + <stop position="0.2888889" midpoint="0.6272727">
151.23728 + <matte red="189" green="205" blue="219" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-8.738637E-4" saturationOffset="-0.49872798" brightnessOffset="0.3098039" alphaOffset="0"/>
151.23729 + </stop>
151.23730 + <stop position="0.7037037" midpoint="0.5">
151.23731 + <matte red="178" green="197" blue="213" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-0.002461195" saturationOffset="-0.47139505" brightnessOffset="0.2862745" alphaOffset="0"/>
151.23732 + </stop>
151.23733 + <stop position="1.0" midpoint="0.5">
151.23734 + <matte red="202" green="220" blue="236" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="-2.2029877E-4" saturationOffset="-0.4916465" brightnessOffset="0.37647057" alphaOffset="0"/>
151.23735 + </stop>
151.23736 + </gradient>
151.23737 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.23738 + </rectangle>
151.23739 + <rectangle x1="21.0" x2="22.0" y1="0.0" y2="19.0" rounding="0.0">
151.23740 + <gradient cycleMethod="NO_CYCLE">
151.23741 + <stop position="0.0" midpoint="0.33043477">
151.23742 + <matte red="201" green="203" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.08625447" brightnessOffset="0.062745094" alphaOffset="0"/>
151.23743 + </stop>
151.23744 + <stop position="0.43703705" midpoint="0.5">
151.23745 + <matte red="134" green="139" blue="146" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.028334536" brightnessOffset="-0.17254901" alphaOffset="0"/>
151.23746 + </stop>
151.23747 + <stop position="0.75185186" midpoint="0.5">
151.23748 + <matte red="136" green="141" blue="148" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.029445238" brightnessOffset="-0.16470587" alphaOffset="0"/>
151.23749 + </stop>
151.23750 + <stop position="1.0" midpoint="0.5">
151.23751 + <matte red="182" green="187" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.02020204" saturationOffset="-0.053531498" brightnessOffset="0.011764705" alphaOffset="0"/>
151.23752 + </stop>
151.23753 + </gradient>
151.23754 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.23755 + </rectangle>
151.23756 + <rectangle x1="0.0" x2="22.0" y1="19.0" y2="20.0" rounding="0.0">
151.23757 + <matte red="116" green="121" blue="128" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="-0.013888836" saturationOffset="5.823001E-4" brightnessOffset="-0.12941176" alphaOffset="0"/>
151.23758 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.23759 + </rectangle>
151.23760 + </shapes>
151.23761 + <effects>
151.23762 + <innerShadow blendingMode="NORMAL" opacity="0.75" angle="135" distance="0" spread="53" size="3">
151.23763 + <matte red="49" green="150" blue="239" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="0.16" brightnessOffset="0.39" alphaOffset="0"/>
151.23764 + </innerShadow>
151.23765 + </effects>
151.23766 + </layer>
151.23767 + <templateLayer fileName="1142368f212.png">
151.23768 + <layer name="Template" type="template">
151.23769 + <opacity>1.0</opacity>
151.23770 + <fillOpacity>1.0</fillOpacity>
151.23771 + <blendingMode>NORMAL</blendingMode>
151.23772 + <locked>false</locked>
151.23773 + <visible>true</visible>
151.23774 + <shapes/>
151.23775 + <effects/>
151.23776 + </layer>
151.23777 + </templateLayer>
151.23778 + </canvas>
151.23779 + </state>
151.23780 + <state stateKeys="Disabled+Sorted">
151.23781 + <style>
151.23782 + <textForeground/>
151.23783 + <textBackground/>
151.23784 + <background/>
151.23785 + <uiproperties/>
151.23786 + </style>
151.23787 + <canvas>
151.23788 + <size width="22" height="20"/>
151.23789 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.23790 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.23791 + <layer name="Layer 1">
151.23792 + <opacity>1.0</opacity>
151.23793 + <fillOpacity>1.0</fillOpacity>
151.23794 + <blendingMode>NORMAL</blendingMode>
151.23795 + <locked>false</locked>
151.23796 + <visible>true</visible>
151.23797 + <shapes>
151.23798 + <rectangle x1="0.0" x2="21.0" y1="0.0" y2="19.0" rounding="0.0">
151.23799 + <gradient cycleMethod="NO_CYCLE">
151.23800 + <stop position="0.0" midpoint="0.24742268">
151.23801 + <matte red="251" green="251" blue="252" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10655806" brightnessOffset="0.24313724" alphaOffset="0"/>
151.23802 + </stop>
151.23803 + <stop position="0.2888889" midpoint="0.6272727">
151.23804 + <matte red="225" green="227" blue="231" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.08455229" brightnessOffset="0.1607843" alphaOffset="0"/>
151.23805 + </stop>
151.23806 + <stop position="0.7037037" midpoint="0.5">
151.23807 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07016757" brightnessOffset="0.12941176" alphaOffset="0"/>
151.23808 + </stop>
151.23809 + <stop position="1.0" midpoint="0.5">
151.23810 + <matte red="242" green="245" blue="251" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07466974" brightnessOffset="0.23921567" alphaOffset="0"/>
151.23811 + </stop>
151.23812 + </gradient>
151.23813 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.23814 + </rectangle>
151.23815 + <rectangle x1="21.0" x2="22.0" y1="0.0" y2="19.0" rounding="0.0">
151.23816 + <gradient cycleMethod="NO_CYCLE">
151.23817 + <stop position="0.0" midpoint="0.33043477">
151.23818 + <matte red="201" green="203" blue="206" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.08625447" brightnessOffset="0.062745094" alphaOffset="0"/>
151.23819 + </stop>
151.23820 + <stop position="0.43703705" midpoint="0.5">
151.23821 + <matte red="134" green="139" blue="146" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.028334536" brightnessOffset="-0.17254901" alphaOffset="0"/>
151.23822 + </stop>
151.23823 + <stop position="0.75185186" midpoint="0.5">
151.23824 + <matte red="136" green="141" blue="148" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.013888836" saturationOffset="-0.029445238" brightnessOffset="-0.16470587" alphaOffset="0"/>
151.23825 + </stop>
151.23826 + <stop position="1.0" midpoint="0.5">
151.23827 + <matte red="182" green="187" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.02020204" saturationOffset="-0.053531498" brightnessOffset="0.011764705" alphaOffset="0"/>
151.23828 + </stop>
151.23829 + </gradient>
151.23830 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.23831 + </rectangle>
151.23832 + <rectangle x1="0.0" x2="22.0" y1="19.0" y2="20.0" rounding="0.0">
151.23833 + <matte red="116" green="121" blue="128" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="-0.013888836" saturationOffset="5.823001E-4" brightnessOffset="-0.12941176" alphaOffset="0"/>
151.23834 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.23835 + </rectangle>
151.23836 + </shapes>
151.23837 + <effects/>
151.23838 + </layer>
151.23839 + </canvas>
151.23840 + </state>
151.23841 + </backgroundStates>
151.23842 + <foregroundStates/>
151.23843 + <borderStates/>
151.23844 + <regions/>
151.23845 + </uiComponent>
151.23846 + </regions>
151.23847 + </uiComponent>
151.23848 + <uiComponent opaque="true" componentName="Table.editor" type="javax.swing.JTextField" name="TextField" ui="TextFieldUI" subregion="false">
151.23849 + <stateTypes/>
151.23850 + <contentMargins top="3" bottom="3" left="5" right="5"/>
151.23851 + <style>
151.23852 + <textForeground/>
151.23853 + <textBackground/>
151.23854 + <background>
151.23855 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.23856 + </background>
151.23857 + <inherit-background>false</inherit-background>
151.23858 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.23859 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.23860 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.23861 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.23862 + <uiproperties/>
151.23863 + </style>
151.23864 + <backgroundStates>
151.23865 + <state stateKeys="Disabled">
151.23866 + <style>
151.23867 + <textForeground>
151.23868 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.23869 + </textForeground>
151.23870 + <textBackground/>
151.23871 + <background/>
151.23872 + <inherit-textForeground>false</inherit-textForeground>
151.23873 + <uiproperties/>
151.23874 + </style>
151.23875 + <canvas>
151.23876 + <size width="100" height="30"/>
151.23877 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.23878 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.23879 + <layer name="Layer 1">
151.23880 + <opacity>1.0</opacity>
151.23881 + <fillOpacity>1.0</fillOpacity>
151.23882 + <blendingMode>NORMAL</blendingMode>
151.23883 + <locked>false</locked>
151.23884 + <visible>true</visible>
151.23885 + <shapes/>
151.23886 + <effects/>
151.23887 + </layer>
151.23888 + </canvas>
151.23889 + </state>
151.23890 + <state stateKeys="Enabled">
151.23891 + <style>
151.23892 + <textForeground/>
151.23893 + <textBackground/>
151.23894 + <background/>
151.23895 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.23896 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.23897 + <uiproperties/>
151.23898 + </style>
151.23899 + <canvas>
151.23900 + <size width="100" height="30"/>
151.23901 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.23902 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.23903 + <layer name="Layer 2">
151.23904 + <opacity>1.0</opacity>
151.23905 + <fillOpacity>1.0</fillOpacity>
151.23906 + <blendingMode>NORMAL</blendingMode>
151.23907 + <locked>false</locked>
151.23908 + <visible>true</visible>
151.23909 + <shapes>
151.23910 + <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
151.23911 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.23912 + <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
151.23913 + </rectangle>
151.23914 + </shapes>
151.23915 + <effects/>
151.23916 + </layer>
151.23917 + </canvas>
151.23918 + </state>
151.23919 + <state stateKeys="Enabled+Focused">
151.23920 + <style>
151.23921 + <textForeground/>
151.23922 + <textBackground/>
151.23923 + <background/>
151.23924 + <uiproperties/>
151.23925 + </style>
151.23926 + <canvas>
151.23927 + <size width="100" height="30"/>
151.23928 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.23929 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.23930 + <layer name="Layer 1">
151.23931 + <opacity>1.0</opacity>
151.23932 + <fillOpacity>1.0</fillOpacity>
151.23933 + <blendingMode>NORMAL</blendingMode>
151.23934 + <locked>false</locked>
151.23935 + <visible>true</visible>
151.23936 + <shapes>
151.23937 + <path>
151.23938 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.23939 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.23940 + <points>
151.23941 + <point x="0" y="0" cp1x="0" cp1y="0" cp2x="0" cp2y="0"/>
151.23942 + <point x="0" y="30" cp1x="0" cp1y="30" cp2x="0" cp2y="30"/>
151.23943 + <point x="100" y="30" cp1x="100" cp1y="30" cp2x="100" cp2y="30"/>
151.23944 + <point x="100" y="0" cp1x="100" cp1y="0" cp2x="100" cp2y="0"/>
151.23945 + <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
151.23946 + <point x="1.2" y="1.2" cp1x="1.2" cp1y="1.2" cp2x="1.2" cp2y="1.2"/>
151.23947 + <point x="98.8" y="1.2" cp1x="98.8" cp1y="1.2" cp2x="98.8" cp2y="1.2"/>
151.23948 + <point x="98.8" y="28.8" cp1x="98.8" cp1y="28.8" cp2x="98.8" cp2y="28.8"/>
151.23949 + <point x="1.2" y="28.8" cp1x="1.2" cp1y="28.8" cp2x="1.2" cp2y="28.8"/>
151.23950 + <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
151.23951 + </points>
151.23952 + </path>
151.23953 + </shapes>
151.23954 + <effects/>
151.23955 + </layer>
151.23956 + </canvas>
151.23957 + </state>
151.23958 + <state stateKeys="Selected">
151.23959 + <style>
151.23960 + <textForeground>
151.23961 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.23962 + </textForeground>
151.23963 + <textBackground/>
151.23964 + <background/>
151.23965 + <inherit-textForeground>false</inherit-textForeground>
151.23966 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.23967 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.23968 + <uiproperties/>
151.23969 + </style>
151.23970 + <canvas>
151.23971 + <size width="122" height="24"/>
151.23972 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.23973 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.23974 + <layer name="Layer 2">
151.23975 + <opacity>1.0</opacity>
151.23976 + <fillOpacity>1.0</fillOpacity>
151.23977 + <blendingMode>NORMAL</blendingMode>
151.23978 + <locked>false</locked>
151.23979 + <visible>true</visible>
151.23980 + <shapes/>
151.23981 + <effects/>
151.23982 + </layer>
151.23983 + </canvas>
151.23984 + </state>
151.23985 + </backgroundStates>
151.23986 + <foregroundStates/>
151.23987 + <borderStates/>
151.23988 + <regions/>
151.23989 + </uiComponent>
151.23990 + <uiComponent opaque="true" componentName="Tree.cellEditor" type="javax.swing.JTextField" name="TextField" ui="TextFieldUI" subregion="false">
151.23991 + <stateTypes/>
151.23992 + <contentMargins top="2" bottom="2" left="5" right="5"/>
151.23993 + <style>
151.23994 + <textForeground/>
151.23995 + <textBackground/>
151.23996 + <background>
151.23997 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.23998 + </background>
151.23999 + <inherit-background>false</inherit-background>
151.24000 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.24001 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.24002 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.24003 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.24004 + <uiproperties/>
151.24005 + </style>
151.24006 + <backgroundStates>
151.24007 + <state stateKeys="Disabled">
151.24008 + <style>
151.24009 + <textForeground>
151.24010 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24011 + </textForeground>
151.24012 + <textBackground/>
151.24013 + <background/>
151.24014 + <inherit-textForeground>false</inherit-textForeground>
151.24015 + <uiproperties/>
151.24016 + </style>
151.24017 + <canvas>
151.24018 + <size width="100" height="30"/>
151.24019 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.24020 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.24021 + <layer name="Layer 1">
151.24022 + <opacity>1.0</opacity>
151.24023 + <fillOpacity>1.0</fillOpacity>
151.24024 + <blendingMode>NORMAL</blendingMode>
151.24025 + <locked>false</locked>
151.24026 + <visible>true</visible>
151.24027 + <shapes/>
151.24028 + <effects/>
151.24029 + </layer>
151.24030 + </canvas>
151.24031 + </state>
151.24032 + <state stateKeys="Enabled">
151.24033 + <style>
151.24034 + <textForeground/>
151.24035 + <textBackground/>
151.24036 + <background/>
151.24037 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.24038 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.24039 + <uiproperties/>
151.24040 + </style>
151.24041 + <canvas>
151.24042 + <size width="100" height="30"/>
151.24043 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.24044 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.24045 + <layer name="Layer 2">
151.24046 + <opacity>1.0</opacity>
151.24047 + <fillOpacity>1.0</fillOpacity>
151.24048 + <blendingMode>NORMAL</blendingMode>
151.24049 + <locked>false</locked>
151.24050 + <visible>true</visible>
151.24051 + <shapes>
151.24052 + <path>
151.24053 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.017358616" brightnessOffset="-0.11372548" alphaOffset="0"/>
151.24054 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24055 + <points>
151.24056 + <point x="0" y="0" cp1x="0" cp1y="0" cp2x="0" cp2y="0"/>
151.24057 + <point x="0" y="30" cp1x="0" cp1y="30" cp2x="0" cp2y="30"/>
151.24058 + <point x="100" y="30" cp1x="100" cp1y="30" cp2x="100" cp2y="30"/>
151.24059 + <point x="100" y="0" cp1x="100" cp1y="0" cp2x="100" cp2y="0"/>
151.24060 + <point x="1" y="0" cp1x="1" cp1y="0" cp2x="1" cp2y="0"/>
151.24061 + <point x="1" y="1" cp1x="1" cp1y="1" cp2x="1" cp2y="1"/>
151.24062 + <point x="99" y="1" cp1x="99" cp1y="1" cp2x="99" cp2y="1"/>
151.24063 + <point x="99" y="29" cp1x="99" cp1y="29" cp2x="99" cp2y="29"/>
151.24064 + <point x="1" y="29" cp1x="1" cp1y="29" cp2x="1" cp2y="29"/>
151.24065 + <point x="1" y="0" cp1x="1" cp1y="0" cp2x="1" cp2y="0"/>
151.24066 + </points>
151.24067 + </path>
151.24068 + </shapes>
151.24069 + <effects/>
151.24070 + </layer>
151.24071 + </canvas>
151.24072 + </state>
151.24073 + <state stateKeys="Enabled+Focused">
151.24074 + <style>
151.24075 + <textForeground/>
151.24076 + <textBackground/>
151.24077 + <background/>
151.24078 + <uiproperties/>
151.24079 + </style>
151.24080 + <canvas>
151.24081 + <size width="100" height="30"/>
151.24082 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.24083 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.24084 + <layer name="Layer 1">
151.24085 + <opacity>1.0</opacity>
151.24086 + <fillOpacity>1.0</fillOpacity>
151.24087 + <blendingMode>NORMAL</blendingMode>
151.24088 + <locked>false</locked>
151.24089 + <visible>true</visible>
151.24090 + <shapes>
151.24091 + <path>
151.24092 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24093 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24094 + <points>
151.24095 + <point x="0" y="0" cp1x="0" cp1y="0" cp2x="0" cp2y="0"/>
151.24096 + <point x="0" y="30" cp1x="0" cp1y="30" cp2x="0" cp2y="30"/>
151.24097 + <point x="100" y="30" cp1x="100" cp1y="30" cp2x="100" cp2y="30"/>
151.24098 + <point x="100" y="0" cp1x="100" cp1y="0" cp2x="100" cp2y="0"/>
151.24099 + <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
151.24100 + <point x="1.2" y="1.2" cp1x="1.2" cp1y="1.2" cp2x="1.2" cp2y="1.2"/>
151.24101 + <point x="98.8" y="1.2" cp1x="98.8" cp1y="1.2" cp2x="98.8" cp2y="1.2"/>
151.24102 + <point x="98.8" y="28.8" cp1x="98.8" cp1y="28.8" cp2x="98.8" cp2y="28.8"/>
151.24103 + <point x="1.2" y="28.8" cp1x="1.2" cp1y="28.8" cp2x="1.2" cp2y="28.8"/>
151.24104 + <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
151.24105 + </points>
151.24106 + </path>
151.24107 + </shapes>
151.24108 + <effects/>
151.24109 + </layer>
151.24110 + </canvas>
151.24111 + </state>
151.24112 + <state stateKeys="Selected">
151.24113 + <style>
151.24114 + <textForeground>
151.24115 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24116 + </textForeground>
151.24117 + <textBackground/>
151.24118 + <background/>
151.24119 + <inherit-textForeground>false</inherit-textForeground>
151.24120 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.24121 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.24122 + <uiproperties/>
151.24123 + </style>
151.24124 + <canvas>
151.24125 + <size width="122" height="24"/>
151.24126 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.24127 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.24128 + <layer name="Layer 2">
151.24129 + <opacity>1.0</opacity>
151.24130 + <fillOpacity>1.0</fillOpacity>
151.24131 + <blendingMode>NORMAL</blendingMode>
151.24132 + <locked>false</locked>
151.24133 + <visible>true</visible>
151.24134 + <shapes/>
151.24135 + <effects/>
151.24136 + </layer>
151.24137 + </canvas>
151.24138 + </state>
151.24139 + </backgroundStates>
151.24140 + <foregroundStates/>
151.24141 + <borderStates/>
151.24142 + <regions/>
151.24143 + </uiComponent>
151.24144 + <uiComponent opaque="false" type="javax.swing.JTextField" name="TextField" ui="TextFieldUI" subregion="false">
151.24145 + <stateTypes/>
151.24146 + <contentMargins top="6" bottom="6" left="6" right="6"/>
151.24147 + <style>
151.24148 + <textForeground/>
151.24149 + <textBackground/>
151.24150 + <background>
151.24151 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24152 + </background>
151.24153 + <inherit-background>false</inherit-background>
151.24154 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.24155 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.24156 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.24157 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.24158 + <uiproperties/>
151.24159 + </style>
151.24160 + <backgroundStates>
151.24161 + <state stateKeys="Disabled">
151.24162 + <style>
151.24163 + <textForeground>
151.24164 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24165 + </textForeground>
151.24166 + <textBackground/>
151.24167 + <background/>
151.24168 + <inherit-textForeground>false</inherit-textForeground>
151.24169 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.24170 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.24171 + <uiproperties/>
151.24172 + </style>
151.24173 + <canvas>
151.24174 + <size width="122" height="24"/>
151.24175 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.24176 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.24177 + <layer name="Layer 1">
151.24178 + <opacity>1.0</opacity>
151.24179 + <fillOpacity>1.0</fillOpacity>
151.24180 + <blendingMode>NORMAL</blendingMode>
151.24181 + <locked>false</locked>
151.24182 + <visible>true</visible>
151.24183 + <shapes>
151.24184 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
151.24185 + <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
151.24186 + <paintPoints x1="0.25" y1="0.0" x2="0.25" y2="0.1500000000000001"/>
151.24187 + </rectangle>
151.24188 + </shapes>
151.24189 + <effects/>
151.24190 + </layer>
151.24191 + <templateLayer fileName="1139927b26e.png">
151.24192 + <layer name="Template" type="template">
151.24193 + <opacity>1.0</opacity>
151.24194 + <fillOpacity>1.0</fillOpacity>
151.24195 + <blendingMode>NORMAL</blendingMode>
151.24196 + <locked>false</locked>
151.24197 + <visible>false</visible>
151.24198 + <shapes/>
151.24199 + <effects/>
151.24200 + </layer>
151.24201 + </templateLayer>
151.24202 + </canvas>
151.24203 + </state>
151.24204 + <state stateKeys="Enabled">
151.24205 + <style>
151.24206 + <textForeground/>
151.24207 + <textBackground/>
151.24208 + <background/>
151.24209 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.24210 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.24211 + <uiproperties/>
151.24212 + </style>
151.24213 + <canvas>
151.24214 + <size width="122" height="24"/>
151.24215 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.24216 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.24217 + <layer name="Layer 2">
151.24218 + <opacity>1.0</opacity>
151.24219 + <fillOpacity>1.0</fillOpacity>
151.24220 + <blendingMode>NORMAL</blendingMode>
151.24221 + <locked>false</locked>
151.24222 + <visible>true</visible>
151.24223 + <shapes>
151.24224 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
151.24225 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24226 + <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
151.24227 + </rectangle>
151.24228 + </shapes>
151.24229 + <effects/>
151.24230 + </layer>
151.24231 + <templateLayer fileName="11399201d79.png">
151.24232 + <layer name="Template" type="template">
151.24233 + <opacity>1.0</opacity>
151.24234 + <fillOpacity>1.0</fillOpacity>
151.24235 + <blendingMode>NORMAL</blendingMode>
151.24236 + <locked>false</locked>
151.24237 + <visible>false</visible>
151.24238 + <shapes/>
151.24239 + <effects/>
151.24240 + </layer>
151.24241 + </templateLayer>
151.24242 + </canvas>
151.24243 + </state>
151.24244 + <state stateKeys="Selected">
151.24245 + <style>
151.24246 + <textForeground>
151.24247 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24248 + </textForeground>
151.24249 + <textBackground/>
151.24250 + <background/>
151.24251 + <inherit-textForeground>false</inherit-textForeground>
151.24252 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.24253 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.24254 + <uiproperties/>
151.24255 + </style>
151.24256 + <canvas>
151.24257 + <size width="122" height="24"/>
151.24258 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.24259 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.24260 + <layer name="Layer 2">
151.24261 + <opacity>1.0</opacity>
151.24262 + <fillOpacity>1.0</fillOpacity>
151.24263 + <blendingMode>NORMAL</blendingMode>
151.24264 + <locked>false</locked>
151.24265 + <visible>true</visible>
151.24266 + <shapes>
151.24267 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
151.24268 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24269 + <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
151.24270 + </rectangle>
151.24271 + </shapes>
151.24272 + <effects/>
151.24273 + </layer>
151.24274 + <templateLayer fileName="11399201d79.png">
151.24275 + <layer name="Template" type="template">
151.24276 + <opacity>1.0</opacity>
151.24277 + <fillOpacity>1.0</fillOpacity>
151.24278 + <blendingMode>NORMAL</blendingMode>
151.24279 + <locked>false</locked>
151.24280 + <visible>false</visible>
151.24281 + <shapes/>
151.24282 + <effects/>
151.24283 + </layer>
151.24284 + </templateLayer>
151.24285 + </canvas>
151.24286 + </state>
151.24287 + </backgroundStates>
151.24288 + <foregroundStates/>
151.24289 + <borderStates>
151.24290 + <state stateKeys="Disabled">
151.24291 + <style>
151.24292 + <textForeground>
151.24293 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24294 + </textForeground>
151.24295 + <textBackground/>
151.24296 + <background/>
151.24297 + <inherit-textForeground>false</inherit-textForeground>
151.24298 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.24299 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.24300 + <uiproperties/>
151.24301 + </style>
151.24302 + <canvas>
151.24303 + <size width="122" height="24"/>
151.24304 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.24305 + <stretchingInsets top="5" bottom="3" left="3" right="3"/>
151.24306 + <layer name="Layer 1">
151.24307 + <opacity>1.0</opacity>
151.24308 + <fillOpacity>1.0</fillOpacity>
151.24309 + <blendingMode>NORMAL</blendingMode>
151.24310 + <locked>false</locked>
151.24311 + <visible>true</visible>
151.24312 + <shapes>
151.24313 + <rectangle x1="119.0" x2="120.0" y1="5.0" y2="21.0" rounding="0.0">
151.24314 + <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
151.24315 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24316 + </rectangle>
151.24317 + <rectangle x1="2.0" x2="120.0" y1="22.0" y2="21.0" rounding="0.0">
151.24318 + <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
151.24319 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24320 + </rectangle>
151.24321 + <rectangle x1="2.0" x2="3.0" y1="5.0" y2="21.0" rounding="0.0">
151.24322 + <matte red="208" green="210" blue="215" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07796818" brightnessOffset="0.09803921" alphaOffset="0"/>
151.24323 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24324 + </rectangle>
151.24325 + <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
151.24326 + <gradient cycleMethod="NO_CYCLE">
151.24327 + <stop position="0.0" midpoint="0.5">
151.24328 + <matte red="212" green="214" blue="219" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07856284" brightnessOffset="0.11372548" alphaOffset="0"/>
151.24329 + </stop>
151.24330 + <stop position="1.0" midpoint="0.5">
151.24331 + <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
151.24332 + </stop>
151.24333 + </gradient>
151.24334 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.24335 + </rectangle>
151.24336 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
151.24337 + <gradient cycleMethod="NO_CYCLE">
151.24338 + <stop position="0.0" midpoint="0.5">
151.24339 + <matte red="199" green="202" blue="207" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.07187897" brightnessOffset="0.06666666" alphaOffset="0"/>
151.24340 + </stop>
151.24341 + <stop position="1.0" midpoint="0.5">
151.24342 + <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
151.24343 + </stop>
151.24344 + </gradient>
151.24345 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.24346 + </rectangle>
151.24347 + </shapes>
151.24348 + <effects/>
151.24349 + </layer>
151.24350 + <templateLayer fileName="1139927b26e.png">
151.24351 + <layer name="Template" type="template">
151.24352 + <opacity>1.0</opacity>
151.24353 + <fillOpacity>1.0</fillOpacity>
151.24354 + <blendingMode>NORMAL</blendingMode>
151.24355 + <locked>false</locked>
151.24356 + <visible>false</visible>
151.24357 + <shapes/>
151.24358 + <effects/>
151.24359 + </layer>
151.24360 + </templateLayer>
151.24361 + </canvas>
151.24362 + </state>
151.24363 + <state stateKeys="Focused">
151.24364 + <style>
151.24365 + <textForeground/>
151.24366 + <textBackground/>
151.24367 + <background/>
151.24368 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.24369 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.24370 + <uiproperties/>
151.24371 + </style>
151.24372 + <canvas>
151.24373 + <size width="122" height="24"/>
151.24374 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.24375 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.24376 + <layer name="Layer 2">
151.24377 + <opacity>1.0</opacity>
151.24378 + <fillOpacity>1.0</fillOpacity>
151.24379 + <blendingMode>NORMAL</blendingMode>
151.24380 + <locked>false</locked>
151.24381 + <visible>true</visible>
151.24382 + <shapes>
151.24383 + <path>
151.24384 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24385 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24386 + <points>
151.24387 + <point x="2.0" y="2.0" cp1x="2.0" cp1y="2.0" cp2x="2.0" cp2y="2.0"/>
151.24388 + <point x="2.0" y="22.0" cp1x="2.0" cp1y="22.0" cp2x="2.0" cp2y="22.0"/>
151.24389 + <point x="120.0" y="22.0" cp1x="120.0" cp1y="22.0" cp2x="120.0" cp2y="22.0"/>
151.24390 + <point x="120.0" y="2.0" cp1x="120.0" cp1y="2.0" cp2x="120.0" cp2y="2.0"/>
151.24391 + <point x="121.4" y="2.0" cp1x="121.5" cp1y="2.0" cp2x="121.5" cp2y="2.0"/>
151.24392 + <point x="121.4" y="23.4" cp1x="121.4" cp1y="23.4" cp2x="121.4" cp2y="23.4"/>
151.24393 + <point x="0.6" y="23.4" cp1x="0.6" cp1y="23.4" cp2x="0.6" cp2y="23.4"/>
151.24394 + <point x="0.6" y="0.6" cp1x="0.6" cp1y="0.6" cp2x="0.6" cp2y="0.6"/>
151.24395 + <point x="121.4" y="0.6" cp1x="121.4" cp1y="0.6" cp2x="121.4" cp2y="0.6"/>
151.24396 + <point x="121.4" y="2.0" cp1x="121.4" cp1y="2.0" cp2x="121.4" cp2y="2.0"/>
151.24397 + </points>
151.24398 + </path>
151.24399 + <rectangle x1="3.0" x2="119.0" y1="21.0" y2="22.0" rounding="0.0">
151.24400 + <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
151.24401 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24402 + </rectangle>
151.24403 + <rectangle x1="119.0" x2="120.0" y1="5.0" y2="22.0" rounding="0.0">
151.24404 + <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.24405 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24406 + </rectangle>
151.24407 + <rectangle x1="2.0" x2="3.0" y1="5.0" y2="22.0" rounding="0.0">
151.24408 + <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.24409 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24410 + </rectangle>
151.24411 + <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
151.24412 + <gradient cycleMethod="NO_CYCLE">
151.24413 + <stop position="0.1" midpoint="0.5">
151.24414 + <matte red="203" green="203" blue="204" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.6666667" saturationOffset="0.004901961" brightnessOffset="-0.19999999" alphaOffset="0"/>
151.24415 + </stop>
151.24416 + <stop position="0.9" midpoint="0.5">
151.24417 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24418 + </stop>
151.24419 + </gradient>
151.24420 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.24421 + </rectangle>
151.24422 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
151.24423 + <gradient cycleMethod="NO_CYCLE">
151.24424 + <stop position="0.1" midpoint="0.5">
151.24425 + <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
151.24426 + </stop>
151.24427 + <stop position="0.9" midpoint="0.5">
151.24428 + <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
151.24429 + </stop>
151.24430 + </gradient>
151.24431 + <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
151.24432 + </rectangle>
151.24433 + </shapes>
151.24434 + <effects/>
151.24435 + </layer>
151.24436 + <templateLayer fileName="11399201d79.png">
151.24437 + <layer name="Template" type="template">
151.24438 + <opacity>1.0</opacity>
151.24439 + <fillOpacity>1.0</fillOpacity>
151.24440 + <blendingMode>NORMAL</blendingMode>
151.24441 + <locked>false</locked>
151.24442 + <visible>false</visible>
151.24443 + <shapes/>
151.24444 + <effects/>
151.24445 + </layer>
151.24446 + </templateLayer>
151.24447 + </canvas>
151.24448 + </state>
151.24449 + <state stateKeys="Enabled">
151.24450 + <style>
151.24451 + <textForeground/>
151.24452 + <textBackground/>
151.24453 + <background/>
151.24454 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.24455 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.24456 + <uiproperties/>
151.24457 + </style>
151.24458 + <canvas>
151.24459 + <size width="122" height="24"/>
151.24460 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.24461 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.24462 + <layer name="Layer 2">
151.24463 + <opacity>1.0</opacity>
151.24464 + <fillOpacity>1.0</fillOpacity>
151.24465 + <blendingMode>NORMAL</blendingMode>
151.24466 + <locked>false</locked>
151.24467 + <visible>true</visible>
151.24468 + <shapes>
151.24469 + <rectangle x1="3.0" x2="119.0" y1="21.0" y2="22.0" rounding="0.0">
151.24470 + <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
151.24471 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24472 + </rectangle>
151.24473 + <rectangle x1="119.0" x2="120.0" y1="5.0" y2="22.0" rounding="0.0">
151.24474 + <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.24475 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24476 + </rectangle>
151.24477 + <rectangle x1="2.0" x2="3.0" y1="5.0" y2="22.0" rounding="0.0">
151.24478 + <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.24479 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24480 + </rectangle>
151.24481 + <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
151.24482 + <gradient cycleMethod="NO_CYCLE">
151.24483 + <stop position="0.1" midpoint="0.5">
151.24484 + <matte red="203" green="203" blue="204" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.6666667" saturationOffset="0.004901961" brightnessOffset="-0.19999999" alphaOffset="0"/>
151.24485 + </stop>
151.24486 + <stop position="0.9" midpoint="0.5">
151.24487 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24488 + </stop>
151.24489 + </gradient>
151.24490 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.24491 + </rectangle>
151.24492 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
151.24493 + <gradient cycleMethod="NO_CYCLE">
151.24494 + <stop position="0.1" midpoint="0.5">
151.24495 + <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
151.24496 + </stop>
151.24497 + <stop position="0.9" midpoint="0.5">
151.24498 + <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
151.24499 + </stop>
151.24500 + </gradient>
151.24501 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.24502 + </rectangle>
151.24503 + </shapes>
151.24504 + <effects/>
151.24505 + </layer>
151.24506 + <templateLayer fileName="11399201d79.png">
151.24507 + <layer name="Template" type="template">
151.24508 + <opacity>1.0</opacity>
151.24509 + <fillOpacity>1.0</fillOpacity>
151.24510 + <blendingMode>NORMAL</blendingMode>
151.24511 + <locked>false</locked>
151.24512 + <visible>false</visible>
151.24513 + <shapes/>
151.24514 + <effects/>
151.24515 + </layer>
151.24516 + </templateLayer>
151.24517 + </canvas>
151.24518 + </state>
151.24519 + </borderStates>
151.24520 + <regions/>
151.24521 + </uiComponent>
151.24522 + <uiComponent opaque="false" type="javax.swing.JFormattedTextField" name="FormattedTextField" ui="FormattedTextFieldUI" subregion="false">
151.24523 + <stateTypes/>
151.24524 + <contentMargins top="6" bottom="6" left="6" right="6"/>
151.24525 + <style>
151.24526 + <textForeground/>
151.24527 + <textBackground/>
151.24528 + <background/>
151.24529 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.24530 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.24531 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.24532 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.24533 + <uiproperties/>
151.24534 + </style>
151.24535 + <backgroundStates>
151.24536 + <state stateKeys="Disabled">
151.24537 + <style>
151.24538 + <textForeground>
151.24539 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24540 + </textForeground>
151.24541 + <textBackground/>
151.24542 + <background/>
151.24543 + <inherit-textForeground>false</inherit-textForeground>
151.24544 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.24545 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.24546 + <uiproperties/>
151.24547 + </style>
151.24548 + <canvas>
151.24549 + <size width="122" height="24"/>
151.24550 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.24551 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.24552 + <layer name="Layer 1">
151.24553 + <opacity>1.0</opacity>
151.24554 + <fillOpacity>1.0</fillOpacity>
151.24555 + <blendingMode>NORMAL</blendingMode>
151.24556 + <locked>false</locked>
151.24557 + <visible>true</visible>
151.24558 + <shapes>
151.24559 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
151.24560 + <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
151.24561 + <paintPoints x1="0.25" y1="0.0" x2="0.25" y2="0.1500000000000001"/>
151.24562 + </rectangle>
151.24563 + </shapes>
151.24564 + <effects/>
151.24565 + </layer>
151.24566 + <templateLayer fileName="1139927b26e.png">
151.24567 + <layer name="Template" type="template">
151.24568 + <opacity>1.0</opacity>
151.24569 + <fillOpacity>1.0</fillOpacity>
151.24570 + <blendingMode>NORMAL</blendingMode>
151.24571 + <locked>false</locked>
151.24572 + <visible>false</visible>
151.24573 + <shapes/>
151.24574 + <effects/>
151.24575 + </layer>
151.24576 + </templateLayer>
151.24577 + </canvas>
151.24578 + </state>
151.24579 + <state stateKeys="Enabled">
151.24580 + <style>
151.24581 + <textForeground/>
151.24582 + <textBackground/>
151.24583 + <background/>
151.24584 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.24585 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.24586 + <uiproperties/>
151.24587 + </style>
151.24588 + <canvas>
151.24589 + <size width="122" height="24"/>
151.24590 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.24591 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.24592 + <layer name="Layer 2">
151.24593 + <opacity>1.0</opacity>
151.24594 + <fillOpacity>1.0</fillOpacity>
151.24595 + <blendingMode>NORMAL</blendingMode>
151.24596 + <locked>false</locked>
151.24597 + <visible>true</visible>
151.24598 + <shapes>
151.24599 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
151.24600 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24601 + <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
151.24602 + </rectangle>
151.24603 + </shapes>
151.24604 + <effects/>
151.24605 + </layer>
151.24606 + <templateLayer fileName="11399201d79.png">
151.24607 + <layer name="Template" type="template">
151.24608 + <opacity>1.0</opacity>
151.24609 + <fillOpacity>1.0</fillOpacity>
151.24610 + <blendingMode>NORMAL</blendingMode>
151.24611 + <locked>false</locked>
151.24612 + <visible>false</visible>
151.24613 + <shapes/>
151.24614 + <effects/>
151.24615 + </layer>
151.24616 + </templateLayer>
151.24617 + </canvas>
151.24618 + </state>
151.24619 + <state stateKeys="Selected">
151.24620 + <style>
151.24621 + <textForeground>
151.24622 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24623 + </textForeground>
151.24624 + <textBackground/>
151.24625 + <background/>
151.24626 + <inherit-textForeground>false</inherit-textForeground>
151.24627 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.24628 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.24629 + <uiproperties/>
151.24630 + </style>
151.24631 + <canvas>
151.24632 + <size width="122" height="24"/>
151.24633 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.24634 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.24635 + <layer name="Layer 2">
151.24636 + <opacity>1.0</opacity>
151.24637 + <fillOpacity>1.0</fillOpacity>
151.24638 + <blendingMode>NORMAL</blendingMode>
151.24639 + <locked>false</locked>
151.24640 + <visible>true</visible>
151.24641 + <shapes>
151.24642 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
151.24643 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24644 + <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
151.24645 + </rectangle>
151.24646 + </shapes>
151.24647 + <effects/>
151.24648 + </layer>
151.24649 + <templateLayer fileName="11399201d79.png">
151.24650 + <layer name="Template" type="template">
151.24651 + <opacity>1.0</opacity>
151.24652 + <fillOpacity>1.0</fillOpacity>
151.24653 + <blendingMode>NORMAL</blendingMode>
151.24654 + <locked>false</locked>
151.24655 + <visible>false</visible>
151.24656 + <shapes/>
151.24657 + <effects/>
151.24658 + </layer>
151.24659 + </templateLayer>
151.24660 + </canvas>
151.24661 + </state>
151.24662 + </backgroundStates>
151.24663 + <foregroundStates/>
151.24664 + <borderStates>
151.24665 + <state stateKeys="Disabled">
151.24666 + <style>
151.24667 + <textForeground>
151.24668 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24669 + </textForeground>
151.24670 + <textBackground/>
151.24671 + <background/>
151.24672 + <inherit-textForeground>false</inherit-textForeground>
151.24673 + <uiproperties/>
151.24674 + </style>
151.24675 + <canvas>
151.24676 + <size width="122" height="24"/>
151.24677 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.24678 + <stretchingInsets top="5" bottom="3" left="3" right="3"/>
151.24679 + <layer name="Layer 1">
151.24680 + <opacity>1.0</opacity>
151.24681 + <fillOpacity>1.0</fillOpacity>
151.24682 + <blendingMode>NORMAL</blendingMode>
151.24683 + <locked>false</locked>
151.24684 + <visible>true</visible>
151.24685 + <shapes>
151.24686 + <rectangle x1="119.0" x2="120.0" y1="5.0" y2="21.0" rounding="0.0">
151.24687 + <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
151.24688 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24689 + </rectangle>
151.24690 + <rectangle x1="2.0" x2="120.0" y1="22.0" y2="21.0" rounding="0.0">
151.24691 + <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
151.24692 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24693 + </rectangle>
151.24694 + <rectangle x1="2.0" x2="3.0" y1="5.0" y2="21.0" rounding="0.0">
151.24695 + <matte red="208" green="210" blue="215" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07796818" brightnessOffset="0.09803921" alphaOffset="0"/>
151.24696 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24697 + </rectangle>
151.24698 + <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
151.24699 + <gradient cycleMethod="NO_CYCLE">
151.24700 + <stop position="0.0" midpoint="0.5">
151.24701 + <matte red="212" green="214" blue="219" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07856284" brightnessOffset="0.11372548" alphaOffset="0"/>
151.24702 + </stop>
151.24703 + <stop position="1.0" midpoint="0.5">
151.24704 + <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
151.24705 + </stop>
151.24706 + </gradient>
151.24707 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.24708 + </rectangle>
151.24709 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
151.24710 + <gradient cycleMethod="NO_CYCLE">
151.24711 + <stop position="0.0" midpoint="0.5">
151.24712 + <matte red="199" green="202" blue="207" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.07187897" brightnessOffset="0.06666666" alphaOffset="0"/>
151.24713 + </stop>
151.24714 + <stop position="1.0" midpoint="0.5">
151.24715 + <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
151.24716 + </stop>
151.24717 + </gradient>
151.24718 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.24719 + </rectangle>
151.24720 + </shapes>
151.24721 + <effects/>
151.24722 + </layer>
151.24723 + <templateLayer fileName="1139927b26e.png">
151.24724 + <layer name="Template" type="template">
151.24725 + <opacity>1.0</opacity>
151.24726 + <fillOpacity>1.0</fillOpacity>
151.24727 + <blendingMode>NORMAL</blendingMode>
151.24728 + <locked>false</locked>
151.24729 + <visible>false</visible>
151.24730 + <shapes/>
151.24731 + <effects/>
151.24732 + </layer>
151.24733 + </templateLayer>
151.24734 + </canvas>
151.24735 + </state>
151.24736 + <state stateKeys="Focused">
151.24737 + <style>
151.24738 + <textForeground/>
151.24739 + <textBackground/>
151.24740 + <background/>
151.24741 + <uiproperties/>
151.24742 + </style>
151.24743 + <canvas>
151.24744 + <size width="122" height="24"/>
151.24745 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.24746 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.24747 + <layer name="Layer 2">
151.24748 + <opacity>1.0</opacity>
151.24749 + <fillOpacity>1.0</fillOpacity>
151.24750 + <blendingMode>NORMAL</blendingMode>
151.24751 + <locked>false</locked>
151.24752 + <visible>true</visible>
151.24753 + <shapes>
151.24754 + <path>
151.24755 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24756 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24757 + <points>
151.24758 + <point x="2.0" y="2.0" cp1x="2.0" cp1y="2.0" cp2x="2.0" cp2y="2.0"/>
151.24759 + <point x="2.0" y="22.0" cp1x="2.0" cp1y="22.0" cp2x="2.0" cp2y="22.0"/>
151.24760 + <point x="120.0" y="22.0" cp1x="120.0" cp1y="22.0" cp2x="120.0" cp2y="22.0"/>
151.24761 + <point x="120.0" y="2.0" cp1x="120.0" cp1y="2.0" cp2x="120.0" cp2y="2.0"/>
151.24762 + <point x="121.4" y="2.0" cp1x="121.5" cp1y="2.0" cp2x="121.5" cp2y="2.0"/>
151.24763 + <point x="121.4" y="23.4" cp1x="121.4" cp1y="23.4" cp2x="121.4" cp2y="23.4"/>
151.24764 + <point x="0.6" y="23.4" cp1x="0.6" cp1y="23.4" cp2x="0.6" cp2y="23.4"/>
151.24765 + <point x="0.6" y="0.6" cp1x="0.6" cp1y="0.6" cp2x="0.6" cp2y="0.6"/>
151.24766 + <point x="121.4" y="0.6" cp1x="121.4" cp1y="0.6" cp2x="121.4" cp2y="0.6"/>
151.24767 + <point x="121.4" y="2.0" cp1x="121.4" cp1y="2.0" cp2x="121.4" cp2y="2.0"/>
151.24768 + </points>
151.24769 + </path>
151.24770 + <rectangle x1="3.0" x2="119.0" y1="21.0" y2="22.0" rounding="0.0">
151.24771 + <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
151.24772 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24773 + </rectangle>
151.24774 + <rectangle x1="119.0" x2="120.0" y1="5.0" y2="22.0" rounding="0.0">
151.24775 + <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.24776 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24777 + </rectangle>
151.24778 + <rectangle x1="2.0" x2="3.0" y1="5.0" y2="22.0" rounding="0.0">
151.24779 + <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.24780 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24781 + </rectangle>
151.24782 + <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
151.24783 + <gradient cycleMethod="NO_CYCLE">
151.24784 + <stop position="0.1" midpoint="0.5">
151.24785 + <matte red="203" green="203" blue="204" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.6666667" saturationOffset="0.004901961" brightnessOffset="-0.19999999" alphaOffset="0"/>
151.24786 + </stop>
151.24787 + <stop position="0.9" midpoint="0.5">
151.24788 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24789 + </stop>
151.24790 + </gradient>
151.24791 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.24792 + </rectangle>
151.24793 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
151.24794 + <gradient cycleMethod="NO_CYCLE">
151.24795 + <stop position="0.1" midpoint="0.5">
151.24796 + <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
151.24797 + </stop>
151.24798 + <stop position="0.9" midpoint="0.5">
151.24799 + <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
151.24800 + </stop>
151.24801 + </gradient>
151.24802 + <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
151.24803 + </rectangle>
151.24804 + </shapes>
151.24805 + <effects/>
151.24806 + </layer>
151.24807 + <templateLayer fileName="11399201d79.png">
151.24808 + <layer name="Template" type="template">
151.24809 + <opacity>1.0</opacity>
151.24810 + <fillOpacity>1.0</fillOpacity>
151.24811 + <blendingMode>NORMAL</blendingMode>
151.24812 + <locked>false</locked>
151.24813 + <visible>false</visible>
151.24814 + <shapes/>
151.24815 + <effects/>
151.24816 + </layer>
151.24817 + </templateLayer>
151.24818 + </canvas>
151.24819 + </state>
151.24820 + <state stateKeys="Enabled">
151.24821 + <style>
151.24822 + <textForeground/>
151.24823 + <textBackground/>
151.24824 + <background/>
151.24825 + <uiproperties/>
151.24826 + </style>
151.24827 + <canvas>
151.24828 + <size width="122" height="24"/>
151.24829 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.24830 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.24831 + <layer name="Layer 2">
151.24832 + <opacity>1.0</opacity>
151.24833 + <fillOpacity>1.0</fillOpacity>
151.24834 + <blendingMode>NORMAL</blendingMode>
151.24835 + <locked>false</locked>
151.24836 + <visible>true</visible>
151.24837 + <shapes>
151.24838 + <rectangle x1="3.0" x2="119.0" y1="21.0" y2="22.0" rounding="0.0">
151.24839 + <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
151.24840 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24841 + </rectangle>
151.24842 + <rectangle x1="119.0" x2="120.0" y1="5.0" y2="22.0" rounding="0.0">
151.24843 + <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.24844 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24845 + </rectangle>
151.24846 + <rectangle x1="2.0" x2="3.0" y1="5.0" y2="22.0" rounding="0.0">
151.24847 + <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.24848 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.24849 + </rectangle>
151.24850 + <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
151.24851 + <gradient cycleMethod="NO_CYCLE">
151.24852 + <stop position="0.1" midpoint="0.5">
151.24853 + <matte red="203" green="203" blue="204" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.6666667" saturationOffset="0.004901961" brightnessOffset="-0.19999999" alphaOffset="0"/>
151.24854 + </stop>
151.24855 + <stop position="0.9" midpoint="0.5">
151.24856 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24857 + </stop>
151.24858 + </gradient>
151.24859 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.24860 + </rectangle>
151.24861 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
151.24862 + <gradient cycleMethod="NO_CYCLE">
151.24863 + <stop position="0.1" midpoint="0.5">
151.24864 + <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
151.24865 + </stop>
151.24866 + <stop position="0.9" midpoint="0.5">
151.24867 + <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
151.24868 + </stop>
151.24869 + </gradient>
151.24870 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.24871 + </rectangle>
151.24872 + </shapes>
151.24873 + <effects/>
151.24874 + </layer>
151.24875 + <templateLayer fileName="11399201d79.png">
151.24876 + <layer name="Template" type="template">
151.24877 + <opacity>1.0</opacity>
151.24878 + <fillOpacity>1.0</fillOpacity>
151.24879 + <blendingMode>NORMAL</blendingMode>
151.24880 + <locked>false</locked>
151.24881 + <visible>false</visible>
151.24882 + <shapes/>
151.24883 + <effects/>
151.24884 + </layer>
151.24885 + </templateLayer>
151.24886 + </canvas>
151.24887 + </state>
151.24888 + </borderStates>
151.24889 + <regions/>
151.24890 + </uiComponent>
151.24891 + <uiComponent opaque="false" type="javax.swing.JPasswordField" name="PasswordField" ui="PasswordFieldUI" subregion="false">
151.24892 + <stateTypes/>
151.24893 + <contentMargins top="6" bottom="6" left="6" right="6"/>
151.24894 + <style>
151.24895 + <textForeground/>
151.24896 + <textBackground/>
151.24897 + <background/>
151.24898 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.24899 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.24900 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.24901 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.24902 + <uiproperties/>
151.24903 + </style>
151.24904 + <backgroundStates>
151.24905 + <state stateKeys="Disabled">
151.24906 + <style>
151.24907 + <textForeground>
151.24908 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24909 + </textForeground>
151.24910 + <textBackground/>
151.24911 + <background/>
151.24912 + <inherit-textForeground>false</inherit-textForeground>
151.24913 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.24914 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.24915 + <uiproperties/>
151.24916 + </style>
151.24917 + <canvas>
151.24918 + <size width="122" height="24"/>
151.24919 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.24920 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.24921 + <layer name="Layer 1">
151.24922 + <opacity>1.0</opacity>
151.24923 + <fillOpacity>1.0</fillOpacity>
151.24924 + <blendingMode>NORMAL</blendingMode>
151.24925 + <locked>false</locked>
151.24926 + <visible>true</visible>
151.24927 + <shapes>
151.24928 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
151.24929 + <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
151.24930 + <paintPoints x1="0.25" y1="0.0" x2="0.25" y2="0.1500000000000001"/>
151.24931 + </rectangle>
151.24932 + </shapes>
151.24933 + <effects/>
151.24934 + </layer>
151.24935 + <templateLayer fileName="1139927b26e.png">
151.24936 + <layer name="Template" type="template">
151.24937 + <opacity>1.0</opacity>
151.24938 + <fillOpacity>1.0</fillOpacity>
151.24939 + <blendingMode>NORMAL</blendingMode>
151.24940 + <locked>false</locked>
151.24941 + <visible>false</visible>
151.24942 + <shapes/>
151.24943 + <effects/>
151.24944 + </layer>
151.24945 + </templateLayer>
151.24946 + </canvas>
151.24947 + </state>
151.24948 + <state stateKeys="Enabled">
151.24949 + <style>
151.24950 + <textForeground/>
151.24951 + <textBackground/>
151.24952 + <background/>
151.24953 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.24954 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.24955 + <uiproperties/>
151.24956 + </style>
151.24957 + <canvas>
151.24958 + <size width="122" height="24"/>
151.24959 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.24960 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.24961 + <layer name="Layer 2">
151.24962 + <opacity>1.0</opacity>
151.24963 + <fillOpacity>1.0</fillOpacity>
151.24964 + <blendingMode>NORMAL</blendingMode>
151.24965 + <locked>false</locked>
151.24966 + <visible>true</visible>
151.24967 + <shapes>
151.24968 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
151.24969 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24970 + <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
151.24971 + </rectangle>
151.24972 + </shapes>
151.24973 + <effects/>
151.24974 + </layer>
151.24975 + <templateLayer fileName="11399201d79.png">
151.24976 + <layer name="Template" type="template">
151.24977 + <opacity>1.0</opacity>
151.24978 + <fillOpacity>1.0</fillOpacity>
151.24979 + <blendingMode>NORMAL</blendingMode>
151.24980 + <locked>false</locked>
151.24981 + <visible>false</visible>
151.24982 + <shapes/>
151.24983 + <effects/>
151.24984 + </layer>
151.24985 + </templateLayer>
151.24986 + </canvas>
151.24987 + </state>
151.24988 + <state stateKeys="Selected">
151.24989 + <style>
151.24990 + <textForeground>
151.24991 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.24992 + </textForeground>
151.24993 + <textBackground/>
151.24994 + <background/>
151.24995 + <inherit-textForeground>false</inherit-textForeground>
151.24996 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.24997 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.24998 + <uiproperties/>
151.24999 + </style>
151.25000 + <canvas>
151.25001 + <size width="122" height="24"/>
151.25002 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.25003 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.25004 + <layer name="Layer 2">
151.25005 + <opacity>1.0</opacity>
151.25006 + <fillOpacity>1.0</fillOpacity>
151.25007 + <blendingMode>NORMAL</blendingMode>
151.25008 + <locked>false</locked>
151.25009 + <visible>true</visible>
151.25010 + <shapes>
151.25011 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
151.25012 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25013 + <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
151.25014 + </rectangle>
151.25015 + </shapes>
151.25016 + <effects/>
151.25017 + </layer>
151.25018 + <templateLayer fileName="11399201d79.png">
151.25019 + <layer name="Template" type="template">
151.25020 + <opacity>1.0</opacity>
151.25021 + <fillOpacity>1.0</fillOpacity>
151.25022 + <blendingMode>NORMAL</blendingMode>
151.25023 + <locked>false</locked>
151.25024 + <visible>false</visible>
151.25025 + <shapes/>
151.25026 + <effects/>
151.25027 + </layer>
151.25028 + </templateLayer>
151.25029 + </canvas>
151.25030 + </state>
151.25031 + </backgroundStates>
151.25032 + <foregroundStates/>
151.25033 + <borderStates>
151.25034 + <state stateKeys="Disabled">
151.25035 + <style>
151.25036 + <textForeground>
151.25037 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25038 + </textForeground>
151.25039 + <textBackground/>
151.25040 + <background/>
151.25041 + <inherit-textForeground>false</inherit-textForeground>
151.25042 + <uiproperties/>
151.25043 + </style>
151.25044 + <canvas>
151.25045 + <size width="122" height="24"/>
151.25046 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.25047 + <stretchingInsets top="5" bottom="3" left="3" right="3"/>
151.25048 + <layer name="Layer 1">
151.25049 + <opacity>1.0</opacity>
151.25050 + <fillOpacity>1.0</fillOpacity>
151.25051 + <blendingMode>NORMAL</blendingMode>
151.25052 + <locked>false</locked>
151.25053 + <visible>true</visible>
151.25054 + <shapes>
151.25055 + <rectangle x1="119.0" x2="120.0" y1="5.0" y2="21.0" rounding="0.0">
151.25056 + <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
151.25057 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25058 + </rectangle>
151.25059 + <rectangle x1="2.0" x2="120.0" y1="22.0" y2="21.0" rounding="0.0">
151.25060 + <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
151.25061 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25062 + </rectangle>
151.25063 + <rectangle x1="2.0" x2="3.0" y1="5.0" y2="21.0" rounding="0.0">
151.25064 + <matte red="208" green="210" blue="215" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07796818" brightnessOffset="0.09803921" alphaOffset="0"/>
151.25065 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25066 + </rectangle>
151.25067 + <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
151.25068 + <gradient cycleMethod="NO_CYCLE">
151.25069 + <stop position="0.0" midpoint="0.5">
151.25070 + <matte red="212" green="214" blue="219" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07856284" brightnessOffset="0.11372548" alphaOffset="0"/>
151.25071 + </stop>
151.25072 + <stop position="1.0" midpoint="0.5">
151.25073 + <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
151.25074 + </stop>
151.25075 + </gradient>
151.25076 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.25077 + </rectangle>
151.25078 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
151.25079 + <gradient cycleMethod="NO_CYCLE">
151.25080 + <stop position="0.0" midpoint="0.5">
151.25081 + <matte red="199" green="202" blue="207" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.07187897" brightnessOffset="0.06666666" alphaOffset="0"/>
151.25082 + </stop>
151.25083 + <stop position="1.0" midpoint="0.5">
151.25084 + <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
151.25085 + </stop>
151.25086 + </gradient>
151.25087 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.25088 + </rectangle>
151.25089 + </shapes>
151.25090 + <effects/>
151.25091 + </layer>
151.25092 + <templateLayer fileName="1139927b26e.png">
151.25093 + <layer name="Template" type="template">
151.25094 + <opacity>1.0</opacity>
151.25095 + <fillOpacity>1.0</fillOpacity>
151.25096 + <blendingMode>NORMAL</blendingMode>
151.25097 + <locked>false</locked>
151.25098 + <visible>false</visible>
151.25099 + <shapes/>
151.25100 + <effects/>
151.25101 + </layer>
151.25102 + </templateLayer>
151.25103 + </canvas>
151.25104 + </state>
151.25105 + <state stateKeys="Focused">
151.25106 + <style>
151.25107 + <textForeground/>
151.25108 + <textBackground/>
151.25109 + <background/>
151.25110 + <uiproperties/>
151.25111 + </style>
151.25112 + <canvas>
151.25113 + <size width="122" height="24"/>
151.25114 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.25115 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.25116 + <layer name="Layer 2">
151.25117 + <opacity>1.0</opacity>
151.25118 + <fillOpacity>1.0</fillOpacity>
151.25119 + <blendingMode>NORMAL</blendingMode>
151.25120 + <locked>false</locked>
151.25121 + <visible>true</visible>
151.25122 + <shapes>
151.25123 + <path>
151.25124 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25125 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25126 + <points>
151.25127 + <point x="2.0" y="2.0" cp1x="2.0" cp1y="2.0" cp2x="2.0" cp2y="2.0"/>
151.25128 + <point x="2.0" y="22.0" cp1x="2.0" cp1y="22.0" cp2x="2.0" cp2y="22.0"/>
151.25129 + <point x="120.0" y="22.0" cp1x="120.0" cp1y="22.0" cp2x="120.0" cp2y="22.0"/>
151.25130 + <point x="120.0" y="2.0" cp1x="120.0" cp1y="2.0" cp2x="120.0" cp2y="2.0"/>
151.25131 + <point x="121.4" y="2.0" cp1x="121.5" cp1y="2.0" cp2x="121.5" cp2y="2.0"/>
151.25132 + <point x="121.4" y="23.4" cp1x="121.4" cp1y="23.4" cp2x="121.4" cp2y="23.4"/>
151.25133 + <point x="0.6" y="23.4" cp1x="0.6" cp1y="23.4" cp2x="0.6" cp2y="23.4"/>
151.25134 + <point x="0.6" y="0.6" cp1x="0.6" cp1y="0.6" cp2x="0.6" cp2y="0.6"/>
151.25135 + <point x="121.4" y="0.6" cp1x="121.4" cp1y="0.6" cp2x="121.4" cp2y="0.6"/>
151.25136 + <point x="121.4" y="2.0" cp1x="121.4" cp1y="2.0" cp2x="121.4" cp2y="2.0"/>
151.25137 + </points>
151.25138 + </path>
151.25139 + <rectangle x1="3.0" x2="119.0" y1="21.0" y2="22.0" rounding="0.0">
151.25140 + <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
151.25141 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25142 + </rectangle>
151.25143 + <rectangle x1="119.0" x2="120.0" y1="5.0" y2="22.0" rounding="0.0">
151.25144 + <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.25145 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25146 + </rectangle>
151.25147 + <rectangle x1="2.0" x2="3.0" y1="5.0" y2="22.0" rounding="0.0">
151.25148 + <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.25149 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25150 + </rectangle>
151.25151 + <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
151.25152 + <gradient cycleMethod="NO_CYCLE">
151.25153 + <stop position="0.1" midpoint="0.5">
151.25154 + <matte red="203" green="203" blue="204" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.6666667" saturationOffset="0.004901961" brightnessOffset="-0.19999999" alphaOffset="0"/>
151.25155 + </stop>
151.25156 + <stop position="0.9" midpoint="0.5">
151.25157 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25158 + </stop>
151.25159 + </gradient>
151.25160 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.25161 + </rectangle>
151.25162 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
151.25163 + <gradient cycleMethod="NO_CYCLE">
151.25164 + <stop position="0.1" midpoint="0.5">
151.25165 + <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
151.25166 + </stop>
151.25167 + <stop position="0.9" midpoint="0.5">
151.25168 + <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
151.25169 + </stop>
151.25170 + </gradient>
151.25171 + <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
151.25172 + </rectangle>
151.25173 + </shapes>
151.25174 + <effects/>
151.25175 + </layer>
151.25176 + <templateLayer fileName="11399201d79.png">
151.25177 + <layer name="Template" type="template">
151.25178 + <opacity>1.0</opacity>
151.25179 + <fillOpacity>1.0</fillOpacity>
151.25180 + <blendingMode>NORMAL</blendingMode>
151.25181 + <locked>false</locked>
151.25182 + <visible>false</visible>
151.25183 + <shapes/>
151.25184 + <effects/>
151.25185 + </layer>
151.25186 + </templateLayer>
151.25187 + </canvas>
151.25188 + </state>
151.25189 + <state stateKeys="Enabled">
151.25190 + <style>
151.25191 + <textForeground/>
151.25192 + <textBackground/>
151.25193 + <background/>
151.25194 + <uiproperties/>
151.25195 + </style>
151.25196 + <canvas>
151.25197 + <size width="122" height="24"/>
151.25198 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.25199 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.25200 + <layer name="Layer 2">
151.25201 + <opacity>1.0</opacity>
151.25202 + <fillOpacity>1.0</fillOpacity>
151.25203 + <blendingMode>NORMAL</blendingMode>
151.25204 + <locked>false</locked>
151.25205 + <visible>true</visible>
151.25206 + <shapes>
151.25207 + <rectangle x1="3.0" x2="119.0" y1="21.0" y2="22.0" rounding="0.0">
151.25208 + <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
151.25209 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25210 + </rectangle>
151.25211 + <rectangle x1="119.0" x2="120.0" y1="5.0" y2="22.0" rounding="0.0">
151.25212 + <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.25213 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25214 + </rectangle>
151.25215 + <rectangle x1="2.0" x2="3.0" y1="5.0" y2="22.0" rounding="0.0">
151.25216 + <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.25217 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25218 + </rectangle>
151.25219 + <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
151.25220 + <gradient cycleMethod="NO_CYCLE">
151.25221 + <stop position="0.1" midpoint="0.5">
151.25222 + <matte red="203" green="203" blue="204" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.6666667" saturationOffset="0.004901961" brightnessOffset="-0.19999999" alphaOffset="0"/>
151.25223 + </stop>
151.25224 + <stop position="0.9" midpoint="0.5">
151.25225 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25226 + </stop>
151.25227 + </gradient>
151.25228 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.25229 + </rectangle>
151.25230 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
151.25231 + <gradient cycleMethod="NO_CYCLE">
151.25232 + <stop position="0.1" midpoint="0.5">
151.25233 + <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
151.25234 + </stop>
151.25235 + <stop position="0.9" midpoint="0.5">
151.25236 + <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
151.25237 + </stop>
151.25238 + </gradient>
151.25239 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.25240 + </rectangle>
151.25241 + </shapes>
151.25242 + <effects/>
151.25243 + </layer>
151.25244 + <templateLayer fileName="11399201d79.png">
151.25245 + <layer name="Template" type="template">
151.25246 + <opacity>1.0</opacity>
151.25247 + <fillOpacity>1.0</fillOpacity>
151.25248 + <blendingMode>NORMAL</blendingMode>
151.25249 + <locked>false</locked>
151.25250 + <visible>false</visible>
151.25251 + <shapes/>
151.25252 + <effects/>
151.25253 + </layer>
151.25254 + </templateLayer>
151.25255 + </canvas>
151.25256 + </state>
151.25257 + </borderStates>
151.25258 + <regions/>
151.25259 + </uiComponent>
151.25260 + <uiComponent opaque="false" type="javax.swing.JTextArea" name="TextArea" ui="TextAreaUI" subregion="false">
151.25261 + <stateTypes>
151.25262 + <stateType key="Enabled"/>
151.25263 + <stateType key="MouseOver"/>
151.25264 + <stateType key="Pressed"/>
151.25265 + <stateType key="Selected"/>
151.25266 + <stateType key="Disabled"/>
151.25267 + <stateType key="Focused"/>
151.25268 + <stateType key="NotInScrollPane">
151.25269 + <codeSnippet><![CDATA[
151.25270 + return !(c.getParent() instanceof javax.swing.JViewport);]]></codeSnippet>
151.25271 + </stateType>
151.25272 + </stateTypes>
151.25273 + <contentMargins top="6" bottom="6" left="6" right="6"/>
151.25274 + <style>
151.25275 + <textForeground/>
151.25276 + <textBackground/>
151.25277 + <background/>
151.25278 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.25279 + <cacheMode>NO_CACHING</cacheMode>
151.25280 + <uiproperties/>
151.25281 + </style>
151.25282 + <backgroundStates>
151.25283 + <state stateKeys="Disabled">
151.25284 + <style>
151.25285 + <textForeground>
151.25286 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25287 + </textForeground>
151.25288 + <textBackground/>
151.25289 + <background/>
151.25290 + <inherit-textForeground>false</inherit-textForeground>
151.25291 + <uiproperties/>
151.25292 + </style>
151.25293 + <canvas>
151.25294 + <size width="122" height="24"/>
151.25295 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.25296 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.25297 + <layer name="Layer 1">
151.25298 + <opacity>1.0</opacity>
151.25299 + <fillOpacity>1.0</fillOpacity>
151.25300 + <blendingMode>NORMAL</blendingMode>
151.25301 + <locked>false</locked>
151.25302 + <visible>true</visible>
151.25303 + <shapes>
151.25304 + <rectangle x1="0.0" x2="122.0" y1="0.0" y2="24.0" rounding="0.0">
151.25305 + <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
151.25306 + <paintPoints x1="0.25" y1="0.0" x2="0.25" y2="0.1500000000000001"/>
151.25307 + </rectangle>
151.25308 + </shapes>
151.25309 + <effects/>
151.25310 + </layer>
151.25311 + </canvas>
151.25312 + </state>
151.25313 + <state stateKeys="Enabled">
151.25314 + <style>
151.25315 + <textForeground/>
151.25316 + <textBackground/>
151.25317 + <background/>
151.25318 + <uiproperties/>
151.25319 + </style>
151.25320 + <canvas>
151.25321 + <size width="122" height="24"/>
151.25322 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.25323 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.25324 + <layer name="Layer 2">
151.25325 + <opacity>1.0</opacity>
151.25326 + <fillOpacity>1.0</fillOpacity>
151.25327 + <blendingMode>NORMAL</blendingMode>
151.25328 + <locked>false</locked>
151.25329 + <visible>true</visible>
151.25330 + <shapes>
151.25331 + <rectangle x1="0.0" x2="122.0" y1="0.0" y2="24.0" rounding="0.0">
151.25332 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25333 + <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
151.25334 + </rectangle>
151.25335 + </shapes>
151.25336 + <effects/>
151.25337 + </layer>
151.25338 + </canvas>
151.25339 + </state>
151.25340 + <state stateKeys="Disabled+NotInScrollPane">
151.25341 + <style>
151.25342 + <textForeground>
151.25343 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25344 + </textForeground>
151.25345 + <textBackground/>
151.25346 + <background/>
151.25347 + <inherit-textForeground>false</inherit-textForeground>
151.25348 + <uiproperties/>
151.25349 + </style>
151.25350 + <canvas>
151.25351 + <size width="122" height="24"/>
151.25352 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.25353 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.25354 + <layer name="Layer 1">
151.25355 + <opacity>1.0</opacity>
151.25356 + <fillOpacity>1.0</fillOpacity>
151.25357 + <blendingMode>NORMAL</blendingMode>
151.25358 + <locked>false</locked>
151.25359 + <visible>true</visible>
151.25360 + <shapes>
151.25361 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
151.25362 + <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
151.25363 + <paintPoints x1="0.25" y1="0.0" x2="0.25" y2="0.1500000000000001"/>
151.25364 + </rectangle>
151.25365 + </shapes>
151.25366 + <effects/>
151.25367 + </layer>
151.25368 + </canvas>
151.25369 + </state>
151.25370 + <state stateKeys="Enabled+NotInScrollPane">
151.25371 + <style>
151.25372 + <textForeground/>
151.25373 + <textBackground/>
151.25374 + <background/>
151.25375 + <uiproperties/>
151.25376 + </style>
151.25377 + <canvas>
151.25378 + <size width="122" height="24"/>
151.25379 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.25380 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.25381 + <layer name="Layer 2">
151.25382 + <opacity>1.0</opacity>
151.25383 + <fillOpacity>1.0</fillOpacity>
151.25384 + <blendingMode>NORMAL</blendingMode>
151.25385 + <locked>false</locked>
151.25386 + <visible>true</visible>
151.25387 + <shapes>
151.25388 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
151.25389 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25390 + <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
151.25391 + </rectangle>
151.25392 + </shapes>
151.25393 + <effects/>
151.25394 + </layer>
151.25395 + </canvas>
151.25396 + </state>
151.25397 + <state stateKeys="Selected">
151.25398 + <style>
151.25399 + <textForeground>
151.25400 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25401 + </textForeground>
151.25402 + <textBackground/>
151.25403 + <background/>
151.25404 + <inherit-textForeground>false</inherit-textForeground>
151.25405 + <uiproperties/>
151.25406 + </style>
151.25407 + <canvas>
151.25408 + <size width="122" height="24"/>
151.25409 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.25410 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.25411 + <layer name="Layer 2">
151.25412 + <opacity>1.0</opacity>
151.25413 + <fillOpacity>1.0</fillOpacity>
151.25414 + <blendingMode>NORMAL</blendingMode>
151.25415 + <locked>false</locked>
151.25416 + <visible>true</visible>
151.25417 + <shapes>
151.25418 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="22.0" rounding="0.0">
151.25419 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25420 + <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
151.25421 + </rectangle>
151.25422 + </shapes>
151.25423 + <effects/>
151.25424 + </layer>
151.25425 + </canvas>
151.25426 + </state>
151.25427 + </backgroundStates>
151.25428 + <foregroundStates/>
151.25429 + <borderStates>
151.25430 + <state stateKeys="Disabled+NotInScrollPane">
151.25431 + <style>
151.25432 + <textForeground>
151.25433 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25434 + </textForeground>
151.25435 + <textBackground/>
151.25436 + <background/>
151.25437 + <inherit-textForeground>false</inherit-textForeground>
151.25438 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.25439 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.25440 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.25441 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.25442 + <uiproperties/>
151.25443 + </style>
151.25444 + <canvas>
151.25445 + <size width="122" height="24"/>
151.25446 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.25447 + <stretchingInsets top="5" bottom="3" left="3" right="3"/>
151.25448 + <layer name="Layer 1">
151.25449 + <opacity>1.0</opacity>
151.25450 + <fillOpacity>1.0</fillOpacity>
151.25451 + <blendingMode>NORMAL</blendingMode>
151.25452 + <locked>false</locked>
151.25453 + <visible>true</visible>
151.25454 + <shapes>
151.25455 + <rectangle x1="119.0" x2="120.0" y1="5.0" y2="21.0" rounding="0.0">
151.25456 + <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
151.25457 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25458 + </rectangle>
151.25459 + <rectangle x1="2.0" x2="120.0" y1="22.0" y2="21.0" rounding="0.0">
151.25460 + <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
151.25461 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25462 + </rectangle>
151.25463 + <rectangle x1="2.0" x2="3.0" y1="5.0" y2="21.0" rounding="0.0">
151.25464 + <matte red="208" green="210" blue="215" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07796818" brightnessOffset="0.09803921" alphaOffset="0"/>
151.25465 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25466 + </rectangle>
151.25467 + <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
151.25468 + <gradient cycleMethod="NO_CYCLE">
151.25469 + <stop position="0.0" midpoint="0.5">
151.25470 + <matte red="212" green="214" blue="219" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07856284" brightnessOffset="0.11372548" alphaOffset="0"/>
151.25471 + </stop>
151.25472 + <stop position="1.0" midpoint="0.5">
151.25473 + <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
151.25474 + </stop>
151.25475 + </gradient>
151.25476 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.25477 + </rectangle>
151.25478 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
151.25479 + <gradient cycleMethod="NO_CYCLE">
151.25480 + <stop position="0.0" midpoint="0.5">
151.25481 + <matte red="199" green="202" blue="207" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.07187897" brightnessOffset="0.06666666" alphaOffset="0"/>
151.25482 + </stop>
151.25483 + <stop position="1.0" midpoint="0.5">
151.25484 + <matte red="210" green="212" blue="217" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.07826825" brightnessOffset="0.10588235" alphaOffset="0"/>
151.25485 + </stop>
151.25486 + </gradient>
151.25487 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.25488 + </rectangle>
151.25489 + </shapes>
151.25490 + <effects/>
151.25491 + </layer>
151.25492 + </canvas>
151.25493 + </state>
151.25494 + <state stateKeys="Focused+NotInScrollPane">
151.25495 + <style>
151.25496 + <textForeground/>
151.25497 + <textBackground/>
151.25498 + <background/>
151.25499 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.25500 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.25501 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.25502 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.25503 + <uiproperties/>
151.25504 + </style>
151.25505 + <canvas>
151.25506 + <size width="122" height="24"/>
151.25507 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.25508 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.25509 + <layer name="Layer 2">
151.25510 + <opacity>1.0</opacity>
151.25511 + <fillOpacity>1.0</fillOpacity>
151.25512 + <blendingMode>NORMAL</blendingMode>
151.25513 + <locked>false</locked>
151.25514 + <visible>true</visible>
151.25515 + <shapes>
151.25516 + <path>
151.25517 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25518 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25519 + <points>
151.25520 + <point x="2.0" y="2.0" cp1x="2.0" cp1y="2.0" cp2x="2.0" cp2y="2.0"/>
151.25521 + <point x="2.0" y="22.0" cp1x="2.0" cp1y="22.0" cp2x="2.0" cp2y="22.0"/>
151.25522 + <point x="120.0" y="22.0" cp1x="120.0" cp1y="22.0" cp2x="120.0" cp2y="22.0"/>
151.25523 + <point x="120.0" y="2.0" cp1x="120.0" cp1y="2.0" cp2x="120.0" cp2y="2.0"/>
151.25524 + <point x="121.4" y="2.0" cp1x="121.5" cp1y="2.0" cp2x="121.5" cp2y="2.0"/>
151.25525 + <point x="121.4" y="23.4" cp1x="121.4" cp1y="23.4" cp2x="121.4" cp2y="23.4"/>
151.25526 + <point x="0.6" y="23.4" cp1x="0.6" cp1y="23.4" cp2x="0.6" cp2y="23.4"/>
151.25527 + <point x="0.6" y="0.6" cp1x="0.6" cp1y="0.6" cp2x="0.6" cp2y="0.6"/>
151.25528 + <point x="121.4" y="0.6" cp1x="121.4" cp1y="0.6" cp2x="121.4" cp2y="0.6"/>
151.25529 + <point x="121.4" y="2.0" cp1x="121.4" cp1y="2.0" cp2x="121.4" cp2y="2.0"/>
151.25530 + </points>
151.25531 + </path>
151.25532 + <rectangle x1="3.0" x2="119.0" y1="21.0" y2="22.0" rounding="0.0">
151.25533 + <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
151.25534 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25535 + </rectangle>
151.25536 + <rectangle x1="119.0" x2="120.0" y1="5.0" y2="22.0" rounding="0.0">
151.25537 + <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.25538 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25539 + </rectangle>
151.25540 + <rectangle x1="2.0" x2="3.0" y1="5.0" y2="22.0" rounding="0.0">
151.25541 + <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.25542 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25543 + </rectangle>
151.25544 + <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
151.25545 + <gradient cycleMethod="NO_CYCLE">
151.25546 + <stop position="0.1" midpoint="0.5">
151.25547 + <matte red="203" green="203" blue="204" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.6666667" saturationOffset="0.004901961" brightnessOffset="-0.19999999" alphaOffset="0"/>
151.25548 + </stop>
151.25549 + <stop position="0.9" midpoint="0.5">
151.25550 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25551 + </stop>
151.25552 + </gradient>
151.25553 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.25554 + </rectangle>
151.25555 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
151.25556 + <gradient cycleMethod="NO_CYCLE">
151.25557 + <stop position="0.1" midpoint="0.5">
151.25558 + <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
151.25559 + </stop>
151.25560 + <stop position="0.9" midpoint="0.5">
151.25561 + <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
151.25562 + </stop>
151.25563 + </gradient>
151.25564 + <paintPoints x1="0.25" y1="0.0" x2="0.25000000000000044" y2="0.16250000000000006"/>
151.25565 + </rectangle>
151.25566 + </shapes>
151.25567 + <effects/>
151.25568 + </layer>
151.25569 + </canvas>
151.25570 + </state>
151.25571 + <state stateKeys="Enabled+NotInScrollPane">
151.25572 + <style>
151.25573 + <textForeground/>
151.25574 + <textBackground/>
151.25575 + <background/>
151.25576 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.25577 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.25578 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.25579 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.25580 + <uiproperties/>
151.25581 + </style>
151.25582 + <canvas>
151.25583 + <size width="122" height="24"/>
151.25584 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.25585 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.25586 + <layer name="Layer 2">
151.25587 + <opacity>1.0</opacity>
151.25588 + <fillOpacity>1.0</fillOpacity>
151.25589 + <blendingMode>NORMAL</blendingMode>
151.25590 + <locked>false</locked>
151.25591 + <visible>true</visible>
151.25592 + <shapes>
151.25593 + <rectangle x1="3.0" x2="119.0" y1="21.0" y2="22.0" rounding="0.0">
151.25594 + <matte red="192" green="192" blue="193" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.105344966" brightnessOffset="0.011764705" alphaOffset="0"/>
151.25595 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25596 + </rectangle>
151.25597 + <rectangle x1="119.0" x2="120.0" y1="5.0" y2="22.0" rounding="0.0">
151.25598 + <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.25599 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25600 + </rectangle>
151.25601 + <rectangle x1="2.0" x2="3.0" y1="5.0" y2="22.0" rounding="0.0">
151.25602 + <matte red="184" green="184" blue="185" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10512091" brightnessOffset="-0.019607842" alphaOffset="0"/>
151.25603 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25604 + </rectangle>
151.25605 + <rectangle x1="3.0" x2="119.0" y1="3.0" y2="5.0" rounding="0.0">
151.25606 + <gradient cycleMethod="NO_CYCLE">
151.25607 + <stop position="0.1" midpoint="0.5">
151.25608 + <matte red="203" green="203" blue="204" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.6666667" saturationOffset="0.004901961" brightnessOffset="-0.19999999" alphaOffset="0"/>
151.25609 + </stop>
151.25610 + <stop position="0.9" midpoint="0.5">
151.25611 + <matte red="255" green="255" blue="255" alpha="255" componentPropertyName="background" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25612 + </stop>
151.25613 + </gradient>
151.25614 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.25615 + </rectangle>
151.25616 + <rectangle x1="2.0" x2="120.0" y1="2.0" y2="5.0" rounding="0.0">
151.25617 + <gradient cycleMethod="NO_CYCLE">
151.25618 + <stop position="0.1" midpoint="0.5">
151.25619 + <matte red="141" green="142" blue="143" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.0965403" brightnessOffset="-0.18431371" alphaOffset="0"/>
151.25620 + </stop>
151.25621 + <stop position="0.9" midpoint="0.5">
151.25622 + <matte red="176" green="176" blue="177" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.1048766" brightnessOffset="-0.05098039" alphaOffset="0"/>
151.25623 + </stop>
151.25624 + </gradient>
151.25625 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.25626 + </rectangle>
151.25627 + </shapes>
151.25628 + <effects/>
151.25629 + </layer>
151.25630 + </canvas>
151.25631 + </state>
151.25632 + </borderStates>
151.25633 + <regions/>
151.25634 + </uiComponent>
151.25635 + <uiComponent opaque="true" type="javax.swing.JTextPane" name="TextPane" ui="TextPaneUI" subregion="false">
151.25636 + <stateTypes/>
151.25637 + <contentMargins top="4" bottom="4" left="6" right="6"/>
151.25638 + <style>
151.25639 + <textForeground/>
151.25640 + <textBackground/>
151.25641 + <background>
151.25642 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25643 + </background>
151.25644 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.25645 + <cacheMode>NO_CACHING</cacheMode>
151.25646 + <uiproperties/>
151.25647 + </style>
151.25648 + <backgroundStates>
151.25649 + <state stateKeys="Disabled">
151.25650 + <style>
151.25651 + <textForeground>
151.25652 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25653 + </textForeground>
151.25654 + <textBackground/>
151.25655 + <background/>
151.25656 + <inherit-textForeground>false</inherit-textForeground>
151.25657 + <uiproperties/>
151.25658 + </style>
151.25659 + <canvas>
151.25660 + <size width="100" height="30"/>
151.25661 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.25662 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.25663 + <layer name="Layer 2">
151.25664 + <opacity>1.0</opacity>
151.25665 + <fillOpacity>1.0</fillOpacity>
151.25666 + <blendingMode>NORMAL</blendingMode>
151.25667 + <locked>false</locked>
151.25668 + <visible>true</visible>
151.25669 + <shapes>
151.25670 + <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
151.25671 + <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
151.25672 + <paintPoints x1="0.25" y1="0.0" x2="0.2" y2="0.1"/>
151.25673 + </rectangle>
151.25674 + </shapes>
151.25675 + <effects/>
151.25676 + </layer>
151.25677 + </canvas>
151.25678 + </state>
151.25679 + <state stateKeys="Enabled">
151.25680 + <style>
151.25681 + <textForeground/>
151.25682 + <textBackground/>
151.25683 + <background/>
151.25684 + <uiproperties/>
151.25685 + </style>
151.25686 + <canvas>
151.25687 + <size width="100" height="30"/>
151.25688 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.25689 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.25690 + <layer name="Layer 2">
151.25691 + <opacity>1.0</opacity>
151.25692 + <fillOpacity>1.0</fillOpacity>
151.25693 + <blendingMode>NORMAL</blendingMode>
151.25694 + <locked>false</locked>
151.25695 + <visible>true</visible>
151.25696 + <shapes>
151.25697 + <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
151.25698 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25699 + <paintPoints x1="0.25" y1="0.0" x2="0.2" y2="0.1"/>
151.25700 + </rectangle>
151.25701 + </shapes>
151.25702 + <effects/>
151.25703 + </layer>
151.25704 + </canvas>
151.25705 + </state>
151.25706 + <state stateKeys="Selected">
151.25707 + <style>
151.25708 + <textForeground>
151.25709 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25710 + </textForeground>
151.25711 + <textBackground/>
151.25712 + <background/>
151.25713 + <inherit-textForeground>false</inherit-textForeground>
151.25714 + <uiproperties/>
151.25715 + </style>
151.25716 + <canvas>
151.25717 + <size width="100" height="30"/>
151.25718 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.25719 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.25720 + <layer name="Layer 1">
151.25721 + <opacity>1.0</opacity>
151.25722 + <fillOpacity>1.0</fillOpacity>
151.25723 + <blendingMode>NORMAL</blendingMode>
151.25724 + <locked>false</locked>
151.25725 + <visible>true</visible>
151.25726 + <shapes>
151.25727 + <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
151.25728 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25729 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25730 + </rectangle>
151.25731 + </shapes>
151.25732 + <effects/>
151.25733 + </layer>
151.25734 + </canvas>
151.25735 + </state>
151.25736 + </backgroundStates>
151.25737 + <foregroundStates/>
151.25738 + <borderStates/>
151.25739 + <regions/>
151.25740 + </uiComponent>
151.25741 + <uiComponent opaque="true" type="javax.swing.JEditorPane" name="EditorPane" ui="EditorPaneUI" subregion="false">
151.25742 + <stateTypes/>
151.25743 + <contentMargins top="4" bottom="4" left="6" right="6"/>
151.25744 + <style>
151.25745 + <textForeground/>
151.25746 + <textBackground/>
151.25747 + <background>
151.25748 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25749 + </background>
151.25750 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.25751 + <cacheMode>NO_CACHING</cacheMode>
151.25752 + <uiproperties/>
151.25753 + </style>
151.25754 + <backgroundStates>
151.25755 + <state stateKeys="Disabled">
151.25756 + <style>
151.25757 + <textForeground>
151.25758 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25759 + </textForeground>
151.25760 + <textBackground/>
151.25761 + <background/>
151.25762 + <inherit-textForeground>false</inherit-textForeground>
151.25763 + <uiproperties/>
151.25764 + </style>
151.25765 + <canvas>
151.25766 + <size width="100" height="30"/>
151.25767 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.25768 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.25769 + <layer name="Layer 2">
151.25770 + <opacity>1.0</opacity>
151.25771 + <fillOpacity>1.0</fillOpacity>
151.25772 + <blendingMode>NORMAL</blendingMode>
151.25773 + <locked>false</locked>
151.25774 + <visible>true</visible>
151.25775 + <shapes>
151.25776 + <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
151.25777 + <matte red="222" green="225" blue="229" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.015872955" saturationOffset="-0.07995863" brightnessOffset="0.15294117" alphaOffset="0"/>
151.25778 + <paintPoints x1="0.25" y1="0.0" x2="0.2" y2="0.1"/>
151.25779 + </rectangle>
151.25780 + </shapes>
151.25781 + <effects/>
151.25782 + </layer>
151.25783 + </canvas>
151.25784 + </state>
151.25785 + <state stateKeys="Enabled">
151.25786 + <style>
151.25787 + <textForeground/>
151.25788 + <textBackground/>
151.25789 + <background/>
151.25790 + <uiproperties/>
151.25791 + </style>
151.25792 + <canvas>
151.25793 + <size width="100" height="30"/>
151.25794 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.25795 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.25796 + <layer name="Layer 2">
151.25797 + <opacity>1.0</opacity>
151.25798 + <fillOpacity>1.0</fillOpacity>
151.25799 + <blendingMode>NORMAL</blendingMode>
151.25800 + <locked>false</locked>
151.25801 + <visible>true</visible>
151.25802 + <shapes>
151.25803 + <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
151.25804 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25805 + <paintPoints x1="0.25" y1="0.0" x2="0.2" y2="0.1"/>
151.25806 + </rectangle>
151.25807 + </shapes>
151.25808 + <effects/>
151.25809 + </layer>
151.25810 + </canvas>
151.25811 + </state>
151.25812 + <state stateKeys="Selected">
151.25813 + <style>
151.25814 + <textForeground>
151.25815 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25816 + </textForeground>
151.25817 + <textBackground/>
151.25818 + <background/>
151.25819 + <inherit-textForeground>false</inherit-textForeground>
151.25820 + <uiproperties/>
151.25821 + </style>
151.25822 + <canvas>
151.25823 + <size width="100" height="30"/>
151.25824 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.25825 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.25826 + <layer name="Layer 1">
151.25827 + <opacity>1.0</opacity>
151.25828 + <fillOpacity>1.0</fillOpacity>
151.25829 + <blendingMode>NORMAL</blendingMode>
151.25830 + <locked>false</locked>
151.25831 + <visible>true</visible>
151.25832 + <shapes>
151.25833 + <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
151.25834 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25835 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25836 + </rectangle>
151.25837 + </shapes>
151.25838 + <effects/>
151.25839 + </layer>
151.25840 + </canvas>
151.25841 + </state>
151.25842 + </backgroundStates>
151.25843 + <foregroundStates/>
151.25844 + <borderStates/>
151.25845 + <regions/>
151.25846 + </uiComponent>
151.25847 + <uiComponent opaque="true" type="javax.swing.JToolBar" name="ToolBar" ui="ToolBarUI" subregion="false">
151.25848 + <stateTypes>
151.25849 + <stateType key="North">
151.25850 + <codeSnippet><![CDATA[
151.25851 + JToolBar toolbar = (JToolBar)c;
151.25852 + return NimbusLookAndFeel.resolveToolbarConstraint(toolbar) == BorderLayout.NORTH;
151.25853 + ]]></codeSnippet>
151.25854 + </stateType>
151.25855 + <stateType key="East">
151.25856 + <codeSnippet><![CDATA[
151.25857 + JToolBar toolbar = (JToolBar)c;
151.25858 + return NimbusLookAndFeel.resolveToolbarConstraint(toolbar) == BorderLayout.EAST;
151.25859 + ]]></codeSnippet>
151.25860 + </stateType>
151.25861 + <stateType key="West">
151.25862 + <codeSnippet><![CDATA[
151.25863 + JToolBar toolbar = (JToolBar)c;
151.25864 + return NimbusLookAndFeel.resolveToolbarConstraint(toolbar) == BorderLayout.WEST;
151.25865 + ]]></codeSnippet>
151.25866 + </stateType>
151.25867 + <stateType key="South">
151.25868 + <codeSnippet><![CDATA[
151.25869 + JToolBar toolbar = (JToolBar)c;
151.25870 + return NimbusLookAndFeel.resolveToolbarConstraint(toolbar) == BorderLayout.SOUTH;
151.25871 + ]]></codeSnippet>
151.25872 + </stateType>
151.25873 + </stateTypes>
151.25874 + <contentMargins top="2" bottom="2" left="2" right="2"/>
151.25875 + <style>
151.25876 + <textForeground/>
151.25877 + <textBackground/>
151.25878 + <background/>
151.25879 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.25880 + <cacheMode>NO_CACHING</cacheMode>
151.25881 + <uiproperties/>
151.25882 + </style>
151.25883 + <backgroundStates/>
151.25884 + <foregroundStates/>
151.25885 + <borderStates>
151.25886 + <state stateKeys="North">
151.25887 + <style>
151.25888 + <textForeground/>
151.25889 + <textBackground/>
151.25890 + <background/>
151.25891 + <uiproperties/>
151.25892 + </style>
151.25893 + <canvas>
151.25894 + <size width="30" height="30"/>
151.25895 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.25896 + <stretchingInsets top="0" bottom="1" left="0" right="0"/>
151.25897 + <layer name="Layer 1">
151.25898 + <opacity>1.0</opacity>
151.25899 + <fillOpacity>1.0</fillOpacity>
151.25900 + <blendingMode>NORMAL</blendingMode>
151.25901 + <locked>false</locked>
151.25902 + <visible>true</visible>
151.25903 + <shapes>
151.25904 + <rectangle x1="0.0" x2="30.0" y1="29.0" y2="30.0" rounding="0.0">
151.25905 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25906 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25907 + </rectangle>
151.25908 + </shapes>
151.25909 + <effects/>
151.25910 + </layer>
151.25911 + </canvas>
151.25912 + </state>
151.25913 + <state stateKeys="South">
151.25914 + <style>
151.25915 + <textForeground/>
151.25916 + <textBackground/>
151.25917 + <background/>
151.25918 + <uiproperties/>
151.25919 + </style>
151.25920 + <canvas>
151.25921 + <size width="30" height="30"/>
151.25922 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.25923 + <stretchingInsets top="1" bottom="0" left="0" right="0"/>
151.25924 + <layer name="Layer 1">
151.25925 + <opacity>1.0</opacity>
151.25926 + <fillOpacity>1.0</fillOpacity>
151.25927 + <blendingMode>NORMAL</blendingMode>
151.25928 + <locked>false</locked>
151.25929 + <visible>true</visible>
151.25930 + <shapes>
151.25931 + <rectangle x1="0.0" x2="30.0" y1="0.0" y2="1.0" rounding="0.0">
151.25932 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25933 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25934 + </rectangle>
151.25935 + </shapes>
151.25936 + <effects/>
151.25937 + </layer>
151.25938 + </canvas>
151.25939 + </state>
151.25940 + <state stateKeys="East">
151.25941 + <style>
151.25942 + <textForeground/>
151.25943 + <textBackground/>
151.25944 + <background/>
151.25945 + <uiproperties/>
151.25946 + </style>
151.25947 + <canvas>
151.25948 + <size width="30" height="30"/>
151.25949 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.25950 + <stretchingInsets top="1" bottom="0" left="0" right="0"/>
151.25951 + <layer name="Layer 1">
151.25952 + <opacity>1.0</opacity>
151.25953 + <fillOpacity>1.0</fillOpacity>
151.25954 + <blendingMode>NORMAL</blendingMode>
151.25955 + <locked>false</locked>
151.25956 + <visible>true</visible>
151.25957 + <shapes>
151.25958 + <rectangle x1="0.0" x2="30.0" y1="0.0" y2="1.0" rounding="0.0">
151.25959 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25960 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25961 + </rectangle>
151.25962 + </shapes>
151.25963 + <effects/>
151.25964 + </layer>
151.25965 + </canvas>
151.25966 + </state>
151.25967 + <state stateKeys="West">
151.25968 + <style>
151.25969 + <textForeground/>
151.25970 + <textBackground/>
151.25971 + <background/>
151.25972 + <uiproperties/>
151.25973 + </style>
151.25974 + <canvas>
151.25975 + <size width="30" height="30"/>
151.25976 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.25977 + <stretchingInsets top="0" bottom="1" left="0" right="0"/>
151.25978 + <layer name="Layer 1">
151.25979 + <opacity>1.0</opacity>
151.25980 + <fillOpacity>1.0</fillOpacity>
151.25981 + <blendingMode>NORMAL</blendingMode>
151.25982 + <locked>false</locked>
151.25983 + <visible>true</visible>
151.25984 + <shapes>
151.25985 + <rectangle x1="0.0" x2="30.0" y1="29.0" y2="30.0" rounding="0.0">
151.25986 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.25987 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.25988 + </rectangle>
151.25989 + </shapes>
151.25990 + <effects/>
151.25991 + </layer>
151.25992 + </canvas>
151.25993 + </state>
151.25994 + </borderStates>
151.25995 + <regions>
151.25996 + <uiIconRegion name="HandleIcon" subregion="true" key="handleIcon">
151.25997 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.25998 + <style>
151.25999 + <textForeground/>
151.26000 + <textBackground/>
151.26001 + <background/>
151.26002 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.26003 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.26004 + <maxHozCachedImgScaling>2.0</maxHozCachedImgScaling>
151.26005 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.26006 + <uiproperties/>
151.26007 + </style>
151.26008 + <backgroundStates>
151.26009 + <state stateKeys="Enabled">
151.26010 + <style>
151.26011 + <textForeground/>
151.26012 + <textBackground/>
151.26013 + <background/>
151.26014 + <uiproperties/>
151.26015 + </style>
151.26016 + <canvas>
151.26017 + <size width="11" height="38"/>
151.26018 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.26019 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.26020 + <layer name="Button">
151.26021 + <opacity>1.0</opacity>
151.26022 + <fillOpacity>1.0</fillOpacity>
151.26023 + <blendingMode>NORMAL</blendingMode>
151.26024 + <locked>false</locked>
151.26025 + <visible>true</visible>
151.26026 + <shapes>
151.26027 + <path>
151.26028 + <matte red="159" green="164" blue="172" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.03494492" brightnessOffset="-0.07058823" alphaOffset="0"/>
151.26029 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.26030 + <points>
151.26031 + <point x="0.0" y="38.0" cp1x="0.0" cp1y="38.0" cp2x="0.0" cp2y="38.0"/>
151.26032 + <point x="0.0" y="36.0" cp1x="0.0" cp1y="36.0" cp2x="0.0" cp2y="36.0"/>
151.26033 + <point x="2.0" y="38.0" cp1x="2.0" cp1y="38.0" cp2x="2.0" cp2y="38.0"/>
151.26034 + </points>
151.26035 + </path>
151.26036 + <path>
151.26037 + <matte red="159" green="164" blue="172" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.03494492" brightnessOffset="-0.07058823" alphaOffset="0"/>
151.26038 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.26039 + <points>
151.26040 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.26041 + <point x="0.0" y="2.0" cp1x="0.0" cp1y="2.0" cp2x="0.0" cp2y="2.0"/>
151.26042 + <point x="2.0" y="0.0" cp1x="2.0" cp1y="0.0" cp2x="2.0" cp2y="0.0"/>
151.26043 + </points>
151.26044 + </path>
151.26045 + <rectangle x1="10.0" x2="11.0" y1="0.0" y2="38.0" rounding="0.0">
151.26046 + <matte red="177" green="181" blue="189" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="-0.029675633" brightnessOffset="0.109803915" alphaOffset="0"/>
151.26047 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.26048 + </rectangle>
151.26049 + <rectangle x1="0.0" x2="10.0" y1="0.0" y2="38.0" rounding="0.0">
151.26050 + <gradient cycleMethod="NO_CYCLE">
151.26051 + <stop position="0.0" midpoint="0.5">
151.26052 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.26053 + </stop>
151.26054 + <stop position="1.0" midpoint="0.5">
151.26055 + <matte red="211" green="214" blue="219" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.07399663" brightnessOffset="0.11372548" alphaOffset="0"/>
151.26056 + </stop>
151.26057 + </gradient>
151.26058 + <paintPoints x1="0.0" y1="0.5" x2="1.0" y2="0.5"/>
151.26059 + </rectangle>
151.26060 + </shapes>
151.26061 + <effects/>
151.26062 + </layer>
151.26063 + <templateLayer fileName="114286d62c0.png">
151.26064 + <layer name="Template" type="template">
151.26065 + <opacity>1.0</opacity>
151.26066 + <fillOpacity>1.0</fillOpacity>
151.26067 + <blendingMode>NORMAL</blendingMode>
151.26068 + <locked>false</locked>
151.26069 + <visible>true</visible>
151.26070 + <shapes/>
151.26071 + <effects/>
151.26072 + </layer>
151.26073 + </templateLayer>
151.26074 + </canvas>
151.26075 + </state>
151.26076 + </backgroundStates>
151.26077 + <foregroundStates/>
151.26078 + <borderStates/>
151.26079 + <regions/>
151.26080 + </uiIconRegion>
151.26081 + <uiComponent opaque="false" type="javax.swing.JButton" name="Button" ui="ButtonUI" subregion="true">
151.26082 + <stateTypes/>
151.26083 + <contentMargins top="4" bottom="4" left="4" right="4"/>
151.26084 + <style>
151.26085 + <textForeground/>
151.26086 + <textBackground/>
151.26087 + <background/>
151.26088 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.26089 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.26090 + <maxHozCachedImgScaling>2.0</maxHozCachedImgScaling>
151.26091 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.26092 + <uiproperties/>
151.26093 + </style>
151.26094 + <backgroundStates>
151.26095 + <state stateKeys="Enabled">
151.26096 + <style>
151.26097 + <textForeground/>
151.26098 + <textBackground/>
151.26099 + <background/>
151.26100 + <uiproperties/>
151.26101 + </style>
151.26102 + <canvas>
151.26103 + <size width="104" height="33"/>
151.26104 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.26105 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.26106 + <layer name="Button Layer">
151.26107 + <opacity>1.0</opacity>
151.26108 + <fillOpacity>1.0</fillOpacity>
151.26109 + <blendingMode>NORMAL</blendingMode>
151.26110 + <locked>false</locked>
151.26111 + <visible>true</visible>
151.26112 + <shapes/>
151.26113 + <effects/>
151.26114 + </layer>
151.26115 + </canvas>
151.26116 + </state>
151.26117 + <state stateKeys="Focused">
151.26118 + <style>
151.26119 + <textForeground/>
151.26120 + <textBackground/>
151.26121 + <background/>
151.26122 + <uiproperties/>
151.26123 + </style>
151.26124 + <canvas>
151.26125 + <size width="104" height="33"/>
151.26126 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.26127 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.26128 + <layer name="Layer 3">
151.26129 + <opacity>1.0</opacity>
151.26130 + <fillOpacity>1.0</fillOpacity>
151.26131 + <blendingMode>NORMAL</blendingMode>
151.26132 + <locked>false</locked>
151.26133 + <visible>true</visible>
151.26134 + <shapes>
151.26135 + <path>
151.26136 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.26137 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.26138 + <points>
151.26139 + <point x="43.85714285714286" y="0.6" cp1x="43.85714285714286" cp1y="0.6" cp2x="43.85714285714286" cp2y="0.6"/>
151.26140 + <point x="98.0" y="0.6" cp1x="98.0" cp1y="0.6" cp2x="101.0" cp2y="0.6"/>
151.26141 + <point x="103.42857142857142" y="6.0" cp1x="103.42857142857142" cp1y="3.0" cp2x="103.42857142857142" cp2y="6.0"/>
151.26142 + <point x="103.49999999999999" y="27.0" cp1x="103.49999999999999" cp1y="27.0" cp2x="103.49999999999999" cp2y="30.0"/>
151.26143 + <point x="98.0" y="32.35714285714285" cp1x="101.0" cp1y="32.35714285714285" cp2x="98.0" cp2y="32.35714285714285"/>
151.26144 + <point x="6.0" y="32.35714285714285" cp1x="6.0" cp1y="32.35714285714285" cp2x="3.0" cp2y="32.35714285714285"/>
151.26145 + <point x="0.6" y="27.0" cp1x="0.6" cp1y="30.0" cp2x="0.6" cp2y="27.0"/>
151.26146 + <point x="0.6" y="6.071428571428572" cp1x="0.6" cp1y="6.071428571428572" cp2x="0.6" cp2y="3.071428571428571"/>
151.26147 + <point x="6.0" y="0.6" cp1x="3.0" cp1y="0.6" cp2x="6.0" cp2y="0.6"/>
151.26148 + <point x="44.0" y="0.6" cp1x="44.0" cp1y="0.6" cp2x="44.0" cp2y="0.6"/>
151.26149 + <point x="44.0" y="2.4285714285714297" cp1x="44.0" cp1y="2.4285714285714297" cp2x="44.0" cp2y="2.4285714285714297"/>
151.26150 + <point x="6.0" y="2.4285714285714297" cp1x="6.0" cp1y="2.4285714285714297" cp2x="4.071428571428573" cp2y="2.4285714285714297"/>
151.26151 + <point x="2.357142857142858" y="5.928571428571429" cp1x="2.312863373522748" cp1y="3.499353333829805" cp2x="2.357142857142858" cp2y="5.928571428571429"/>
151.26152 + <point x="2.357142857142858" y="27.0" cp1x="2.357142857142858" cp1y="27.0" cp2x="2.357142857142858" cp2y="29.214285714285698"/>
151.26153 + <point x="6.0" y="30.571428571428562" cp1x="4.214285714285715" cp1y="30.571428571428562" cp2x="6.0" cp2y="30.571428571428562"/>
151.26154 + <point x="98.0" y="30.571428571428562" cp1x="98.0" cp1y="30.571428571428562" cp2x="100.0714285714286" cp2y="30.571428571428562"/>
151.26155 + <point x="101.50000000000001" y="27.0" cp1x="101.50000000000001" cp1y="29.214285714285705" cp2x="101.50000000000001" cp2y="27.0"/>
151.26156 + <point x="101.57142857142858" y="6.0" cp1x="101.57142857142858" cp1y="6.0" cp2x="101.57142857142858" cp2y="3.8571428571428594"/>
151.26157 + <point x="98.07142857142857" y="2.357142857142858" cp1x="100.21428571428574" cp1y="2.357142857142858" cp2x="98.07142857142857" cp2y="2.357142857142858"/>
151.26158 + <point x="44.0" y="2.4285714285714297" cp1x="44.0" cp1y="2.4285714285714297" cp2x="44.0" cp2y="2.4285714285714297"/>
151.26159 + </points>
151.26160 + </path>
151.26161 + </shapes>
151.26162 + <effects/>
151.26163 + </layer>
151.26164 + </canvas>
151.26165 + </state>
151.26166 + <state stateKeys="MouseOver">
151.26167 + <style>
151.26168 + <textForeground/>
151.26169 + <textBackground/>
151.26170 + <background/>
151.26171 + <uiproperties/>
151.26172 + </style>
151.26173 + <canvas>
151.26174 + <size width="104" height="33"/>
151.26175 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.26176 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.26177 + <layer name="Button Layer">
151.26178 + <opacity>1.0</opacity>
151.26179 + <fillOpacity>1.0</fillOpacity>
151.26180 + <blendingMode>NORMAL</blendingMode>
151.26181 + <locked>false</locked>
151.26182 + <visible>true</visible>
151.26183 + <shapes>
151.26184 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="9.0">
151.26185 + <gradient cycleMethod="NO_CYCLE">
151.26186 + <stop position="0.0" midpoint="0.5">
151.26187 + <matte red="253" green="253" blue="254" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10658931" brightnessOffset="0.25098038" alphaOffset="0"/>
151.26188 + </stop>
151.26189 + <stop position="0.06" midpoint="0.5">
151.26190 + <matte red="247" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.098526314" brightnessOffset="0.2352941" alphaOffset="0"/>
151.26191 + </stop>
151.26192 + <stop position="0.6" midpoint="0.5">
151.26193 + <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.26194 + </stop>
151.26195 + <stop position="0.7" midpoint="0.5">
151.26196 + <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.26197 + </stop>
151.26198 + <stop position="0.95" midpoint="0.5">
151.26199 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.26200 + </stop>
151.26201 + <stop position="1.0" midpoint="0.5">
151.26202 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.26203 + </stop>
151.26204 + </gradient>
151.26205 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.26206 + </rectangle>
151.26207 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="12.0">
151.26208 + <gradient cycleMethod="NO_CYCLE">
151.26209 + <stop position="0.09" midpoint="0.5">
151.26210 + <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
151.26211 + </stop>
151.26212 + <stop position="0.95" midpoint="0.5">
151.26213 + <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.11169591" brightnessOffset="-0.53333336" alphaOffset="0"/>
151.26214 + </stop>
151.26215 + </gradient>
151.26216 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.26217 + </rectangle>
151.26218 + </shapes>
151.26219 + <effects/>
151.26220 + </layer>
151.26221 + <layer name="Shadow Layer">
151.26222 + <opacity>1.0</opacity>
151.26223 + <fillOpacity>1.0</fillOpacity>
151.26224 + <blendingMode>NORMAL</blendingMode>
151.26225 + <locked>false</locked>
151.26226 + <visible>true</visible>
151.26227 + <shapes>
151.26228 + <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
151.26229 + <matte red="92" green="94" blue="96" alpha="102" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-153"/>
151.26230 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.26231 + </rectangle>
151.26232 + </shapes>
151.26233 + <effects/>
151.26234 + </layer>
151.26235 + </canvas>
151.26236 + </state>
151.26237 + <state stateKeys="MouseOver+Focused">
151.26238 + <style>
151.26239 + <textForeground/>
151.26240 + <textBackground/>
151.26241 + <background/>
151.26242 + <uiproperties/>
151.26243 + </style>
151.26244 + <canvas>
151.26245 + <size width="104" height="33"/>
151.26246 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.26247 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.26248 + <layer name="Button Layer">
151.26249 + <opacity>1.0</opacity>
151.26250 + <fillOpacity>1.0</fillOpacity>
151.26251 + <blendingMode>NORMAL</blendingMode>
151.26252 + <locked>false</locked>
151.26253 + <visible>true</visible>
151.26254 + <shapes>
151.26255 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="9.0">
151.26256 + <gradient cycleMethod="NO_CYCLE">
151.26257 + <stop position="0.0" midpoint="0.5">
151.26258 + <matte red="253" green="253" blue="254" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10658931" brightnessOffset="0.25098038" alphaOffset="0"/>
151.26259 + </stop>
151.26260 + <stop position="0.06" midpoint="0.5">
151.26261 + <matte red="247" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.098526314" brightnessOffset="0.2352941" alphaOffset="0"/>
151.26262 + </stop>
151.26263 + <stop position="0.6" midpoint="0.5">
151.26264 + <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.26265 + </stop>
151.26266 + <stop position="0.7" midpoint="0.5">
151.26267 + <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.26268 + </stop>
151.26269 + <stop position="0.95" midpoint="0.5">
151.26270 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.26271 + </stop>
151.26272 + <stop position="1.0" midpoint="0.5">
151.26273 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.26274 + </stop>
151.26275 + </gradient>
151.26276 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.26277 + </rectangle>
151.26278 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="12.0">
151.26279 + <gradient cycleMethod="NO_CYCLE">
151.26280 + <stop position="0.09" midpoint="0.5">
151.26281 + <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
151.26282 + </stop>
151.26283 + <stop position="0.95" midpoint="0.5">
151.26284 + <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.11169591" brightnessOffset="-0.53333336" alphaOffset="0"/>
151.26285 + </stop>
151.26286 + </gradient>
151.26287 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.26288 + </rectangle>
151.26289 + <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="13.0">
151.26290 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.26291 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.26292 + </rectangle>
151.26293 + </shapes>
151.26294 + <effects/>
151.26295 + </layer>
151.26296 + </canvas>
151.26297 + </state>
151.26298 + <state stateKeys="Pressed">
151.26299 + <style>
151.26300 + <textForeground/>
151.26301 + <textBackground/>
151.26302 + <background/>
151.26303 + <uiproperties/>
151.26304 + </style>
151.26305 + <canvas>
151.26306 + <size width="104" height="33"/>
151.26307 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.26308 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.26309 + <layer name="Button Layer">
151.26310 + <opacity>1.0</opacity>
151.26311 + <fillOpacity>1.0</fillOpacity>
151.26312 + <blendingMode>NORMAL</blendingMode>
151.26313 + <locked>false</locked>
151.26314 + <visible>true</visible>
151.26315 + <shapes>
151.26316 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="9.0">
151.26317 + <gradient cycleMethod="NO_CYCLE">
151.26318 + <stop position="0.0" midpoint="0.5">
151.26319 + <matte red="205" green="209" blue="216" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.05960039" brightnessOffset="0.10196078" alphaOffset="0"/>
151.26320 + </stop>
151.26321 + <stop position="0.06" midpoint="0.5">
151.26322 + <matte red="194" green="199" blue="207" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.04772438" brightnessOffset="0.06666666" alphaOffset="0"/>
151.26323 + </stop>
151.26324 + <stop position="0.6" midpoint="0.5">
151.26325 + <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.26326 + </stop>
151.26327 + <stop position="0.7" midpoint="0.5">
151.26328 + <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.26329 + </stop>
151.26330 + <stop position="0.95" midpoint="0.5">
151.26331 + <matte red="204" green="211" blue="224" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0212406" brightnessOffset="0.13333333" alphaOffset="0"/>
151.26332 + </stop>
151.26333 + <stop position="1.0" midpoint="0.5">
151.26334 + <matte red="231" green="237" blue="251" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.030845039" brightnessOffset="0.23921567" alphaOffset="0"/>
151.26335 + </stop>
151.26336 + </gradient>
151.26337 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.26338 + </rectangle>
151.26339 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="12.0">
151.26340 + <gradient cycleMethod="NO_CYCLE">
151.26341 + <stop position="0.09" midpoint="0.5">
151.26342 + <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
151.26343 + </stop>
151.26344 + <stop position="0.95" midpoint="0.5">
151.26345 + <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.11169591" brightnessOffset="-0.53333336" alphaOffset="0"/>
151.26346 + </stop>
151.26347 + </gradient>
151.26348 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.26349 + </rectangle>
151.26350 + </shapes>
151.26351 + <effects/>
151.26352 + </layer>
151.26353 + <layer name="Shadow Layer">
151.26354 + <opacity>1.0</opacity>
151.26355 + <fillOpacity>1.0</fillOpacity>
151.26356 + <blendingMode>NORMAL</blendingMode>
151.26357 + <locked>false</locked>
151.26358 + <visible>true</visible>
151.26359 + <shapes>
151.26360 + <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
151.26361 + <matte red="92" green="94" blue="96" alpha="102" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-153"/>
151.26362 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.26363 + </rectangle>
151.26364 + </shapes>
151.26365 + <effects/>
151.26366 + </layer>
151.26367 + </canvas>
151.26368 + </state>
151.26369 + <state stateKeys="Pressed+Focused">
151.26370 + <style>
151.26371 + <textForeground/>
151.26372 + <textBackground/>
151.26373 + <background/>
151.26374 + <uiproperties/>
151.26375 + </style>
151.26376 + <canvas>
151.26377 + <size width="104" height="33"/>
151.26378 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.26379 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.26380 + <layer name="Button Layer">
151.26381 + <opacity>1.0</opacity>
151.26382 + <fillOpacity>1.0</fillOpacity>
151.26383 + <blendingMode>NORMAL</blendingMode>
151.26384 + <locked>false</locked>
151.26385 + <visible>true</visible>
151.26386 + <shapes>
151.26387 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="9.0">
151.26388 + <gradient cycleMethod="NO_CYCLE">
151.26389 + <stop position="0.0" midpoint="0.5">
151.26390 + <matte red="205" green="209" blue="216" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.05960039" brightnessOffset="0.10196078" alphaOffset="0"/>
151.26391 + </stop>
151.26392 + <stop position="0.06" midpoint="0.5">
151.26393 + <matte red="194" green="199" blue="207" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.008547008" saturationOffset="-0.04772438" brightnessOffset="0.06666666" alphaOffset="0"/>
151.26394 + </stop>
151.26395 + <stop position="0.6" midpoint="0.5">
151.26396 + <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.26397 + </stop>
151.26398 + <stop position="0.7" midpoint="0.5">
151.26399 + <matte red="164" green="171" blue="184" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0018306673" brightnessOffset="-0.02352941" alphaOffset="0"/>
151.26400 + </stop>
151.26401 + <stop position="0.95" midpoint="0.5">
151.26402 + <matte red="204" green="211" blue="224" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.0027777553" saturationOffset="-0.0212406" brightnessOffset="0.13333333" alphaOffset="0"/>
151.26403 + </stop>
151.26404 + <stop position="1.0" midpoint="0.5">
151.26405 + <matte red="231" green="237" blue="251" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0055555105" saturationOffset="-0.030845039" brightnessOffset="0.23921567" alphaOffset="0"/>
151.26406 + </stop>
151.26407 + </gradient>
151.26408 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.26409 + </rectangle>
151.26410 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="12.0">
151.26411 + <gradient cycleMethod="NO_CYCLE">
151.26412 + <stop position="0.09" midpoint="0.5">
151.26413 + <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
151.26414 + </stop>
151.26415 + <stop position="0.95" midpoint="0.5">
151.26416 + <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.11169591" brightnessOffset="-0.53333336" alphaOffset="0"/>
151.26417 + </stop>
151.26418 + </gradient>
151.26419 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.26420 + </rectangle>
151.26421 + <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="13.0">
151.26422 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.26423 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.26424 + </rectangle>
151.26425 + </shapes>
151.26426 + <effects/>
151.26427 + </layer>
151.26428 + </canvas>
151.26429 + </state>
151.26430 + </backgroundStates>
151.26431 + <foregroundStates/>
151.26432 + <borderStates/>
151.26433 + <regions/>
151.26434 + </uiComponent>
151.26435 + <uiComponent opaque="false" type="javax.swing.JToggleButton" name="ToggleButton" ui="ToggleButtonUI" subregion="true">
151.26436 + <stateTypes/>
151.26437 + <contentMargins top="4" bottom="4" left="4" right="4"/>
151.26438 + <style>
151.26439 + <textForeground/>
151.26440 + <textBackground/>
151.26441 + <background/>
151.26442 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.26443 + <cacheMode>NINE_SQUARE_SCALE</cacheMode>
151.26444 + <maxHozCachedImgScaling>2.0</maxHozCachedImgScaling>
151.26445 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.26446 + <uiproperties/>
151.26447 + </style>
151.26448 + <backgroundStates>
151.26449 + <state stateKeys="Enabled">
151.26450 + <style>
151.26451 + <textForeground/>
151.26452 + <textBackground/>
151.26453 + <background/>
151.26454 + <uiproperties/>
151.26455 + </style>
151.26456 + <canvas>
151.26457 + <size width="104" height="34"/>
151.26458 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.26459 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.26460 + <layer name="Button Layer">
151.26461 + <opacity>1.0</opacity>
151.26462 + <fillOpacity>1.0</fillOpacity>
151.26463 + <blendingMode>NORMAL</blendingMode>
151.26464 + <locked>false</locked>
151.26465 + <visible>true</visible>
151.26466 + <shapes/>
151.26467 + <effects/>
151.26468 + </layer>
151.26469 + </canvas>
151.26470 + </state>
151.26471 + <state stateKeys="Focused">
151.26472 + <style>
151.26473 + <textForeground/>
151.26474 + <textBackground/>
151.26475 + <background/>
151.26476 + <uiproperties/>
151.26477 + </style>
151.26478 + <canvas>
151.26479 + <size width="104" height="34"/>
151.26480 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.26481 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.26482 + <layer name="Button Layer">
151.26483 + <opacity>1.0</opacity>
151.26484 + <fillOpacity>1.0</fillOpacity>
151.26485 + <blendingMode>NORMAL</blendingMode>
151.26486 + <locked>false</locked>
151.26487 + <visible>true</visible>
151.26488 + <shapes>
151.26489 + <path>
151.26490 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.26491 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.26492 + <points>
151.26493 + <point x="43.85714285714286" y="0.6" cp1x="43.85714285714286" cp1y="0.6" cp2x="43.85714285714286" cp2y="0.6"/>
151.26494 + <point x="98.0" y="0.6" cp1x="98.0" cp1y="0.6" cp2x="101.0" cp2y="0.6"/>
151.26495 + <point x="103.42857142857142" y="6.0" cp1x="103.42857142857142" cp1y="3.0" cp2x="103.42857142857142" cp2y="6.0"/>
151.26496 + <point x="103.49999999999999" y="27.0" cp1x="103.49999999999999" cp1y="27.0" cp2x="103.49999999999999" cp2y="30.0"/>
151.26497 + <point x="98.0" y="32.35714285714285" cp1x="101.0" cp1y="32.35714285714285" cp2x="98.0" cp2y="32.35714285714285"/>
151.26498 + <point x="6.0" y="32.35714285714285" cp1x="6.0" cp1y="32.35714285714285" cp2x="3.0" cp2y="32.35714285714285"/>
151.26499 + <point x="0.6" y="27.0" cp1x="0.6" cp1y="30.0" cp2x="0.6" cp2y="27.0"/>
151.26500 + <point x="0.6" y="6.071428571428572" cp1x="0.6" cp1y="6.071428571428572" cp2x="0.6" cp2y="3.071428571428571"/>
151.26501 + <point x="6.0" y="0.6" cp1x="3.0" cp1y="0.6" cp2x="6.0" cp2y="0.6"/>
151.26502 + <point x="44.0" y="0.6" cp1x="44.0" cp1y="0.6" cp2x="44.0" cp2y="0.6"/>
151.26503 + <point x="44.0" y="2.4285714285714297" cp1x="44.0" cp1y="2.4285714285714297" cp2x="44.0" cp2y="2.4285714285714297"/>
151.26504 + <point x="6.0" y="2.4285714285714297" cp1x="6.0" cp1y="2.4285714285714297" cp2x="4.071428571428573" cp2y="2.4285714285714297"/>
151.26505 + <point x="2.357142857142858" y="5.928571428571429" cp1x="2.312863373522748" cp1y="3.499353333829805" cp2x="2.357142857142858" cp2y="5.928571428571429"/>
151.26506 + <point x="2.357142857142858" y="27.0" cp1x="2.357142857142858" cp1y="27.0" cp2x="2.357142857142858" cp2y="29.214285714285698"/>
151.26507 + <point x="6.0" y="30.571428571428562" cp1x="4.214285714285715" cp1y="30.571428571428562" cp2x="6.0" cp2y="30.571428571428562"/>
151.26508 + <point x="98.0" y="30.571428571428562" cp1x="98.0" cp1y="30.571428571428562" cp2x="100.0714285714286" cp2y="30.571428571428562"/>
151.26509 + <point x="101.50000000000001" y="27.0" cp1x="101.50000000000001" cp1y="29.214285714285705" cp2x="101.50000000000001" cp2y="27.0"/>
151.26510 + <point x="101.57142857142858" y="6.0" cp1x="101.57142857142858" cp1y="6.0" cp2x="101.57142857142858" cp2y="3.8571428571428594"/>
151.26511 + <point x="98.07142857142857" y="2.357142857142858" cp1x="100.21428571428574" cp1y="2.357142857142858" cp2x="98.07142857142857" cp2y="2.357142857142858"/>
151.26512 + <point x="44.0" y="2.4285714285714297" cp1x="44.0" cp1y="2.4285714285714297" cp2x="44.0" cp2y="2.4285714285714297"/>
151.26513 + </points>
151.26514 + </path>
151.26515 + </shapes>
151.26516 + <effects/>
151.26517 + </layer>
151.26518 + </canvas>
151.26519 + </state>
151.26520 + <state stateKeys="MouseOver">
151.26521 + <style>
151.26522 + <textForeground/>
151.26523 + <textBackground/>
151.26524 + <background/>
151.26525 + <uiproperties/>
151.26526 + </style>
151.26527 + <canvas>
151.26528 + <size width="104" height="34"/>
151.26529 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.26530 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.26531 + <layer name="Button Layer">
151.26532 + <opacity>1.0</opacity>
151.26533 + <fillOpacity>1.0</fillOpacity>
151.26534 + <blendingMode>NORMAL</blendingMode>
151.26535 + <locked>false</locked>
151.26536 + <visible>true</visible>
151.26537 + <shapes>
151.26538 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="9.0">
151.26539 + <gradient cycleMethod="NO_CYCLE">
151.26540 + <stop position="0.0" midpoint="0.5">
151.26541 + <matte red="253" green="253" blue="254" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10658931" brightnessOffset="0.25098038" alphaOffset="0"/>
151.26542 + </stop>
151.26543 + <stop position="0.06" midpoint="0.5">
151.26544 + <matte red="247" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.098526314" brightnessOffset="0.2352941" alphaOffset="0"/>
151.26545 + </stop>
151.26546 + <stop position="0.6" midpoint="0.5">
151.26547 + <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.26548 + </stop>
151.26549 + <stop position="0.7" midpoint="0.5">
151.26550 + <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.26551 + </stop>
151.26552 + <stop position="0.95" midpoint="0.5">
151.26553 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.26554 + </stop>
151.26555 + <stop position="1.0" midpoint="0.5">
151.26556 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.26557 + </stop>
151.26558 + </gradient>
151.26559 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.26560 + </rectangle>
151.26561 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="12.0">
151.26562 + <gradient cycleMethod="NO_CYCLE">
151.26563 + <stop position="0.09" midpoint="0.5">
151.26564 + <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
151.26565 + </stop>
151.26566 + <stop position="0.95" midpoint="0.5">
151.26567 + <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.11169591" brightnessOffset="-0.53333336" alphaOffset="0"/>
151.26568 + </stop>
151.26569 + </gradient>
151.26570 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.26571 + </rectangle>
151.26572 + </shapes>
151.26573 + <effects/>
151.26574 + </layer>
151.26575 + <layer name="Shadow Layer">
151.26576 + <opacity>1.0</opacity>
151.26577 + <fillOpacity>1.0</fillOpacity>
151.26578 + <blendingMode>NORMAL</blendingMode>
151.26579 + <locked>false</locked>
151.26580 + <visible>true</visible>
151.26581 + <shapes>
151.26582 + <rectangle x1="2.0" x2="102.0" y1="3.0" y2="32.0" rounding="12.0">
151.26583 + <matte red="92" green="94" blue="96" alpha="102" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.06885965" brightnessOffset="-0.36862746" alphaOffset="-153"/>
151.26584 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.26585 + </rectangle>
151.26586 + </shapes>
151.26587 + <effects/>
151.26588 + </layer>
151.26589 + </canvas>
151.26590 + </state>
151.26591 + <state stateKeys="MouseOver+Focused">
151.26592 + <style>
151.26593 + <textForeground/>
151.26594 + <textBackground/>
151.26595 + <background/>
151.26596 + <uiproperties/>
151.26597 + </style>
151.26598 + <canvas>
151.26599 + <size width="104" height="34"/>
151.26600 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.26601 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.26602 + <layer name="Button Layer">
151.26603 + <opacity>1.0</opacity>
151.26604 + <fillOpacity>1.0</fillOpacity>
151.26605 + <blendingMode>NORMAL</blendingMode>
151.26606 + <locked>false</locked>
151.26607 + <visible>true</visible>
151.26608 + <shapes>
151.26609 + <rectangle x1="3.0" x2="101.0" y1="3.0" y2="30.0" rounding="9.0">
151.26610 + <gradient cycleMethod="NO_CYCLE">
151.26611 + <stop position="0.0" midpoint="0.5">
151.26612 + <matte red="253" green="253" blue="254" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.055555582" saturationOffset="-0.10658931" brightnessOffset="0.25098038" alphaOffset="0"/>
151.26613 + </stop>
151.26614 + <stop position="0.06" midpoint="0.5">
151.26615 + <matte red="247" green="248" blue="250" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.098526314" brightnessOffset="0.2352941" alphaOffset="0"/>
151.26616 + </stop>
151.26617 + <stop position="0.6" midpoint="0.5">
151.26618 + <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.26619 + </stop>
151.26620 + <stop position="0.7" midpoint="0.5">
151.26621 + <matte red="233" green="236" blue="242" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.07333623" brightnessOffset="0.20392156" alphaOffset="0"/>
151.26622 + </stop>
151.26623 + <stop position="0.95" midpoint="0.5">
151.26624 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.26625 + </stop>
151.26626 + <stop position="1.0" midpoint="0.5">
151.26627 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.26628 + </stop>
151.26629 + </gradient>
151.26630 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.26631 + </rectangle>
151.26632 + <rectangle x1="2.0" x2="102.0" y1="2.0" y2="31.0" rounding="12.0">
151.26633 + <gradient cycleMethod="NO_CYCLE">
151.26634 + <stop position="0.09" midpoint="0.5">
151.26635 + <matte red="122" green="126" blue="134" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.020974077" brightnessOffset="-0.21960783" alphaOffset="0"/>
151.26636 + </stop>
151.26637 + <stop position="0.95" midpoint="0.5">
151.26638 + <matte red="42" green="46" blue="54" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.11169591" brightnessOffset="-0.53333336" alphaOffset="0"/>
151.26639 + </stop>
151.26640 + </gradient>
151.26641 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.26642 + </rectangle>
151.26643 + <rectangle x1="0.6" x2="103.4" y1="0.6" y2="32.4" rounding="13.0">
151.26644 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.26645 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.26646 + </rectangle>
151.26647 + </shapes>
151.26648 + <effects/>
151.26649 + </layer>
151.26650 + </canvas>
151.26651 + </state>
151.26652 + <state stateKeys="Pressed">
151.26653 + <style>
151.26654 + <textForeground/>
151.26655 + <textBackground/>
151.26656 + <background/>
151.26657 + <uiproperties/>
151.26658 + </style>
151.26659 + <canvas>
151.26660 + <size width="72" height="25"/>
151.26661 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.26662 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.26663 + <layer name="Layer 1">
151.26664 + <opacity>1.0</opacity>
151.26665 + <fillOpacity>1.0</fillOpacity>
151.26666 + <blendingMode>NORMAL</blendingMode>
151.26667 + <locked>false</locked>
151.26668 + <visible>true</visible>
151.26669 + <shapes>
151.26670 + <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="8.0">
151.26671 + <gradient cycleMethod="NO_CYCLE">
151.26672 + <stop position="0.0" midpoint="0.5">
151.26673 + <matte red="149" green="152" blue="157" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.0595709" brightnessOffset="-0.12941176" alphaOffset="0"/>
151.26674 + </stop>
151.26675 + <stop position="0.13368984" midpoint="0.5">
151.26676 + <matte red="173" green="176" blue="182" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.061075766" brightnessOffset="-0.031372547" alphaOffset="0"/>
151.26677 + </stop>
151.26678 + <stop position="1.0" midpoint="0.5">
151.26679 + <matte red="172" green="175" blue="181" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06080256" brightnessOffset="-0.035294116" alphaOffset="0"/>
151.26680 + </stop>
151.26681 + </gradient>
151.26682 + <paintPoints x1="0.25" y1="0.0" x2="0.2512626262626261" y2="1.0092592592592593"/>
151.26683 + </rectangle>
151.26684 + <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="10.0">
151.26685 + <gradient cycleMethod="NO_CYCLE">
151.26686 + <stop position="0.0" midpoint="0.5">
151.26687 + <matte red="95" green="97" blue="100" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.060526315" brightnessOffset="-0.3529412" alphaOffset="0"/>
151.26688 + </stop>
151.26689 + <stop position="1.0" midpoint="0.5">
151.26690 + <matte red="124" green="126" blue="130" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.064372465" brightnessOffset="-0.2352941" alphaOffset="0"/>
151.26691 + </stop>
151.26692 + </gradient>
151.26693 + <paintPoints x1="0.25" y1="0.0" x2="0.24999999999999994" y2="1.0041666666666667"/>
151.26694 + </rectangle>
151.26695 + <rectangle x1="2.0" x2="70.0" y1="3.0" y2="23.0" rounding="10.0">
151.26696 + <matte red="255" green="255" blue="255" alpha="169" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-86"/>
151.26697 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.26698 + </rectangle>
151.26699 + </shapes>
151.26700 + <effects/>
151.26701 + </layer>
151.26702 + </canvas>
151.26703 + </state>
151.26704 + <state stateKeys="Pressed+Focused">
151.26705 + <style>
151.26706 + <textForeground/>
151.26707 + <textBackground/>
151.26708 + <background/>
151.26709 + <uiproperties/>
151.26710 + </style>
151.26711 + <canvas>
151.26712 + <size width="72" height="25"/>
151.26713 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.26714 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.26715 + <layer name="Layer 1">
151.26716 + <opacity>1.0</opacity>
151.26717 + <fillOpacity>1.0</fillOpacity>
151.26718 + <blendingMode>NORMAL</blendingMode>
151.26719 + <locked>false</locked>
151.26720 + <visible>true</visible>
151.26721 + <shapes>
151.26722 + <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="8.0">
151.26723 + <gradient cycleMethod="NO_CYCLE">
151.26724 + <stop position="0.0" midpoint="0.5">
151.26725 + <matte red="149" green="152" blue="157" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.0595709" brightnessOffset="-0.12941176" alphaOffset="0"/>
151.26726 + </stop>
151.26727 + <stop position="0.13368984" midpoint="0.5">
151.26728 + <matte red="173" green="176" blue="182" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.061075766" brightnessOffset="-0.031372547" alphaOffset="0"/>
151.26729 + </stop>
151.26730 + <stop position="1.0" midpoint="0.5">
151.26731 + <matte red="172" green="175" blue="181" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06080256" brightnessOffset="-0.035294116" alphaOffset="0"/>
151.26732 + </stop>
151.26733 + </gradient>
151.26734 + <paintPoints x1="0.25" y1="0.0" x2="0.2512626262626261" y2="1.0092592592592593"/>
151.26735 + </rectangle>
151.26736 + <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="10.0">
151.26737 + <gradient cycleMethod="NO_CYCLE">
151.26738 + <stop position="0.0" midpoint="0.5">
151.26739 + <matte red="95" green="97" blue="100" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.060526315" brightnessOffset="-0.3529412" alphaOffset="0"/>
151.26740 + </stop>
151.26741 + <stop position="1.0" midpoint="0.5">
151.26742 + <matte red="124" green="126" blue="130" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.064372465" brightnessOffset="-0.2352941" alphaOffset="0"/>
151.26743 + </stop>
151.26744 + </gradient>
151.26745 + <paintPoints x1="0.25" y1="0.0" x2="0.24999999999999994" y2="1.0041666666666667"/>
151.26746 + </rectangle>
151.26747 + <rectangle x1="0.6" x2="71.4" y1="0.6" y2="23.4" rounding="13.0">
151.26748 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.26749 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.26750 + </rectangle>
151.26751 + </shapes>
151.26752 + <effects/>
151.26753 + </layer>
151.26754 + </canvas>
151.26755 + </state>
151.26756 + <state stateKeys="Selected">
151.26757 + <style>
151.26758 + <textForeground/>
151.26759 + <textBackground/>
151.26760 + <background/>
151.26761 + <uiproperties/>
151.26762 + </style>
151.26763 + <canvas>
151.26764 + <size width="72" height="25"/>
151.26765 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.26766 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.26767 + <layer name="Layer 1">
151.26768 + <opacity>1.0</opacity>
151.26769 + <fillOpacity>1.0</fillOpacity>
151.26770 + <blendingMode>NORMAL</blendingMode>
151.26771 + <locked>false</locked>
151.26772 + <visible>true</visible>
151.26773 + <shapes>
151.26774 + <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="8.0">
151.26775 + <gradient cycleMethod="NO_CYCLE">
151.26776 + <stop position="0.0" midpoint="0.5">
151.26777 + <matte red="164" green="166" blue="172" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0138888955" saturationOffset="-0.06401469" brightnessOffset="-0.07058823" alphaOffset="0"/>
151.26778 + </stop>
151.26779 + <stop position="0.13368984" midpoint="0.5">
151.26780 + <matte red="190" green="193" blue="199" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06530018" brightnessOffset="0.035294116" alphaOffset="0"/>
151.26781 + </stop>
151.26782 + <stop position="1.0" midpoint="0.5">
151.26783 + <matte red="189" green="192" blue="198" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06507177" brightnessOffset="0.031372547" alphaOffset="0"/>
151.26784 + </stop>
151.26785 + </gradient>
151.26786 + <paintPoints x1="0.25" y1="0.0" x2="0.2512626262626261" y2="1.0092592592592593"/>
151.26787 + </rectangle>
151.26788 + <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="10.0">
151.26789 + <gradient cycleMethod="NO_CYCLE">
151.26790 + <stop position="0.0" midpoint="0.5">
151.26791 + <matte red="125" green="127" blue="131" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06472479" brightnessOffset="-0.23137254" alphaOffset="0"/>
151.26792 + </stop>
151.26793 + <stop position="1.0" midpoint="0.5">
151.26794 + <matte red="164" green="166" blue="171" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.06959064" brightnessOffset="-0.0745098" alphaOffset="0"/>
151.26795 + </stop>
151.26796 + </gradient>
151.26797 + <paintPoints x1="0.25" y1="0.0" x2="0.24999999999999994" y2="1.0041666666666667"/>
151.26798 + </rectangle>
151.26799 + <rectangle x1="2.0" x2="70.0" y1="3.0" y2="23.0" rounding="10.0">
151.26800 + <matte red="255" green="255" blue="255" alpha="169" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-86"/>
151.26801 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.26802 + </rectangle>
151.26803 + </shapes>
151.26804 + <effects/>
151.26805 + </layer>
151.26806 + <templateLayer fileName="1139ecfc04b.png">
151.26807 + <layer name="Template" type="template">
151.26808 + <opacity>1.0</opacity>
151.26809 + <fillOpacity>1.0</fillOpacity>
151.26810 + <blendingMode>NORMAL</blendingMode>
151.26811 + <locked>false</locked>
151.26812 + <visible>false</visible>
151.26813 + <shapes/>
151.26814 + <effects/>
151.26815 + </layer>
151.26816 + </templateLayer>
151.26817 + </canvas>
151.26818 + </state>
151.26819 + <state stateKeys="Selected+Focused">
151.26820 + <style>
151.26821 + <textForeground/>
151.26822 + <textBackground/>
151.26823 + <background/>
151.26824 + <uiproperties/>
151.26825 + </style>
151.26826 + <canvas>
151.26827 + <size width="72" height="25"/>
151.26828 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.26829 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.26830 + <layer name="Layer 1">
151.26831 + <opacity>1.0</opacity>
151.26832 + <fillOpacity>1.0</fillOpacity>
151.26833 + <blendingMode>NORMAL</blendingMode>
151.26834 + <locked>false</locked>
151.26835 + <visible>true</visible>
151.26836 + <shapes>
151.26837 + <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="8.0">
151.26838 + <gradient cycleMethod="NO_CYCLE">
151.26839 + <stop position="0.0" midpoint="0.5">
151.26840 + <matte red="164" green="166" blue="172" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0138888955" saturationOffset="-0.06401469" brightnessOffset="-0.07058823" alphaOffset="0"/>
151.26841 + </stop>
151.26842 + <stop position="0.13368984" midpoint="0.5">
151.26843 + <matte red="190" green="193" blue="199" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06530018" brightnessOffset="0.035294116" alphaOffset="0"/>
151.26844 + </stop>
151.26845 + <stop position="1.0" midpoint="0.5">
151.26846 + <matte red="189" green="192" blue="198" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06507177" brightnessOffset="0.031372547" alphaOffset="0"/>
151.26847 + </stop>
151.26848 + </gradient>
151.26849 + <paintPoints x1="0.25" y1="0.0" x2="0.2512626262626261" y2="1.0092592592592593"/>
151.26850 + </rectangle>
151.26851 + <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="10.0">
151.26852 + <gradient cycleMethod="NO_CYCLE">
151.26853 + <stop position="0.0" midpoint="0.5">
151.26854 + <matte red="125" green="127" blue="131" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06472479" brightnessOffset="-0.23137254" alphaOffset="0"/>
151.26855 + </stop>
151.26856 + <stop position="1.0" midpoint="0.5">
151.26857 + <matte red="164" green="166" blue="171" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.06959064" brightnessOffset="-0.0745098" alphaOffset="0"/>
151.26858 + </stop>
151.26859 + </gradient>
151.26860 + <paintPoints x1="0.25" y1="0.0" x2="0.24999999999999994" y2="1.0041666666666667"/>
151.26861 + </rectangle>
151.26862 + <rectangle x1="0.6" x2="71.4" y1="0.6" y2="23.4" rounding="13.0">
151.26863 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.26864 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.26865 + </rectangle>
151.26866 + </shapes>
151.26867 + <effects/>
151.26868 + </layer>
151.26869 + </canvas>
151.26870 + </state>
151.26871 + <state stateKeys="Pressed+Selected">
151.26872 + <style>
151.26873 + <textForeground/>
151.26874 + <textBackground/>
151.26875 + <background/>
151.26876 + <uiproperties/>
151.26877 + </style>
151.26878 + <canvas>
151.26879 + <size width="72" height="25"/>
151.26880 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.26881 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.26882 + <layer name="Layer 1">
151.26883 + <opacity>1.0</opacity>
151.26884 + <fillOpacity>1.0</fillOpacity>
151.26885 + <blendingMode>NORMAL</blendingMode>
151.26886 + <locked>false</locked>
151.26887 + <visible>true</visible>
151.26888 + <shapes>
151.26889 + <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="8.0">
151.26890 + <gradient cycleMethod="NO_CYCLE">
151.26891 + <stop position="0.0" midpoint="0.5">
151.26892 + <matte red="117" green="121" blue="126" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.018518567" saturationOffset="-0.03909774" brightnessOffset="-0.2509804" alphaOffset="0"/>
151.26893 + </stop>
151.26894 + <stop position="0.13368984" midpoint="0.5">
151.26895 + <matte red="145" green="149" blue="156" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.040013492" brightnessOffset="-0.13333333" alphaOffset="0"/>
151.26896 + </stop>
151.26897 + <stop position="1.0" midpoint="0.5">
151.26898 + <matte red="144" green="147" blue="155" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.01010108" saturationOffset="-0.039558575" brightnessOffset="-0.1372549" alphaOffset="0"/>
151.26899 + </stop>
151.26900 + </gradient>
151.26901 + <paintPoints x1="0.25" y1="0.0" x2="0.2512626262626261" y2="1.0092592592592593"/>
151.26902 + </rectangle>
151.26903 + <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="10.0">
151.26904 + <gradient cycleMethod="NO_CYCLE">
151.26905 + <stop position="0.0" midpoint="0.5">
151.26906 + <matte red="66" green="68" blue="70" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.05338346" brightnessOffset="-0.47058824" alphaOffset="0"/>
151.26907 + </stop>
151.26908 + <stop position="1.0" midpoint="0.5">
151.26909 + <matte red="92" green="94" blue="98" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.049301825" brightnessOffset="-0.36078432" alphaOffset="0"/>
151.26910 + </stop>
151.26911 + </gradient>
151.26912 + <paintPoints x1="0.25" y1="0.0" x2="0.24999999999999994" y2="1.0041666666666667"/>
151.26913 + </rectangle>
151.26914 + <rectangle x1="2.0" x2="70.0" y1="3.0" y2="23.0" rounding="10.0">
151.26915 + <matte red="255" green="255" blue="255" alpha="169" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-86"/>
151.26916 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.26917 + </rectangle>
151.26918 + </shapes>
151.26919 + <effects/>
151.26920 + </layer>
151.26921 + <templateLayer fileName="1139ed92ed8.png">
151.26922 + <layer name="Template" type="template">
151.26923 + <opacity>1.0</opacity>
151.26924 + <fillOpacity>1.0</fillOpacity>
151.26925 + <blendingMode>NORMAL</blendingMode>
151.26926 + <locked>false</locked>
151.26927 + <visible>false</visible>
151.26928 + <shapes/>
151.26929 + <effects/>
151.26930 + </layer>
151.26931 + </templateLayer>
151.26932 + </canvas>
151.26933 + </state>
151.26934 + <state stateKeys="Pressed+Selected+Focused">
151.26935 + <style>
151.26936 + <textForeground/>
151.26937 + <textBackground/>
151.26938 + <background/>
151.26939 + <uiproperties/>
151.26940 + </style>
151.26941 + <canvas>
151.26942 + <size width="72" height="25"/>
151.26943 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.26944 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.26945 + <layer name="Layer 1">
151.26946 + <opacity>1.0</opacity>
151.26947 + <fillOpacity>1.0</fillOpacity>
151.26948 + <blendingMode>NORMAL</blendingMode>
151.26949 + <locked>false</locked>
151.26950 + <visible>true</visible>
151.26951 + <shapes>
151.26952 + <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="8.0">
151.26953 + <gradient cycleMethod="NO_CYCLE">
151.26954 + <stop position="0.0" midpoint="0.5">
151.26955 + <matte red="117" green="121" blue="126" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.018518567" saturationOffset="-0.03909774" brightnessOffset="-0.2509804" alphaOffset="0"/>
151.26956 + </stop>
151.26957 + <stop position="0.13368984" midpoint="0.5">
151.26958 + <matte red="145" green="149" blue="156" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.00505054" saturationOffset="-0.040013492" brightnessOffset="-0.13333333" alphaOffset="0"/>
151.26959 + </stop>
151.26960 + <stop position="1.0" midpoint="0.5">
151.26961 + <matte red="144" green="147" blue="155" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.01010108" saturationOffset="-0.039558575" brightnessOffset="-0.1372549" alphaOffset="0"/>
151.26962 + </stop>
151.26963 + </gradient>
151.26964 + <paintPoints x1="0.25" y1="0.0" x2="0.2512626262626261" y2="1.0092592592592593"/>
151.26965 + </rectangle>
151.26966 + <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="10.0">
151.26967 + <gradient cycleMethod="NO_CYCLE">
151.26968 + <stop position="0.0" midpoint="0.5">
151.26969 + <matte red="66" green="68" blue="70" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.027777791" saturationOffset="-0.05338346" brightnessOffset="-0.47058824" alphaOffset="0"/>
151.26970 + </stop>
151.26971 + <stop position="1.0" midpoint="0.5">
151.26972 + <matte red="92" green="94" blue="98" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.049301825" brightnessOffset="-0.36078432" alphaOffset="0"/>
151.26973 + </stop>
151.26974 + </gradient>
151.26975 + <paintPoints x1="0.25" y1="0.0" x2="0.24999999999999994" y2="1.0041666666666667"/>
151.26976 + </rectangle>
151.26977 + <rectangle x1="0.6" x2="71.4" y1="0.6" y2="23.4" rounding="13.0">
151.26978 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.26979 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.26980 + </rectangle>
151.26981 + </shapes>
151.26982 + <effects/>
151.26983 + </layer>
151.26984 + </canvas>
151.26985 + </state>
151.26986 + <state stateKeys="MouseOver+Selected">
151.26987 + <style>
151.26988 + <textForeground/>
151.26989 + <textBackground/>
151.26990 + <background/>
151.26991 + <uiproperties/>
151.26992 + </style>
151.26993 + <canvas>
151.26994 + <size width="72" height="25"/>
151.26995 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.26996 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.26997 + <layer name="Layer 1">
151.26998 + <opacity>1.0</opacity>
151.26999 + <fillOpacity>1.0</fillOpacity>
151.27000 + <blendingMode>NORMAL</blendingMode>
151.27001 + <locked>false</locked>
151.27002 + <visible>true</visible>
151.27003 + <shapes>
151.27004 + <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="8.0">
151.27005 + <gradient cycleMethod="NO_CYCLE">
151.27006 + <stop position="0.0" midpoint="0.5">
151.27007 + <matte red="149" green="152" blue="157" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.0595709" brightnessOffset="-0.12941176" alphaOffset="0"/>
151.27008 + </stop>
151.27009 + <stop position="0.13368984" midpoint="0.5">
151.27010 + <matte red="173" green="176" blue="182" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.061075766" brightnessOffset="-0.031372547" alphaOffset="0"/>
151.27011 + </stop>
151.27012 + <stop position="1.0" midpoint="0.5">
151.27013 + <matte red="172" green="175" blue="181" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06080256" brightnessOffset="-0.035294116" alphaOffset="0"/>
151.27014 + </stop>
151.27015 + </gradient>
151.27016 + <paintPoints x1="0.25" y1="0.0" x2="0.2512626262626261" y2="1.0092592592592593"/>
151.27017 + </rectangle>
151.27018 + <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="10.0">
151.27019 + <gradient cycleMethod="NO_CYCLE">
151.27020 + <stop position="0.0" midpoint="0.5">
151.27021 + <matte red="95" green="97" blue="100" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.060526315" brightnessOffset="-0.3529412" alphaOffset="0"/>
151.27022 + </stop>
151.27023 + <stop position="1.0" midpoint="0.5">
151.27024 + <matte red="124" green="126" blue="130" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.064372465" brightnessOffset="-0.2352941" alphaOffset="0"/>
151.27025 + </stop>
151.27026 + </gradient>
151.27027 + <paintPoints x1="0.25" y1="0.0" x2="0.24999999999999994" y2="1.0041666666666667"/>
151.27028 + </rectangle>
151.27029 + <rectangle x1="2.0" x2="70.0" y1="3.0" y2="23.0" rounding="10.0">
151.27030 + <matte red="255" green="255" blue="255" alpha="169" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-86"/>
151.27031 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.27032 + </rectangle>
151.27033 + </shapes>
151.27034 + <effects/>
151.27035 + </layer>
151.27036 + <templateLayer fileName="1139eda6220.png">
151.27037 + <layer name="Template" type="template">
151.27038 + <opacity>1.0</opacity>
151.27039 + <fillOpacity>1.0</fillOpacity>
151.27040 + <blendingMode>NORMAL</blendingMode>
151.27041 + <locked>false</locked>
151.27042 + <visible>false</visible>
151.27043 + <shapes/>
151.27044 + <effects/>
151.27045 + </layer>
151.27046 + </templateLayer>
151.27047 + </canvas>
151.27048 + </state>
151.27049 + <state stateKeys="MouseOver+Selected+Focused">
151.27050 + <style>
151.27051 + <textForeground/>
151.27052 + <textBackground/>
151.27053 + <background/>
151.27054 + <uiproperties/>
151.27055 + </style>
151.27056 + <canvas>
151.27057 + <size width="72" height="25"/>
151.27058 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.27059 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.27060 + <layer name="Layer 1">
151.27061 + <opacity>1.0</opacity>
151.27062 + <fillOpacity>1.0</fillOpacity>
151.27063 + <blendingMode>NORMAL</blendingMode>
151.27064 + <locked>false</locked>
151.27065 + <visible>true</visible>
151.27066 + <shapes>
151.27067 + <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="8.0">
151.27068 + <gradient cycleMethod="NO_CYCLE">
151.27069 + <stop position="0.0" midpoint="0.5">
151.27070 + <matte red="149" green="152" blue="157" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.006944418" saturationOffset="-0.0595709" brightnessOffset="-0.12941176" alphaOffset="0"/>
151.27071 + </stop>
151.27072 + <stop position="0.13368984" midpoint="0.5">
151.27073 + <matte red="173" green="176" blue="182" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.061075766" brightnessOffset="-0.031372547" alphaOffset="0"/>
151.27074 + </stop>
151.27075 + <stop position="1.0" midpoint="0.5">
151.27076 + <matte red="172" green="175" blue="181" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06080256" brightnessOffset="-0.035294116" alphaOffset="0"/>
151.27077 + </stop>
151.27078 + </gradient>
151.27079 + <paintPoints x1="0.25" y1="0.0" x2="0.2512626262626261" y2="1.0092592592592593"/>
151.27080 + </rectangle>
151.27081 + <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="10.0">
151.27082 + <gradient cycleMethod="NO_CYCLE">
151.27083 + <stop position="0.0" midpoint="0.5">
151.27084 + <matte red="95" green="97" blue="100" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.01111114" saturationOffset="-0.060526315" brightnessOffset="-0.3529412" alphaOffset="0"/>
151.27085 + </stop>
151.27086 + <stop position="1.0" midpoint="0.5">
151.27087 + <matte red="124" green="126" blue="130" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.064372465" brightnessOffset="-0.2352941" alphaOffset="0"/>
151.27088 + </stop>
151.27089 + </gradient>
151.27090 + <paintPoints x1="0.25" y1="0.0" x2="0.24999999999999994" y2="1.0041666666666667"/>
151.27091 + </rectangle>
151.27092 + <rectangle x1="0.6" x2="71.4" y1="0.6" y2="23.4" rounding="13.0">
151.27093 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.27094 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.27095 + </rectangle>
151.27096 + </shapes>
151.27097 + <effects/>
151.27098 + </layer>
151.27099 + </canvas>
151.27100 + </state>
151.27101 + <state stateKeys="Disabled+Selected">
151.27102 + <style>
151.27103 + <textForeground>
151.27104 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.27105 + </textForeground>
151.27106 + <textBackground/>
151.27107 + <background/>
151.27108 + <inherit-textForeground>false</inherit-textForeground>
151.27109 + <uiproperties/>
151.27110 + </style>
151.27111 + <canvas>
151.27112 + <size width="72" height="25"/>
151.27113 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.27114 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.27115 + <layer name="Layer 1">
151.27116 + <opacity>1.0</opacity>
151.27117 + <fillOpacity>1.0</fillOpacity>
151.27118 + <blendingMode>NORMAL</blendingMode>
151.27119 + <locked>false</locked>
151.27120 + <visible>true</visible>
151.27121 + <shapes>
151.27122 + <rectangle x1="3.0" x2="69.0" y1="3.0" y2="21.0" rounding="8.0">
151.27123 + <gradient cycleMethod="NO_CYCLE">
151.27124 + <stop position="0.0" midpoint="0.5">
151.27125 + <matte red="203" green="206" blue="212" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06807348" brightnessOffset="0.086274505" alphaOffset="0"/>
151.27126 + </stop>
151.27127 + <stop position="0.13368984" midpoint="0.5">
151.27128 + <matte red="209" green="212" blue="218" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06924191" brightnessOffset="0.109803915" alphaOffset="0"/>
151.27129 + </stop>
151.27130 + <stop position="1.0" midpoint="0.5">
151.27131 + <matte red="209" green="212" blue="218" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06924191" brightnessOffset="0.109803915" alphaOffset="0"/>
151.27132 + </stop>
151.27133 + </gradient>
151.27134 + <paintPoints x1="0.25" y1="0.0" x2="0.2512626262626261" y2="1.0092592592592593"/>
151.27135 + </rectangle>
151.27136 + <rectangle x1="2.0" x2="70.0" y1="2.0" y2="22.0" rounding="10.0">
151.27137 + <gradient cycleMethod="NO_CYCLE">
151.27138 + <stop position="0.0" midpoint="0.5">
151.27139 + <matte red="195" green="198" blue="204" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.066408664" brightnessOffset="0.054901958" alphaOffset="0"/>
151.27140 + </stop>
151.27141 + <stop position="1.0" midpoint="0.5">
151.27142 + <matte red="203" green="206" blue="212" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.06807348" brightnessOffset="0.086274505" alphaOffset="0"/>
151.27143 + </stop>
151.27144 + </gradient>
151.27145 + <paintPoints x1="0.25" y1="0.0" x2="0.24999999999999994" y2="1.0041666666666667"/>
151.27146 + </rectangle>
151.27147 + <rectangle x1="2.0" x2="70.0" y1="3.0" y2="23.0" rounding="10.0">
151.27148 + <matte red="255" green="255" blue="255" alpha="35" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="-220"/>
151.27149 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.27150 + </rectangle>
151.27151 + </shapes>
151.27152 + <effects/>
151.27153 + </layer>
151.27154 + <templateLayer fileName="1139edb5619.png">
151.27155 + <layer name="Template" type="template">
151.27156 + <opacity>1.0</opacity>
151.27157 + <fillOpacity>1.0</fillOpacity>
151.27158 + <blendingMode>NORMAL</blendingMode>
151.27159 + <locked>false</locked>
151.27160 + <visible>false</visible>
151.27161 + <shapes/>
151.27162 + <effects/>
151.27163 + </layer>
151.27164 + </templateLayer>
151.27165 + </canvas>
151.27166 + </state>
151.27167 + </backgroundStates>
151.27168 + <foregroundStates/>
151.27169 + <borderStates/>
151.27170 + <regions/>
151.27171 + </uiComponent>
151.27172 + </regions>
151.27173 + </uiComponent>
151.27174 + <uiComponent opaque="false" type="javax.swing.JToolBar$Separator" name="ToolBarSeparator" ui="ToolBarSeparatorUI" subregion="false">
151.27175 + <stateTypes/>
151.27176 + <contentMargins top="2" bottom="3" left="0" right="0"/>
151.27177 + <style>
151.27178 + <textForeground>
151.27179 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.27180 + </textForeground>
151.27181 + <textBackground/>
151.27182 + <background/>
151.27183 + <inherit-textForeground>false</inherit-textForeground>
151.27184 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.27185 + <cacheMode>NO_CACHING</cacheMode>
151.27186 + <maxHozCachedImgScaling>INF</maxHozCachedImgScaling>
151.27187 + <maxVertCachedImgScaling>INF</maxVertCachedImgScaling>
151.27188 + <uiproperties/>
151.27189 + </style>
151.27190 + <backgroundStates/>
151.27191 + <foregroundStates/>
151.27192 + <borderStates/>
151.27193 + <regions/>
151.27194 + </uiComponent>
151.27195 + <uiComponent opaque="false" type="javax.swing.JToolTip" name="ToolTip" ui="ToolTipUI" subregion="false">
151.27196 + <stateTypes/>
151.27197 + <contentMargins top="4" bottom="4" left="4" right="4"/>
151.27198 + <style>
151.27199 + <textForeground/>
151.27200 + <textBackground/>
151.27201 + <background/>
151.27202 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.27203 + <cacheMode>NO_CACHING</cacheMode>
151.27204 + <uiproperties/>
151.27205 + </style>
151.27206 + <backgroundStates>
151.27207 + <state stateKeys="Enabled">
151.27208 + <style>
151.27209 + <textForeground/>
151.27210 + <textBackground/>
151.27211 + <background/>
151.27212 + <uiproperties/>
151.27213 + </style>
151.27214 + <canvas>
151.27215 + <size width="10" height="10"/>
151.27216 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.27217 + <stretchingInsets top="1" bottom="1" left="1" right="1"/>
151.27218 + <layer name="Layer 1">
151.27219 + <opacity>1.0</opacity>
151.27220 + <fillOpacity>1.0</fillOpacity>
151.27221 + <blendingMode>NORMAL</blendingMode>
151.27222 + <locked>false</locked>
151.27223 + <visible>true</visible>
151.27224 + <shapes>
151.27225 + <rectangle x1="1.0" x2="9.0" y1="1.0" y2="9.0" rounding="0.0">
151.27226 + <matte red="242" green="242" blue="189" alpha="255" uiDefaultParentName="info" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.27227 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.27228 + </rectangle>
151.27229 + <rectangle x1="0.0" x2="10.0" y1="0.0" y2="1.0" rounding="0.0">
151.27230 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.27231 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.27232 + </rectangle>
151.27233 + <rectangle x1="0.0" x2="10.0" y1="9.0" y2="10.0" rounding="0.0">
151.27234 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.27235 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.27236 + </rectangle>
151.27237 + <rectangle x1="0.0" x2="1.0" y1="1.0" y2="9.0" rounding="0.0">
151.27238 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.27239 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.27240 + </rectangle>
151.27241 + <rectangle x1="9.0" x2="10.0" y1="1.0" y2="9.0" rounding="0.0">
151.27242 + <matte red="146" green="151" blue="161" alpha="255" uiDefaultParentName="nimbusBorder" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.27243 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.27244 + </rectangle>
151.27245 + </shapes>
151.27246 + <effects/>
151.27247 + </layer>
151.27248 + </canvas>
151.27249 + </state>
151.27250 + </backgroundStates>
151.27251 + <foregroundStates/>
151.27252 + <borderStates/>
151.27253 + <regions/>
151.27254 + </uiComponent>
151.27255 + <uiComponent opaque="true" type="javax.swing.JTree" name="Tree" ui="TreeUI" subregion="false">
151.27256 + <stateTypes/>
151.27257 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.27258 + <style>
151.27259 + <textForeground>
151.27260 + <matte red="0" green="0" blue="0" alpha="0" uiDefaultParentName="text" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
151.27261 + </textForeground>
151.27262 + <textBackground>
151.27263 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
151.27264 + </textBackground>
151.27265 + <background>
151.27266 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.27267 + </background>
151.27268 + <inherit-textForeground>false</inherit-textForeground>
151.27269 + <inherit-textBackground>false</inherit-textBackground>
151.27270 + <inherit-background>false</inherit-background>
151.27271 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.27272 + <cacheMode>NO_CACHING</cacheMode>
151.27273 + <uiproperties>
151.27274 + <uiProperty name="rendererFillBackground" type="BOOLEAN" value="false"/>
151.27275 + <uiProperty name="leftChildIndent" type="INT" value="12"/>
151.27276 + <uiProperty name="rightChildIndent" type="INT" value="4"/>
151.27277 + <uiProperty name="drawHorizontalLines" type="BOOLEAN" value="false"/>
151.27278 + <uiProperty name="drawVerticalLines" type="BOOLEAN" value="false"/>
151.27279 + <uiProperty name="showRootHandles" type="BOOLEAN" value="false"/>
151.27280 + <uiProperty name="rendererUseTreeColors" type="BOOLEAN" value="true"/>
151.27281 + <uiProperty name="repaintWholeRow" type="BOOLEAN" value="true"/>
151.27282 + <uiProperty name="rowHeight" type="INT" value="0"/>
151.27283 + <uiProperty name="rendererMargins" type="INSETS">
151.27284 + <insets top="2" left="0" bottom="1" right="5"/>
151.27285 + </uiProperty>
151.27286 + <uiProperty name="selectionForeground" type="COLOR">
151.27287 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusSelectedText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
151.27288 + </uiProperty>
151.27289 + <uiProperty name="selectionBackground" type="COLOR">
151.27290 + <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
151.27291 + </uiProperty>
151.27292 + <uiProperty name="dropLineColor" type="COLOR">
151.27293 + <matte red="242" green="242" blue="242" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0" alphaOffset="0"/>
151.27294 + </uiProperty>
151.27295 + </uiproperties>
151.27296 + </style>
151.27297 + <backgroundStates>
151.27298 + <state stateKeys="Disabled">
151.27299 + <style>
151.27300 + <textForeground/>
151.27301 + <textBackground/>
151.27302 + <background/>
151.27303 + <uiproperties/>
151.27304 + </style>
151.27305 + <canvas>
151.27306 + <size width="100" height="30"/>
151.27307 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.27308 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.27309 + <layer name="Layer 1">
151.27310 + <opacity>1.0</opacity>
151.27311 + <fillOpacity>1.0</fillOpacity>
151.27312 + <blendingMode>NORMAL</blendingMode>
151.27313 + <locked>false</locked>
151.27314 + <visible>true</visible>
151.27315 + <shapes/>
151.27316 + <effects/>
151.27317 + </layer>
151.27318 + </canvas>
151.27319 + </state>
151.27320 + <state stateKeys="Enabled">
151.27321 + <style>
151.27322 + <textForeground/>
151.27323 + <textBackground/>
151.27324 + <background/>
151.27325 + <uiproperties/>
151.27326 + </style>
151.27327 + <canvas>
151.27328 + <size width="100" height="30"/>
151.27329 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.27330 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.27331 + <layer name="Layer 1">
151.27332 + <opacity>1.0</opacity>
151.27333 + <fillOpacity>1.0</fillOpacity>
151.27334 + <blendingMode>NORMAL</blendingMode>
151.27335 + <locked>false</locked>
151.27336 + <visible>true</visible>
151.27337 + <shapes/>
151.27338 + <effects/>
151.27339 + </layer>
151.27340 + </canvas>
151.27341 + </state>
151.27342 + <state stateKeys="Enabled+Selected">
151.27343 + <style>
151.27344 + <textForeground/>
151.27345 + <textBackground/>
151.27346 + <background/>
151.27347 + <uiproperties/>
151.27348 + </style>
151.27349 + <canvas>
151.27350 + <size width="100" height="30"/>
151.27351 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.27352 + <stretchingInsets top="1" bottom="1" left="1" right="1"/>
151.27353 + <layer name="Layer 1">
151.27354 + <opacity>1.0</opacity>
151.27355 + <fillOpacity>1.0</fillOpacity>
151.27356 + <blendingMode>NORMAL</blendingMode>
151.27357 + <locked>false</locked>
151.27358 + <visible>true</visible>
151.27359 + <shapes/>
151.27360 + <effects/>
151.27361 + </layer>
151.27362 + </canvas>
151.27363 + </state>
151.27364 + </backgroundStates>
151.27365 + <foregroundStates/>
151.27366 + <borderStates/>
151.27367 + <regions>
151.27368 + <region name="TreeCell" subregion="true" title="Tree Cell">
151.27369 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.27370 + <style>
151.27371 + <textForeground/>
151.27372 + <textBackground/>
151.27373 + <background/>
151.27374 + <uiproperties/>
151.27375 + </style>
151.27376 + <backgroundStates>
151.27377 + <state stateKeys="Enabled">
151.27378 + <style>
151.27379 + <textForeground/>
151.27380 + <textBackground/>
151.27381 + <background>
151.27382 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.27383 + </background>
151.27384 + <inherit-background>false</inherit-background>
151.27385 + <uiproperties/>
151.27386 + </style>
151.27387 + <canvas>
151.27388 + <size width="100" height="30"/>
151.27389 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.27390 + <stretchingInsets top="0" bottom="0" left="15" right="15"/>
151.27391 + <layer name="Layer 1">
151.27392 + <opacity>1.0</opacity>
151.27393 + <fillOpacity>1.0</fillOpacity>
151.27394 + <blendingMode>NORMAL</blendingMode>
151.27395 + <locked>false</locked>
151.27396 + <visible>true</visible>
151.27397 + <shapes/>
151.27398 + <effects/>
151.27399 + </layer>
151.27400 + </canvas>
151.27401 + </state>
151.27402 + <state stateKeys="Enabled+Focused">
151.27403 + <style>
151.27404 + <textForeground/>
151.27405 + <textBackground/>
151.27406 + <background>
151.27407 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.27408 + </background>
151.27409 + <inherit-background>false</inherit-background>
151.27410 + <uiproperties/>
151.27411 + </style>
151.27412 + <canvas>
151.27413 + <size width="100" height="30"/>
151.27414 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.27415 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.27416 + <layer name="Layer 1">
151.27417 + <opacity>1.0</opacity>
151.27418 + <fillOpacity>1.0</fillOpacity>
151.27419 + <blendingMode>NORMAL</blendingMode>
151.27420 + <locked>false</locked>
151.27421 + <visible>true</visible>
151.27422 + <shapes>
151.27423 + <path>
151.27424 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.27425 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.27426 + <points>
151.27427 + <point x="0" y="0" cp1x="0" cp1y="0" cp2x="0" cp2y="0"/>
151.27428 + <point x="0" y="30" cp1x="0" cp1y="30" cp2x="0" cp2y="30"/>
151.27429 + <point x="100" y="30" cp1x="100" cp1y="30" cp2x="100" cp2y="30"/>
151.27430 + <point x="100" y="0" cp1x="100" cp1y="0" cp2x="100" cp2y="0"/>
151.27431 + <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
151.27432 + <point x="1.2" y="1.2" cp1x="1.2" cp1y="1.2" cp2x="1.2" cp2y="1.2"/>
151.27433 + <point x="98.8" y="1.2" cp1x="98.8" cp1y="1.2" cp2x="98.8" cp2y="1.2"/>
151.27434 + <point x="98.8" y="28.8" cp1x="98.8" cp1y="28.8" cp2x="98.8" cp2y="28.8"/>
151.27435 + <point x="1.2" y="28.8" cp1x="1.2" cp1y="28.8" cp2x="1.2" cp2y="28.8"/>
151.27436 + <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
151.27437 + </points>
151.27438 + </path>
151.27439 + </shapes>
151.27440 + <effects/>
151.27441 + </layer>
151.27442 + </canvas>
151.27443 + </state>
151.27444 + <state stateKeys="Enabled+Selected">
151.27445 + <style>
151.27446 + <textForeground>
151.27447 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.27448 + </textForeground>
151.27449 + <textBackground/>
151.27450 + <background/>
151.27451 + <inherit-textForeground>false</inherit-textForeground>
151.27452 + <uiproperties/>
151.27453 + </style>
151.27454 + <canvas>
151.27455 + <size width="100" height="30"/>
151.27456 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.27457 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.27458 + <layer name="Layer 1">
151.27459 + <opacity>1.0</opacity>
151.27460 + <fillOpacity>1.0</fillOpacity>
151.27461 + <blendingMode>NORMAL</blendingMode>
151.27462 + <locked>false</locked>
151.27463 + <visible>true</visible>
151.27464 + <shapes>
151.27465 + <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
151.27466 + <matte red="129" green="129" blue="129" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.27467 + <paintPoints x1="1.0" y1="0.0" x2="1.0" y2="1.0"/>
151.27468 + </rectangle>
151.27469 + </shapes>
151.27470 + <effects/>
151.27471 + </layer>
151.27472 + </canvas>
151.27473 + </state>
151.27474 + <state stateKeys="Selected+Focused">
151.27475 + <style>
151.27476 + <textForeground>
151.27477 + <matte red="255" green="255" blue="255" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.27478 + </textForeground>
151.27479 + <textBackground/>
151.27480 + <background/>
151.27481 + <inherit-textForeground>false</inherit-textForeground>
151.27482 + <uiproperties/>
151.27483 + </style>
151.27484 + <canvas>
151.27485 + <size width="100" height="30"/>
151.27486 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.27487 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.27488 + <layer name="Layer 1">
151.27489 + <opacity>1.0</opacity>
151.27490 + <fillOpacity>1.0</fillOpacity>
151.27491 + <blendingMode>NORMAL</blendingMode>
151.27492 + <locked>false</locked>
151.27493 + <visible>true</visible>
151.27494 + <shapes>
151.27495 + <path>
151.27496 + <matte red="115" green="164" blue="209" alpha="255" uiDefaultParentName="nimbusFocus" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.27497 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.27498 + <points>
151.27499 + <point x="0" y="0" cp1x="0" cp1y="0" cp2x="0" cp2y="0"/>
151.27500 + <point x="0" y="30" cp1x="0" cp1y="30" cp2x="0" cp2y="30"/>
151.27501 + <point x="100" y="30" cp1x="100" cp1y="30" cp2x="100" cp2y="30"/>
151.27502 + <point x="100" y="0" cp1x="100" cp1y="0" cp2x="100" cp2y="0"/>
151.27503 + <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
151.27504 + <point x="1.2" y="1.2" cp1x="1.2" cp1y="1.2" cp2x="1.2" cp2y="1.2"/>
151.27505 + <point x="98.8" y="1.2" cp1x="98.8" cp1y="1.2" cp2x="98.8" cp2y="1.2"/>
151.27506 + <point x="98.8" y="28.8" cp1x="98.8" cp1y="28.8" cp2x="98.8" cp2y="28.8"/>
151.27507 + <point x="1.2" y="28.8" cp1x="1.2" cp1y="28.8" cp2x="1.2" cp2y="28.8"/>
151.27508 + <point x="1.2" y="0" cp1x="1.2" cp1y="0" cp2x="1.2" cp2y="0"/>
151.27509 + </points>
151.27510 + </path>
151.27511 + <rectangle x1="0.0" x2="100.0" y1="0.0" y2="30.0" rounding="0.0">
151.27512 + <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.27513 + <paintPoints x1="1.0" y1="0.0" x2="1.0" y2="1.0"/>
151.27514 + </rectangle>
151.27515 + </shapes>
151.27516 + <effects/>
151.27517 + </layer>
151.27518 + </canvas>
151.27519 + </state>
151.27520 + </backgroundStates>
151.27521 + <foregroundStates/>
151.27522 + <borderStates/>
151.27523 + <regions/>
151.27524 + </region>
151.27525 + <uiComponent opaque="false" componentName="Tree.cellRenderer" type="javax.swing.JLabel" name="Label" ui="LabelUI" subregion="true">
151.27526 + <stateTypes/>
151.27527 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.27528 + <style>
151.27529 + <textForeground/>
151.27530 + <textBackground/>
151.27531 + <background/>
151.27532 + <uiproperties/>
151.27533 + </style>
151.27534 + <backgroundStates>
151.27535 + <state stateKeys="Disabled">
151.27536 + <style>
151.27537 + <textForeground>
151.27538 + <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.27539 + </textForeground>
151.27540 + <textBackground/>
151.27541 + <background/>
151.27542 + <inherit-textForeground>false</inherit-textForeground>
151.27543 + <uiproperties/>
151.27544 + </style>
151.27545 + <canvas>
151.27546 + <size width="100" height="30"/>
151.27547 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.27548 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.27549 + <layer name="Layer 1">
151.27550 + <opacity>1.0</opacity>
151.27551 + <fillOpacity>1.0</fillOpacity>
151.27552 + <blendingMode>NORMAL</blendingMode>
151.27553 + <locked>false</locked>
151.27554 + <visible>true</visible>
151.27555 + <shapes/>
151.27556 + <effects/>
151.27557 + </layer>
151.27558 + </canvas>
151.27559 + </state>
151.27560 + </backgroundStates>
151.27561 + <foregroundStates/>
151.27562 + <borderStates/>
151.27563 + <regions/>
151.27564 + </uiComponent>
151.27565 + <uiIconRegion name="leafIcon" subregion="true" key="leafIcon" basicKey="Tree.leafIcon">
151.27566 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.27567 + <style>
151.27568 + <textForeground/>
151.27569 + <textBackground/>
151.27570 + <background/>
151.27571 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.27572 + <uiproperties/>
151.27573 + </style>
151.27574 + <backgroundStates>
151.27575 + <state stateKeys="Enabled">
151.27576 + <style>
151.27577 + <textForeground/>
151.27578 + <textBackground/>
151.27579 + <background/>
151.27580 + <uiproperties/>
151.27581 + </style>
151.27582 + <canvas>
151.27583 + <size width="16" height="16"/>
151.27584 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.27585 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.27586 + <layer name="Button">
151.27587 + <opacity>1.0</opacity>
151.27588 + <fillOpacity>1.0</fillOpacity>
151.27589 + <blendingMode>NORMAL</blendingMode>
151.27590 + <locked>false</locked>
151.27591 + <visible>true</visible>
151.27592 + <shapes>
151.27593 + <path>
151.27594 + <matte red="255" green="255" blue="255" alpha="128" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-127"/>
151.27595 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.27596 + <points>
151.27597 + <point x="10.0" y="2.0" cp1x="10.0" cp1y="2.0" cp2x="10.0" cp2y="2.0"/>
151.27598 + <point x="10.0" y="1.0" cp1x="10.0" cp1y="1.0" cp2x="10.0" cp2y="1.0"/>
151.27599 + <point x="2.0" y="1.0" cp1x="2.0" cp1y="1.0" cp2x="2.0" cp2y="1.0"/>
151.27600 + <point x="2.0" y="15.0" cp1x="2.0" cp1y="15.0" cp2x="2.0" cp2y="15.0"/>
151.27601 + <point x="14.0" y="15.0" cp1x="14.0" cp1y="15.0" cp2x="14.0" cp2y="15.0"/>
151.27602 + <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
151.27603 + <point x="13.0" y="5.0" cp1x="13.0" cp1y="5.0" cp2x="13.0" cp2y="5.0"/>
151.27604 + <point x="13.0" y="14.0" cp1x="13.0" cp1y="14.0" cp2x="13.0" cp2y="14.0"/>
151.27605 + <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
151.27606 + <point x="3.0" y="2.0" cp1x="3.0" cp1y="2.0" cp2x="3.0" cp2y="2.0"/>
151.27607 + </points>
151.27608 + </path>
151.27609 + <path>
151.27610 + <matte red="138" green="157" blue="176" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.4198052" brightnessOffset="0.14117646" alphaOffset="0"/>
151.27611 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.27612 + <points>
151.27613 + <point x="10.0" y="1.0" cp1x="10.0" cp1y="1.0" cp2x="10.0" cp2y="1.0"/>
151.27614 + <point x="8.74074074074074" y="1.0" cp1x="8.74074074074074" cp1y="1.0" cp2x="8.74074074074074" cp2y="1.0"/>
151.27615 + <point x="8.777777777777777" y="6.222222222222219" cp1x="8.777777777777777" cp1y="6.222222222222219" cp2x="8.777777777777777" cp2y="6.222222222222219"/>
151.27616 + <point x="14.0" y="6.2037037037037" cp1x="14.0" cp1y="6.2037037037037" cp2x="14.0" cp2y="6.2037037037037"/>
151.27617 + <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
151.27618 + <point x="10.0" y="5.0" cp1x="10.0" cp1y="5.0" cp2x="10.0" cp2y="5.0"/>
151.27619 + </points>
151.27620 + </path>
151.27621 + <path>
151.27622 + <gradient cycleMethod="NO_CYCLE">
151.27623 + <stop position="0.0" midpoint="0.5">
151.27624 + <matte red="202" green="215" blue="229" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0077680945" saturationOffset="-0.51781034" brightnessOffset="0.3490196" alphaOffset="0"/>
151.27625 + </stop>
151.27626 + <stop position="1.0" midpoint="0.5">
151.27627 + <matte red="238" green="242" blue="247" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.013940871" saturationOffset="-0.599277" brightnessOffset="0.41960782" alphaOffset="0"/>
151.27628 + </stop>
151.27629 + </gradient>
151.27630 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.27631 + <points>
151.27632 + <point x="10.0" y="1.0" cp1x="10.0" cp1y="1.0" cp2x="10.0" cp2y="1.0"/>
151.27633 + <point x="2.0" y="1.0" cp1x="2.0" cp1y="1.0" cp2x="2.0" cp2y="1.0"/>
151.27634 + <point x="2.0" y="15.0" cp1x="2.0" cp1y="15.0" cp2x="2.0" cp2y="15.0"/>
151.27635 + <point x="14.0" y="15.0" cp1x="14.0" cp1y="15.0" cp2x="14.0" cp2y="15.0"/>
151.27636 + <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
151.27637 + <point x="10.0" y="5.0" cp1x="10.0" cp1y="5.0" cp2x="10.0" cp2y="5.0"/>
151.27638 + </points>
151.27639 + </path>
151.27640 + <path>
151.27641 + <gradient cycleMethod="NO_CYCLE">
151.27642 + <stop position="0.0" midpoint="0.5">
151.27643 + <matte red="236" green="245" blue="253" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.032679737" saturationOffset="-0.043332636" brightnessOffset="0.24705881" alphaOffset="0"/>
151.27644 + </stop>
151.27645 + <stop position="1.0" midpoint="0.5">
151.27646 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.27647 + </stop>
151.27648 + </gradient>
151.27649 + <paintPoints x1="0.04629629629629636" y1="0.9675925925925929" x2="0.48611111111111094" y2="0.5324074074074074"/>
151.27650 + <points>
151.27651 + <point x="10.0" y="1.0" cp1x="10.0" cp1y="1.0" cp2x="10.0" cp2y="1.0"/>
151.27652 + <point x="10.0" y="5.0" cp1x="10.0" cp1y="5.0" cp2x="10.0" cp2y="5.0"/>
151.27653 + <point x="14.0" y="5.0" cp1x="14.0" cp1y="5.0" cp2x="14.0" cp2y="5.0"/>
151.27654 + </points>
151.27655 + </path>
151.27656 + <rectangle x1="2.0" x2="14.0" y1="15.0" y2="16.0" rounding="0.0">
151.27657 + <matte red="97" green="98" blue="102" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.27658 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.27659 + </rectangle>
151.27660 + <path>
151.27661 + <matte red="149" green="151" blue="156" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.007936537" saturationOffset="-0.065654516" brightnessOffset="-0.13333333" alphaOffset="0"/>
151.27662 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.27663 + <points>
151.27664 + <point x="1.0" y="0.0" cp1x="1.0" cp1y="0.0" cp2x="1.0" cp2y="0.0"/>
151.27665 + <point x="1.0" y="16.0" cp1x="1.0" cp1y="16.0" cp2x="1.0" cp2y="16.0"/>
151.27666 + <point x="2.0" y="16.0" cp1x="2.0" cp1y="16.0" cp2x="2.0" cp2y="16.0"/>
151.27667 + <point x="2.0" y="1.0" cp1x="2.0" cp1y="1.0" cp2x="2.0" cp2y="1.0"/>
151.27668 + <point x="10.518518518518523" y="0.9999999999999999" cp1x="10.518518518518523" cp1y="0.9999999999999999" cp2x="10.518518518518523" cp2y="0.9999999999999999"/>
151.27669 + <point x="14.000000000000002" y="4.5" cp1x="14.000000000000002" cp1y="4.5" cp2x="14.000000000000002" cp2y="4.5"/>
151.27670 + <point x="14.0" y="16.0" cp1x="14.0" cp1y="16.0" cp2x="14.0" cp2y="16.0"/>
151.27671 + <point x="15.0" y="16.0" cp1x="15.0" cp1y="16.0" cp2x="15.0" cp2y="16.0"/>
151.27672 + <point x="15.0" y="4.444444444444441" cp1x="15.0" cp1y="4.444444444444441" cp2x="15.0" cp2y="4.444444444444441"/>
151.27673 + <point x="10.722222222222225" y="0.0" cp1x="10.722222222222225" cp1y="0.0" cp2x="10.722222222222225" cp2y="0.0"/>
151.27674 + </points>
151.27675 + </path>
151.27676 + </shapes>
151.27677 + <effects/>
151.27678 + </layer>
151.27679 + <templateLayer fileName="113fe634ff9.png">
151.27680 + <layer name="Template" type="template">
151.27681 + <opacity>1.0</opacity>
151.27682 + <fillOpacity>1.0</fillOpacity>
151.27683 + <blendingMode>NORMAL</blendingMode>
151.27684 + <locked>false</locked>
151.27685 + <visible>false</visible>
151.27686 + <shapes/>
151.27687 + <effects/>
151.27688 + </layer>
151.27689 + </templateLayer>
151.27690 + </canvas>
151.27691 + </state>
151.27692 + </backgroundStates>
151.27693 + <foregroundStates/>
151.27694 + <borderStates/>
151.27695 + <regions/>
151.27696 + </uiIconRegion>
151.27697 + <uiIconRegion name="closedIcon" subregion="true" key="closedIcon" basicKey="Tree.closedIcon">
151.27698 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.27699 + <style>
151.27700 + <textForeground/>
151.27701 + <textBackground/>
151.27702 + <background/>
151.27703 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.27704 + <uiproperties/>
151.27705 + </style>
151.27706 + <backgroundStates>
151.27707 + <state stateKeys="Enabled">
151.27708 + <style>
151.27709 + <textForeground/>
151.27710 + <textBackground/>
151.27711 + <background/>
151.27712 + <uiproperties/>
151.27713 + </style>
151.27714 + <canvas>
151.27715 + <size width="16" height="16"/>
151.27716 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.27717 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.27718 + <layer name="Button">
151.27719 + <opacity>1.0</opacity>
151.27720 + <fillOpacity>1.0</fillOpacity>
151.27721 + <blendingMode>NORMAL</blendingMode>
151.27722 + <locked>false</locked>
151.27723 + <visible>true</visible>
151.27724 + <shapes>
151.27725 + <path>
151.27726 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.27727 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.27728 + <points>
151.27729 + <point x="12.0" y="12.0" cp1x="12.0" cp1y="12.0" cp2x="12.0" cp2y="12.0"/>
151.27730 + </points>
151.27731 + </path>
151.27732 + <path>
151.27733 + <gradient cycleMethod="NO_CYCLE">
151.27734 + <stop position="0.0" midpoint="0.5">
151.27735 + <matte red="100" green="122" blue="143" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0027436614" saturationOffset="-0.335015" brightnessOffset="0.011764705" alphaOffset="0"/>
151.27736 + </stop>
151.27737 + <stop position="0.25449103" midpoint="0.5">
151.27738 + <matte red="111" green="130" blue="148" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0024294257" saturationOffset="-0.3857143" brightnessOffset="0.031372547" alphaOffset="0"/>
151.27739 + </stop>
151.27740 + <stop position="1.0" midpoint="0.5">
151.27741 + <matte red="76" green="91" blue="105" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0018081069" saturationOffset="-0.3595238" brightnessOffset="-0.13725492" alphaOffset="0"/>
151.27742 + </stop>
151.27743 + </gradient>
151.27744 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.27745 + <points>
151.27746 + <point x="13.0" y="5.0" cp1x="13.0" cp1y="5.0" cp2x="13.0" cp2y="5.0"/>
151.27747 + <point x="13.0" y="4.0" cp1x="13.0" cp1y="4.0" cp2x="13.0" cp2y="4.0"/>
151.27748 + <point x="3.7407407407407405" y="3.9999999999999996" cp1x="3.7407407407407405" cp1y="3.9999999999999996" cp2x="3.7407407407407405" cp2y="3.9999999999999996"/>
151.27749 + <point x="2.0185185185185137" y="10.05555555555555" cp1x="2.0185185185185137" cp1y="10.05555555555555" cp2x="2.0185185185185137" cp2y="10.05555555555555"/>
151.27750 + <point x="2.0" y="14.0" cp1x="2.0" cp1y="14.0" cp2x="2.0" cp2y="14.0"/>
151.27751 + <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
151.27752 + <point x="2.9629629629629632" y="12.129629629629632" cp1x="2.9629629629629632" cp1y="12.129629629629632" cp2x="2.9629629629629632" cp2y="12.129629629629632"/>
151.27753 + <point x="4.579999999999991" y="4.98" cp1x="4.579999999999991" cp1y="4.98" cp2x="4.579999999999991" cp2y="4.98"/>
151.27754 + </points>
151.27755 + </path>
151.27756 + <path>
151.27757 + <gradient cycleMethod="NO_CYCLE">
151.27758 + <stop position="0.0" midpoint="0.5">
151.27759 + <matte red="72" green="97" blue="120" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0012094378" saturationOffset="-0.23571429" brightnessOffset="-0.0784314" alphaOffset="0"/>
151.27760 + </stop>
151.27761 + <stop position="1.0" midpoint="0.5">
151.27762 + <matte red="35" green="55" blue="73" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.115166366" brightnessOffset="-0.2627451" alphaOffset="0"/>
151.27763 + </stop>
151.27764 + </gradient>
151.27765 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.27766 + <points>
151.27767 + <point x="16.0" y="4.0" cp1x="16.0" cp1y="4.0" cp2x="16.0" cp2y="4.0"/>
151.27768 + <point x="16.0" y="5.0" cp1x="16.0" cp1y="5.0" cp2x="16.0" cp2y="5.0"/>
151.27769 + <point x="13.0" y="5.0" cp1x="13.0" cp1y="5.0" cp2x="13.0" cp2y="5.0"/>
151.27770 + <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="13.0" cp2y="3.0"/>
151.27771 + <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
151.27772 + <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="7.0" cp2y="2.0"/>
151.27773 + <point x="7.0" y="1.0" cp1x="7.0" cp1y="1.0" cp2x="7.0" cp2y="1.0"/>
151.27774 + <point x="2.9444444444444438" y="1.0185185185185186" cp1x="2.9444444444444438" cp1y="1.0185185185185186" cp2x="2.9444444444444438" cp2y="1.0185185185185186"/>
151.27775 + <point x="2.9814814814814814" y="1.7407407407407403" cp1x="2.9814814814814814" cp1y="1.7407407407407403" cp2x="2.9814814814814814" cp2y="1.7407407407407403"/>
151.27776 + <point x="1.7407407407407407" y="3.0" cp1x="1.7407407407407407" cp1y="3.0" cp2x="1.7407407407407407" cp2y="3.0"/>
151.27777 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
151.27778 + <point x="1.0" y="14.0" cp1x="1.0" cp1y="14.0" cp2x="1.0" cp2y="14.0"/>
151.27779 + <point x="14.0" y="14.0" cp1x="14.0" cp1y="14.0" cp2x="14.0" cp2y="14.0"/>
151.27780 + <point x="14.0" y="7.0" cp1x="14.0" cp1y="7.0" cp2x="14.0" cp2y="7.0"/>
151.27781 + <point x="14.87037037037037" y="5.962962962962965" cp1x="14.87037037037037" cp1y="5.962962962962965" cp2x="14.87037037037037" cp2y="5.962962962962965"/>
151.27782 + <point x="15.0" y="5.0" cp1x="15.0" cp1y="5.0" cp2x="15.0" cp2y="5.0"/>
151.27783 + <point x="16.0" y="5.0" cp1x="16.0" cp1y="5.0" cp2x="16.0" cp2y="5.0"/>
151.27784 + <point x="15.462962962962967" y="6.129629629629629" cp1x="15.462962962962967" cp1y="6.129629629629629" cp2x="15.462962962962967" cp2y="6.129629629629629"/>
151.27785 + <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
151.27786 + <point x="15.0" y="14.0" cp1x="15.0" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
151.27787 + <point x="14.0" y="15.0" cp1x="14.0" cp1y="15.0" cp2x="14.0" cp2y="15.0"/>
151.27788 + <point x="1.0" y="15.0" cp1x="1.0" cp1y="15.0" cp2x="1.0" cp2y="15.0"/>
151.27789 + <point x="0.0" y="14.0" cp1x="0.0" cp1y="14.0" cp2x="0.0" cp2y="14.0"/>
151.27790 + <point x="0.0" y="3.25925925925926" cp1x="0.0" cp1y="3.25925925925926" cp2x="0.0" cp2y="3.25925925925926"/>
151.27791 + <point x="3.1851851851851856" y="0.0" cp1x="3.1851851851851856" cp1y="0.0" cp2x="3.1851851851851856" cp2y="0.0"/>
151.27792 + <point x="7.0" y="0.0" cp1x="7.0" cp1y="0.0" cp2x="7.0" cp2y="0.0"/>
151.27793 + <point x="8.55555555555555" y="2.0000000000000004" cp1x="8.55555555555555" cp1y="2.0000000000000004" cp2x="8.55555555555555" cp2y="2.0000000000000004"/>
151.27794 + <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="13.0" cp2y="2.0"/>
151.27795 + <point x="14.0" y="3.0" cp1x="14.0" cp1y="3.0" cp2x="14.0" cp2y="3.0"/>
151.27796 + <point x="14.0" y="4.0" cp1x="14.0" cp1y="4.0" cp2x="14.0" cp2y="4.0"/>
151.27797 + </points>
151.27798 + </path>
151.27799 + </shapes>
151.27800 + <effects/>
151.27801 + </layer>
151.27802 + <layer name="Layer 3">
151.27803 + <opacity>1.0</opacity>
151.27804 + <fillOpacity>1.0</fillOpacity>
151.27805 + <blendingMode>NORMAL</blendingMode>
151.27806 + <locked>false</locked>
151.27807 + <visible>true</visible>
151.27808 + <shapes>
151.27809 + <rectangle x1="8.0" x2="13.0" y1="3.0" y2="4.0" rounding="0.0">
151.27810 + <matte red="255" green="255" blue="255" alpha="155" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-100"/>
151.27811 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.27812 + </rectangle>
151.27813 + <rectangle x1="3.0" x2="7.0" y1="1.0" y2="2.0" rounding="0.0">
151.27814 + <matte red="255" green="255" blue="255" alpha="205" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-50"/>
151.27815 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.27816 + </rectangle>
151.27817 + <rectangle x1="1.0" x2="2.0" y1="3.0" y2="4.0" rounding="0.0">
151.27818 + <matte red="255" green="255" blue="255" alpha="130" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-125"/>
151.27819 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.27820 + </rectangle>
151.27821 + <path>
151.27822 + <gradient cycleMethod="NO_CYCLE">
151.27823 + <stop position="0.0" midpoint="0.5">
151.27824 + <matte red="202" green="215" blue="229" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0077680945" saturationOffset="-0.51781034" brightnessOffset="0.3490196" alphaOffset="0"/>
151.27825 + </stop>
151.27826 + <stop position="1.0" midpoint="0.5">
151.27827 + <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
151.27828 + </stop>
151.27829 + </gradient>
151.27830 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.27831 + <points>
151.27832 + <point x="1.0" y="14.0" cp1x="1.0" cp1y="14.0" cp2x="1.0" cp2y="14.0"/>
151.27833 + <point x="2.0" y="14.0" cp1x="2.0" cp1y="14.0" cp2x="2.0" cp2y="14.0"/>
151.27834 + <point x="2.041666666666667" y="10.187499999999998" cp1x="2.041666666666667" cp1y="10.187499999999998" cp2x="2.041666666666667" cp2y="10.187499999999998"/>
151.27835 + <point x="3.979166666666668" y="4.0" cp1x="3.979166666666668" cp1y="4.0" cp2x="3.979166666666668" cp2y="4.0"/>
151.27836 + <point x="13.0" y="4.0" cp1x="13.0" cp1y="4.0" cp2x="13.0" cp2y="4.0"/>
151.27837 + <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="13.0" cp2y="3.0"/>
151.27838 + <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
151.27839 + <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="7.0" cp2y="2.0"/>
151.27840 + <point x="7.0" y="1.0" cp1x="7.0" cp1y="1.0" cp2x="7.0" cp2y="1.0"/>
151.27841 + <point x="3.0" y="1.0" cp1x="3.0" cp1y="1.0" cp2x="3.0" cp2y="1.0"/>
151.27842 + <point x="3.0" y="2.0" cp1x="3.0" cp1y="2.0" cp2x="3.0" cp2y="2.0"/>
151.27843 + <point x="2.0" y="3.0" cp1x="2.0" cp1y="3.0" cp2x="2.0" cp2y="3.0"/>
151.27844 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
151.27845 + </points>
151.27846 + </path>
151.27847 + <path>
151.27848 + <gradient cycleMethod="NO_CYCLE">
151.27849 + <stop position="0.04191617" midpoint="0.5">
151.27850 + <matte red="178" green="198" blue="216" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.45978838" brightnessOffset="0.2980392" alphaOffset="0"/>
151.27851 + </stop>
151.27852 + <stop position="0.16467066" midpoint="0.5">
151.27853 + <matte red="134" green="162" blue="188" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.34848025" brightnessOffset="0.18823528" alphaOffset="0"/>
151.27854 + </stop>
151.27855 + <stop position="0.3263473" midpoint="0.5">
151.27856 + <matte red="111" green="139" blue="165" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.30844158" brightnessOffset="0.09803921" alphaOffset="0"/>
151.27857 + </stop>
151.27858 + <stop position="1.0" midpoint="0.5">
151.27859 + <matte red="95" green="123" blue="149" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.27329817" brightnessOffset="0.035294116" alphaOffset="0"/>
151.27860 + </stop>
151.27861 + </gradient>
151.27862 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.27863 + <points>
151.27864 + <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
151.27865 + <point x="3.0185185185185186" y="10.055555555555559" cp1x="3.0185185185185186" cp1y="10.055555555555559" cp2x="3.0185185185185186" cp2y="10.055555555555559"/>
151.27866 + <point x="4.0" y="5.0" cp1x="4.0" cp1y="5.0" cp2x="4.0" cp2y="5.0"/>
151.27867 + <point x="15.0" y="5.0" cp1x="15.0" cp1y="5.0" cp2x="15.0" cp2y="5.0"/>
151.27868 + <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
151.27869 + <point x="14.0" y="14.0" cp1x="14.0" cp1y="14.0" cp2x="14.0" cp2y="14.0"/>
151.27870 + </points>
151.27871 + </path>
151.27872 + <path>
151.27873 + <matte red="121" green="126" blue="136" alpha="156" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="-0.21" alphaOffset="-99"/>
151.27874 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.27875 + <points>
151.27876 + <point x="0.0" y="13.0" cp1x="0.0" cp1y="13.0" cp2x="0.0" cp2y="13.0"/>
151.27877 + <point x="0.0" y="14.0" cp1x="0.0" cp1y="14.0" cp2x="0.0" cp2y="14.0"/>
151.27878 + <point x="1.0" y="16.0" cp1x="1.0" cp1y="16.0" cp2x="1.0" cp2y="16.0"/>
151.27879 + <point x="14.0" y="16.0" cp1x="14.0" cp1y="16.0" cp2x="14.0" cp2y="16.0"/>
151.27880 + <point x="15.0" y="14.0" cp1x="15.0" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
151.27881 + <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
151.27882 + </points>
151.27883 + </path>
151.27884 + </shapes>
151.27885 + <effects/>
151.27886 + </layer>
151.27887 + <templateLayer fileName="113fe6c9b39.png">
151.27888 + <layer name="Template" type="template">
151.27889 + <opacity>1.0</opacity>
151.27890 + <fillOpacity>1.0</fillOpacity>
151.27891 + <blendingMode>NORMAL</blendingMode>
151.27892 + <locked>false</locked>
151.27893 + <visible>false</visible>
151.27894 + <shapes/>
151.27895 + <effects/>
151.27896 + </layer>
151.27897 + </templateLayer>
151.27898 + </canvas>
151.27899 + </state>
151.27900 + </backgroundStates>
151.27901 + <foregroundStates/>
151.27902 + <borderStates/>
151.27903 + <regions/>
151.27904 + </uiIconRegion>
151.27905 + <uiIconRegion name="openIcon" subregion="true" key="openIcon" basicKey="Tree.openIcon">
151.27906 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.27907 + <style>
151.27908 + <textForeground/>
151.27909 + <textBackground/>
151.27910 + <background/>
151.27911 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.27912 + <uiproperties/>
151.27913 + </style>
151.27914 + <backgroundStates>
151.27915 + <state stateKeys="Enabled">
151.27916 + <style>
151.27917 + <textForeground/>
151.27918 + <textBackground/>
151.27919 + <background/>
151.27920 + <uiproperties/>
151.27921 + </style>
151.27922 + <canvas>
151.27923 + <size width="16" height="16"/>
151.27924 + <nextLayerNameIndex>4</nextLayerNameIndex>
151.27925 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.27926 + <layer name="Button">
151.27927 + <opacity>1.0</opacity>
151.27928 + <fillOpacity>1.0</fillOpacity>
151.27929 + <blendingMode>NORMAL</blendingMode>
151.27930 + <locked>false</locked>
151.27931 + <visible>true</visible>
151.27932 + <shapes>
151.27933 + <path>
151.27934 + <matte red="255" green="200" blue="0" alpha="255" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.27935 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.27936 + <points>
151.27937 + <point x="12.0" y="12.0" cp1x="12.0" cp1y="12.0" cp2x="12.0" cp2y="12.0"/>
151.27938 + </points>
151.27939 + </path>
151.27940 + <path>
151.27941 + <gradient cycleMethod="NO_CYCLE">
151.27942 + <stop position="0.0" midpoint="0.5">
151.27943 + <matte red="93" green="113" blue="133" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.33496243" brightnessOffset="-0.027450979" alphaOffset="0"/>
151.27944 + </stop>
151.27945 + <stop position="1.0" midpoint="0.5">
151.27946 + <matte red="82" green="98" blue="113" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0019934773" saturationOffset="-0.361378" brightnessOffset="-0.10588238" alphaOffset="0"/>
151.27947 + </stop>
151.27948 + </gradient>
151.27949 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.27950 + <points>
151.27951 + <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
151.27952 + <point x="13.0" y="6.0" cp1x="13.0" cp1y="6.0" cp2x="13.0" cp2y="6.0"/>
151.27953 + <point x="3.6999999999999997" y="6.0" cp1x="3.6999999999999997" cp1y="6.0" cp2x="3.6999999999999997" cp2y="6.0"/>
151.27954 + <point x="2.0" y="11.0" cp1x="2.0" cp1y="11.0" cp2x="2.0" cp2y="11.0"/>
151.27955 + <point x="2.0" y="14.0" cp1x="2.0" cp1y="14.0" cp2x="2.0" cp2y="14.0"/>
151.27956 + <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
151.27957 + <point x="2.9629629629629632" y="12.129629629629632" cp1x="2.9629629629629632" cp1y="12.129629629629632" cp2x="2.9629629629629632" cp2y="12.129629629629632"/>
151.27958 + <point x="4.0" y="7.0" cp1x="4.0" cp1y="7.0" cp2x="4.0" cp2y="7.0"/>
151.27959 + </points>
151.27960 + </path>
151.27961 + <path>
151.27962 + <gradient cycleMethod="NO_CYCLE">
151.27963 + <stop position="0.0" midpoint="0.5">
151.27964 + <matte red="72" green="97" blue="120" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0012094378" saturationOffset="-0.23571429" brightnessOffset="-0.0784314" alphaOffset="0"/>
151.27965 + </stop>
151.27966 + <stop position="1.0" midpoint="0.5">
151.27967 + <matte red="35" green="55" blue="73" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.115166366" brightnessOffset="-0.2627451" alphaOffset="0"/>
151.27968 + </stop>
151.27969 + </gradient>
151.27970 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.27971 + <points>
151.27972 + <point x="16.0" y="6.0" cp1x="16.0" cp1y="6.0" cp2x="16.0" cp2y="6.0"/>
151.27973 + <point x="16.0" y="7.0" cp1x="16.0" cp1y="7.0" cp2x="16.0" cp2y="7.0"/>
151.27974 + <point x="13.0" y="7.0" cp1x="13.0" cp1y="7.0" cp2x="13.0" cp2y="7.0"/>
151.27975 + <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="13.0" cp2y="3.0"/>
151.27976 + <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
151.27977 + <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="7.0" cp2y="2.0"/>
151.27978 + <point x="7.0" y="1.0" cp1x="7.0" cp1y="1.0" cp2x="7.0" cp2y="1.0"/>
151.27979 + <point x="2.9444444444444438" y="1.0185185185185186" cp1x="2.9444444444444438" cp1y="1.0185185185185186" cp2x="2.9444444444444438" cp2y="1.0185185185185186"/>
151.27980 + <point x="2.9814814814814814" y="1.7407407407407403" cp1x="2.9814814814814814" cp1y="1.7407407407407403" cp2x="2.9814814814814814" cp2y="1.7407407407407403"/>
151.27981 + <point x="1.7407407407407407" y="3.0" cp1x="1.7407407407407407" cp1y="3.0" cp2x="1.7407407407407407" cp2y="3.0"/>
151.27982 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
151.27983 + <point x="1.0" y="14.0" cp1x="1.0" cp1y="14.0" cp2x="1.0" cp2y="14.0"/>
151.27984 + <point x="14.0" y="14.0" cp1x="14.0" cp1y="14.0" cp2x="14.0" cp2y="14.0"/>
151.27985 + <point x="14.0" y="11.0" cp1x="14.0" cp1y="11.0" cp2x="14.0" cp2y="11.0"/>
151.27986 + <point x="14.0" y="10.0" cp1x="14.0" cp1y="10.0" cp2x="14.0" cp2y="10.0"/>
151.27987 + <point x="15.579999999999997" y="7.120000000000004" cp1x="15.579999999999997" cp1y="7.120000000000004" cp2x="15.579999999999997" cp2y="7.120000000000004"/>
151.27988 + <point x="15.900000000000007" y="7.260000000000004" cp1x="15.900000000000007" cp1y="7.260000000000004" cp2x="15.900000000000007" cp2y="7.260000000000004"/>
151.27989 + <point x="15.0" y="10.0" cp1x="15.0" cp1y="10.0" cp2x="15.0" cp2y="10.0"/>
151.27990 + <point x="15.0" y="11.0" cp1x="15.0" cp1y="11.0" cp2x="15.0" cp2y="11.0"/>
151.27991 + <point x="15.0" y="14.0" cp1x="15.0" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
151.27992 + <point x="14.0" y="15.0" cp1x="14.0" cp1y="15.0" cp2x="14.0" cp2y="15.0"/>
151.27993 + <point x="1.0" y="15.0" cp1x="1.0" cp1y="15.0" cp2x="1.0" cp2y="15.0"/>
151.27994 + <point x="0.0" y="14.0" cp1x="0.0" cp1y="14.0" cp2x="0.0" cp2y="14.0"/>
151.27995 + <point x="0.0" y="3.25925925925926" cp1x="0.0" cp1y="3.25925925925926" cp2x="0.0" cp2y="3.25925925925926"/>
151.27996 + <point x="3.1851851851851856" y="0.0" cp1x="3.1851851851851856" cp1y="0.0" cp2x="3.1851851851851856" cp2y="0.0"/>
151.27997 + <point x="7.0" y="0.0" cp1x="7.0" cp1y="0.0" cp2x="7.0" cp2y="0.0"/>
151.27998 + <point x="8.55555555555555" y="2.0000000000000004" cp1x="8.55555555555555" cp1y="2.0000000000000004" cp2x="8.55555555555555" cp2y="2.0000000000000004"/>
151.27999 + <point x="13.0" y="2.0" cp1x="13.0" cp1y="2.0" cp2x="13.0" cp2y="2.0"/>
151.28000 + <point x="14.0" y="3.0" cp1x="14.0" cp1y="3.0" cp2x="14.0" cp2y="3.0"/>
151.28001 + <point x="14.0" y="6.0" cp1x="14.0" cp1y="6.0" cp2x="14.0" cp2y="6.0"/>
151.28002 + </points>
151.28003 + </path>
151.28004 + </shapes>
151.28005 + <effects/>
151.28006 + </layer>
151.28007 + <layer name="Layer 3">
151.28008 + <opacity>1.0</opacity>
151.28009 + <fillOpacity>1.0</fillOpacity>
151.28010 + <blendingMode>NORMAL</blendingMode>
151.28011 + <locked>false</locked>
151.28012 + <visible>true</visible>
151.28013 + <shapes>
151.28014 + <rectangle x1="8.0" x2="13.0" y1="3.0" y2="4.0" rounding="0.0">
151.28015 + <matte red="255" green="255" blue="255" alpha="155" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-100"/>
151.28016 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.28017 + </rectangle>
151.28018 + <rectangle x1="3.0" x2="7.0" y1="1.0" y2="2.0" rounding="0.0">
151.28019 + <matte red="255" green="255" blue="255" alpha="205" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-50"/>
151.28020 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.28021 + </rectangle>
151.28022 + <rectangle x1="1.0" x2="2.0" y1="3.0" y2="4.0" rounding="0.0">
151.28023 + <matte red="255" green="255" blue="255" alpha="130" uiDefaultParentName="nimbusBase" hueOffset="0.0" saturationOffset="-0.6357143" brightnessOffset="0.45098037" alphaOffset="-125"/>
151.28024 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.28025 + </rectangle>
151.28026 + <path>
151.28027 + <gradient cycleMethod="NO_CYCLE">
151.28028 + <stop position="0.0" midpoint="0.5">
151.28029 + <matte red="202" green="215" blue="229" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0077680945" saturationOffset="-0.51781034" brightnessOffset="0.3490196" alphaOffset="0"/>
151.28030 + </stop>
151.28031 + <stop position="1.0" midpoint="0.5">
151.28032 + <matte red="248" green="250" blue="252" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.004681647" saturationOffset="-0.6198413" brightnessOffset="0.43921566" alphaOffset="0"/>
151.28033 + </stop>
151.28034 + </gradient>
151.28035 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.28036 + <points>
151.28037 + <point x="1.0" y="14.0" cp1x="1.0" cp1y="14.0" cp2x="1.0" cp2y="14.0"/>
151.28038 + <point x="2.0" y="14.0" cp1x="2.0" cp1y="14.0" cp2x="2.0" cp2y="14.0"/>
151.28039 + <point x="2.0" y="11.0" cp1x="2.0" cp1y="11.0" cp2x="2.0" cp2y="11.0"/>
151.28040 + <point x="4.0" y="6.0" cp1x="4.0" cp1y="6.0" cp2x="4.0" cp2y="6.0"/>
151.28041 + <point x="13.0" y="6.0" cp1x="13.0" cp1y="6.0" cp2x="13.0" cp2y="6.0"/>
151.28042 + <point x="13.0" y="3.0" cp1x="13.0" cp1y="3.0" cp2x="13.0" cp2y="3.0"/>
151.28043 + <point x="8.0" y="3.0" cp1x="8.0" cp1y="3.0" cp2x="8.0" cp2y="3.0"/>
151.28044 + <point x="7.0" y="2.0" cp1x="7.0" cp1y="2.0" cp2x="7.0" cp2y="2.0"/>
151.28045 + <point x="7.0" y="1.0" cp1x="7.0" cp1y="1.0" cp2x="7.0" cp2y="1.0"/>
151.28046 + <point x="3.0" y="1.0" cp1x="3.0" cp1y="1.0" cp2x="3.0" cp2y="1.0"/>
151.28047 + <point x="3.0" y="2.0" cp1x="3.0" cp1y="2.0" cp2x="3.0" cp2y="2.0"/>
151.28048 + <point x="2.0" y="3.0" cp1x="2.0" cp1y="3.0" cp2x="2.0" cp2y="3.0"/>
151.28049 + <point x="1.0" y="3.0" cp1x="1.0" cp1y="3.0" cp2x="1.0" cp2y="3.0"/>
151.28050 + </points>
151.28051 + </path>
151.28052 + <path>
151.28053 + <gradient cycleMethod="NO_CYCLE">
151.28054 + <stop position="0.04191617" midpoint="0.5">
151.28055 + <matte red="178" green="198" blue="216" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="2.9569864E-4" saturationOffset="-0.45978838" brightnessOffset="0.2980392" alphaOffset="0"/>
151.28056 + </stop>
151.28057 + <stop position="0.16467066" midpoint="0.5">
151.28058 + <matte red="134" green="162" blue="188" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.34848025" brightnessOffset="0.18823528" alphaOffset="0"/>
151.28059 + </stop>
151.28060 + <stop position="0.3263473" midpoint="0.5">
151.28061 + <matte red="111" green="139" blue="165" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.30844158" brightnessOffset="0.09803921" alphaOffset="0"/>
151.28062 + </stop>
151.28063 + <stop position="1.0" midpoint="0.5">
151.28064 + <matte red="95" green="123" blue="149" alpha="255" uiDefaultParentName="nimbusBase" hueOffset="0.0015952587" saturationOffset="-0.27329817" brightnessOffset="0.035294116" alphaOffset="0"/>
151.28065 + </stop>
151.28066 + </gradient>
151.28067 + <paintPoints x1="0.5" y1="0.0" x2="0.5" y2="1.0"/>
151.28068 + <points>
151.28069 + <point x="3.0" y="14.0" cp1x="3.0" cp1y="14.0" cp2x="3.0" cp2y="14.0"/>
151.28070 + <point x="3.0" y="12.0" cp1x="3.0" cp1y="12.0" cp2x="3.0" cp2y="12.0"/>
151.28071 + <point x="4.0" y="7.0" cp1x="4.0" cp1y="7.0" cp2x="4.0" cp2y="7.0"/>
151.28072 + <point x="15.0" y="7.0" cp1x="15.0" cp1y="7.0" cp2x="15.0" cp2y="7.0"/>
151.28073 + <point x="15.0" y="9.0" cp1x="15.0" cp1y="9.0" cp2x="15.0" cp2y="9.0"/>
151.28074 + <point x="14.0" y="14.0" cp1x="14.0" cp1y="14.0" cp2x="14.0" cp2y="14.0"/>
151.28075 + </points>
151.28076 + </path>
151.28077 + <path>
151.28078 + <matte red="121" green="126" blue="136" alpha="156" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="-0.21" alphaOffset="-99"/>
151.28079 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.28080 + <points>
151.28081 + <point x="0.0" y="13.0" cp1x="0.0" cp1y="13.0" cp2x="0.0" cp2y="13.0"/>
151.28082 + <point x="0.0" y="14.0" cp1x="0.0" cp1y="14.0" cp2x="0.0" cp2y="14.0"/>
151.28083 + <point x="1.0" y="16.0" cp1x="1.0" cp1y="16.0" cp2x="1.0" cp2y="16.0"/>
151.28084 + <point x="14.0" y="16.0" cp1x="14.0" cp1y="16.0" cp2x="14.0" cp2y="16.0"/>
151.28085 + <point x="15.0" y="14.0" cp1x="15.0" cp1y="14.0" cp2x="15.0" cp2y="14.0"/>
151.28086 + <point x="15.0" y="13.0" cp1x="15.0" cp1y="13.0" cp2x="15.0" cp2y="13.0"/>
151.28087 + </points>
151.28088 + </path>
151.28089 + </shapes>
151.28090 + <effects/>
151.28091 + </layer>
151.28092 + <templateLayer fileName="113fe83f65c.png">
151.28093 + <layer name="Template" type="template">
151.28094 + <opacity>1.0</opacity>
151.28095 + <fillOpacity>1.0</fillOpacity>
151.28096 + <blendingMode>NORMAL</blendingMode>
151.28097 + <locked>false</locked>
151.28098 + <visible>false</visible>
151.28099 + <shapes/>
151.28100 + <effects/>
151.28101 + </layer>
151.28102 + </templateLayer>
151.28103 + </canvas>
151.28104 + </state>
151.28105 + </backgroundStates>
151.28106 + <foregroundStates/>
151.28107 + <borderStates/>
151.28108 + <regions/>
151.28109 + </uiIconRegion>
151.28110 + <uiIconRegion name="collapsedIcon" subregion="true" key="collapsedIcon">
151.28111 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.28112 + <style>
151.28113 + <textForeground/>
151.28114 + <textBackground/>
151.28115 + <background/>
151.28116 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.28117 + <uiproperties/>
151.28118 + </style>
151.28119 + <backgroundStates>
151.28120 + <state stateKeys="Enabled">
151.28121 + <style>
151.28122 + <textForeground/>
151.28123 + <textBackground/>
151.28124 + <background/>
151.28125 + <uiproperties/>
151.28126 + </style>
151.28127 + <canvas>
151.28128 + <size width="18" height="7"/>
151.28129 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.28130 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.28131 + <layer name="Button">
151.28132 + <opacity>1.0</opacity>
151.28133 + <fillOpacity>1.0</fillOpacity>
151.28134 + <blendingMode>NORMAL</blendingMode>
151.28135 + <locked>false</locked>
151.28136 + <visible>true</visible>
151.28137 + <shapes>
151.28138 + <path>
151.28139 + <matte red="102" green="102" blue="102" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.34509805" alphaOffset="0"/>
151.28140 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.28141 + <points>
151.28142 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.28143 + <point x="6.918032786885245" y="3.5081967213114753" cp1x="6.918032786885245" cp1y="3.5081967213114753" cp2x="6.918032786885245" cp2y="3.5081967213114753"/>
151.28144 + <point x="0.0" y="7.0" cp1x="0.0" cp1y="7.0" cp2x="0.0" cp2y="7.0"/>
151.28145 + </points>
151.28146 + </path>
151.28147 + </shapes>
151.28148 + <effects/>
151.28149 + </layer>
151.28150 + <templateLayer fileName="113fe61c072.png">
151.28151 + <layer name="Template" type="template">
151.28152 + <opacity>1.0</opacity>
151.28153 + <fillOpacity>1.0</fillOpacity>
151.28154 + <blendingMode>NORMAL</blendingMode>
151.28155 + <locked>false</locked>
151.28156 + <visible>false</visible>
151.28157 + <shapes/>
151.28158 + <effects/>
151.28159 + </layer>
151.28160 + </templateLayer>
151.28161 + </canvas>
151.28162 + </state>
151.28163 + <state stateKeys="Enabled+Selected">
151.28164 + <style>
151.28165 + <textForeground/>
151.28166 + <textBackground/>
151.28167 + <background/>
151.28168 + <uiproperties/>
151.28169 + </style>
151.28170 + <canvas>
151.28171 + <size width="18" height="7"/>
151.28172 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.28173 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.28174 + <layer name="Button">
151.28175 + <opacity>1.0</opacity>
151.28176 + <fillOpacity>1.0</fillOpacity>
151.28177 + <blendingMode>NORMAL</blendingMode>
151.28178 + <locked>false</locked>
151.28179 + <visible>true</visible>
151.28180 + <shapes>
151.28181 + <path>
151.28182 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.28183 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.28184 + <points>
151.28185 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.28186 + <point x="6.918032786885245" y="3.5081967213114753" cp1x="6.918032786885245" cp1y="3.5081967213114753" cp2x="6.918032786885245" cp2y="3.5081967213114753"/>
151.28187 + <point x="0.0" y="7.0" cp1x="0.0" cp1y="7.0" cp2x="0.0" cp2y="7.0"/>
151.28188 + </points>
151.28189 + </path>
151.28190 + </shapes>
151.28191 + <effects/>
151.28192 + </layer>
151.28193 + </canvas>
151.28194 + </state>
151.28195 + </backgroundStates>
151.28196 + <foregroundStates/>
151.28197 + <borderStates/>
151.28198 + <regions/>
151.28199 + </uiIconRegion>
151.28200 + <uiIconRegion name="expandedIcon" subregion="true" key="expandedIcon">
151.28201 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.28202 + <style>
151.28203 + <textForeground/>
151.28204 + <textBackground/>
151.28205 + <background/>
151.28206 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.28207 + <uiproperties/>
151.28208 + </style>
151.28209 + <backgroundStates>
151.28210 + <state stateKeys="Enabled">
151.28211 + <style>
151.28212 + <textForeground/>
151.28213 + <textBackground/>
151.28214 + <background/>
151.28215 + <uiproperties/>
151.28216 + </style>
151.28217 + <canvas>
151.28218 + <size width="18" height="7"/>
151.28219 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.28220 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.28221 + <layer name="Button">
151.28222 + <opacity>1.0</opacity>
151.28223 + <fillOpacity>1.0</fillOpacity>
151.28224 + <blendingMode>NORMAL</blendingMode>
151.28225 + <locked>false</locked>
151.28226 + <visible>true</visible>
151.28227 + <shapes>
151.28228 + <path>
151.28229 + <matte red="102" green="102" blue="102" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="-0.6111111" saturationOffset="-0.110526316" brightnessOffset="-0.34509805" alphaOffset="0"/>
151.28230 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.28231 + <points>
151.28232 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.28233 + <point x="7.0" y="0.0" cp1x="7.0" cp1y="0.0" cp2x="7.0" cp2y="0.0"/>
151.28234 + <point x="3.5409836065573774" y="6.950819672131146" cp1x="3.5409836065573774" cp1y="6.950819672131146" cp2x="3.5409836065573774" cp2y="6.950819672131146"/>
151.28235 + </points>
151.28236 + </path>
151.28237 + </shapes>
151.28238 + <effects/>
151.28239 + </layer>
151.28240 + <templateLayer fileName="113fe6289fa.png">
151.28241 + <layer name="Template" type="template">
151.28242 + <opacity>1.0</opacity>
151.28243 + <fillOpacity>1.0</fillOpacity>
151.28244 + <blendingMode>NORMAL</blendingMode>
151.28245 + <locked>false</locked>
151.28246 + <visible>false</visible>
151.28247 + <shapes/>
151.28248 + <effects/>
151.28249 + </layer>
151.28250 + </templateLayer>
151.28251 + </canvas>
151.28252 + </state>
151.28253 + <state stateKeys="Enabled+Selected">
151.28254 + <style>
151.28255 + <textForeground/>
151.28256 + <textBackground/>
151.28257 + <background/>
151.28258 + <uiproperties/>
151.28259 + </style>
151.28260 + <canvas>
151.28261 + <size width="18" height="7"/>
151.28262 + <nextLayerNameIndex>3</nextLayerNameIndex>
151.28263 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.28264 + <layer name="Button">
151.28265 + <opacity>1.0</opacity>
151.28266 + <fillOpacity>1.0</fillOpacity>
151.28267 + <blendingMode>NORMAL</blendingMode>
151.28268 + <locked>false</locked>
151.28269 + <visible>true</visible>
151.28270 + <shapes>
151.28271 + <path>
151.28272 + <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusBlueGrey" hueOffset="0.0" saturationOffset="-0.110526316" brightnessOffset="0.25490195" alphaOffset="0"/>
151.28273 + <paintPoints x1="0.25" y1="0.0" x2="0.75" y2="1.0"/>
151.28274 + <points>
151.28275 + <point x="0.0" y="0.0" cp1x="0.0" cp1y="0.0" cp2x="0.0" cp2y="0.0"/>
151.28276 + <point x="7.0" y="0.0" cp1x="7.0" cp1y="0.0" cp2x="7.0" cp2y="0.0"/>
151.28277 + <point x="3.5409836065573774" y="6.950819672131146" cp1x="3.5409836065573774" cp1y="6.950819672131146" cp2x="3.5409836065573774" cp2y="6.950819672131146"/>
151.28278 + </points>
151.28279 + </path>
151.28280 + </shapes>
151.28281 + <effects/>
151.28282 + </layer>
151.28283 + </canvas>
151.28284 + </state>
151.28285 + </backgroundStates>
151.28286 + <foregroundStates/>
151.28287 + <borderStates/>
151.28288 + <regions/>
151.28289 + </uiIconRegion>
151.28290 + </regions>
151.28291 + </uiComponent>
151.28292 + <uiComponent opaque="true" type="javax.swing.JRootPane" name="RootPane" ui="RootPaneUI" subregion="false">
151.28293 + <stateTypes/>
151.28294 + <contentMargins top="0" bottom="0" left="0" right="0"/>
151.28295 + <style>
151.28296 + <textForeground/>
151.28297 + <textBackground/>
151.28298 + <background>
151.28299 + <matte red="214" green="217" blue="223" alpha="255" uiDefaultParentName="control" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
151.28300 + </background>
151.28301 + <inherit-background>false</inherit-background>
151.28302 + <cacheSettingsInherited>false</cacheSettingsInherited>
151.28303 + <cacheMode>NO_CACHING</cacheMode>
151.28304 + <uiproperties/>
151.28305 + </style>
151.28306 + <backgroundStates>
151.28307 + <state stateKeys="Enabled">
151.28308 + <style>
151.28309 + <textForeground/>
151.28310 + <textBackground/>
151.28311 + <background/>
151.28312 + <uiproperties/>
151.28313 + </style>
151.28314 + <canvas>
151.28315 + <size width="100" height="30"/>
151.28316 + <nextLayerNameIndex>2</nextLayerNameIndex>
151.28317 + <stretchingInsets top="5" bottom="5" left="5" right="5"/>
151.28318 + <layer name="Layer 1">
151.28319 + <opacity>1.0</opacity>
151.28320 + <fillOpacity>1.0</fillOpacity>
151.28321 + <blendingMode>NORMAL</blendingMode>
151.28322 + <locked>false</locked>
151.28323 + <visible>true</visible>
151.28324 + <shapes/>
151.28325 + <effects/>
151.28326 + </layer>
151.28327 + </canvas>
151.28328 + </state>
151.28329 + </backgroundStates>
151.28330 + <foregroundStates/>
151.28331 + <borderStates/>
151.28332 + <regions/>
151.28333 + </uiComponent>
151.28334 + </components>
151.28335 +</synthModel>
152.1 --- a/src/share/classes/javax/swing/plaf/synth/SynthArrowButton.java Tue Apr 28 14:43:44 2009 -0700
152.2 +++ b/src/share/classes/javax/swing/plaf/synth/SynthArrowButton.java Wed Apr 29 00:27:46 2009 -0700
152.3 @@ -113,6 +113,31 @@
152.4 context.getStyle().getInt(context, "ArrowButton.size", 16);
152.5 dim = new Dimension(size, size);
152.6 }
152.7 +
152.8 + // handle scaling for sizeVarients for special case components. The
152.9 + // key "JComponent.sizeVariant" scales for large/small/mini
152.10 + // components are based on Apples LAF
152.11 + Container parent = context.getComponent().getParent();
152.12 + if (parent instanceof JComponent && !(parent instanceof JComboBox)) {
152.13 + Object scaleKey = ((JComponent)parent).
152.14 + getClientProperty("JComponent.sizeVariant");
152.15 + if (scaleKey != null){
152.16 + if ("large".equals(scaleKey)){
152.17 + dim = new Dimension(
152.18 + (int)(dim.width * 1.15),
152.19 + (int)(dim.height * 1.15));
152.20 + } else if ("small".equals(scaleKey)){
152.21 + dim = new Dimension(
152.22 + (int)(dim.width * 0.857),
152.23 + (int)(dim.height * 0.857));
152.24 + } else if ("mini".equals(scaleKey)){
152.25 + dim = new Dimension(
152.26 + (int)(dim.width * 0.714),
152.27 + (int)(dim.height * 0.714));
152.28 + }
152.29 + }
152.30 + }
152.31 +
152.32 context.dispose();
152.33 return dim;
152.34 }
153.1 --- a/src/share/classes/javax/swing/plaf/synth/SynthComboBoxUI.java Tue Apr 28 14:43:44 2009 -0700
153.2 +++ b/src/share/classes/javax/swing/plaf/synth/SynthComboBoxUI.java Wed Apr 29 00:27:46 2009 -0700
153.3 @@ -29,16 +29,11 @@
153.4 import java.awt.event.*;
153.5 import java.lang.reflect.*;
153.6 import javax.swing.*;
153.7 -import javax.accessibility.*;
153.8 -import javax.swing.FocusManager;
153.9 import javax.swing.plaf.*;
153.10 -import javax.swing.border.*;
153.11 -import javax.swing.text.*;
153.12 import javax.swing.event.*;
153.13 import javax.swing.plaf.basic.*;
153.14 import java.beans.PropertyChangeListener;
153.15 import java.beans.PropertyChangeEvent;
153.16 -import sun.awt.AppContext;
153.17 import sun.swing.plaf.synth.SynthUI;
153.18
153.19 /**
153.20 @@ -51,11 +46,93 @@
153.21 private SynthStyle style;
153.22 private boolean useListColors;
153.23
153.24 + /**
153.25 + * Used to adjust the location and size of the popup. Very useful for
153.26 + * situations such as we find in Nimbus where part of the border is used
153.27 + * to paint the focus. In such cases, the border is empty space, and not
153.28 + * part of the "visual" border, and in these cases, you'd like the popup
153.29 + * to be adjusted such that it looks as if it were next to the visual border.
153.30 + * You may want to use negative insets to get the right look.
153.31 + */
153.32 + Insets popupInsets;
153.33 +
153.34 + /**
153.35 + * This flag may be set via UIDefaults. By default, it is false, to
153.36 + * preserve backwards compatibility. If true, then the combo will
153.37 + * "act as a button" when it is not editable.
153.38 + */
153.39 + private boolean buttonWhenNotEditable;
153.40 +
153.41 + /**
153.42 + * A flag to indicate that the combo box and combo box button should
153.43 + * remain in the PRESSED state while the combo popup is visible.
153.44 + */
153.45 + private boolean pressedWhenPopupVisible;
153.46 +
153.47 + /**
153.48 + * When buttonWhenNotEditable is true, this field is used to help make
153.49 + * the combo box appear and function as a button when the combo box is
153.50 + * not editable. In such a state, you can click anywhere on the button
153.51 + * to get it to open the popup. Also, anywhere you hover over the combo
153.52 + * will cause the entire combo to go into "rollover" state, and anywhere
153.53 + * you press will go into "pressed" state. This also keeps in sync the
153.54 + * state of the combo and the arrowButton.
153.55 + */
153.56 + private ButtonHandler buttonHandler;
153.57 +
153.58 + /**
153.59 + * Handler for repainting combo when editor component gains/looses focus
153.60 + */
153.61 + private EditorFocusHandler editorFocusHandler;
153.62 +
153.63 + /**
153.64 + * If true, then the cell renderer will be forced to be non-opaque when
153.65 + * used for rendering the selected item in the combo box (not in the list),
153.66 + * and forced to opaque after rendering the selected value.
153.67 + */
153.68 + private boolean forceOpaque = false;
153.69 +
153.70 + /**
153.71 + * NOTE: This serves the same purpose as the same field in BasicComboBoxUI.
153.72 + * It is here because I could not give the padding field in
153.73 + * BasicComboBoxUI protected access in an update release.
153.74 + */
153.75 + private Insets padding;
153.76 +
153.77 public static ComponentUI createUI(JComponent c) {
153.78 return new SynthComboBoxUI();
153.79 }
153.80
153.81 + /**
153.82 + * @inheritDoc
153.83 + *
153.84 + * Overridden to ensure that ButtonHandler is created prior to any of
153.85 + * the other installXXX methods, since several of them reference
153.86 + * buttonHandler.
153.87 + */
153.88 + @Override
153.89 + public void installUI(JComponent c) {
153.90 + buttonHandler = new ButtonHandler();
153.91 + super.installUI(c);
153.92 + }
153.93 +
153.94 + @Override
153.95 protected void installDefaults() {
153.96 + //NOTE: This next line of code was added because, since squareButton in
153.97 + //BasicComboBoxUI is private, I need to have some way of reading it from UIManager.
153.98 + //This is an incomplete solution (since it implies that squareButons,
153.99 + //once set, cannot be reset per state. Probably ok, but not always ok).
153.100 + //This line of code should be removed at the same time that squareButton
153.101 + //is made protected in the super class.
153.102 + super.installDefaults();
153.103 +
153.104 + //This is here instead of in updateStyle because the value for padding
153.105 + //needs to remain consistent with the value for padding in
153.106 + //BasicComboBoxUI. I wouldn't have this value here at all if not
153.107 + //for the fact that I cannot make "padding" protected in any way
153.108 + //for an update release. This *should* be fixed in Java 7
153.109 + padding = UIManager.getInsets("ComboBox.padding");
153.110 +
153.111 updateStyle(comboBox);
153.112 }
153.113
153.114 @@ -65,12 +142,20 @@
153.115
153.116 style = SynthLookAndFeel.updateStyle(context, this);
153.117 if (style != oldStyle) {
153.118 + popupInsets = (Insets)style.get(context, "ComboBox.popupInsets");
153.119 useListColors = style.getBoolean(context,
153.120 - "ComboBox.rendererUseListColors", true);
153.121 + "ComboBox.rendererUseListColors", true);
153.122 + buttonWhenNotEditable = style.getBoolean(context,
153.123 + "ComboBox.buttonWhenNotEditable", false);
153.124 + pressedWhenPopupVisible = style.getBoolean(context,
153.125 + "ComboBox.pressedWhenPopupVisible", false);
153.126 +
153.127 if (oldStyle != null) {
153.128 uninstallKeyboardActions();
153.129 installKeyboardActions();
153.130 }
153.131 + forceOpaque = style.getBoolean(context,
153.132 + "ComboBox.forceOpaque", false);
153.133 }
153.134 context.dispose();
153.135
153.136 @@ -79,11 +164,24 @@
153.137 }
153.138 }
153.139
153.140 + @Override
153.141 protected void installListeners() {
153.142 comboBox.addPropertyChangeListener(this);
153.143 + comboBox.addMouseListener(buttonHandler);
153.144 + editorFocusHandler = new EditorFocusHandler(comboBox);
153.145 super.installListeners();
153.146 }
153.147
153.148 + @Override
153.149 + public void uninstallUI(JComponent c) {
153.150 + if (popup instanceof SynthComboPopup) {
153.151 + ((SynthComboPopup)popup).removePopupMenuListener(buttonHandler);
153.152 + }
153.153 + super.uninstallUI(c);
153.154 + buttonHandler = null;
153.155 + }
153.156 +
153.157 + @Override
153.158 protected void uninstallDefaults() {
153.159 SynthContext context = getContext(comboBox, ENABLED);
153.160
153.161 @@ -92,11 +190,17 @@
153.162 style = null;
153.163 }
153.164
153.165 + @Override
153.166 protected void uninstallListeners() {
153.167 + editorFocusHandler.unregister();
153.168 comboBox.removePropertyChangeListener(this);
153.169 + comboBox.removeMouseListener(buttonHandler);
153.170 + buttonHandler.pressed = false;
153.171 + buttonHandler.over = false;
153.172 super.uninstallListeners();
153.173 }
153.174
153.175 + @Override
153.176 public SynthContext getContext(JComponent c) {
153.177 return getContext(c, getComponentState(c));
153.178 }
153.179 @@ -111,18 +215,56 @@
153.180 }
153.181
153.182 private int getComponentState(JComponent c) {
153.183 - return SynthLookAndFeel.getComponentState(c);
153.184 + // currently we have a broken situation where if a developer
153.185 + // takes the border from a JComboBox and sets it on a JTextField
153.186 + // then the codepath will eventually lead back to this method
153.187 + // but pass in a JTextField instead of JComboBox! In case this
153.188 + // happens, we just return the normal synth state for the component
153.189 + // instead of doing anything special
153.190 + if (!(c instanceof JComboBox)) return SynthLookAndFeel.getComponentState(c);
153.191 +
153.192 + JComboBox box = (JComboBox)c;
153.193 + if (shouldActLikeButton()) {
153.194 + int state = ENABLED;
153.195 + if ((!c.isEnabled())) {
153.196 + state = DISABLED;
153.197 + }
153.198 + if (buttonHandler.isPressed()) {
153.199 + state |= PRESSED;
153.200 + }
153.201 + if (buttonHandler.isRollover()) {
153.202 + state |= MOUSE_OVER;
153.203 + }
153.204 + if (box.isFocusOwner()) {
153.205 + state |= FOCUSED;
153.206 + }
153.207 + return state;
153.208 + } else {
153.209 + // for editable combos the editor component has the focus not the
153.210 + // combo box its self, so we should make the combo paint focused
153.211 + // when its editor has focus
153.212 + int basicState = SynthLookAndFeel.getComponentState(c);
153.213 + if (box.isEditable() &&
153.214 + box.getEditor().getEditorComponent().isFocusOwner()) {
153.215 + basicState |= FOCUSED;
153.216 + }
153.217 + return basicState;
153.218 + }
153.219 }
153.220
153.221 + @Override
153.222 protected ComboPopup createPopup() {
153.223 - SynthComboPopup popup = new SynthComboPopup( comboBox );
153.224 - return popup;
153.225 + SynthComboPopup p = new SynthComboPopup(comboBox);
153.226 + p.addPopupMenuListener(buttonHandler);
153.227 + return p;
153.228 }
153.229
153.230 + @Override
153.231 protected ListCellRenderer createRenderer() {
153.232 return new SynthComboBoxRenderer();
153.233 }
153.234
153.235 + @Override
153.236 protected ComboBoxEditor createEditor() {
153.237 return new SynthComboBoxEditor();
153.238 }
153.239 @@ -131,22 +273,25 @@
153.240 // end UI Initialization
153.241 //======================
153.242
153.243 -
153.244 + @Override
153.245 public void propertyChange(PropertyChangeEvent e) {
153.246 if (SynthLookAndFeel.shouldUpdateStyle(e)) {
153.247 updateStyle(comboBox);
153.248 }
153.249 }
153.250
153.251 + @Override
153.252 protected JButton createArrowButton() {
153.253 SynthArrowButton button = new SynthArrowButton(SwingConstants.SOUTH);
153.254 button.setName("ComboBox.arrowButton");
153.255 + button.setModel(buttonHandler);
153.256 return button;
153.257 }
153.258
153.259 //=================================
153.260 // begin ComponentUI Implementation
153.261
153.262 + @Override
153.263 public void update(Graphics g, JComponent c) {
153.264 SynthContext context = getContext(c);
153.265
153.266 @@ -157,6 +302,7 @@
153.267 context.dispose();
153.268 }
153.269
153.270 + @Override
153.271 public void paint(Graphics g, JComponent c) {
153.272 SynthContext context = getContext(c);
153.273
153.274 @@ -172,33 +318,23 @@
153.275 }
153.276 }
153.277
153.278 + @Override
153.279 public void paintBorder(SynthContext context, Graphics g, int x,
153.280 int y, int w, int h) {
153.281 context.getPainter().paintComboBoxBorder(context, g, x, y, w, h);
153.282 }
153.283
153.284 -
153.285 /**
153.286 * Paints the currently selected item.
153.287 */
153.288 + @Override
153.289 public void paintCurrentValue(Graphics g,Rectangle bounds,boolean hasFocus) {
153.290 ListCellRenderer renderer = comboBox.getRenderer();
153.291 Component c;
153.292
153.293 - if ( hasFocus && !isPopupVisible(comboBox) ) {
153.294 - c = renderer.getListCellRendererComponent( listBox,
153.295 - comboBox.getSelectedItem(),
153.296 - -1,
153.297 - false,
153.298 - false );
153.299 - }
153.300 - else {
153.301 - c = renderer.getListCellRendererComponent( listBox,
153.302 - comboBox.getSelectedItem(),
153.303 - -1,
153.304 - false,
153.305 - false );
153.306 - }
153.307 + c = renderer.getListCellRendererComponent(
153.308 + listBox, comboBox.getSelectedItem(), -1, false, false );
153.309 +
153.310 // Fix for 4238829: should lay out the JPanel.
153.311 boolean shouldValidate = false;
153.312 if (c instanceof JPanel) {
153.313 @@ -207,36 +343,88 @@
153.314
153.315 if (c instanceof UIResource) {
153.316 c.setName("ComboBox.renderer");
153.317 - currentValuePane.paintComponent(g,c,comboBox,bounds.x,bounds.y,
153.318 - bounds.width,bounds.height, shouldValidate);
153.319 }
153.320 - else {
153.321 - currentValuePane.paintComponent(g,c,comboBox,bounds.x,bounds.y,
153.322 - bounds.width,bounds.height, shouldValidate);
153.323 +
153.324 + boolean force = forceOpaque && c instanceof JComponent;
153.325 + if (force) {
153.326 + ((JComponent)c).setOpaque(false);
153.327 + }
153.328 +
153.329 + int x = bounds.x, y = bounds.y, w = bounds.width, h = bounds.height;
153.330 + if (padding != null) {
153.331 + x = bounds.x + padding.left;
153.332 + y = bounds.y + padding.top;
153.333 + w = bounds.width - (padding.left + padding.right);
153.334 + h = bounds.height - (padding.top + padding.bottom);
153.335 + }
153.336 +
153.337 + currentValuePane.paintComponent(g, c, comboBox, x, y, w, h, shouldValidate);
153.338 +
153.339 + if (force) {
153.340 + ((JComponent)c).setOpaque(true);
153.341 }
153.342 }
153.343
153.344 /**
153.345 + * @return true if this combo box should act as one big button. Typically
153.346 + * only happens when buttonWhenNotEditable is true, and comboBox.isEditable
153.347 + * is false.
153.348 + */
153.349 + private boolean shouldActLikeButton() {
153.350 + return buttonWhenNotEditable && !comboBox.isEditable();
153.351 + }
153.352 +
153.353 + /**
153.354 + * Return the default size of an empty display area of the combo box using
153.355 + * the current renderer and font.
153.356 + *
153.357 + * This method was overridden to use SynthComboBoxRenderer instead of
153.358 + * DefaultListCellRenderer as the default renderer when calculating the
153.359 + * size of the combo box. This is used in the case of the combo not having
153.360 + * any data.
153.361 + *
153.362 + * @return the size of an empty display area
153.363 + * @see #getDisplaySize
153.364 + */
153.365 + @Override
153.366 + protected Dimension getDefaultSize() {
153.367 + SynthComboBoxRenderer r = new SynthComboBoxRenderer();
153.368 + Dimension d = getSizeForComponent(r.getListCellRendererComponent(listBox, " ", -1, false, false));
153.369 + return new Dimension(d.width, d.height);
153.370 + }
153.371 +
153.372 + /**
153.373 + * This has been refactored out in hopes that it may be investigated and
153.374 + * simplified for the next major release. adding/removing
153.375 + * the component to the currentValuePane and changing the font may be
153.376 + * redundant operations.
153.377 + *
153.378 + * NOTE: This method was copied in its entirety from BasicComboBoxUI. Might
153.379 + * want to make it protected in BasicComboBoxUI in Java 7
153.380 + */
153.381 + private Dimension getSizeForComponent(Component comp) {
153.382 + currentValuePane.add(comp);
153.383 + comp.setFont(comboBox.getFont());
153.384 + Dimension d = comp.getPreferredSize();
153.385 + currentValuePane.remove(comp);
153.386 + return d;
153.387 + }
153.388 +
153.389 + /**
153.390 * From BasicComboBoxRenderer v 1.18.
153.391 + *
153.392 + * Be aware that SynthFileChooserUIImpl relies on the fact that the default
153.393 + * renderer installed on a Synth combo box is a JLabel. If this is changed,
153.394 + * then an assert will fail in SynthFileChooserUIImpl
153.395 */
153.396 private class SynthComboBoxRenderer extends JLabel implements ListCellRenderer, UIResource {
153.397 public SynthComboBoxRenderer() {
153.398 super();
153.399 + setName("ComboBox.renderer");
153.400 setText(" ");
153.401 }
153.402
153.403 - public String getName() {
153.404 - // As SynthComboBoxRenderer's are asked for a size BEFORE they
153.405 - // are parented getName is overriden to force the name to be
153.406 - // ComboBox.renderer if it isn't set. If we didn't do this the
153.407 - // wrong style could be used for size calculations.
153.408 - String name = super.getName();
153.409 - if (name == null) {
153.410 - return "ComboBox.renderer";
153.411 - }
153.412 - return name;
153.413 - }
153.414 -
153.415 + @Override
153.416 public Component getListCellRendererComponent(JList list, Object value,
153.417 int index, boolean isSelected, boolean cellHasFocus) {
153.418 setName("ComboBox.listRenderer");
153.419 @@ -250,8 +438,7 @@
153.420 SynthLabelUI.class), isSelected, cellHasFocus,
153.421 list.isEnabled(), false);
153.422 }
153.423 - }
153.424 - else {
153.425 + } else {
153.426 setBackground(list.getBackground());
153.427 setForeground(list.getForeground());
153.428 }
153.429 @@ -261,8 +448,7 @@
153.430 if (value instanceof Icon) {
153.431 setIcon((Icon)value);
153.432 setText("");
153.433 - }
153.434 - else {
153.435 + } else {
153.436 String text = (value == null) ? " " : value.toString();
153.437
153.438 if ("".equals(text)) {
153.439 @@ -276,12 +462,15 @@
153.440 // especially needed for GTK comboboxes, where the
153.441 // ListCellRenderer's state determines the visual state
153.442 // of the combobox.
153.443 - setEnabled(comboBox.isEnabled());
153.444 - setComponentOrientation(comboBox.getComponentOrientation());
153.445 + if (comboBox != null){
153.446 + setEnabled(comboBox.isEnabled());
153.447 + setComponentOrientation(comboBox.getComponentOrientation());
153.448 + }
153.449
153.450 return this;
153.451 }
153.452
153.453 + @Override
153.454 public void paint(Graphics g) {
153.455 super.paint(g);
153.456 SynthLookAndFeel.resetSelectedUI();
153.457 @@ -302,6 +491,7 @@
153.458 editor.setName("ComboBox.textField");
153.459 }
153.460
153.461 + @Override
153.462 public Component getEditorComponent() {
153.463 return editor;
153.464 }
153.465 @@ -311,6 +501,7 @@
153.466 *
153.467 * @param anObject the displayed value of the editor
153.468 */
153.469 + @Override
153.470 public void setItem(Object anObject) {
153.471 String text;
153.472
153.473 @@ -326,6 +517,7 @@
153.474 }
153.475 }
153.476
153.477 + @Override
153.478 public Object getItem() {
153.479 Object newValue = editor.getText();
153.480
153.481 @@ -348,17 +540,261 @@
153.482 return newValue;
153.483 }
153.484
153.485 + @Override
153.486 public void selectAll() {
153.487 editor.selectAll();
153.488 editor.requestFocus();
153.489 }
153.490
153.491 + @Override
153.492 public void addActionListener(ActionListener l) {
153.493 editor.addActionListener(l);
153.494 }
153.495
153.496 + @Override
153.497 public void removeActionListener(ActionListener l) {
153.498 editor.removeActionListener(l);
153.499 }
153.500 }
153.501 +
153.502 + /**
153.503 + * Handles all the logic for treating the combo as a button when it is
153.504 + * not editable, and when shouldActLikeButton() is true. This class is a
153.505 + * special ButtonModel, and installed on the arrowButton when appropriate.
153.506 + * It also is installed as a mouse listener and mouse motion listener on
153.507 + * the combo box. In this way, the state between the button and combo
153.508 + * are in sync. Whenever one is "over" both are. Whenever one is pressed,
153.509 + * both are.
153.510 + */
153.511 + private final class ButtonHandler extends DefaultButtonModel
153.512 + implements MouseListener, PopupMenuListener {
153.513 + /**
153.514 + * Indicates that the mouse is over the combo or the arrow button.
153.515 + * This field only has meaning if buttonWhenNotEnabled is true.
153.516 + */
153.517 + private boolean over;
153.518 + /**
153.519 + * Indicates that the combo or arrow button has been pressed. This
153.520 + * field only has meaning if buttonWhenNotEnabled is true.
153.521 + */
153.522 + private boolean pressed;
153.523 +
153.524 + //------------------------------------------------------------------
153.525 + // State Methods
153.526 + //------------------------------------------------------------------
153.527 +
153.528 + /**
153.529 + * <p>Updates the internal "pressed" state. If shouldActLikeButton()
153.530 + * is true, and if this method call will change the internal state,
153.531 + * then the combo and button will be repainted.</p>
153.532 + *
153.533 + * <p>Note that this method is called either when a press event
153.534 + * occurs on the combo box, or on the arrow button.</p>
153.535 + */
153.536 + private void updatePressed(boolean p) {
153.537 + this.pressed = p && isEnabled();
153.538 + if (shouldActLikeButton()) {
153.539 + comboBox.repaint();
153.540 + }
153.541 + }
153.542 +
153.543 + /**
153.544 + * <p>Updates the internal "over" state. If shouldActLikeButton()
153.545 + * is true, and if this method call will change the internal state,
153.546 + * then the combo and button will be repainted.</p>
153.547 + *
153.548 + * <p>Note that this method is called either when a mouseover/mouseoff event
153.549 + * occurs on the combo box, or on the arrow button.</p>
153.550 + */
153.551 + private void updateOver(boolean o) {
153.552 + boolean old = isRollover();
153.553 + this.over = o && isEnabled();
153.554 + boolean newo = isRollover();
153.555 + if (shouldActLikeButton() && old != newo) {
153.556 + comboBox.repaint();
153.557 + }
153.558 + }
153.559 +
153.560 + //------------------------------------------------------------------
153.561 + // DefaultButtonModel Methods
153.562 + //------------------------------------------------------------------
153.563 +
153.564 + /**
153.565 + * {@inheritDoc}
153.566 + *
153.567 + * Ensures that isPressed() will return true if the combo is pressed,
153.568 + * or the arrowButton is pressed, <em>or</em> if the combo popup is
153.569 + * visible. This is the case because a combo box looks pressed when
153.570 + * the popup is visible, and so should the arrow button.
153.571 + */
153.572 + @Override
153.573 + public boolean isPressed() {
153.574 + boolean b = shouldActLikeButton() ? pressed : super.isPressed();
153.575 + return b || (pressedWhenPopupVisible && comboBox.isPopupVisible());
153.576 + }
153.577 +
153.578 + /**
153.579 + * {@inheritDoc}
153.580 + *
153.581 + * Ensures that the armed state is in sync with the pressed state
153.582 + * if shouldActLikeButton is true. Without this method, the arrow
153.583 + * button will not look pressed when the popup is open, regardless
153.584 + * of the result of isPressed() alone.
153.585 + */
153.586 + @Override
153.587 + public boolean isArmed() {
153.588 + boolean b = shouldActLikeButton() ||
153.589 + (pressedWhenPopupVisible && comboBox.isPopupVisible());
153.590 + return b ? isPressed() : super.isArmed();
153.591 + }
153.592 +
153.593 + /**
153.594 + * {@inheritDoc}
153.595 + *
153.596 + * Ensures that isRollover() will return true if the combo is
153.597 + * rolled over, or the arrowButton is rolled over.
153.598 + */
153.599 + @Override
153.600 + public boolean isRollover() {
153.601 + return shouldActLikeButton() ? over : super.isRollover();
153.602 + }
153.603 +
153.604 + /**
153.605 + * {@inheritDoc}
153.606 + *
153.607 + * Forwards pressed states to the internal "pressed" field
153.608 + */
153.609 + @Override
153.610 + public void setPressed(boolean b) {
153.611 + super.setPressed(b);
153.612 + updatePressed(b);
153.613 + }
153.614 +
153.615 + /**
153.616 + * {@inheritDoc}
153.617 + *
153.618 + * Forwards rollover states to the internal "over" field
153.619 + */
153.620 + @Override
153.621 + public void setRollover(boolean b) {
153.622 + super.setRollover(b);
153.623 + updateOver(b);
153.624 + }
153.625 +
153.626 + //------------------------------------------------------------------
153.627 + // MouseListener/MouseMotionListener Methods
153.628 + //------------------------------------------------------------------
153.629 +
153.630 + @Override
153.631 + public void mouseEntered(MouseEvent mouseEvent) {
153.632 + updateOver(true);
153.633 + }
153.634 +
153.635 + @Override
153.636 + public void mouseExited(MouseEvent mouseEvent) {
153.637 + updateOver(false);
153.638 + }
153.639 +
153.640 + @Override
153.641 + public void mousePressed(MouseEvent mouseEvent) {
153.642 + updatePressed(true);
153.643 + }
153.644 +
153.645 + @Override
153.646 + public void mouseReleased(MouseEvent mouseEvent) {
153.647 + updatePressed(false);
153.648 + }
153.649 +
153.650 + @Override
153.651 + public void mouseClicked(MouseEvent e) {}
153.652 +
153.653 + //------------------------------------------------------------------
153.654 + // PopupMenuListener Methods
153.655 + //------------------------------------------------------------------
153.656 +
153.657 + /**
153.658 + * @inheritDoc
153.659 + *
153.660 + * Ensures that the combo box is repainted when the popup is closed.
153.661 + * This avoids a bug where clicking off the combo wasn't causing a repaint,
153.662 + * and thus the combo box still looked pressed even when it was not.
153.663 + *
153.664 + * This bug was only noticed when acting as a button, but may be generally
153.665 + * present. If so, remove the if() block
153.666 + */
153.667 + @Override
153.668 + public void popupMenuCanceled(PopupMenuEvent e) {
153.669 + if (shouldActLikeButton() || pressedWhenPopupVisible) {
153.670 + comboBox.repaint();
153.671 + }
153.672 + }
153.673 +
153.674 + @Override
153.675 + public void popupMenuWillBecomeVisible(PopupMenuEvent e) {}
153.676 + @Override
153.677 + public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {}
153.678 + }
153.679 +
153.680 + /**
153.681 + * Handler for repainting combo when editor component gains/looses focus
153.682 + */
153.683 + private static class EditorFocusHandler implements FocusListener,
153.684 + PropertyChangeListener {
153.685 + private JComboBox comboBox;
153.686 + private ComboBoxEditor editor = null;
153.687 + private Component editorComponent = null;
153.688 +
153.689 + private EditorFocusHandler(JComboBox comboBox) {
153.690 + this.comboBox = comboBox;
153.691 + editor = comboBox.getEditor();
153.692 + if (editor != null){
153.693 + editorComponent = editor.getEditorComponent();
153.694 + if (editorComponent != null){
153.695 + editorComponent.addFocusListener(this);
153.696 + }
153.697 + }
153.698 + comboBox.addPropertyChangeListener("editor",this);
153.699 + }
153.700 +
153.701 + public void unregister(){
153.702 + comboBox.removePropertyChangeListener(this);
153.703 + if (editorComponent!=null){
153.704 + editorComponent.removeFocusListener(this);
153.705 + }
153.706 + }
153.707 +
153.708 + /** Invoked when a component gains the keyboard focus. */
153.709 + public void focusGained(FocusEvent e) {
153.710 + // repaint whole combo on focus gain
153.711 + comboBox.repaint();
153.712 + }
153.713 +
153.714 + /** Invoked when a component loses the keyboard focus. */
153.715 + public void focusLost(FocusEvent e) {
153.716 + // repaint whole combo on focus loss
153.717 + comboBox.repaint();
153.718 + }
153.719 +
153.720 + /**
153.721 + * Called when the combos editor changes
153.722 + *
153.723 + * @param evt A PropertyChangeEvent object describing the event source and
153.724 + * the property that has changed.
153.725 + */
153.726 + public void propertyChange(PropertyChangeEvent evt) {
153.727 + ComboBoxEditor newEditor = comboBox.getEditor();
153.728 + if (editor != newEditor){
153.729 + if (editorComponent!=null){
153.730 + editorComponent.removeFocusListener(this);
153.731 + }
153.732 + editor = newEditor;
153.733 + if (editor != null){
153.734 + editorComponent = editor.getEditorComponent();
153.735 + if (editorComponent != null){
153.736 + editorComponent.addFocusListener(this);
153.737 + }
153.738 + }
153.739 + }
153.740 + }
153.741 + }
153.742 }
154.1 --- a/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java Tue Apr 28 14:43:44 2009 -0700
154.2 +++ b/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java Wed Apr 29 00:27:46 2009 -0700
154.3 @@ -138,9 +138,9 @@
154.4 }
154.5 }
154.6 else {
154.7 - selectedUIState = SynthConstants.FOCUSED;
154.8 if (enabled) {
154.9 selectedUIState |= SynthConstants.ENABLED;
154.10 + selectedUIState = SynthConstants.FOCUSED;
154.11 }
154.12 else {
154.13 selectedUIState |= SynthConstants.DISABLED;
154.14 @@ -251,6 +251,26 @@
154.15 ((SynthLookAndFeel)laf).
154.16 shouldUpdateStyleOnAncestorChanged());
154.17 }
154.18 + // Note: The following two nimbus based overrides should be refactored
154.19 + // to be in the Nimbus LAF. Due to constraints in an update release,
154.20 + // we couldn't actually provide the public API necessary to allow
154.21 + // NimbusLookAndFeel (a subclass of SynthLookAndFeel) to provide its
154.22 + // own rules for shouldUpdateStyle.
154.23 + else if ("Nimbus.Overrides" == eName) {
154.24 + // Always update when the Nimbus.Overrides client property has
154.25 + // been changed
154.26 + return true;
154.27 + }
154.28 + else if ("Nimbus.Overrides.InheritDefaults" == eName) {
154.29 + // Always update when the Nimbus.Overrides.InheritDefaults
154.30 + // client property has changed
154.31 + return true;
154.32 + }
154.33 + else if ("JComponent.sizeVariant" == eName) {
154.34 + // Always update when the JComponent.sizeVariant
154.35 + // client property has changed
154.36 + return true;
154.37 + }
154.38 return false;
154.39 }
154.40
154.41 @@ -622,6 +642,7 @@
154.42 /**
154.43 * Called by UIManager when this look and feel is installed.
154.44 */
154.45 + @Override
154.46 public void initialize() {
154.47 super.initialize();
154.48 DefaultLookup.setDefaultLookup(new SynthDefaultLookup());
154.49 @@ -633,6 +654,7 @@
154.50 /**
154.51 * Called by UIManager when this look and feel is uninstalled.
154.52 */
154.53 + @Override
154.54 public void uninitialize() {
154.55 KeyboardFocusManager.getCurrentKeyboardFocusManager().
154.56 removePropertyChangeListener(_handler);
154.57 @@ -647,6 +669,7 @@
154.58 *
154.59 * @return Defaults table.
154.60 */
154.61 + @Override
154.62 public UIDefaults getDefaults() {
154.63 UIDefaults table = new UIDefaults(60, 0.75f);
154.64
154.65 @@ -704,6 +727,7 @@
154.66 *
154.67 * @return true.
154.68 */
154.69 + @Override
154.70 public boolean isSupportedLookAndFeel() {
154.71 return true;
154.72 }
154.73 @@ -713,6 +737,7 @@
154.74 *
154.75 * @return false
154.76 */
154.77 + @Override
154.78 public boolean isNativeLookAndFeel() {
154.79 return false;
154.80 }
154.81 @@ -722,6 +747,7 @@
154.82 *
154.83 * @return textual description of synth.
154.84 */
154.85 + @Override
154.86 public String getDescription() {
154.87 return "Synth look and feel";
154.88 }
154.89 @@ -731,6 +757,7 @@
154.90 *
154.91 * @return a short string identifying this look and feel.
154.92 */
154.93 + @Override
154.94 public String getName() {
154.95 return "Synth look and feel";
154.96 }
154.97 @@ -740,6 +767,7 @@
154.98 *
154.99 * @return a short string identifying this look and feel.
154.100 */
154.101 + @Override
154.102 public String getID() {
154.103 return "Synth";
154.104 }
154.105 @@ -805,6 +833,7 @@
154.106 tk.addPropertyChangeListener(key, this);
154.107 }
154.108
154.109 + @Override
154.110 public void propertyChange(PropertyChangeEvent pce) {
154.111 UIDefaults defaults = UIManager.getLookAndFeelDefaults();
154.112 if (defaults.getBoolean("Synth.doNotSetTextAA")) {
154.113 @@ -873,6 +902,7 @@
154.114 if (!isUpdatePending()) {
154.115 setUpdatePending(true);
154.116 Runnable uiUpdater = new Runnable() {
154.117 + @Override
154.118 public void run() {
154.119 updateAllUIs();
154.120 setUpdatePending(false);
154.121 @@ -889,6 +919,7 @@
154.122 }
154.123
154.124 private class Handler implements PropertyChangeListener {
154.125 + @Override
154.126 public void propertyChange(PropertyChangeEvent evt) {
154.127 String propertyName = evt.getPropertyName();
154.128 Object newValue = evt.getNewValue();
155.1 --- a/src/share/classes/javax/swing/plaf/synth/SynthProgressBarUI.java Tue Apr 28 14:43:44 2009 -0700
155.2 +++ b/src/share/classes/javax/swing/plaf/synth/SynthProgressBarUI.java Wed Apr 29 00:27:46 2009 -0700
155.3 @@ -27,14 +27,11 @@
155.4
155.5 import java.awt.*;
155.6 import java.awt.geom.AffineTransform;
155.7 -import java.awt.event.*;
155.8 import javax.swing.*;
155.9 -import javax.swing.event.*;
155.10 import javax.swing.plaf.*;
155.11 import javax.swing.plaf.basic.BasicProgressBarUI;
155.12 import java.beans.PropertyChangeListener;
155.13 import java.beans.PropertyChangeEvent;
155.14 -import java.io.Serializable;
155.15 import sun.swing.plaf.synth.SynthUI;
155.16 import sun.swing.SwingUtilities2;
155.17
155.18 @@ -46,24 +43,29 @@
155.19 class SynthProgressBarUI extends BasicProgressBarUI implements SynthUI,
155.20 PropertyChangeListener {
155.21 private SynthStyle style;
155.22 -
155.23 private int progressPadding;
155.24 + private boolean rotateText; // added for Nimbus LAF
155.25 private boolean paintOutsideClip;
155.26 + private boolean tileWhenIndeterminate; //whether to tile indeterminate painting
155.27 + private int tileWidth; //the width of each tile
155.28
155.29 public static ComponentUI createUI(JComponent x) {
155.30 return new SynthProgressBarUI();
155.31 }
155.32
155.33 + @Override
155.34 protected void installListeners() {
155.35 super.installListeners();
155.36 progressBar.addPropertyChangeListener(this);
155.37 }
155.38
155.39 + @Override
155.40 protected void uninstallListeners() {
155.41 super.uninstallListeners();
155.42 progressBar.removePropertyChangeListener(this);
155.43 }
155.44
155.45 + @Override
155.46 protected void installDefaults() {
155.47 updateStyle(progressBar);
155.48 }
155.49 @@ -72,17 +74,34 @@
155.50 SynthContext context = getContext(c, ENABLED);
155.51 SynthStyle oldStyle = style;
155.52 style = SynthLookAndFeel.updateStyle(context, this);
155.53 - if (style != oldStyle) {
155.54 - setCellLength(style.getInt(context, "ProgressBar.cellLength", 1));
155.55 - setCellSpacing(style.getInt(context, "ProgressBar.cellSpacing", 0));
155.56 - progressPadding = style.getInt(context,
155.57 - "ProgressBar.progressPadding", 0);
155.58 - paintOutsideClip = style.getBoolean(context,
155.59 - "ProgressBar.paintOutsideClip", false);
155.60 + setCellLength(style.getInt(context, "ProgressBar.cellLength", 1));
155.61 + setCellSpacing(style.getInt(context, "ProgressBar.cellSpacing", 0));
155.62 + progressPadding = style.getInt(context,
155.63 + "ProgressBar.progressPadding", 0);
155.64 + paintOutsideClip = style.getBoolean(context,
155.65 + "ProgressBar.paintOutsideClip", false);
155.66 + rotateText = style.getBoolean(context,
155.67 + "ProgressBar.rotateText", false);
155.68 + tileWhenIndeterminate = style.getBoolean(context, "ProgressBar.tileWhenIndeterminate", false);
155.69 + tileWidth = style.getInt(context, "ProgressBar.tileWidth", 15);
155.70 + // handle scaling for sizeVarients for special case components. The
155.71 + // key "JComponent.sizeVariant" scales for large/small/mini
155.72 + // components are based on Apples LAF
155.73 + String scaleKey = (String)progressBar.getClientProperty(
155.74 + "JComponent.sizeVariant");
155.75 + if (scaleKey != null){
155.76 + if ("large".equals(scaleKey)){
155.77 + tileWidth *= 1.15;
155.78 + } else if ("small".equals(scaleKey)){
155.79 + tileWidth *= 0.857;
155.80 + } else if ("mini".equals(scaleKey)){
155.81 + tileWidth *= 0.784;
155.82 + }
155.83 }
155.84 context.dispose();
155.85 }
155.86
155.87 + @Override
155.88 protected void uninstallDefaults() {
155.89 SynthContext context = getContext(progressBar, ENABLED);
155.90
155.91 @@ -108,6 +127,7 @@
155.92 return SynthLookAndFeel.getComponentState(c);
155.93 }
155.94
155.95 + @Override
155.96 public int getBaseline(JComponent c, int width, int height) {
155.97 super.getBaseline(c, width, height);
155.98 if (progressBar.isStringPainted() &&
155.99 @@ -122,6 +142,16 @@
155.100 return -1;
155.101 }
155.102
155.103 + @Override
155.104 + protected Rectangle getBox(Rectangle r) {
155.105 + if (tileWhenIndeterminate) {
155.106 + return SwingUtilities.calculateInnerArea(progressBar, r);
155.107 + } else {
155.108 + return super.getBox(r);
155.109 + }
155.110 + }
155.111 +
155.112 + @Override
155.113 protected void setAnimationIndex(int newValue) {
155.114 if (paintOutsideClip) {
155.115 if (getAnimationIndex() == newValue) {
155.116 @@ -134,6 +164,7 @@
155.117 }
155.118 }
155.119
155.120 + @Override
155.121 public void update(Graphics g, JComponent c) {
155.122 SynthContext context = getContext(c);
155.123
155.124 @@ -145,6 +176,7 @@
155.125 context.dispose();
155.126 }
155.127
155.128 + @Override
155.129 public void paint(Graphics g, JComponent c) {
155.130 SynthContext context = getContext(c);
155.131
155.132 @@ -196,44 +228,98 @@
155.133 width = boxRect.width - progressPadding - progressPadding;
155.134 height = boxRect.height - progressPadding - progressPadding;
155.135 }
155.136 - context.getPainter().paintProgressBarForeground(context, g,
155.137 - x, y, width, height, pBar.getOrientation());
155.138
155.139 - if (pBar.isStringPainted() && !pBar.isIndeterminate()) {
155.140 + //if tiling and indeterminate, then paint the progress bar foreground a
155.141 + //bit wider than it should be. Shift as needed to ensure that there is
155.142 + //an animated effect
155.143 + if (tileWhenIndeterminate && pBar.isIndeterminate()) {
155.144 + double percentComplete = (double)getAnimationIndex() / (double)getFrameCount();
155.145 + int offset = (int)(percentComplete * tileWidth);
155.146 + Shape clip = g.getClip();
155.147 + g.clipRect(x, y, width, height);
155.148 + if (pBar.getOrientation() == JProgressBar.HORIZONTAL) {
155.149 + //paint each tile horizontally
155.150 + for (int i=x-tileWidth+offset; i<=width; i+=tileWidth) {
155.151 + context.getPainter().paintProgressBarForeground(
155.152 + context, g, i, y, tileWidth, height, pBar.getOrientation());
155.153 + }
155.154 + } else { //JProgressBar.VERTICAL
155.155 + //paint each tile vertically
155.156 + for (int i=y-offset; i<height+tileWidth; i+=tileWidth) {
155.157 + context.getPainter().paintProgressBarForeground(
155.158 + context, g, x, i, width, tileWidth, pBar.getOrientation());
155.159 + }
155.160 + }
155.161 + g.setClip(clip);
155.162 + } else {
155.163 + context.getPainter().paintProgressBarForeground(context, g,
155.164 + x, y, width, height, pBar.getOrientation());
155.165 + }
155.166 +
155.167 + if (pBar.isStringPainted()) {
155.168 paintText(context, g, pBar.getString());
155.169 }
155.170 }
155.171
155.172 protected void paintText(SynthContext context, Graphics g,
155.173 String title) {
155.174 - Font font = context.getStyle().getFont(context);
155.175 - FontMetrics metrics = SwingUtilities2.getFontMetrics(progressBar, g,
155.176 - font);
155.177 + if (progressBar.isStringPainted()) {
155.178 + SynthStyle style = context.getStyle();
155.179 + Font font = style.getFont(context);
155.180 + FontMetrics fm = SwingUtilities2.getFontMetrics(
155.181 + progressBar, g, font);
155.182 + int strLength = style.getGraphicsUtils(context).
155.183 + computeStringWidth(context, font, fm, title);
155.184 + Rectangle bounds = progressBar.getBounds();
155.185
155.186 - if (progressBar.isStringPainted()) {
155.187 - String pBarString = progressBar.getString();
155.188 - Rectangle bounds = progressBar.getBounds();
155.189 - int strLength = context.getStyle().getGraphicsUtils(context).
155.190 - computeStringWidth(context, font, metrics, pBarString);
155.191 + if (rotateText &&
155.192 + progressBar.getOrientation() == JProgressBar.VERTICAL){
155.193 + Graphics2D g2 = (Graphics2D)g;
155.194 + // Calculate the position for the text.
155.195 + Point textPos;
155.196 + AffineTransform rotation;
155.197 + if (progressBar.getComponentOrientation().isLeftToRight()){
155.198 + rotation = AffineTransform.getRotateInstance(-Math.PI/2);
155.199 + textPos = new Point(
155.200 + (bounds.width+fm.getAscent()-fm.getDescent())/2,
155.201 + (bounds.height+strLength)/2);
155.202 + } else {
155.203 + rotation = AffineTransform.getRotateInstance(Math.PI/2);
155.204 + textPos = new Point(
155.205 + (bounds.width-fm.getAscent()+fm.getDescent())/2,
155.206 + (bounds.height-strLength)/2);
155.207 + }
155.208
155.209 - // Calculate the bounds for the text.
155.210 - Rectangle textRect = new Rectangle(
155.211 - (bounds.width / 2) - (strLength / 2),
155.212 - (bounds.height -
155.213 - (metrics.getAscent() + metrics.getDescent())) / 2,
155.214 - 0, 0);
155.215 + // Progress bar isn't wide enough for the font. Don't paint it.
155.216 + if (textPos.x < 0) {
155.217 + return;
155.218 + }
155.219
155.220 - // Progress bar isn't tall enough for the font. Don't paint it.
155.221 - if (textRect.y < 0) {
155.222 - return;
155.223 + // Paint the text.
155.224 + font = font.deriveFont(rotation);
155.225 + g2.setFont(font);
155.226 + g2.setColor(style.getColor(context, ColorType.TEXT_FOREGROUND));
155.227 + style.getGraphicsUtils(context).paintText(context, g, title,
155.228 + textPos.x, textPos.y, -1);
155.229 + } else {
155.230 + // Calculate the bounds for the text.
155.231 + Rectangle textRect = new Rectangle(
155.232 + (bounds.width / 2) - (strLength / 2),
155.233 + (bounds.height -
155.234 + (fm.getAscent() + fm.getDescent())) / 2,
155.235 + 0, 0);
155.236 +
155.237 + // Progress bar isn't tall enough for the font. Don't paint it.
155.238 + if (textRect.y < 0) {
155.239 + return;
155.240 + }
155.241 +
155.242 + // Paint the text.
155.243 + g.setColor(style.getColor(context, ColorType.TEXT_FOREGROUND));
155.244 + g.setFont(font);
155.245 + style.getGraphicsUtils(context).paintText(context, g, title,
155.246 + textRect.x, textRect.y, -1);
155.247 }
155.248 -
155.249 - // Paint the text.
155.250 - SynthStyle style = context.getStyle();
155.251 - g.setColor(style.getColor(context, ColorType.TEXT_FOREGROUND));
155.252 - g.setFont(style.getFont(context));
155.253 - style.getGraphicsUtils(context).paintText(context, g, title,
155.254 - textRect.x, textRect.y, -1);
155.255 }
155.256 }
155.257
155.258 @@ -244,34 +330,67 @@
155.259 }
155.260
155.261 public void propertyChange(PropertyChangeEvent e) {
155.262 - if (SynthLookAndFeel.shouldUpdateStyle(e)) {
155.263 + if (SynthLookAndFeel.shouldUpdateStyle(e) ||
155.264 + "indeterminate".equals(e.getPropertyName())) {
155.265 updateStyle((JProgressBar)e.getSource());
155.266 }
155.267 }
155.268
155.269 + @Override
155.270 public Dimension getPreferredSize(JComponent c) {
155.271 - Dimension size;
155.272 - Insets border = progressBar.getInsets();
155.273 - FontMetrics fontSizer = progressBar.getFontMetrics(
155.274 - progressBar.getFont());
155.275 + Dimension size = null;
155.276 + Insets border = progressBar.getInsets();
155.277 + FontMetrics fontSizer = progressBar.getFontMetrics(progressBar.getFont());
155.278 + String progString = progressBar.getString();
155.279 + int stringHeight = fontSizer.getHeight() + fontSizer.getDescent();
155.280 +
155.281 if (progressBar.getOrientation() == JProgressBar.HORIZONTAL) {
155.282 size = new Dimension(getPreferredInnerHorizontal());
155.283 + if (progressBar.isStringPainted()) {
155.284 + // adjust the height if necessary to make room for the string
155.285 + if (stringHeight > size.height) {
155.286 + size.height = stringHeight;
155.287 + }
155.288 +
155.289 + // adjust the width if necessary to make room for the string
155.290 + int stringWidth = SwingUtilities2.stringWidth(
155.291 + progressBar, fontSizer, progString);
155.292 + if (stringWidth > size.width) {
155.293 + size.width = stringWidth;
155.294 + }
155.295 + }
155.296 } else {
155.297 size = new Dimension(getPreferredInnerVertical());
155.298 + if (progressBar.isStringPainted()) {
155.299 + // make sure the width is big enough for the string
155.300 + if (stringHeight > size.width) {
155.301 + size.width = stringHeight;
155.302 + }
155.303 +
155.304 + // make sure the height is big enough for the string
155.305 + int stringWidth = SwingUtilities2.stringWidth(
155.306 + progressBar, fontSizer, progString);
155.307 + if (stringWidth > size.height) {
155.308 + size.height = stringWidth;
155.309 + }
155.310 + }
155.311 }
155.312 - // Ensure that the progress string will fit.
155.313 - if (progressBar.isStringPainted()) {
155.314 - String progString = progressBar.getString();
155.315 - int stringHeight = fontSizer.getHeight() +
155.316 - fontSizer.getDescent();
155.317 - if (stringHeight > size.height) {
155.318 - size.height = stringHeight;
155.319 - }
155.320 - // This is also for completeness.
155.321 - int stringWidth = SwingUtilities2.stringWidth(
155.322 - progressBar, fontSizer, progString);
155.323 - if (stringWidth > size.width) {
155.324 - size.width = stringWidth;
155.325 +
155.326 + // handle scaling for sizeVarients for special case components. The
155.327 + // key "JComponent.sizeVariant" scales for large/small/mini
155.328 + // components are based on Apples LAF
155.329 + String scaleKey = (String)progressBar.getClientProperty(
155.330 + "JComponent.sizeVariant");
155.331 + if (scaleKey != null){
155.332 + if ("large".equals(scaleKey)){
155.333 + size.width *= 1.15f;
155.334 + size.height *= 1.15f;
155.335 + } else if ("small".equals(scaleKey)){
155.336 + size.width *= 0.90f;
155.337 + size.height *= 0.90f;
155.338 + } else if ("mini".equals(scaleKey)){
155.339 + size.width *= 0.784f;
155.340 + size.height *= 0.784f;
155.341 }
155.342 }
155.343
156.1 --- a/src/share/classes/javax/swing/plaf/synth/SynthScrollBarUI.java Tue Apr 28 14:43:44 2009 -0700
156.2 +++ b/src/share/classes/javax/swing/plaf/synth/SynthScrollBarUI.java Wed Apr 29 00:27:46 2009 -0700
156.3 @@ -26,12 +26,8 @@
156.4 package javax.swing.plaf.synth;
156.5
156.6 import java.awt.*;
156.7 -import java.awt.event.*;
156.8 -
156.9 import java.beans.*;
156.10 -
156.11 import javax.swing.*;
156.12 -import javax.swing.event.*;
156.13 import javax.swing.plaf.*;
156.14 import javax.swing.plaf.basic.*;
156.15 import sun.swing.plaf.synth.SynthUI;
156.16 @@ -52,12 +48,23 @@
156.17 private boolean validMinimumThumbSize;
156.18 private int scrollBarWidth;
156.19
156.20 + //These two variables should be removed when the corrosponding ones in BasicScrollBarUI are made protected
156.21 + private int incrGap;
156.22 + private int decrGap;
156.23
156.24 public static ComponentUI createUI(JComponent c) {
156.25 return new SynthScrollBarUI();
156.26 }
156.27
156.28 protected void installDefaults() {
156.29 + //NOTE: This next line of code was added because, since incrGap and decrGap in
156.30 + //BasicScrollBarUI are private, I need to have some way of updating them.
156.31 + //This is an incomplete solution (since it implies that the incrGap and decrGap
156.32 + //are set once, and not reset per state. Probably ok, but not always ok).
156.33 + //This line of code should be removed at the same time that incrGap and
156.34 + //decrGap are removed and made protected in the super class.
156.35 + super.installDefaults();
156.36 +
156.37 trackHighlight = NO_HIGHLIGHT;
156.38 if (scrollbar.getLayout() == null ||
156.39 (scrollbar.getLayout() instanceof UIResource)) {
156.40 @@ -89,6 +96,31 @@
156.41 if (maximumThumbSize == null) {
156.42 maximumThumbSize = new Dimension(4096, 4097);
156.43 }
156.44 +
156.45 + incrGap = style.getInt(context, "ScrollBar.incrementButtonGap", 0);
156.46 + decrGap = style.getInt(context, "ScrollBar.decrementButtonGap", 0);
156.47 +
156.48 + // handle scaling for sizeVarients for special case components. The
156.49 + // key "JComponent.sizeVariant" scales for large/small/mini
156.50 + // components are based on Apples LAF
156.51 + String scaleKey = (String)scrollbar.getClientProperty(
156.52 + "JComponent.sizeVariant");
156.53 + if (scaleKey != null){
156.54 + if ("large".equals(scaleKey)){
156.55 + scrollBarWidth *= 1.15;
156.56 + incrGap *= 1.15;
156.57 + decrGap *= 1.15;
156.58 + } else if ("small".equals(scaleKey)){
156.59 + scrollBarWidth *= 0.857;
156.60 + incrGap *= 0.857;
156.61 + decrGap *= 0.857;
156.62 + } else if ("mini".equals(scaleKey)){
156.63 + scrollBarWidth *= 0.714;
156.64 + incrGap *= 0.714;
156.65 + decrGap *= 0.714;
156.66 + }
156.67 + }
156.68 +
156.69 if (oldStyle != null) {
156.70 uninstallKeyboardActions();
156.71 installKeyboardActions();
156.72 @@ -274,18 +306,56 @@
156.73 }
156.74 }
156.75 return minimumThumbSize;
156.76 -
156.77 }
156.78
156.79 -
156.80 protected JButton createDecreaseButton(int orientation) {
156.81 - SynthArrowButton synthArrowButton = new SynthArrowButton(orientation);
156.82 + SynthArrowButton synthArrowButton = new SynthArrowButton(orientation) {
156.83 + @Override
156.84 + public boolean contains(int x, int y) {
156.85 + if (decrGap < 0) { //there is an overlap between the track and button
156.86 + int width = getWidth();
156.87 + int height = getHeight();
156.88 + if (scrollbar.getOrientation() == JScrollBar.VERTICAL) {
156.89 + //adjust the height by decrGap
156.90 + //Note: decrGap is negative!
156.91 + height += decrGap;
156.92 + } else {
156.93 + //adjust the width by decrGap
156.94 + //Note: decrGap is negative!
156.95 + width += decrGap;
156.96 + }
156.97 + return (x >= 0) && (x < width) && (y >= 0) && (y < height);
156.98 + }
156.99 + return super.contains(x, y);
156.100 + }
156.101 + };
156.102 synthArrowButton.setName("ScrollBar.button");
156.103 return synthArrowButton;
156.104 }
156.105
156.106 protected JButton createIncreaseButton(int orientation) {
156.107 - SynthArrowButton synthArrowButton = new SynthArrowButton(orientation);
156.108 + SynthArrowButton synthArrowButton = new SynthArrowButton(orientation) {
156.109 + @Override
156.110 + public boolean contains(int x, int y) {
156.111 + if (incrGap < 0) { //there is an overlap between the track and button
156.112 + int width = getWidth();
156.113 + int height = getHeight();
156.114 + if (scrollbar.getOrientation() == JScrollBar.VERTICAL) {
156.115 + //adjust the height and y by incrGap
156.116 + //Note: incrGap is negative!
156.117 + height += incrGap;
156.118 + y += incrGap;
156.119 + } else {
156.120 + //adjust the width and x by incrGap
156.121 + //Note: incrGap is negative!
156.122 + width += incrGap;
156.123 + x += incrGap;
156.124 + }
156.125 + return (x >= 0) && (x < width) && (y >= 0) && (y < height);
156.126 + }
156.127 + return super.contains(x, y);
156.128 + }
156.129 + };
156.130 synthArrowButton.setName("ScrollBar.button");
156.131 return synthArrowButton;
156.132 }
157.1 --- a/src/share/classes/javax/swing/plaf/synth/SynthScrollPaneUI.java Tue Apr 28 14:43:44 2009 -0700
157.2 +++ b/src/share/classes/javax/swing/plaf/synth/SynthScrollPaneUI.java Wed Apr 29 00:27:46 2009 -0700
157.3 @@ -26,7 +26,7 @@
157.4 package javax.swing.plaf.synth;
157.5
157.6 import javax.swing.*;
157.7 -import javax.swing.event.*;
157.8 +import javax.swing.text.JTextComponent;
157.9 import javax.swing.border.*;
157.10 import javax.swing.plaf.*;
157.11 import javax.swing.plaf.basic.*;
157.12 @@ -35,7 +35,11 @@
157.13 import java.beans.PropertyChangeEvent;
157.14
157.15 import java.awt.*;
157.16 -import java.awt.event.*;
157.17 +import java.awt.event.ContainerListener;
157.18 +import java.awt.event.ContainerEvent;
157.19 +import java.awt.event.FocusListener;
157.20 +import java.awt.event.FocusEvent;
157.21 +
157.22 import sun.swing.plaf.synth.SynthUI;
157.23
157.24
157.25 @@ -47,11 +51,14 @@
157.26 class SynthScrollPaneUI extends BasicScrollPaneUI implements
157.27 PropertyChangeListener, SynthUI {
157.28 private SynthStyle style;
157.29 + private boolean viewportViewHasFocus = false;
157.30 + private ViewportViewFocusHandler viewportViewFocusHandler;
157.31
157.32 public static ComponentUI createUI(JComponent x) {
157.33 return new SynthScrollPaneUI();
157.34 }
157.35
157.36 + @Override
157.37 public void update(Graphics g, JComponent c) {
157.38 SynthContext context = getContext(c);
157.39
157.40 @@ -62,6 +69,7 @@
157.41 context.dispose();
157.42 }
157.43
157.44 + @Override
157.45 public void paint(Graphics g, JComponent c) {
157.46 SynthContext context = getContext(c);
157.47
157.48 @@ -83,6 +91,7 @@
157.49 context.getPainter().paintScrollPaneBorder(context, g, x, y, w, h);
157.50 }
157.51
157.52 + @Override
157.53 protected void installDefaults(JScrollPane scrollpane) {
157.54 updateStyle(scrollpane);
157.55 }
157.56 @@ -106,11 +115,21 @@
157.57 }
157.58
157.59
157.60 + @Override
157.61 protected void installListeners(JScrollPane c) {
157.62 super.installListeners(c);
157.63 c.addPropertyChangeListener(this);
157.64 + if (UIManager.getBoolean("ScrollPane.useChildTextComponentFocus")){
157.65 + viewportViewFocusHandler = new ViewportViewFocusHandler();
157.66 + c.getViewport().addContainerListener(viewportViewFocusHandler);
157.67 + Component view = c.getViewport().getView();
157.68 + if (view instanceof JTextComponent) {
157.69 + view.addFocusListener(viewportViewFocusHandler);
157.70 + }
157.71 + }
157.72 }
157.73
157.74 + @Override
157.75 protected void uninstallDefaults(JScrollPane c) {
157.76 SynthContext context = getContext(c, ENABLED);
157.77
157.78 @@ -123,9 +142,18 @@
157.79 }
157.80
157.81
157.82 + @Override
157.83 protected void uninstallListeners(JComponent c) {
157.84 super.uninstallListeners(c);
157.85 c.removePropertyChangeListener(this);
157.86 + if (viewportViewFocusHandler != null) {
157.87 + JViewport viewport = ((JScrollPane) c).getViewport();
157.88 + viewport.removeContainerListener(viewportViewFocusHandler);
157.89 + if (viewport.getView()!= null) {
157.90 + viewport.getView().removeFocusListener(viewportViewFocusHandler);
157.91 + }
157.92 + viewportViewFocusHandler = null;
157.93 + }
157.94 }
157.95
157.96
157.97 @@ -145,7 +173,11 @@
157.98
157.99
157.100 private int getComponentState(JComponent c) {
157.101 - return SynthLookAndFeel.getComponentState(c);
157.102 + int baseState = SynthLookAndFeel.getComponentState(c);
157.103 + if (viewportViewFocusHandler!=null && viewportViewHasFocus){
157.104 + baseState = baseState | FOCUSED;
157.105 + }
157.106 + return baseState;
157.107 }
157.108
157.109 public void propertyChange(PropertyChangeEvent e) {
157.110 @@ -167,6 +199,7 @@
157.111 }
157.112 }
157.113
157.114 + @Override
157.115 public void paintBorder(Component c, Graphics g, int x, int y,
157.116 int width, int height) {
157.117 JComponent jc = (JComponent)c;
157.118 @@ -182,6 +215,7 @@
157.119 context.dispose();
157.120 }
157.121
157.122 + @Override
157.123 public Insets getBorderInsets(Component c, Insets insets) {
157.124 if (insets == null) {
157.125 return new Insets(this.insets.top, this.insets.left,
157.126 @@ -194,8 +228,39 @@
157.127 return insets;
157.128 }
157.129
157.130 + @Override
157.131 public boolean isBorderOpaque() {
157.132 return false;
157.133 }
157.134 }
157.135 +
157.136 + /**
157.137 + * Handle keeping track of the viewport's view's focus
157.138 + */
157.139 + private class ViewportViewFocusHandler implements ContainerListener,
157.140 + FocusListener{
157.141 + public void componentAdded(ContainerEvent e) {
157.142 + if (e.getChild() instanceof JTextComponent) {
157.143 + e.getChild().addFocusListener(this);
157.144 + viewportViewHasFocus = e.getChild().isFocusOwner();
157.145 + scrollpane.repaint();
157.146 + }
157.147 + }
157.148 +
157.149 + public void componentRemoved(ContainerEvent e) {
157.150 + if (e.getChild() instanceof JTextComponent) {
157.151 + e.getChild().removeFocusListener(this);
157.152 + }
157.153 + }
157.154 +
157.155 + public void focusGained(FocusEvent e) {
157.156 + viewportViewHasFocus = true;
157.157 + scrollpane.repaint();
157.158 + }
157.159 +
157.160 + public void focusLost(FocusEvent e) {
157.161 + viewportViewHasFocus = false;
157.162 + scrollpane.repaint();
157.163 + }
157.164 + }
157.165 }
158.1 --- a/src/share/classes/javax/swing/plaf/synth/SynthSliderUI.java Tue Apr 28 14:43:44 2009 -0700
158.2 +++ b/src/share/classes/javax/swing/plaf/synth/SynthSliderUI.java Wed Apr 29 00:27:46 2009 -0700
158.3 @@ -53,6 +53,20 @@
158.4 protected Rectangle valueRect = new Rectangle();
158.5 protected boolean paintValue;
158.6
158.7 + /**
158.8 + * When a JSlider is used as a renderer in a JTable, its layout is not
158.9 + * being recomputed even though the size is changing. Even though there
158.10 + * is a ComponentListener installed, it is not being notified. As such,
158.11 + * at times when being asked to paint the layout should first be redone.
158.12 + * At the end of the layout method we set this lastSize variable, which
158.13 + * represents the size of the slider the last time it was layed out.
158.14 + *
158.15 + * In the paint method we then check to see that this is accurate, that
158.16 + * the slider has not changed sizes since being last layed out. If necessary
158.17 + * we recompute the layout.
158.18 + */
158.19 + private Dimension lastSize = null;
158.20 +
158.21 private int trackHeight;
158.22 private int trackBorder;
158.23 private int thumbWidth;
158.24 @@ -63,7 +77,8 @@
158.25 private SynthStyle sliderThumbStyle;
158.26
158.27 /** Used to determine the color to paint the thumb. */
158.28 - private transient boolean thumbActive;
158.29 + private transient boolean thumbActive; //happens on rollover, and when pressed
158.30 + private transient boolean thumbPressed; //happens when mouse was depressed while over thumb
158.31
158.32 ///////////////////////////////////////////////////
158.33 // ComponentUI Interface Implementation methods
158.34 @@ -119,6 +134,24 @@
158.35 thumbHeight =
158.36 style.getInt(context, "Slider.thumbHeight", 14);
158.37
158.38 + // handle scaling for sizeVarients for special case components. The
158.39 + // key "JComponent.sizeVariant" scales for large/small/mini
158.40 + // components are based on Apples LAF
158.41 + String scaleKey = (String)slider.getClientProperty(
158.42 + "JComponent.sizeVariant");
158.43 + if (scaleKey != null){
158.44 + if ("large".equals(scaleKey)){
158.45 + thumbWidth *= 1.15;
158.46 + thumbHeight *= 1.15;
158.47 + } else if ("small".equals(scaleKey)){
158.48 + thumbWidth *= 0.857;
158.49 + thumbHeight *= 0.857;
158.50 + } else if ("mini".equals(scaleKey)){
158.51 + thumbWidth *= 0.784;
158.52 + thumbHeight *= 0.784;
158.53 + }
158.54 + }
158.55 +
158.56 trackBorder =
158.57 style.getInt(context, "Slider.trackBorder", 1);
158.58
158.59 @@ -152,6 +185,11 @@
158.60 setThumbActive(thumbRect.contains(x, y));
158.61 }
158.62
158.63 + private void updateThumbState(int x, int y, boolean pressed) {
158.64 + updateThumbState(x, y);
158.65 + setThumbPressed(pressed);
158.66 + }
158.67 +
158.68 private void setThumbActive(boolean active) {
158.69 if (thumbActive != active) {
158.70 thumbActive = active;
158.71 @@ -159,6 +197,13 @@
158.72 }
158.73 }
158.74
158.75 + private void setThumbPressed(boolean pressed) {
158.76 + if (thumbPressed != pressed) {
158.77 + thumbPressed = pressed;
158.78 + slider.repaint(thumbRect);
158.79 + }
158.80 + }
158.81 +
158.82 public int getBaseline(JComponent c, int width, int height) {
158.83 if (c == null) {
158.84 throw new NullPointerException("Component must be non-null");
158.85 @@ -418,6 +463,7 @@
158.86 }
158.87 }
158.88 context.dispose();
158.89 + lastSize = slider.getSize();
158.90 }
158.91
158.92 /**
158.93 @@ -667,7 +713,9 @@
158.94
158.95 private int getComponentState(JComponent c, Region region) {
158.96 if (region == Region.SLIDER_THUMB && thumbActive &&c.isEnabled()) {
158.97 - return MOUSE_OVER;
158.98 + int state = thumbPressed ? PRESSED : MOUSE_OVER;
158.99 + if (c.isFocusOwner()) state |= FOCUSED;
158.100 + return state;
158.101 }
158.102 return SynthLookAndFeel.getComponentState(c);
158.103 }
158.104 @@ -693,6 +741,10 @@
158.105 recalculateIfOrientationChanged();
158.106 Rectangle clip = g.getClipBounds();
158.107
158.108 + if (lastSize == null || !lastSize.equals(slider.getSize())) {
158.109 + calculateGeometry();
158.110 + }
158.111 +
158.112 if (paintValue) {
158.113 FontMetrics fm = SwingUtilities2.getFontMetrics(slider, g);
158.114 int labelWidth = context.getStyle().getGraphicsUtils(context).
158.115 @@ -781,9 +833,14 @@
158.116 setThumbActive(false);
158.117 }
158.118
158.119 + public void mousePressed(MouseEvent e) {
158.120 + super.mousePressed(e);
158.121 + setThumbPressed(thumbRect.contains(e.getX(), e.getY()));
158.122 + }
158.123 +
158.124 public void mouseReleased(MouseEvent e) {
158.125 super.mouseReleased(e);
158.126 - updateThumbState(e.getX(), e.getY());
158.127 + updateThumbState(e.getX(), e.getY(), false);
158.128 }
158.129
158.130 public void mouseDragged(MouseEvent e) {
158.131 @@ -814,6 +871,7 @@
158.132
158.133 if (drawInverted()) {
158.134 trackBottom = vMax;
158.135 + trackTop = trackTop + halfThumbHeight;
158.136 } else {
158.137 trackTop = vMax;
158.138 }
159.1 --- a/src/share/classes/javax/swing/plaf/synth/SynthSpinnerUI.java Tue Apr 28 14:43:44 2009 -0700
159.2 +++ b/src/share/classes/javax/swing/plaf/synth/SynthSpinnerUI.java Wed Apr 29 00:27:46 2009 -0700
159.3 @@ -26,17 +26,12 @@
159.4
159.5 import java.awt.*;
159.6 import java.awt.event.*;
159.7 -import java.text.ParseException;
159.8
159.9 import javax.swing.*;
159.10 -import javax.swing.event.*;
159.11 import javax.swing.plaf.*;
159.12 import javax.swing.plaf.basic.BasicSpinnerUI;
159.13 -import javax.swing.text.*;
159.14
159.15 import java.beans.*;
159.16 -import java.text.*;
159.17 -import java.util.*;
159.18 import sun.swing.plaf.synth.SynthUI;
159.19
159.20 /**
159.21 @@ -48,7 +43,16 @@
159.22 class SynthSpinnerUI extends BasicSpinnerUI implements PropertyChangeListener,
159.23 SynthUI {
159.24 private SynthStyle style;
159.25 -
159.26 + /**
159.27 + * A FocusListener implementation which causes the entire spinner to be
159.28 + * repainted whenever the editor component (typically a text field) becomes
159.29 + * focused, or loses focus. This is necessary because since SynthSpinnerUI
159.30 + * is composed of an editor and two buttons, it is necessary that all three
159.31 + * components indicate that they are "focused" so that they can be drawn
159.32 + * appropriately. The repaint is used to ensure that the buttons are drawn
159.33 + * in the new focused or unfocused state, mirroring that of the editor.
159.34 + */
159.35 + private EditorFocusHandler editorFocusHandler = new EditorFocusHandler();
159.36
159.37 /**
159.38 * Returns a new instance of SynthSpinnerUI.
159.39 @@ -61,9 +65,17 @@
159.40 return new SynthSpinnerUI();
159.41 }
159.42
159.43 + @Override
159.44 protected void installListeners() {
159.45 super.installListeners();
159.46 spinner.addPropertyChangeListener(this);
159.47 + JComponent editor = spinner.getEditor();
159.48 + if (editor instanceof JSpinner.DefaultEditor) {
159.49 + JTextField tf = ((JSpinner.DefaultEditor)editor).getTextField();
159.50 + if (tf != null) {
159.51 + tf.addFocusListener(editorFocusHandler);
159.52 + }
159.53 + }
159.54 }
159.55
159.56 /**
159.57 @@ -74,9 +86,17 @@
159.58 *
159.59 * @see #installListeners
159.60 */
159.61 + @Override
159.62 protected void uninstallListeners() {
159.63 super.uninstallListeners();
159.64 spinner.removePropertyChangeListener(this);
159.65 + JComponent editor = spinner.getEditor();
159.66 + if (editor instanceof JSpinner.DefaultEditor) {
159.67 + JTextField tf = ((JSpinner.DefaultEditor)editor).getTextField();
159.68 + if (tf != null) {
159.69 + tf.removeFocusListener(editorFocusHandler);
159.70 + }
159.71 + }
159.72 }
159.73
159.74 /**
159.75 @@ -233,6 +253,18 @@
159.76 protected void replaceEditor(JComponent oldEditor, JComponent newEditor) {
159.77 spinner.remove(oldEditor);
159.78 spinner.add(newEditor, "Editor");
159.79 + if (oldEditor instanceof JSpinner.DefaultEditor) {
159.80 + JTextField tf = ((JSpinner.DefaultEditor)oldEditor).getTextField();
159.81 + if (tf != null) {
159.82 + tf.removeFocusListener(editorFocusHandler);
159.83 + }
159.84 + }
159.85 + if (newEditor instanceof JSpinner.DefaultEditor) {
159.86 + JTextField tf = ((JSpinner.DefaultEditor)newEditor).getTextField();
159.87 + if (tf != null) {
159.88 + tf.addFocusListener(editorFocusHandler);
159.89 + }
159.90 + }
159.91 }
159.92
159.93 private void updateEditorAlignment(JComponent editor) {
159.94 @@ -240,10 +272,14 @@
159.95 SynthContext context = getContext(spinner);
159.96 Integer alignment = (Integer)context.getStyle().get(
159.97 context, "Spinner.editorAlignment");
159.98 + JTextField text = ((JSpinner.DefaultEditor)editor).getTextField();
159.99 if (alignment != null) {
159.100 - JTextField text = ((JSpinner.DefaultEditor)editor).getTextField();
159.101 text.setHorizontalAlignment(alignment);
159.102 +
159.103 }
159.104 + // copy across the sizeVariant property to the editor
159.105 + text.putClientProperty("JComponent.sizeVariant",
159.106 + spinner.getClientProperty("JComponent.sizeVariant"));
159.107 }
159.108 }
159.109
159.110 @@ -404,4 +440,38 @@
159.111 }
159.112 }
159.113 }
159.114 +
159.115 + /** Listen to editor text field focus changes and repaint whole spinner */
159.116 + private class EditorFocusHandler implements FocusListener{
159.117 + /** Invoked when a editor text field gains the keyboard focus. */
159.118 + public void focusGained(FocusEvent e) {
159.119 + spinner.repaint();
159.120 + }
159.121 +
159.122 + /** Invoked when a editor text field loses the keyboard focus. */
159.123 + public void focusLost(FocusEvent e) {
159.124 + spinner.repaint();
159.125 + }
159.126 + }
159.127 +
159.128 + /** Override the arrowbuttons focus handling to follow the text fields focus */
159.129 + private class SpinnerArrowButton extends SynthArrowButton{
159.130 + public SpinnerArrowButton(int direction) {
159.131 + super(direction);
159.132 + }
159.133 +
159.134 + @Override
159.135 + public boolean isFocusOwner() {
159.136 + if (spinner == null){
159.137 + return super.isFocusOwner();
159.138 + } else if (spinner.getEditor() instanceof JSpinner.DefaultEditor){
159.139 + return ((JSpinner.DefaultEditor)spinner.getEditor())
159.140 + .getTextField().isFocusOwner();
159.141 + } else if (spinner.getEditor()!= null) {
159.142 + return spinner.getEditor().isFocusOwner();
159.143 + } else {
159.144 + return super.isFocusOwner();
159.145 + }
159.146 + }
159.147 + }
159.148 }
160.1 --- a/src/share/classes/javax/swing/plaf/synth/SynthStyle.java Tue Apr 28 14:43:44 2009 -0700
160.2 +++ b/src/share/classes/javax/swing/plaf/synth/SynthStyle.java Wed Apr 29 00:27:46 2009 -0700
160.3 @@ -32,6 +32,7 @@
160.4 import javax.swing.text.DefaultEditorKit;
160.5 import java.util.HashMap;
160.6 import java.util.Map;
160.7 +import javax.swing.text.JTextComponent;
160.8 import sun.swing.plaf.synth.SynthUI;
160.9
160.10 /**
160.11 @@ -758,28 +759,48 @@
160.12 public Color getColor(SynthContext context, ColorType type) {
160.13 JComponent c = context.getComponent();
160.14 Region id = context.getRegion();
160.15 - int cs = context.getComponentState();
160.16 - // For the enabled state, prefer the widget's colors
160.17 - if (!id.isSubregion() && cs == SynthConstants.ENABLED) {
160.18 +
160.19 + if ((context.getComponentState() & SynthConstants.DISABLED) != 0) {
160.20 + //This component is disabled, so return the disabled color.
160.21 + //In some cases this means ignoring the color specified by the
160.22 + //developer on the component. In other cases it means using a
160.23 + //specified disabledTextColor, such as on JTextComponents.
160.24 + //For example, JLabel doesn't specify a disabled color that the
160.25 + //developer can set, yet it should have a disabled color to the
160.26 + //text when the label is disabled. This code allows for that.
160.27 + if (c instanceof JTextComponent) {
160.28 + JTextComponent txt = (JTextComponent)c;
160.29 + Color disabledColor = txt.getDisabledTextColor();
160.30 + if (disabledColor == null || disabledColor instanceof UIResource) {
160.31 + return getColorForState(context, type);
160.32 + }
160.33 + } else if (c instanceof JLabel &&
160.34 + (type == ColorType.FOREGROUND ||
160.35 + type == ColorType.TEXT_FOREGROUND)) {
160.36 + return getColorForState(context, type);
160.37 + }
160.38 + }
160.39 +
160.40 + // If the developer has specified a color, prefer it. Otherwise, get
160.41 + // the color for the state.
160.42 + Color color = null;
160.43 + if (!id.isSubregion()) {
160.44 if (type == ColorType.BACKGROUND) {
160.45 - return c.getBackground();
160.46 + color = c.getBackground();
160.47 }
160.48 else if (type == ColorType.FOREGROUND) {
160.49 - return c.getForeground();
160.50 + color = c.getForeground();
160.51 }
160.52 else if (type == ColorType.TEXT_FOREGROUND) {
160.53 - // If getForeground returns a non-UIResource it means the
160.54 - // developer has explicitly set the foreground, use it over
160.55 - // that of TEXT_FOREGROUND as that is typically the expected
160.56 - // behavior.
160.57 - Color color = c.getForeground();
160.58 - if (!(color instanceof UIResource)) {
160.59 - return color;
160.60 - }
160.61 + color = c.getForeground();
160.62 }
160.63 }
160.64 - // Then use what we've locally defined
160.65 - Color color = getColorForState(context, type);
160.66 +
160.67 + if (color == null || color instanceof UIResource) {
160.68 + // Then use what we've locally defined
160.69 + color = getColorForState(context, type);
160.70 + }
160.71 +
160.72 if (color == null) {
160.73 // No color, fallback to that of the widget.
160.74 if (type == ColorType.BACKGROUND ||
161.1 --- a/src/share/classes/javax/swing/plaf/synth/SynthTabbedPaneUI.java Tue Apr 28 14:43:44 2009 -0700
161.2 +++ b/src/share/classes/javax/swing/plaf/synth/SynthTabbedPaneUI.java Wed Apr 29 00:27:46 2009 -0700
161.3 @@ -26,7 +26,6 @@
161.4 package javax.swing.plaf.synth;
161.5
161.6 import javax.swing.*;
161.7 -import javax.swing.event.*;
161.8 import javax.swing.plaf.*;
161.9 import javax.swing.plaf.basic.*;
161.10 import javax.swing.text.View;
161.11 @@ -35,8 +34,6 @@
161.12 import java.awt.event.*;
161.13 import java.beans.PropertyChangeListener;
161.14 import java.beans.PropertyChangeEvent;
161.15 -import java.util.Vector;
161.16 -import java.util.Hashtable;
161.17 import sun.swing.plaf.synth.SynthUI;
161.18 import sun.swing.SwingUtilities2;
161.19
161.20 @@ -50,6 +47,40 @@
161.21 * insets for the selected tab.
161.22 */
161.23 class SynthTabbedPaneUI extends BasicTabbedPaneUI implements SynthUI, PropertyChangeListener {
161.24 + /**
161.25 + * <p>If non-zero, tabOverlap indicates the amount that the tab bounds
161.26 + * should be altered such that they would overlap with a tab on either the
161.27 + * leading or trailing end of a run (ie: in TOP, this would be on the left
161.28 + * or right).</p>
161.29 +
161.30 + * <p>A positive overlap indicates that tabs should overlap right/down,
161.31 + * while a negative overlap indicates tha tabs should overlap left/up.</p>
161.32 + *
161.33 + * <p>When tabOverlap is specified, it both changes the x position and width
161.34 + * of the tab if in TOP or BOTTOM placement, and changes the y position and
161.35 + * height if in LEFT or RIGHT placement.</p>
161.36 + *
161.37 + * <p>This is done for the following reason. Consider a run of 10 tabs.
161.38 + * There are 9 gaps between these tabs. If you specified a tabOverlap of
161.39 + * "-1", then each of the tabs "x" values will be shifted left. This leaves
161.40 + * 9 pixels of space to the right of the right-most tab unpainted. So, each
161.41 + * tab's width is also extended by 1 pixel to make up the difference.</p>
161.42 + *
161.43 + * <p>This property respects the RTL component orientation.</p>
161.44 + */
161.45 + private int tabOverlap = 0;
161.46 +
161.47 + /**
161.48 + * When a tabbed pane has multiple rows of tabs, this indicates whether
161.49 + * the tabs in the upper row(s) should extend to the base of the tab area,
161.50 + * or whether they should remain at their normal tab height. This does not
161.51 + * affect the bounds of the tabs, only the bounds of area painted by the
161.52 + * tabs. The text position does not change. The result is that the bottom
161.53 + * border of the upper row of tabs becomes fully obscured by the lower tabs,
161.54 + * resulting in a cleaner look.
161.55 + */
161.56 + private boolean extendTabsToBase = false;
161.57 +
161.58 private SynthContext tabAreaContext;
161.59 private SynthContext tabContext;
161.60 private SynthContext tabContentContext;
161.61 @@ -64,6 +95,14 @@
161.62
161.63 private Rectangle tabAreaBounds = new Rectangle();
161.64
161.65 + //added for the Nimbus look and feel, where the tab area is painted differently depending on the
161.66 + //state for the selected tab
161.67 + private boolean tabAreaStatesMatchSelectedTab = false;
161.68 + //added for the Nimbus LAF to ensure that the labels don't move whether the tab is selected or not
161.69 + private boolean nudgeSelectedLabel = true;
161.70 +
161.71 + private boolean selectedTabIsPressed = false;
161.72 +
161.73 public static ComponentUI createUI(JComponent c) {
161.74 return new SynthTabbedPaneUI();
161.75 }
161.76 @@ -90,12 +129,19 @@
161.77 if (style != oldStyle) {
161.78 tabRunOverlay =
161.79 style.getInt(context, "TabbedPane.tabRunOverlay", 0);
161.80 + tabOverlap = style.getInt(context, "TabbedPane.tabOverlap", 0);
161.81 + extendTabsToBase = style.getBoolean(context,
161.82 + "TabbedPane.extendTabsToBase", false);
161.83 textIconGap = style.getInt(context, "TabbedPane.textIconGap", 0);
161.84 selectedTabPadInsets = (Insets)style.get(context,
161.85 "TabbedPane.selectedTabPadInsets");
161.86 if (selectedTabPadInsets == null) {
161.87 selectedTabPadInsets = new Insets(0, 0, 0, 0);
161.88 }
161.89 + tabAreaStatesMatchSelectedTab = style.getBoolean(context,
161.90 + "TabbedPane.tabAreaStatesMatchSelectedTab", false);
161.91 + nudgeSelectedLabel = style.getBoolean(context,
161.92 + "TabbedPane.nudgeSelectedLabel", true);
161.93 if (oldStyle != null) {
161.94 uninstallKeyboardActions();
161.95 installKeyboardActions();
161.96 @@ -199,6 +245,14 @@
161.97 }
161.98
161.99 protected JButton createScrollButton(int direction) {
161.100 + // added for Nimbus LAF so that it can use the basic arrow buttons
161.101 + // UIManager is queried directly here because this is called before
161.102 + // updateStyle is called so the style can not be queried directly
161.103 + if (UIManager.getBoolean("TabbedPane.useBasicArrows")) {
161.104 + JButton btn = super.createScrollButton(direction);
161.105 + btn.setBorder(BorderFactory.createEmptyBorder());
161.106 + return btn;
161.107 + }
161.108 return new SynthScrollableTabButton(direction);
161.109 }
161.110
161.111 @@ -208,6 +262,75 @@
161.112 }
161.113 }
161.114
161.115 + /**
161.116 + * @inheritDoc
161.117 + *
161.118 + * Overridden to keep track of whether the selected tab is also pressed.
161.119 + */
161.120 + @Override
161.121 + protected MouseListener createMouseListener() {
161.122 + final MouseListener delegate = super.createMouseListener();
161.123 + final MouseMotionListener delegate2 = (MouseMotionListener)delegate;
161.124 + return new MouseListener() {
161.125 + public void mouseClicked(MouseEvent e) { delegate.mouseClicked(e); }
161.126 + public void mouseEntered(MouseEvent e) { delegate.mouseEntered(e); }
161.127 + public void mouseExited(MouseEvent e) { delegate.mouseExited(e); }
161.128 +
161.129 + public void mousePressed(MouseEvent e) {
161.130 + if (!tabPane.isEnabled()) {
161.131 + return;
161.132 + }
161.133 +
161.134 + int tabIndex = tabForCoordinate(tabPane, e.getX(), e.getY());
161.135 + if (tabIndex >= 0 && tabPane.isEnabledAt(tabIndex)) {
161.136 + if (tabIndex == tabPane.getSelectedIndex()) {
161.137 + // Clicking on selected tab
161.138 + selectedTabIsPressed = true;
161.139 + //TODO need to just repaint the tab area!
161.140 + tabPane.repaint();
161.141 + }
161.142 + }
161.143 +
161.144 + //forward the event (this will set the selected index, or none at all
161.145 + delegate.mousePressed(e);
161.146 + }
161.147 +
161.148 + public void mouseReleased(MouseEvent e) {
161.149 + if (selectedTabIsPressed) {
161.150 + selectedTabIsPressed = false;
161.151 + //TODO need to just repaint the tab area!
161.152 + tabPane.repaint();
161.153 + }
161.154 + //forward the event
161.155 + delegate.mouseReleased(e);
161.156 +
161.157 + //hack: The super method *should* be setting the mouse-over property correctly
161.158 + //here, but it doesn't. That is, when the mouse is released, whatever tab is below the
161.159 + //released mouse should be in rollover state. But, if you select a tab and don't
161.160 + //move the mouse, this doesn't happen. Hence, forwarding the event.
161.161 + delegate2.mouseMoved(e);
161.162 + }
161.163 + };
161.164 + }
161.165 +
161.166 + @Override
161.167 + protected int getTabLabelShiftX(int tabPlacement, int tabIndex, boolean isSelected) {
161.168 + if (nudgeSelectedLabel) {
161.169 + return super.getTabLabelShiftX(tabPlacement, tabIndex, isSelected);
161.170 + } else {
161.171 + return 0;
161.172 + }
161.173 + }
161.174 +
161.175 + @Override
161.176 + protected int getTabLabelShiftY(int tabPlacement, int tabIndex, boolean isSelected) {
161.177 + if (nudgeSelectedLabel) {
161.178 + return super.getTabLabelShiftY(tabPlacement, tabIndex, isSelected);
161.179 + } else {
161.180 + return 0;
161.181 + }
161.182 + }
161.183 +
161.184 public void update(Graphics g, JComponent c) {
161.185 SynthContext context = getContext(c);
161.186
161.187 @@ -321,6 +444,20 @@
161.188 Rectangle tabAreaBounds) {
161.189 Rectangle clipRect = g.getClipBounds();
161.190
161.191 + //if the tab area's states should match that of the selected tab, then
161.192 + //first update the selected tab's states, then set the state
161.193 + //for the tab area to match
161.194 + //otherwise, restore the tab area's state to ENABLED (which is the
161.195 + //only supported state otherwise).
161.196 + if (tabAreaStatesMatchSelectedTab && selectedIndex >= 0) {
161.197 + updateTabContext(selectedIndex, true, selectedTabIsPressed,
161.198 + (getRolloverTab() == selectedIndex),
161.199 + (getFocusIndex() == selectedIndex));
161.200 + ss.setComponentState(tabContext.getComponentState());
161.201 + } else {
161.202 + ss.setComponentState(SynthConstants.ENABLED);
161.203 + }
161.204 +
161.205 // Paint the tab area.
161.206 SynthLookAndFeel.updateSubregion(ss, g, tabAreaBounds);
161.207 ss.getPainter().paintTabbedPaneTabAreaBackground(ss, g,
161.208 @@ -362,17 +499,22 @@
161.209
161.210 Rectangle r = null;
161.211
161.212 - if ((oldRolloverTab >= 0) && (oldRolloverTab < tabPane.getTabCount())) {
161.213 - r = getTabBounds(tabPane, oldRolloverTab);
161.214 - if (r != null) {
161.215 - tabPane.repaint(r);
161.216 + if (oldRolloverTab != index && tabAreaStatesMatchSelectedTab) {
161.217 + //TODO need to just repaint the tab area!
161.218 + tabPane.repaint();
161.219 + } else {
161.220 + if ((oldRolloverTab >= 0) && (oldRolloverTab < tabPane.getTabCount())) {
161.221 + r = getTabBounds(tabPane, oldRolloverTab);
161.222 + if (r != null) {
161.223 + tabPane.repaint(r);
161.224 + }
161.225 }
161.226 - }
161.227
161.228 - if (index >= 0) {
161.229 - r = getTabBounds(tabPane, index);
161.230 - if (r != null) {
161.231 - tabPane.repaint(r);
161.232 + if (index >= 0) {
161.233 + r = getTabBounds(tabPane, index);
161.234 + if (r != null) {
161.235 + tabPane.repaint(r);
161.236 + }
161.237 }
161.238 }
161.239 }
161.240 @@ -383,18 +525,51 @@
161.241 Rectangle tabRect = rects[tabIndex];
161.242 int selectedIndex = tabPane.getSelectedIndex();
161.243 boolean isSelected = selectedIndex == tabIndex;
161.244 - updateTabContext(tabIndex, isSelected,
161.245 - (getRolloverTab() == tabIndex),
161.246 - (getFocusIndex() == tabIndex));
161.247 + updateTabContext(tabIndex, isSelected, isSelected && selectedTabIsPressed,
161.248 + (getRolloverTab() == tabIndex),
161.249 + (getFocusIndex() == tabIndex));
161.250
161.251 SynthLookAndFeel.updateSubregion(ss, g, tabRect);
161.252 - tabContext.getPainter().paintTabbedPaneTabBackground(tabContext,
161.253 - g, tabRect.x, tabRect.y, tabRect.width,
161.254 - tabRect.height, tabIndex,
161.255 - tabPane.getTabPlacement());
161.256 + int x = tabRect.x;
161.257 + int y = tabRect.y;
161.258 + int height = tabRect.height;
161.259 + int width = tabRect.width;
161.260 + int placement = tabPane.getTabPlacement();
161.261 + if (extendTabsToBase && runCount > 1) {
161.262 + //paint this tab such that its edge closest to the base is equal to
161.263 + //edge of the selected tab closest to the base. In terms of the TOP
161.264 + //tab placement, this will cause the bottom of each tab to be
161.265 + //painted even with the bottom of the selected tab. This is because
161.266 + //in each tab placement (TOP, LEFT, BOTTOM, RIGHT) the selected tab
161.267 + //is closest to the base.
161.268 + if (selectedIndex >= 0) {
161.269 + Rectangle r = rects[selectedIndex];
161.270 + switch (placement) {
161.271 + case TOP:
161.272 + int bottomY = r.y + r.height;
161.273 + height = bottomY - tabRect.y;
161.274 + break;
161.275 + case LEFT:
161.276 + int rightX = r.x + r.width;
161.277 + width = rightX - tabRect.x;
161.278 + break;
161.279 + case BOTTOM:
161.280 + int topY = r.y;
161.281 + height = (tabRect.y + tabRect.height) - topY;
161.282 + y = topY;
161.283 + break;
161.284 + case RIGHT:
161.285 + int leftX = r.x;
161.286 + width = (tabRect.x + tabRect.width) - leftX;
161.287 + x = leftX;
161.288 + break;
161.289 + }
161.290 + }
161.291 + }
161.292 + tabContext.getPainter().paintTabbedPaneTabBackground(tabContext, g,
161.293 + x, y, width, height, tabIndex, placement);
161.294 tabContext.getPainter().paintTabbedPaneTabBorder(tabContext, g,
161.295 - tabRect.x, tabRect.y, tabRect.width, tabRect.height,
161.296 - tabIndex, tabPane.getTabPlacement());
161.297 + x, y, width, height, tabIndex, placement);
161.298
161.299 if (tabPane.getTabComponentAt(tabIndex) == null) {
161.300 String title = tabPane.getTitleAt(tabIndex);
161.301 @@ -561,7 +736,7 @@
161.302 }
161.303
161.304 protected Insets getTabInsets(int tabPlacement, int tabIndex) {
161.305 - updateTabContext(tabIndex, false, false,
161.306 + updateTabContext(tabIndex, false, false, false,
161.307 (getFocusIndex() == tabIndex));
161.308 return tabInsets;
161.309 }
161.310 @@ -575,7 +750,7 @@
161.311 }
161.312
161.313 private void updateTabContext(int index, boolean selected,
161.314 - boolean isMouseOver, boolean hasFocus) {
161.315 + boolean isMouseDown, boolean isMouseOver, boolean hasFocus) {
161.316 int state = 0;
161.317 if (!tabPane.isEnabled() || !tabPane.isEnabledAt(index)) {
161.318 state |= SynthConstants.DISABLED;
161.319 @@ -599,9 +774,68 @@
161.320 if (hasFocus && tabPane.hasFocus()) {
161.321 state |= SynthConstants.FOCUSED; // individual tab has focus
161.322 }
161.323 + if (isMouseDown) {
161.324 + state |= SynthConstants.PRESSED;
161.325 + }
161.326 +
161.327 tabContext.setComponentState(state);
161.328 }
161.329
161.330 + /**
161.331 + * @inheritDoc
161.332 + *
161.333 + * Overridden to create a TabbedPaneLayout subclass which takes into
161.334 + * account tabOverlap.
161.335 + */
161.336 + @Override protected LayoutManager createLayoutManager() {
161.337 + if (tabPane.getTabLayoutPolicy() == JTabbedPane.SCROLL_TAB_LAYOUT) {
161.338 + return super.createLayoutManager();
161.339 + } else { /* WRAP_TAB_LAYOUT */
161.340 + return new TabbedPaneLayout() {
161.341 + @Override
161.342 + public void calculateLayoutInfo() {
161.343 + super.calculateLayoutInfo();
161.344 + //shift all the tabs, if necessary
161.345 + if (tabOverlap != 0) {
161.346 + int tabCount = tabPane.getTabCount();
161.347 + //left-to-right/right-to-left only affects layout
161.348 + //when placement is TOP or BOTTOM
161.349 + boolean ltr = tabPane.getComponentOrientation().isLeftToRight();
161.350 + for (int i = runCount - 1; i >= 0; i--) {
161.351 + int start = tabRuns[i];
161.352 + int next = tabRuns[(i == runCount - 1)? 0 : i + 1];
161.353 + int end = (next != 0? next - 1: tabCount - 1);
161.354 + for (int j = start+1; j <= end; j++) {
161.355 + // xshift and yshift represent the amount &
161.356 + // direction to shift the tab in their
161.357 + // respective axis.
161.358 + int xshift = 0;
161.359 + int yshift = 0;
161.360 + // configure xshift and y shift based on tab
161.361 + // position and ltr/rtl
161.362 + switch (tabPane.getTabPlacement()) {
161.363 + case JTabbedPane.TOP:
161.364 + case JTabbedPane.BOTTOM:
161.365 + xshift = ltr ? tabOverlap : -tabOverlap;
161.366 + break;
161.367 + case JTabbedPane.LEFT:
161.368 + case JTabbedPane.RIGHT:
161.369 + yshift = tabOverlap;
161.370 + break;
161.371 + default: //do nothing
161.372 + }
161.373 + rects[j].x += xshift;
161.374 + rects[j].y += yshift;
161.375 + rects[j].width += Math.abs(xshift);
161.376 + rects[j].height += Math.abs(yshift);
161.377 + }
161.378 + }
161.379 + }
161.380 + }
161.381 + };
161.382 + }
161.383 + }
161.384 +
161.385 private class SynthScrollableTabButton extends SynthArrowButton implements
161.386 UIResource {
161.387 public SynthScrollableTabButton(int direction) {
162.1 --- a/src/share/classes/javax/swing/plaf/synth/SynthTableHeaderUI.java Tue Apr 28 14:43:44 2009 -0700
162.2 +++ b/src/share/classes/javax/swing/plaf/synth/SynthTableHeaderUI.java Wed Apr 29 00:27:46 2009 -0700
162.3 @@ -33,6 +33,7 @@
162.4 import javax.swing.plaf.basic.*;
162.5 import javax.swing.table.*;
162.6
162.7 +import sun.swing.DefaultLookup;
162.8 import sun.swing.plaf.synth.*;
162.9 import sun.swing.table.*;
162.10
162.11 @@ -160,6 +161,7 @@
162.12 private class HeaderRenderer extends DefaultTableCellHeaderRenderer {
162.13 HeaderRenderer() {
162.14 setHorizontalAlignment(JLabel.LEADING);
162.15 + setName("TableHeader.renderer");
162.16 }
162.17
162.18 @Override
162.19 @@ -178,24 +180,40 @@
162.20 SynthLookAndFeel.resetSelectedUI();
162.21 }
162.22
162.23 + //stuff a variable into the client property of this renderer indicating the sort order,
162.24 + //so that different rendering can be done for the header based on sorted state.
162.25 + RowSorter rs = table == null ? null : table.getRowSorter();
162.26 + java.util.List<? extends RowSorter.SortKey> sortKeys = rs == null ? null : rs.getSortKeys();
162.27 + if (sortKeys != null && sortKeys.size() > 0 && sortKeys.get(0).getColumn() ==
162.28 + table.convertColumnIndexToModel(column)) {
162.29 + switch(sortKeys.get(0).getSortOrder()) {
162.30 + case ASCENDING:
162.31 + putClientProperty("Table.sortOrder", "ASCENDING");
162.32 + break;
162.33 + case DESCENDING:
162.34 + putClientProperty("Table.sortOrder", "DESCENDING");
162.35 + break;
162.36 + case UNSORTED:
162.37 + putClientProperty("Table.sortOrder", "UNSORTED");
162.38 + break;
162.39 + default:
162.40 + throw new AssertionError("Cannot happen");
162.41 + }
162.42 + } else {
162.43 + putClientProperty("Table.sortOrder", "UNSORTED");
162.44 + }
162.45 +
162.46 super.getTableCellRendererComponent(table, value, isSelected,
162.47 hasFocus, row, column);
162.48
162.49 return this;
162.50 }
162.51
162.52 + @Override
162.53 public void setBorder(Border border) {
162.54 if (border instanceof SynthBorder) {
162.55 super.setBorder(border);
162.56 }
162.57 }
162.58 -
162.59 - public String getName() {
162.60 - String name = super.getName();
162.61 - if (name == null) {
162.62 - return "TableHeader.renderer";
162.63 - }
162.64 - return name;
162.65 - }
162.66 }
162.67 }
163.1 --- a/src/share/classes/javax/swing/plaf/synth/SynthTableUI.java Tue Apr 28 14:43:44 2009 -0700
163.2 +++ b/src/share/classes/javax/swing/plaf/synth/SynthTableUI.java Wed Apr 29 00:27:46 2009 -0700
163.3 @@ -27,6 +27,7 @@
163.4
163.5 import java.awt.Color;
163.6 import java.awt.Component;
163.7 +import java.awt.Dimension;
163.8 import java.awt.Graphics;
163.9 import java.awt.Point;
163.10 import java.awt.Rectangle;
163.11 @@ -70,6 +71,7 @@
163.12
163.13 private boolean useTableColors;
163.14 private boolean useUIBorder;
163.15 + private Color alternateColor; //the background color to use for cells for alternate cells
163.16
163.17 // TableCellRenderer installed on the JTable at the time we're installed,
163.18 // cached so that we can reinstall them at uninstallUI time.
163.19 @@ -161,6 +163,21 @@
163.20 if (rowHeight != null) {
163.21 LookAndFeel.installProperty(table, "rowHeight", rowHeight);
163.22 }
163.23 + boolean showGrid = style.getBoolean(context, "Table.showGrid", true);
163.24 + if (!showGrid) {
163.25 + table.setShowGrid(false);
163.26 + }
163.27 + Dimension d = table.getIntercellSpacing();
163.28 +// if (d == null || d instanceof UIResource) {
163.29 + if (d != null) {
163.30 + d = (Dimension)style.get(context, "Table.intercellSpacing");
163.31 + }
163.32 + alternateColor = (Color)style.get(context, "Table.alternateRowColor");
163.33 + if (d != null) {
163.34 + table.setIntercellSpacing(d);
163.35 + }
163.36 +
163.37 +
163.38 if (oldStyle != null) {
163.39 uninstallKeyboardActions();
163.40 installKeyboardActions();
163.41 @@ -617,6 +634,14 @@
163.42 else {
163.43 TableCellRenderer renderer = table.getCellRenderer(row, column);
163.44 Component component = table.prepareRenderer(renderer, row, column);
163.45 + Color b = component.getBackground();
163.46 + if ((b == null || b instanceof UIResource
163.47 + || component instanceof SynthBooleanTableCellRenderer)
163.48 + && !table.isCellSelected(row, column)) {
163.49 + if (alternateColor != null && row % 2 == 0) {
163.50 + component.setBackground(alternateColor);
163.51 + }
163.52 + }
163.53 rendererPane.paintComponent(g, component, table, cellRect.x,
163.54 cellRect.y, cellRect.width, cellRect.height, true);
163.55 }
163.56 @@ -634,16 +659,8 @@
163.57 private boolean isRowSelected;
163.58
163.59 public SynthBooleanTableCellRenderer() {
163.60 - super();
163.61 setHorizontalAlignment(JLabel.CENTER);
163.62 - }
163.63 -
163.64 - public String getName() {
163.65 - String name = super.getName();
163.66 - if (name == null) {
163.67 - return "Table.cellRenderer";
163.68 - }
163.69 - return name;
163.70 + setName("Table.cellRenderer");
163.71 }
163.72
163.73 public Component getTableCellRendererComponent(
163.74 @@ -652,17 +669,24 @@
163.75 isRowSelected = isSelected;
163.76
163.77 if (isSelected) {
163.78 - setForeground(table.getSelectionForeground());
163.79 - setBackground(table.getSelectionBackground());
163.80 + setForeground(unwrap(table.getSelectionForeground()));
163.81 + setBackground(unwrap(table.getSelectionBackground()));
163.82 } else {
163.83 - setForeground(table.getForeground());
163.84 - setBackground(table.getBackground());
163.85 + setForeground(unwrap(table.getForeground()));
163.86 + setBackground(unwrap(table.getBackground()));
163.87 }
163.88
163.89 setSelected((value != null && ((Boolean)value).booleanValue()));
163.90 return this;
163.91 }
163.92
163.93 + private Color unwrap(Color c) {
163.94 + if (c instanceof UIResource) {
163.95 + return new Color(c.getRGB());
163.96 + }
163.97 + return c;
163.98 + }
163.99 +
163.100 public boolean isOpaque() {
163.101 return isRowSelected ? true : super.isOpaque();
163.102 }
163.103 @@ -732,7 +756,7 @@
163.104 }
163.105 else if (columnClass == Icon.class || columnClass == ImageIcon.class) {
163.106 setHorizontalAlignment(JLabel.CENTER);
163.107 - setIcon((Icon)value);
163.108 + setIcon((value instanceof Icon) ? (Icon)value : null);
163.109 setText("");
163.110 }
163.111 else if (columnClass == Date.class) {
164.1 --- a/src/share/classes/javax/swing/plaf/synth/SynthTextAreaUI.java Tue Apr 28 14:43:44 2009 -0700
164.2 +++ b/src/share/classes/javax/swing/plaf/synth/SynthTextAreaUI.java Wed Apr 29 00:27:46 2009 -0700
164.3 @@ -27,10 +27,11 @@
164.4
164.5 import javax.swing.*;
164.6 import javax.swing.text.*;
164.7 -import javax.swing.event.*;
164.8 import javax.swing.plaf.*;
164.9 import javax.swing.plaf.basic.BasicTextAreaUI;
164.10 import java.awt.*;
164.11 +import java.awt.event.FocusListener;
164.12 +import java.awt.event.FocusEvent;
164.13 import java.beans.PropertyChangeEvent;
164.14 import sun.swing.plaf.synth.SynthUI;
164.15
164.16 @@ -50,7 +51,7 @@
164.17 *
164.18 * @author Shannon Hickey
164.19 */
164.20 -class SynthTextAreaUI extends BasicTextAreaUI implements SynthUI {
164.21 +class SynthTextAreaUI extends BasicTextAreaUI implements SynthUI, FocusListener {
164.22 private SynthStyle style;
164.23
164.24 /**
164.25 @@ -63,16 +64,26 @@
164.26 return new SynthTextAreaUI();
164.27 }
164.28
164.29 + public void focusGained(FocusEvent e) {
164.30 + getComponent().repaint();
164.31 + }
164.32 +
164.33 + public void focusLost(FocusEvent e) {
164.34 + getComponent().repaint();
164.35 + }
164.36 +
164.37 protected void installDefaults() {
164.38 // Installs the text cursor on the component
164.39 super.installDefaults();
164.40 updateStyle(getComponent());
164.41 + getComponent().addFocusListener(this);
164.42 }
164.43
164.44 protected void uninstallDefaults() {
164.45 SynthContext context = getContext(getComponent(), ENABLED);
164.46
164.47 getComponent().putClientProperty("caretAspectRatio", null);
164.48 + getComponent().removeFocusListener(this);
164.49
164.50 style.uninstallDefaults(context);
164.51 context.dispose();
165.1 --- a/src/share/classes/javax/swing/plaf/synth/SynthToggleButtonUI.java Tue Apr 28 14:43:44 2009 -0700
165.2 +++ b/src/share/classes/javax/swing/plaf/synth/SynthToggleButtonUI.java Wed Apr 29 00:27:46 2009 -0700
165.3 @@ -25,12 +25,10 @@
165.4
165.5 package javax.swing.plaf.synth;
165.6
165.7 -import java.awt.*;
165.8 -import java.awt.event.*;
165.9 -import javax.swing.*;
165.10 -import javax.swing.border.*;
165.11 -import javax.swing.plaf.*;
165.12 -import javax.swing.text.View;
165.13 +import java.awt.Graphics;
165.14 +import javax.swing.AbstractButton;
165.15 +import javax.swing.JComponent;
165.16 +import javax.swing.plaf.ComponentUI;
165.17
165.18 /**
165.19 * Synth's ToggleButtonUI.
165.20 @@ -45,15 +43,21 @@
165.21 return new SynthToggleButtonUI();
165.22 }
165.23
165.24 + @Override
165.25 protected String getPropertyPrefix() {
165.26 return "ToggleButton.";
165.27 }
165.28
165.29 + @Override
165.30 void paintBackground(SynthContext context, Graphics g, JComponent c) {
165.31 - context.getPainter().paintToggleButtonBackground(context, g, 0, 0,
165.32 - c.getWidth(), c.getHeight());
165.33 + if (((AbstractButton) c).isContentAreaFilled()) {
165.34 + int x = 0, y = 0, w = c.getWidth(), h = c.getHeight();
165.35 + SynthPainter painter = context.getPainter();
165.36 + painter.paintToggleButtonBackground(context, g, x, y, w, h);
165.37 + }
165.38 }
165.39
165.40 + @Override
165.41 public void paintBorder(SynthContext context, Graphics g, int x,
165.42 int y, int w, int h) {
165.43 context.getPainter().paintToggleButtonBorder(context, g, x, y, w, h);
166.1 --- a/src/share/classes/javax/swing/plaf/synth/SynthToolBarUI.java Tue Apr 28 14:43:44 2009 -0700
166.2 +++ b/src/share/classes/javax/swing/plaf/synth/SynthToolBarUI.java Wed Apr 29 00:27:46 2009 -0700
166.3 @@ -25,18 +25,24 @@
166.4
166.5 package javax.swing.plaf.synth;
166.6
166.7 -import javax.swing.*;
166.8 -import javax.swing.event.*;
166.9 -import java.awt.*;
166.10 -import java.awt.event.*;
166.11 -
166.12 -import java.beans.*;
166.13 -
166.14 -import javax.swing.border.*;
166.15 -import javax.swing.plaf.*;
166.16 +import java.awt.Component;
166.17 +import java.awt.Container;
166.18 +import java.awt.Dimension;
166.19 +import java.awt.Graphics;
166.20 +import java.awt.Insets;
166.21 +import java.awt.LayoutManager;
166.22 +import java.awt.Rectangle;
166.23 +import java.beans.PropertyChangeEvent;
166.24 +import java.beans.PropertyChangeListener;
166.25 +import javax.swing.Box;
166.26 +import javax.swing.Icon;
166.27 +import javax.swing.JComponent;
166.28 +import javax.swing.JSeparator;
166.29 +import javax.swing.JToolBar;
166.30 +import javax.swing.plaf.ComponentUI;
166.31 import javax.swing.plaf.basic.BasicToolBarUI;
166.32 -import sun.swing.plaf.synth.*;
166.33 -
166.34 +import sun.swing.plaf.synth.SynthIcon;
166.35 +import sun.swing.plaf.synth.SynthUI;
166.36
166.37 /**
166.38 * A Synth L&F implementation of ToolBarUI. This implementation
166.39 @@ -57,23 +63,35 @@
166.40 return new SynthToolBarUI();
166.41 }
166.42
166.43 + @Override
166.44 protected void installDefaults() {
166.45 toolBar.setLayout(createLayout());
166.46 updateStyle(toolBar);
166.47 }
166.48
166.49 + @Override
166.50 protected void installListeners() {
166.51 super.installListeners();
166.52 toolBar.addPropertyChangeListener(this);
166.53 }
166.54
166.55 + @Override
166.56 protected void uninstallListeners() {
166.57 super.uninstallListeners();
166.58 toolBar.removePropertyChangeListener(this);
166.59 }
166.60
166.61 private void updateStyle(JToolBar c) {
166.62 - SynthContext context = getContext(c, ENABLED);
166.63 + SynthContext context = getContext(
166.64 + c, Region.TOOL_BAR_CONTENT, null, ENABLED);
166.65 + contentStyle = SynthLookAndFeel.updateStyle(context, this);
166.66 + context.dispose();
166.67 +
166.68 + context = getContext(c, Region.TOOL_BAR_DRAG_WINDOW, null, ENABLED);
166.69 + dragWindowStyle = SynthLookAndFeel.updateStyle(context, this);
166.70 + context.dispose();
166.71 +
166.72 + context = getContext(c, ENABLED);
166.73 SynthStyle oldStyle = style;
166.74
166.75 style = SynthLookAndFeel.updateStyle(context, this);
166.76 @@ -86,16 +104,9 @@
166.77 }
166.78 }
166.79 context.dispose();
166.80 -
166.81 - context = getContext(c, Region.TOOL_BAR_CONTENT, ENABLED);
166.82 - contentStyle = SynthLookAndFeel.updateStyle(context, this);
166.83 - context.dispose();
166.84 -
166.85 - context = getContext(c, Region.TOOL_BAR_DRAG_WINDOW, ENABLED);
166.86 - dragWindowStyle = SynthLookAndFeel.updateStyle(context, this);
166.87 - context.dispose();
166.88 }
166.89
166.90 + @Override
166.91 protected void uninstallDefaults() {
166.92 SynthContext context = getContext(toolBar, ENABLED);
166.93
166.94 @@ -105,12 +116,14 @@
166.95
166.96 handleIcon = null;
166.97
166.98 - context = getContext(toolBar, Region.TOOL_BAR_CONTENT, ENABLED);
166.99 + context = getContext(toolBar, Region.TOOL_BAR_CONTENT,
166.100 + contentStyle, ENABLED);
166.101 contentStyle.uninstallDefaults(context);
166.102 context.dispose();
166.103 contentStyle = null;
166.104
166.105 - context = getContext(toolBar, Region.TOOL_BAR_DRAG_WINDOW, ENABLED);
166.106 + context = getContext(toolBar, Region.TOOL_BAR_DRAG_WINDOW,
166.107 + dragWindowStyle, ENABLED);
166.108 dragWindowStyle.uninstallDefaults(context);
166.109 context.dispose();
166.110 dragWindowStyle = null;
166.111 @@ -118,11 +131,11 @@
166.112 toolBar.setLayout(null);
166.113 }
166.114
166.115 - protected void installComponents() {
166.116 - }
166.117 + @Override
166.118 + protected void installComponents() {}
166.119
166.120 - protected void uninstallComponents() {
166.121 - }
166.122 + @Override
166.123 + protected void uninstallComponents() {}
166.124
166.125 protected LayoutManager createLayout() {
166.126 return new SynthToolBarLayoutManager();
166.127 @@ -137,13 +150,15 @@
166.128 SynthLookAndFeel.getRegion(c), style, state);
166.129 }
166.130
166.131 - private SynthContext getContext(JComponent c, Region region) {
166.132 - return getContext(c, region, getComponentState(c, region));
166.133 + private SynthContext getContext(JComponent c, Region region, SynthStyle style) {
166.134 + return SynthContext.getContext(SynthContext.class, c, region,
166.135 + style, getComponentState(c, region));
166.136 }
166.137
166.138 - private SynthContext getContext(JComponent c, Region region, int state) {
166.139 + private SynthContext getContext(JComponent c, Region region,
166.140 + SynthStyle style, int state) {
166.141 return SynthContext.getContext(SynthContext.class, c, region,
166.142 - dragWindowStyle, state);
166.143 + style, state);
166.144 }
166.145
166.146 private Region getRegion(JComponent c) {
166.147 @@ -158,6 +173,7 @@
166.148 return SynthLookAndFeel.getComponentState(c);
166.149 }
166.150
166.151 + @Override
166.152 public void update(Graphics g, JComponent c) {
166.153 SynthContext context = getContext(c);
166.154
166.155 @@ -169,6 +185,7 @@
166.156 context.dispose();
166.157 }
166.158
166.159 + @Override
166.160 public void paint(Graphics g, JComponent c) {
166.161 SynthContext context = getContext(c);
166.162
166.163 @@ -183,12 +200,15 @@
166.164 }
166.165
166.166 // Overloaded to do nothing so we can share listeners.
166.167 + @Override
166.168 protected void setBorderToNonRollover(Component c) {}
166.169
166.170 // Overloaded to do nothing so we can share listeners.
166.171 + @Override
166.172 protected void setBorderToRollover(Component c) {}
166.173
166.174 // Overloaded to do nothing so we can share listeners.
166.175 + @Override
166.176 protected void setBorderToNormal(Component c) {}
166.177
166.178 protected void paint(SynthContext context, Graphics g) {
166.179 @@ -201,7 +221,8 @@
166.180 SynthIcon.getIconHeight(handleIcon, context));
166.181 }
166.182
166.183 - SynthContext subcontext = getContext(toolBar, Region.TOOL_BAR_CONTENT);
166.184 + SynthContext subcontext = getContext(
166.185 + toolBar, Region.TOOL_BAR_CONTENT, contentStyle);
166.186 paintContent(subcontext, g, contentRect);
166.187 subcontext.dispose();
166.188 }
166.189 @@ -217,12 +238,14 @@
166.190 toolBar.getOrientation());
166.191 }
166.192
166.193 + @Override
166.194 protected void paintDragWindow(Graphics g) {
166.195 int w = dragWindow.getWidth();
166.196 int h = dragWindow.getHeight();
166.197 - SynthContext context = getContext(toolBar,Region.TOOL_BAR_DRAG_WINDOW);
166.198 - SynthLookAndFeel.updateSubregion(context, g, new Rectangle(
166.199 - 0, 0, w, h));
166.200 + SynthContext context = getContext(
166.201 + toolBar, Region.TOOL_BAR_DRAG_WINDOW, dragWindowStyle);
166.202 + SynthLookAndFeel.updateSubregion(
166.203 + context, g, new Rectangle(0, 0, w, h));
166.204 context.getPainter().paintToolBarDragWindowBackground(context,
166.205 g, 0, 0, w, h,
166.206 dragWindow.getOrientation());
166.207 @@ -319,6 +342,19 @@
166.208
166.209 Component c;
166.210 Dimension d;
166.211 +
166.212 + // JToolBar by default uses a somewhat modified BoxLayout as
166.213 + // its layout manager. For compatibility reasons, we want to
166.214 + // support Box "glue" as a way to move things around on the
166.215 + // toolbar. "glue" is represented in BoxLayout as a Box.Filler
166.216 + // with a minimum and preferred size of (0,0).
166.217 + // So what we do here is find the number of such glue fillers
166.218 + // and figure out how much space should be allocated to them.
166.219 + int glueCount = 0;
166.220 + for (int i=0; i<tb.getComponentCount(); i++) {
166.221 + if (isGlue(tb.getComponent(i))) glueCount++;
166.222 + }
166.223 +
166.224 if (tb.getOrientation() == JToolBar.HORIZONTAL) {
166.225 int handleWidth = tb.isFloatable() ?
166.226 SynthIcon.getIconWidth(handleIcon, context) : 0;
166.227 @@ -339,6 +375,16 @@
166.228 int baseY = insets.top;
166.229 int baseH = tb.getHeight() - insets.top - insets.bottom;
166.230
166.231 + // we need to get the minimum width for laying things out
166.232 + // so that we can calculate how much empty space needs to
166.233 + // be distributed among the "glue", if any
166.234 + int extraSpacePerGlue = 0;
166.235 + if (glueCount > 0) {
166.236 + int minWidth = minimumLayoutSize(parent).width;
166.237 + extraSpacePerGlue = (tb.getWidth() - minWidth) / glueCount;
166.238 + if (extraSpacePerGlue < 0) extraSpacePerGlue = 0;
166.239 + }
166.240 +
166.241 for (int i = 0; i < tb.getComponentCount(); i++) {
166.242 c = tb.getComponent(i);
166.243 d = c.getPreferredSize();
166.244 @@ -352,6 +398,9 @@
166.245 y = baseY + (baseH / 2) - (d.height / 2);
166.246 h = d.height;
166.247 }
166.248 + //if the component is a "glue" component then add to its
166.249 + //width the extraSpacePerGlue it is due
166.250 + if (isGlue(c)) d.width += extraSpacePerGlue;
166.251 c.setBounds(ltr ? x : x - d.width, y, d.width, h);
166.252 x = ltr ? x + d.width : x - d.width;
166.253 }
166.254 @@ -369,6 +418,16 @@
166.255 int baseW = tb.getWidth() - insets.left - insets.right;
166.256 int y = handleHeight + insets.top;
166.257
166.258 + // we need to get the minimum height for laying things out
166.259 + // so that we can calculate how much empty space needs to
166.260 + // be distributed among the "glue", if any
166.261 + int extraSpacePerGlue = 0;
166.262 + if (glueCount > 0) {
166.263 + int minHeight = minimumLayoutSize(parent).height;
166.264 + extraSpacePerGlue = (tb.getHeight() - minHeight) / glueCount;
166.265 + if (extraSpacePerGlue < 0) extraSpacePerGlue = 0;
166.266 + }
166.267 +
166.268 for (int i = 0; i < tb.getComponentCount(); i++) {
166.269 c = tb.getComponent(i);
166.270 d = c.getPreferredSize();
166.271 @@ -382,11 +441,25 @@
166.272 x = baseX + (baseW / 2) - (d.width / 2);
166.273 w = d.width;
166.274 }
166.275 + //if the component is a "glue" component then add to its
166.276 + //height the extraSpacePerGlue it is due
166.277 + if (isGlue(c)) d.height += extraSpacePerGlue;
166.278 c.setBounds(x, y, w, d.height);
166.279 y += d.height;
166.280 }
166.281 }
166.282 context.dispose();
166.283 }
166.284 +
166.285 + private boolean isGlue(Component c) {
166.286 + if (c instanceof Box.Filler) {
166.287 + Box.Filler f = (Box.Filler)c;
166.288 + Dimension min = f.getMinimumSize();
166.289 + Dimension pref = f.getPreferredSize();
166.290 + return min.width == 0 && min.height == 0 &&
166.291 + pref.width == 0 && pref.height == 0;
166.292 + }
166.293 + return false;
166.294 + }
166.295 }
166.296 }
167.1 --- a/src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java Tue Apr 28 14:43:44 2009 -0700
167.2 +++ b/src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java Wed Apr 29 00:27:46 2009 -0700
167.3 @@ -24,20 +24,31 @@
167.4 */
167.5 package javax.swing.plaf.synth;
167.6
167.7 -import javax.swing.*;
167.8 -import javax.swing.event.*;
167.9 -import java.awt.*;
167.10 -import java.awt.event.*;
167.11 -import java.awt.datatransfer.*;
167.12 -import java.awt.dnd.*;
167.13 -import java.beans.*;
167.14 -import java.io.*;
167.15 -import java.util.*;
167.16 -import javax.swing.plaf.*;
167.17 -import javax.swing.plaf.basic.*;
167.18 -import javax.swing.tree.*;
167.19 -import javax.swing.text.Position;
167.20 -import sun.swing.plaf.synth.*;
167.21 +import java.awt.Color;
167.22 +import java.awt.Component;
167.23 +import java.awt.Graphics;
167.24 +import java.awt.Insets;
167.25 +import java.awt.Rectangle;
167.26 +import java.beans.PropertyChangeEvent;
167.27 +import java.beans.PropertyChangeListener;
167.28 +import java.util.Enumeration;
167.29 +import javax.swing.DefaultCellEditor;
167.30 +import javax.swing.Icon;
167.31 +import javax.swing.JComponent;
167.32 +import javax.swing.JTextField;
167.33 +import javax.swing.JTree;
167.34 +import javax.swing.LookAndFeel;
167.35 +import javax.swing.plaf.ComponentUI;
167.36 +import javax.swing.plaf.UIResource;
167.37 +import javax.swing.plaf.basic.BasicTreeUI;
167.38 +import javax.swing.tree.DefaultTreeCellEditor;
167.39 +import javax.swing.tree.DefaultTreeCellRenderer;
167.40 +import javax.swing.tree.TreeCellEditor;
167.41 +import javax.swing.tree.TreeCellRenderer;
167.42 +import javax.swing.tree.TreeModel;
167.43 +import javax.swing.tree.TreePath;
167.44 +import sun.swing.plaf.synth.SynthIcon;
167.45 +import sun.swing.plaf.synth.SynthUI;
167.46
167.47 /**
167.48 * Skinnable TreeUI.
167.49 @@ -72,10 +83,12 @@
167.50 expandedIconWrapper = new ExpandedIconWrapper();
167.51 }
167.52
167.53 + @Override
167.54 public Icon getExpandedIcon() {
167.55 return expandedIconWrapper;
167.56 }
167.57
167.58 + @Override
167.59 protected void installDefaults() {
167.60 updateStyle(tree);
167.61 }
167.62 @@ -135,11 +148,13 @@
167.63 context.dispose();
167.64 }
167.65
167.66 + @Override
167.67 protected void installListeners() {
167.68 super.installListeners();
167.69 tree.addPropertyChangeListener(this);
167.70 }
167.71
167.72 + @Override
167.73 public SynthContext getContext(JComponent c) {
167.74 return getContext(c, getComponentState(c));
167.75 }
167.76 @@ -172,6 +187,7 @@
167.77 return ENABLED | SELECTED;
167.78 }
167.79
167.80 + @Override
167.81 protected TreeCellEditor createDefaultCellEditor() {
167.82 TreeCellRenderer renderer = tree.getCellRenderer();
167.83 DefaultTreeCellEditor editor;
167.84 @@ -186,10 +202,12 @@
167.85 return editor;
167.86 }
167.87
167.88 + @Override
167.89 protected TreeCellRenderer createDefaultCellRenderer() {
167.90 return new SynthTreeCellRenderer();
167.91 }
167.92
167.93 + @Override
167.94 protected void uninstallDefaults() {
167.95 SynthContext context = getContext(tree, ENABLED);
167.96
167.97 @@ -208,11 +226,13 @@
167.98 }
167.99 }
167.100
167.101 + @Override
167.102 protected void uninstallListeners() {
167.103 super.uninstallListeners();
167.104 tree.removePropertyChangeListener(this);
167.105 }
167.106
167.107 + @Override
167.108 public void update(Graphics g, JComponent c) {
167.109 SynthContext context = getContext(c);
167.110
167.111 @@ -228,6 +248,7 @@
167.112 context.getPainter().paintTreeBorder(context, g, x, y, w, h);
167.113 }
167.114
167.115 + @Override
167.116 public void paint(Graphics g, JComponent c) {
167.117 SynthContext context = getContext(c);
167.118
167.119 @@ -481,6 +502,7 @@
167.120 }
167.121 }
167.122
167.123 + @Override
167.124 protected void paintHorizontalPartOfLeg(Graphics g, Rectangle clipBounds,
167.125 Insets insets, Rectangle bounds,
167.126 TreePath path, int row,
167.127 @@ -494,12 +516,14 @@
167.128 }
167.129 }
167.130
167.131 + @Override
167.132 protected void paintHorizontalLine(Graphics g, JComponent c, int y,
167.133 int left, int right) {
167.134 paintContext.getStyle().getGraphicsUtils(paintContext).drawLine(
167.135 paintContext, "Tree.horizontalLine", g, left, y, right, y, linesStyle);
167.136 }
167.137
167.138 + @Override
167.139 protected void paintVerticalPartOfLeg(Graphics g,
167.140 Rectangle clipBounds, Insets insets,
167.141 TreePath path) {
167.142 @@ -508,6 +532,7 @@
167.143 }
167.144 }
167.145
167.146 + @Override
167.147 protected void paintVerticalLine(Graphics g, JComponent c, int x, int top,
167.148 int bottom) {
167.149 paintContext.getStyle().getGraphicsUtils(paintContext).drawLine(
167.150 @@ -528,12 +553,17 @@
167.151 && dropLocation.getChildIndex() == -1
167.152 && path == dropLocation.getPath();
167.153
167.154 + int state = ENABLED;
167.155 if (selected || isDrop) {
167.156 - cellContext.setComponentState(ENABLED | SELECTED);
167.157 + state |= SELECTED;
167.158 }
167.159 - else {
167.160 - cellContext.setComponentState(ENABLED);
167.161 +
167.162 + if (tree.isFocusOwner() && row == leadRow) {
167.163 + state |= FOCUSED;
167.164 }
167.165 +
167.166 + cellContext.setComponentState(state);
167.167 +
167.168 if (dtcr != null && (dtcr.getBorderSelectionColor() instanceof
167.169 UIResource)) {
167.170 dtcr.setBorderSelectionColor(style.getColor(
167.171 @@ -574,6 +604,28 @@
167.172 : x - (int)Math.floor(iconWidth / 2.0);
167.173 }
167.174
167.175 + /**
167.176 + * @inheritDoc
167.177 + */
167.178 + @Override
167.179 + protected void paintExpandControl(Graphics g, Rectangle clipBounds,
167.180 + Insets insets, Rectangle bounds, TreePath path, int row,
167.181 + boolean isExpanded, boolean hasBeenExpanded, boolean isLeaf) {
167.182 + //modify the paintContext's state to match the state for the row
167.183 + //this is a hack in that it requires knowledge of the subsequent
167.184 + //method calls. The point is, the context used in drawCentered
167.185 + //should reflect the state of the row, not of the tree.
167.186 + boolean isSelected = tree.getSelectionModel().isPathSelected(path);
167.187 + int state = paintContext.getComponentState();
167.188 + if (isSelected) {
167.189 + paintContext.setComponentState(state | SynthConstants.SELECTED);
167.190 + }
167.191 + super.paintExpandControl(g, clipBounds, insets, bounds, path, row,
167.192 + isExpanded, hasBeenExpanded, isLeaf);
167.193 + paintContext.setComponentState(state);
167.194 + }
167.195 +
167.196 + @Override
167.197 protected void drawCentered(Component c, Graphics graphics, Icon icon,
167.198 int x, int y) {
167.199 int w = SynthIcon.getIconWidth(icon, paintContext);
167.200 @@ -618,6 +670,7 @@
167.201 }
167.202 }
167.203
167.204 + @Override
167.205 protected int getRowX(int row, int depth) {
167.206 return super.getRowX(row, depth) + padding;
167.207 }
167.208 @@ -627,9 +680,13 @@
167.209 implements UIResource {
167.210 SynthTreeCellRenderer() {
167.211 }
167.212 +
167.213 + @Override
167.214 public String getName() {
167.215 return "Tree.cellRenderer";
167.216 }
167.217 +
167.218 + @Override
167.219 public Component getTreeCellRendererComponent(JTree tree, Object value,
167.220 boolean sel,
167.221 boolean expanded,
167.222 @@ -646,6 +703,8 @@
167.223 return super.getTreeCellRendererComponent(tree, value, sel,
167.224 expanded, leaf, row, hasFocus);
167.225 }
167.226 +
167.227 + @Override
167.228 public void paint(Graphics g) {
167.229 paintComponent(g);
167.230 if (hasFocus) {
167.231 @@ -692,8 +751,10 @@
167.232 setBorderSelectionColor(null);
167.233 }
167.234
167.235 + @Override
167.236 protected TreeCellEditor createTreeCellEditor() {
167.237 JTextField tf = new JTextField() {
167.238 + @Override
167.239 public String getName() {
167.240 return "Tree.cellEditor";
167.241 }
167.242 @@ -706,7 +767,6 @@
167.243 }
167.244 }
167.245
167.246 -
167.247 //
167.248 // BasicTreeUI directly uses expandIcon outside of the Synth methods.
167.249 // To get the correct context we return an instance of this that fetches
168.1 --- a/src/share/classes/javax/swing/table/DefaultTableCellRenderer.java Tue Apr 28 14:43:44 2009 -0700
168.2 +++ b/src/share/classes/javax/swing/table/DefaultTableCellRenderer.java Wed Apr 29 00:27:46 2009 -0700
168.3 @@ -26,7 +26,6 @@
168.4 package javax.swing.table;
168.5
168.6 import javax.swing.*;
168.7 -import javax.swing.table.TableCellRenderer;
168.8 import javax.swing.border.*;
168.9
168.10 import java.awt.Component;
168.11 @@ -34,6 +33,7 @@
168.12 import java.awt.Rectangle;
168.13
168.14 import java.io.Serializable;
168.15 +import sun.swing.DefaultLookup;
168.16
168.17
168.18 /**
168.19 @@ -92,8 +92,9 @@
168.20 * <code>getTableCellRendererComponent</code> method and set the border
168.21 * of the returned component directly.
168.22 */
168.23 - protected static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);
168.24 private static final Border SAFE_NO_FOCUS_BORDER = new EmptyBorder(1, 1, 1, 1);
168.25 + private static final Border DEFAULT_NO_FOCUS_BORDER = new EmptyBorder(1, 1, 1, 1);
168.26 + protected static Border noFocusBorder = DEFAULT_NO_FOCUS_BORDER;
168.27
168.28 // We need a place to store the color the JLabel should be returned
168.29 // to after its foreground and background colors have been set
168.30 @@ -109,12 +110,18 @@
168.31 super();
168.32 setOpaque(true);
168.33 setBorder(getNoFocusBorder());
168.34 + setName("Table.cellRenderer");
168.35 }
168.36
168.37 - private static Border getNoFocusBorder() {
168.38 + private Border getNoFocusBorder() {
168.39 + Border border = DefaultLookup.getBorder(this, ui, "Table.cellNoFocusBorder");
168.40 if (System.getSecurityManager() != null) {
168.41 + if (border != null) return border;
168.42 return SAFE_NO_FOCUS_BORDER;
168.43 } else {
168.44 + if (noFocusBorder == null || noFocusBorder == DEFAULT_NO_FOCUS_BORDER) {
168.45 + return border;
168.46 + }
168.47 return noFocusBorder;
168.48 }
168.49 }
168.50 @@ -190,8 +197,8 @@
168.51 && dropLocation.getRow() == row
168.52 && dropLocation.getColumn() == column) {
168.53
168.54 - fg = UIManager.getColor("Table.dropCellForeground");
168.55 - bg = UIManager.getColor("Table.dropCellBackground");
168.56 + fg = DefaultLookup.getColor(this, ui, "Table.dropCellForeground");
168.57 + bg = DefaultLookup.getColor(this, ui, "Table.dropCellBackground");
168.58
168.59 isSelected = true;
168.60 }
168.61 @@ -202,12 +209,18 @@
168.62 super.setBackground(bg == null ? table.getSelectionBackground()
168.63 : bg);
168.64 } else {
168.65 + Color background = unselectedBackground != null
168.66 + ? unselectedBackground
168.67 + : table.getBackground();
168.68 + if (background == null || background instanceof javax.swing.plaf.UIResource) {
168.69 + Color alternateColor = DefaultLookup.getColor(this, ui, "Table.alternateRowColor");
168.70 + if (alternateColor != null && row % 2 == 0)
168.71 + background = alternateColor;
168.72 + }
168.73 super.setForeground(unselectedForeground != null
168.74 ? unselectedForeground
168.75 : table.getForeground());
168.76 - super.setBackground(unselectedBackground != null
168.77 - ? unselectedBackground
168.78 - : table.getBackground());
168.79 + super.setBackground(background);
168.80 }
168.81
168.82 setFont(table.getFont());
168.83 @@ -215,20 +228,20 @@
168.84 if (hasFocus) {
168.85 Border border = null;
168.86 if (isSelected) {
168.87 - border = UIManager.getBorder("Table.focusSelectedCellHighlightBorder");
168.88 + border = DefaultLookup.getBorder(this, ui, "Table.focusSelectedCellHighlightBorder");
168.89 }
168.90 if (border == null) {
168.91 - border = UIManager.getBorder("Table.focusCellHighlightBorder");
168.92 + border = DefaultLookup.getBorder(this, ui, "Table.focusCellHighlightBorder");
168.93 }
168.94 setBorder(border);
168.95
168.96 if (!isSelected && table.isCellEditable(row, column)) {
168.97 Color col;
168.98 - col = UIManager.getColor("Table.focusCellForeground");
168.99 + col = DefaultLookup.getColor(this, ui, "Table.focusCellForeground");
168.100 if (col != null) {
168.101 super.setForeground(col);
168.102 }
168.103 - col = UIManager.getColor("Table.focusCellBackground");
168.104 + col = DefaultLookup.getColor(this, ui, "Table.focusCellBackground");
168.105 if (col != null) {
168.106 super.setBackground(col);
168.107 }
168.108 @@ -261,6 +274,7 @@
168.109 if (p != null) {
168.110 p = p.getParent();
168.111 }
168.112 +
168.113 // p should now be the JTable.
168.114 boolean colorMatch = (back != null) && (p != null) &&
168.115 back.equals(p.getBackground()) &&
169.1 --- a/src/share/classes/javax/swing/tree/DefaultTreeCellRenderer.java Tue Apr 28 14:43:44 2009 -0700
169.2 +++ b/src/share/classes/javax/swing/tree/DefaultTreeCellRenderer.java Wed Apr 29 00:27:46 2009 -0700
169.3 @@ -25,16 +25,24 @@
169.4
169.5 package javax.swing.tree;
169.6
169.7 -import javax.swing.*;
169.8 +import java.awt.Color;
169.9 +import java.awt.Component;
169.10 +import java.awt.Dimension;
169.11 +import java.awt.Font;
169.12 +import java.awt.Graphics;
169.13 +import java.awt.Insets;
169.14 +import java.awt.Rectangle;
169.15 import javax.swing.plaf.ColorUIResource;
169.16 import javax.swing.plaf.FontUIResource;
169.17 import javax.swing.plaf.UIResource;
169.18 import javax.swing.plaf.basic.BasicGraphicsUtils;
169.19 -import java.awt.*;
169.20 -import java.awt.event.*;
169.21 -import java.beans.*;
169.22 -import java.io.*;
169.23 -import java.util.*;
169.24 +import javax.swing.Icon;
169.25 +import javax.swing.JLabel;
169.26 +import javax.swing.JTree;
169.27 +import javax.swing.LookAndFeel;
169.28 +import javax.swing.UIManager;
169.29 +import javax.swing.border.EmptyBorder;
169.30 +import sun.swing.DefaultLookup;
169.31
169.32 /**
169.33 * Displays an entry in a tree.
169.34 @@ -148,6 +156,7 @@
169.35 protected Color borderSelectionColor;
169.36
169.37 private boolean isDropCell;
169.38 + private boolean fillBackground = true;
169.39
169.40 /**
169.41 * Set to true after the constructor has run.
169.42 @@ -177,41 +186,48 @@
169.43 // null. As such, if the value is null, this does not reset the
169.44 // value.
169.45 if (!inited || (getLeafIcon() instanceof UIResource)) {
169.46 - setLeafIcon(UIManager.getIcon("Tree.leafIcon"));
169.47 + setLeafIcon(DefaultLookup.getIcon(this, ui, "Tree.leafIcon"));
169.48 }
169.49 if (!inited || (getClosedIcon() instanceof UIResource)) {
169.50 - setClosedIcon(UIManager.getIcon("Tree.closedIcon"));
169.51 + setClosedIcon(DefaultLookup.getIcon(this, ui, "Tree.closedIcon"));
169.52 }
169.53 if (!inited || (getOpenIcon() instanceof UIManager)) {
169.54 - setOpenIcon(UIManager.getIcon("Tree.openIcon"));
169.55 + setOpenIcon(DefaultLookup.getIcon(this, ui, "Tree.openIcon"));
169.56 }
169.57 if (!inited || (getTextSelectionColor() instanceof UIResource)) {
169.58 setTextSelectionColor(
169.59 - UIManager.getColor("Tree.selectionForeground"));
169.60 + DefaultLookup.getColor(this, ui, "Tree.selectionForeground"));
169.61 }
169.62 if (!inited || (getTextNonSelectionColor() instanceof UIResource)) {
169.63 setTextNonSelectionColor(
169.64 - UIManager.getColor("Tree.textForeground"));
169.65 + DefaultLookup.getColor(this, ui, "Tree.textForeground"));
169.66 }
169.67 if (!inited || (getBackgroundSelectionColor() instanceof UIResource)) {
169.68 setBackgroundSelectionColor(
169.69 - UIManager.getColor("Tree.selectionBackground"));
169.70 + DefaultLookup.getColor(this, ui, "Tree.selectionBackground"));
169.71 }
169.72 if (!inited ||
169.73 (getBackgroundNonSelectionColor() instanceof UIResource)) {
169.74 setBackgroundNonSelectionColor(
169.75 - UIManager.getColor("Tree.textBackground"));
169.76 + DefaultLookup.getColor(this, ui, "Tree.textBackground"));
169.77 }
169.78 if (!inited || (getBorderSelectionColor() instanceof UIResource)) {
169.79 setBorderSelectionColor(
169.80 - UIManager.getColor("Tree.selectionBorderColor"));
169.81 + DefaultLookup.getColor(this, ui, "Tree.selectionBorderColor"));
169.82 }
169.83 - Object value = UIManager.get("Tree.drawsFocusBorderAroundIcon");
169.84 - drawsFocusBorderAroundIcon = (value != null && ((Boolean)value).
169.85 - booleanValue());
169.86 - value = UIManager.get("Tree.drawDashedFocusIndicator");
169.87 - drawDashedFocusIndicator = (value != null && ((Boolean)value).
169.88 - booleanValue());
169.89 + drawsFocusBorderAroundIcon = DefaultLookup.getBoolean(
169.90 + this, ui, "Tree.drawsFocusBorderAroundIcon", false);
169.91 + drawDashedFocusIndicator = DefaultLookup.getBoolean(
169.92 + this, ui, "Tree.drawDashedFocusIndicator", false);
169.93 +
169.94 + fillBackground = DefaultLookup.getBoolean(this, ui, "Tree.rendererFillBackground", true);
169.95 + Insets margins = DefaultLookup.getInsets(this, ui, "Tree.rendererMargins");
169.96 + if (margins != null) {
169.97 + setBorder(new EmptyBorder(margins.top, margins.left,
169.98 + margins.bottom, margins.right));
169.99 + }
169.100 +
169.101 + setName("Tree.cellRenderer");
169.102 }
169.103
169.104
169.105 @@ -220,7 +236,7 @@
169.106 * represent non-leaf nodes that are expanded.
169.107 */
169.108 public Icon getDefaultOpenIcon() {
169.109 - return UIManager.getIcon("Tree.openIcon");
169.110 + return DefaultLookup.getIcon(this, ui, "Tree.openIcon");
169.111 }
169.112
169.113 /**
169.114 @@ -228,7 +244,7 @@
169.115 * represent non-leaf nodes that are not expanded.
169.116 */
169.117 public Icon getDefaultClosedIcon() {
169.118 - return UIManager.getIcon("Tree.closedIcon");
169.119 + return DefaultLookup.getIcon(this, ui, "Tree.closedIcon");
169.120 }
169.121
169.122 /**
169.123 @@ -236,7 +252,7 @@
169.124 * represent leaf nodes.
169.125 */
169.126 public Icon getDefaultLeafIcon() {
169.127 - return UIManager.getIcon("Tree.leafIcon");
169.128 + return DefaultLookup.getIcon(this, ui, "Tree.leafIcon");
169.129 }
169.130
169.131 /**
169.132 @@ -425,7 +441,7 @@
169.133 && dropLocation.getChildIndex() == -1
169.134 && tree.getRowForPath(dropLocation.getPath()) == row) {
169.135
169.136 - Color col = UIManager.getColor("Tree.dropCellForeground");
169.137 + Color col = DefaultLookup.getColor(this, ui, "Tree.dropCellForeground");
169.138 if (col != null) {
169.139 fg = col;
169.140 } else {
169.141 @@ -441,26 +457,24 @@
169.142
169.143 setForeground(fg);
169.144
169.145 - // There needs to be a way to specify disabled icons.
169.146 + Icon icon = null;
169.147 + if (leaf) {
169.148 + icon = getLeafIcon();
169.149 + } else if (expanded) {
169.150 + icon = getOpenIcon();
169.151 + } else {
169.152 + icon = getClosedIcon();
169.153 + }
169.154 +
169.155 if (!tree.isEnabled()) {
169.156 setEnabled(false);
169.157 - if (leaf) {
169.158 - setDisabledIcon(getLeafIcon());
169.159 - } else if (expanded) {
169.160 - setDisabledIcon(getOpenIcon());
169.161 - } else {
169.162 - setDisabledIcon(getClosedIcon());
169.163 - }
169.164 - }
169.165 - else {
169.166 + LookAndFeel laf = UIManager.getLookAndFeel();
169.167 + Icon disabledIcon = laf.getDisabledIcon(tree, icon);
169.168 + if (disabledIcon != null) icon = disabledIcon;
169.169 + setDisabledIcon(icon);
169.170 + } else {
169.171 setEnabled(true);
169.172 - if (leaf) {
169.173 - setIcon(getLeafIcon());
169.174 - } else if (expanded) {
169.175 - setIcon(getOpenIcon());
169.176 - } else {
169.177 - setIcon(getClosedIcon());
169.178 - }
169.179 + setIcon(icon);
169.180 }
169.181 setComponentOrientation(tree.getComponentOrientation());
169.182
169.183 @@ -476,7 +490,7 @@
169.184 Color bColor;
169.185
169.186 if (isDropCell) {
169.187 - bColor = UIManager.getColor("Tree.dropCellBackground");
169.188 + bColor = DefaultLookup.getColor(this, ui, "Tree.dropCellBackground");
169.189 if (bColor == null) {
169.190 bColor = getBackgroundSelectionColor();
169.191 }
169.192 @@ -490,9 +504,7 @@
169.193 }
169.194
169.195 int imageOffset = -1;
169.196 - if(bColor != null) {
169.197 - Icon currentI = getIcon();
169.198 -
169.199 + if (bColor != null && fillBackground) {
169.200 imageOffset = getLabelStart();
169.201 g.setColor(bColor);
169.202 if(getComponentOrientation().isLeftToRight()) {
170.1 --- a/src/share/classes/sun/applet/AppletPanel.java Tue Apr 28 14:43:44 2009 -0700
170.2 +++ b/src/share/classes/sun/applet/AppletPanel.java Wed Apr 29 00:27:46 2009 -0700
170.3 @@ -45,7 +45,6 @@
170.4 import java.util.Collections;
170.5 import java.util.Locale;
170.6 import java.util.WeakHashMap;
170.7 -import javax.swing.SwingUtilities;
170.8 import sun.awt.AppContext;
170.9 import sun.awt.EmbeddedFrame;
170.10 import sun.awt.SunToolkit;
170.11 @@ -450,7 +449,7 @@
170.12 try {
170.13 final AppletPanel p = this;
170.14
170.15 - SwingUtilities.invokeAndWait(new Runnable() {
170.16 + EventQueue.invokeAndWait(new Runnable() {
170.17 public void run() {
170.18 p.validate();
170.19 }
170.20 @@ -480,7 +479,7 @@
170.21 final AppletPanel p = this;
170.22 final Applet a = applet;
170.23
170.24 - SwingUtilities.invokeAndWait(new Runnable() {
170.25 + EventQueue.invokeAndWait(new Runnable() {
170.26 public void run() {
170.27 p.validate();
170.28 a.setVisible(true);
170.29 @@ -514,7 +513,7 @@
170.30 try {
170.31 final Applet a = applet;
170.32
170.33 - SwingUtilities.invokeAndWait(new Runnable() {
170.34 + EventQueue.invokeAndWait(new Runnable() {
170.35 public void run()
170.36 {
170.37 a.setVisible(false);
171.1 --- a/src/share/classes/sun/awt/EmbeddedFrame.java Tue Apr 28 14:43:44 2009 -0700
171.2 +++ b/src/share/classes/sun/awt/EmbeddedFrame.java Wed Apr 29 00:27:46 2009 -0700
171.3 @@ -588,9 +588,11 @@
171.4
171.5 public void setOpacity(float opacity) {
171.6 }
171.7 +
171.8 public void setOpaque(boolean isOpaque) {
171.9 }
171.10 - public void updateWindow(BufferedImage backBuffer) {
171.11 +
171.12 + public void updateWindow(BufferedImage bi) {
171.13 }
171.14 public void repositionSecurityWarning() {
171.15 }
172.1 --- a/src/share/classes/sun/awt/SunToolkit.java Tue Apr 28 14:43:44 2009 -0700
172.2 +++ b/src/share/classes/sun/awt/SunToolkit.java Wed Apr 29 00:27:46 2009 -0700
172.3 @@ -2038,37 +2038,34 @@
172.4 /**
172.5 * Returns whether or not a containing top level window for the passed
172.6 * component is
172.7 - * {@link com.sun.awt.AWTUtilities.Translucency#PERPIXEL_TRANSLUCENT PERPIXEL_TRANSLUCENT}.
172.8 + * {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT PERPIXEL_TRANSLUCENT}.
172.9 *
172.10 * @param c a Component which toplevel's to check
172.11 * @return {@code true} if the passed component is not null and has a
172.12 * containing toplevel window which is opaque (so per-pixel translucency
172.13 * is not enabled), {@code false} otherwise
172.14 - * @see com.sun.awt.AWTUtilities.Translucency#PERPIXEL_TRANSLUCENT
172.15 - * @see com.sun.awt.AWTUtilities#isWindowOpaque(Window)
172.16 + * @see GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
172.17 */
172.18 public static boolean isContainingTopLevelOpaque(Component c) {
172.19 Window w = getContainingWindow(c);
172.20 - // return w != null && (w).isOpaque();
172.21 - return w != null && com.sun.awt.AWTUtilities.isWindowOpaque(w);
172.22 + return w != null && ((Window)w).getBackground() != null &&
172.23 + ((Window)w).getBackground().getAlpha() == 255;
172.24 }
172.25
172.26 /**
172.27 * Returns whether or not a containing top level window for the passed
172.28 * component is
172.29 - * {@link com.sun.awt.AWTUtilities.Translucency#TRANSLUCENT TRANSLUCENT}.
172.30 + * {@link GraphicsDevice.WindowTranslucency#TRANSLUCENT TRANSLUCENT}.
172.31 *
172.32 * @param c a Component which toplevel's to check
172.33 * @return {@code true} if the passed component is not null and has a
172.34 * containing toplevel window which has opacity less than
172.35 * 1.0f (which means that it is translucent), {@code false} otherwise
172.36 - * @see com.sun.awt.AWTUtilities.Translucency#TRANSLUCENT
172.37 - * @see com.sun.awt.AWTUtilities#getWindowOpacity(Window)
172.38 + * @see GraphicsDevice.WindowTranslucency#TRANSLUCENT
172.39 */
172.40 public static boolean isContainingTopLevelTranslucent(Component c) {
172.41 Window w = getContainingWindow(c);
172.42 - // return w != null && (w).getOpacity() < 1.0f;
172.43 - return w != null && com.sun.awt.AWTUtilities.getWindowOpacity((Window)w) < 1.0f;
172.44 + return w != null && ((Window)w).getOpacity() < 1.0f;
172.45 }
172.46
172.47 /**
173.1 --- a/src/share/classes/sun/awt/datatransfer/DataTransferer.java Tue Apr 28 14:43:44 2009 -0700
173.2 +++ b/src/share/classes/sun/awt/datatransfer/DataTransferer.java Wed Apr 29 00:27:46 2009 -0700
173.3 @@ -65,10 +65,13 @@
173.4
173.5 import java.rmi.MarshalledObject;
173.6
173.7 +import java.security.AccessControlContext;
173.8 +import java.security.AccessControlException;
173.9 import java.security.AccessController;
173.10 import java.security.PrivilegedAction;
173.11 import java.security.PrivilegedActionException;
173.12 import java.security.PrivilegedExceptionAction;
173.13 +import java.security.ProtectionDomain;
173.14
173.15 import java.util.ArrayList;
173.16 import java.util.Arrays;
173.17 @@ -111,6 +114,8 @@
173.18 import sun.awt.image.ImageRepresentation;
173.19 import sun.awt.image.ToolkitImage;
173.20
173.21 +import java.io.FilePermission;
173.22 +
173.23
173.24 /**
173.25 * Provides a set of functions to be shared among the DataFlavor class and
173.26 @@ -1177,8 +1182,10 @@
173.27 (String.class.equals(flavor.getRepresentationClass()) &&
173.28 isFlavorCharsetTextType(flavor) && isTextFormat(format))) {
173.29
173.30 + String str = removeSuspectedData(flavor, contents, (String)obj);
173.31 +
173.32 return translateTransferableString(
173.33 - (String)obj,
173.34 + str,
173.35 format);
173.36
173.37 // Source data is a Reader. Convert to a String and recur. In the
173.38 @@ -1286,6 +1293,11 @@
173.39 throw new IOException("data translation failed");
173.40 }
173.41 final List list = (List)obj;
173.42 +
173.43 + final ArrayList fileList = new ArrayList();
173.44 +
173.45 + final ProtectionDomain userProtectionDomain = getUserProtectionDomain(contents);
173.46 +
173.47 int nFiles = 0;
173.48 for (int i = 0; i < list.size(); i++) {
173.49 Object o = list.get(i);
173.50 @@ -1293,17 +1305,18 @@
173.51 nFiles++;
173.52 }
173.53 }
173.54 - final String[] files = new String[nFiles];
173.55
173.56 try {
173.57 AccessController.doPrivileged(new PrivilegedExceptionAction() {
173.58 public Object run() throws IOException {
173.59 - for (int i = 0, j = 0; i < list.size(); i++) {
173.60 - Object o = list.get(i);
173.61 - if (o instanceof File) {
173.62 - files[j++] = ((File)o).getCanonicalPath();
173.63 - } else if (o instanceof String) {
173.64 - files[j++] = (String)o;
173.65 + for (Object fileObject : list)
173.66 + {
173.67 + File file = castToFile(fileObject);
173.68 + if (null == System.getSecurityManager() ||
173.69 + !(isFileInWebstartedCache(file) ||
173.70 + isForbiddenToRead(file, userProtectionDomain)))
173.71 + {
173.72 + fileList.add(file.getCanonicalPath());
173.73 }
173.74 }
173.75 return null;
173.76 @@ -1313,10 +1326,11 @@
173.77 throw new IOException(pae.getMessage());
173.78 }
173.79
173.80 - for (int i = 0; i < files.length; i++) {
173.81 - byte[] bytes = files[i].getBytes();
173.82 - if (i != 0) bos.write(0);
173.83 - bos.write(bytes, 0, bytes.length);
173.84 + for (int i = 0; i < fileList.size(); i++)
173.85 + {
173.86 + byte[] bytes = ((String)fileList.get(i)).getBytes();
173.87 + if (i != 0) bos.write(0);
173.88 + bos.write(bytes, 0, bytes.length);
173.89 }
173.90
173.91 // Source data is an InputStream. For arbitrary flavors, just grab the
173.92 @@ -1366,6 +1380,123 @@
173.93 return ret;
173.94 }
173.95
173.96 + private String removeSuspectedData(DataFlavor flavor, final Transferable contents, final String str)
173.97 + throws IOException
173.98 + {
173.99 + if (null == System.getSecurityManager()
173.100 + || !flavor.isMimeTypeEqual("text/uri-list"))
173.101 + {
173.102 + return str;
173.103 + }
173.104 +
173.105 +
173.106 + String ret_val = "";
173.107 + final ProtectionDomain userProtectionDomain = getUserProtectionDomain(contents);
173.108 +
173.109 + try {
173.110 + ret_val = (String) AccessController.doPrivileged(new PrivilegedExceptionAction() {
173.111 + public Object run() {
173.112 +
173.113 + StringBuffer allowedFiles = new StringBuffer(str.length());
173.114 + String [] uriArray = str.split("(\\s)+");
173.115 +
173.116 + for (String fileName : uriArray)
173.117 + {
173.118 + File file = new File(fileName);
173.119 + if (file.exists() &&
173.120 + !(isFileInWebstartedCache(file) ||
173.121 + isForbiddenToRead(file, userProtectionDomain)))
173.122 + {
173.123 +
173.124 + if (0 != allowedFiles.length())
173.125 + {
173.126 + allowedFiles.append("\\r\\n");
173.127 + }
173.128 +
173.129 + allowedFiles.append(fileName);
173.130 + }
173.131 + }
173.132 +
173.133 + return allowedFiles.toString();
173.134 + }
173.135 + });
173.136 + } catch (PrivilegedActionException pae) {
173.137 + throw new IOException(pae.getMessage(), pae);
173.138 + }
173.139 +
173.140 + return ret_val;
173.141 + }
173.142 +
173.143 + private static ProtectionDomain getUserProtectionDomain(Transferable contents) {
173.144 + return contents.getClass().getProtectionDomain();
173.145 + }
173.146 +
173.147 + private boolean isForbiddenToRead (File file, ProtectionDomain protectionDomain)
173.148 + {
173.149 + if (null == protectionDomain) {
173.150 + return false;
173.151 + }
173.152 + try {
173.153 + FilePermission filePermission =
173.154 + new FilePermission(file.getCanonicalPath(), "read, delete");
173.155 + if (protectionDomain.implies(filePermission)) {
173.156 + return false;
173.157 + }
173.158 + } catch (IOException e) {}
173.159 +
173.160 + return true;
173.161 + }
173.162 +
173.163 + // It is important do not use user's successors
173.164 + // of File class.
173.165 + private File castToFile(Object fileObject) throws IOException {
173.166 + String filePath = null;
173.167 + if (fileObject instanceof File) {
173.168 + filePath = ((File)fileObject).getCanonicalPath();
173.169 + } else if (fileObject instanceof String) {
173.170 + filePath = (String) fileObject;
173.171 + }
173.172 + return new File(filePath);
173.173 + }
173.174 +
173.175 + private final static String[] DEPLOYMENT_CACHE_PROPERTIES = {
173.176 + "deployment.system.cachedir",
173.177 + "deployment.user.cachedir",
173.178 + "deployment.javaws.cachedir",
173.179 + "deployment.javapi.cachedir"
173.180 + };
173.181 +
173.182 + private final static ArrayList <File> deploymentCacheDirectoryList =
173.183 + new ArrayList<File>();
173.184 +
173.185 + private static boolean isFileInWebstartedCache(File f) {
173.186 +
173.187 + if (deploymentCacheDirectoryList.isEmpty()) {
173.188 + for (String cacheDirectoryProperty : DEPLOYMENT_CACHE_PROPERTIES) {
173.189 + String cacheDirectoryPath = System.getProperty(cacheDirectoryProperty);
173.190 + if (cacheDirectoryPath != null) {
173.191 + try {
173.192 + File cacheDirectory = (new File(cacheDirectoryPath)).getCanonicalFile();
173.193 + if (cacheDirectory != null) {
173.194 + deploymentCacheDirectoryList.add(cacheDirectory);
173.195 + }
173.196 + } catch (IOException ioe) {}
173.197 + }
173.198 + }
173.199 + }
173.200 +
173.201 + for (File deploymentCacheDirectory : deploymentCacheDirectoryList) {
173.202 + for (File dir = f; dir != null; dir = dir.getParentFile()) {
173.203 + if (dir.equals(deploymentCacheDirectory)) {
173.204 + return true;
173.205 + }
173.206 + }
173.207 + }
173.208 +
173.209 + return false;
173.210 + }
173.211 +
173.212 +
173.213 public Object translateBytes(byte[] bytes, DataFlavor flavor,
173.214 long format, Transferable localeTransferable)
173.215 throws IOException
174.1 --- a/src/share/classes/sun/swing/DefaultLookup.java Tue Apr 28 14:43:44 2009 -0700
174.2 +++ b/src/share/classes/sun/swing/DefaultLookup.java Wed Apr 29 00:27:46 2009 -0700
174.3 @@ -27,6 +27,7 @@
174.4 import java.awt.Color;
174.5 import java.awt.Insets;
174.6 import javax.swing.*;
174.7 +import javax.swing.border.Border;
174.8 import javax.swing.plaf.ComponentUI;
174.9 import sun.awt.AppContext;
174.10
174.11 @@ -137,6 +138,10 @@
174.12 return ((Number)iValue).intValue();
174.13 }
174.14
174.15 + public static int getInt(JComponent c, ComponentUI ui, String key) {
174.16 + return getInt(c, ui, key, -1);
174.17 + }
174.18 +
174.19 public static Insets getInsets(JComponent c, ComponentUI ui, String key,
174.20 Insets defaultValue) {
174.21 Object iValue = get(c, ui, key);
174.22 @@ -147,6 +152,10 @@
174.23 return (Insets)iValue;
174.24 }
174.25
174.26 + public static Insets getInsets(JComponent c, ComponentUI ui, String key) {
174.27 + return getInsets(c, ui, key, null);
174.28 + }
174.29 +
174.30 public static boolean getBoolean(JComponent c, ComponentUI ui, String key,
174.31 boolean defaultValue) {
174.32 Object iValue = get(c, ui, key);
174.33 @@ -157,6 +166,10 @@
174.34 return ((Boolean)iValue).booleanValue();
174.35 }
174.36
174.37 + public static boolean getBoolean(JComponent c, ComponentUI ui, String key) {
174.38 + return getBoolean(c, ui, key, false);
174.39 + }
174.40 +
174.41 public static Color getColor(JComponent c, ComponentUI ui, String key,
174.42 Color defaultValue) {
174.43 Object iValue = get(c, ui, key);
174.44 @@ -167,7 +180,35 @@
174.45 return (Color)iValue;
174.46 }
174.47
174.48 + public static Color getColor(JComponent c, ComponentUI ui, String key) {
174.49 + return getColor(c, ui, key, null);
174.50 + }
174.51
174.52 + public static Icon getIcon(JComponent c, ComponentUI ui, String key,
174.53 + Icon defaultValue) {
174.54 + Object iValue = get(c, ui, key);
174.55 + if (iValue == null || !(iValue instanceof Icon)) {
174.56 + return defaultValue;
174.57 + }
174.58 + return (Icon)iValue;
174.59 + }
174.60 +
174.61 + public static Icon getIcon(JComponent c, ComponentUI ui, String key) {
174.62 + return getIcon(c, ui, key, null);
174.63 + }
174.64 +
174.65 + public static Border getBorder(JComponent c, ComponentUI ui, String key,
174.66 + Border defaultValue) {
174.67 + Object iValue = get(c, ui, key);
174.68 + if (iValue == null || !(iValue instanceof Border)) {
174.69 + return defaultValue;
174.70 + }
174.71 + return (Border)iValue;
174.72 + }
174.73 +
174.74 + public static Border getBorder(JComponent c, ComponentUI ui, String key) {
174.75 + return getBorder(c, ui, key, null);
174.76 + }
174.77
174.78 public Object getDefault(JComponent c, ComponentUI ui, String key) {
174.79 // basic
175.1 --- a/src/share/classes/sun/swing/FilePane.java Tue Apr 28 14:43:44 2009 -0700
175.2 +++ b/src/share/classes/sun/swing/FilePane.java Wed Apr 29 00:27:46 2009 -0700
175.3 @@ -265,6 +265,7 @@
175.4 private Color listViewBackground;
175.5 private boolean listViewWindowsStyle;
175.6 private boolean readOnly;
175.7 + private boolean fullRowSelection = false;
175.8
175.9 private ListSelectionModel listSelectionModel;
175.10 private JList list;
175.11 @@ -448,6 +449,7 @@
175.12 kiloByteString = UIManager.getString("FileChooser.fileSizeKiloBytes", l);
175.13 megaByteString = UIManager.getString("FileChooser.fileSizeMegaBytes", l);
175.14 gigaByteString = UIManager.getString("FileChooser.fileSizeGigaBytes", l);
175.15 + fullRowSelection = UIManager.getBoolean("FileView.fullRowSelection");
175.16
175.17 renameErrorTitleText = UIManager.getString("FileChooser.renameErrorTitleText", l);
175.18 renameErrorText = UIManager.getString("FileChooser.renameErrorText", l);
175.19 @@ -991,6 +993,7 @@
175.20 public DetailsTableCellEditor(JTextField tf) {
175.21 super(tf);
175.22 this.tf = tf;
175.23 + tf.setName("Table.editor");
175.24 tf.addFocusListener(editorFocusListener);
175.25 }
175.26
175.27 @@ -1018,7 +1021,8 @@
175.28 }
175.29
175.30 public void setBounds(int x, int y, int width, int height) {
175.31 - if (getHorizontalAlignment() == SwingConstants.LEADING) {
175.32 + if (getHorizontalAlignment() == SwingConstants.LEADING &&
175.33 + !fullRowSelection) {
175.34 // Restrict width to actual text
175.35 width = Math.min(width, this.getPreferredSize().width+4);
175.36 } else {
175.37 @@ -1039,9 +1043,9 @@
175.38 public Component getTableCellRendererComponent(JTable table, Object value,
175.39 boolean isSelected, boolean hasFocus, int row, int column) {
175.40
175.41 - if (table.convertColumnIndexToModel(column) != COLUMN_FILENAME ||
175.42 - (listViewWindowsStyle && !table.isFocusOwner())) {
175.43 -
175.44 + if ((table.convertColumnIndexToModel(column) != COLUMN_FILENAME ||
175.45 + (listViewWindowsStyle && !table.isFocusOwner())) &&
175.46 + !fullRowSelection) {
175.47 isSelected = false;
175.48 }
175.49
175.50 @@ -1338,6 +1342,7 @@
175.51 Rectangle r = list.getCellBounds(index, index);
175.52 if (editCell == null) {
175.53 editCell = new JTextField();
175.54 + editCell.setName("Tree.cellEditor");
175.55 editCell.addActionListener(new EditActionListener());
175.56 editCell.addFocusListener(editorFocusListener);
175.57 editCell.setNextFocusableComponent(list);
175.58 @@ -1797,10 +1802,11 @@
175.59 Point p = evt.getPoint();
175.60 index = table.rowAtPoint(p);
175.61
175.62 - if (SwingUtilities2.pointOutsidePrefSize(table,
175.63 - index,
175.64 - table.columnAtPoint(p), p)) {
175.65 + boolean pointOutsidePrefSize =
175.66 + SwingUtilities2.pointOutsidePrefSize(
175.67 + table, index, table.columnAtPoint(p), p);
175.68
175.69 + if (pointOutsidePrefSize && !fullRowSelection) {
175.70 return;
175.71 }
175.72
176.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
176.2 +++ b/src/share/classes/sun/swing/plaf/GTKKeybindings.java Wed Apr 29 00:27:46 2009 -0700
176.3 @@ -0,0 +1,736 @@
176.4 +/*
176.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
176.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
176.7 + *
176.8 + * This code is free software; you can redistribute it and/or modify it
176.9 + * under the terms of the GNU General Public License version 2 only, as
176.10 + * published by the Free Software Foundation. Sun designates this
176.11 + * particular file as subject to the "Classpath" exception as provided
176.12 + * by Sun in the LICENSE file that accompanied this code.
176.13 + *
176.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
176.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
176.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
176.17 + * version 2 for more details (a copy is included in the LICENSE file that
176.18 + * accompanied this code).
176.19 + *
176.20 + * You should have received a copy of the GNU General Public License version
176.21 + * 2 along with this work; if not, write to the Free Software Foundation,
176.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
176.23 + *
176.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
176.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
176.26 + * have any questions.
176.27 + */
176.28 +
176.29 +package sun.swing.plaf;
176.30 +
176.31 +import javax.swing.JTextField;
176.32 +import javax.swing.UIDefaults;
176.33 +import javax.swing.text.DefaultEditorKit;
176.34 +
176.35 +/**
176.36 + * GTKKeybindings - The standard set of keymaps for the GTK Platform
176.37 + *
176.38 + * @author Jasper Potts
176.39 + */
176.40 +public class GTKKeybindings {
176.41 +
176.42 + /**
176.43 + * Install all GTK keybindings into the provided UIDefaults table
176.44 + *
176.45 + * @param table The UiDefaults table to install into
176.46 + */
176.47 + public static void installKeybindings(UIDefaults table) {
176.48 + Object fieldInputMap = new UIDefaults.LazyInputMap(new Object[]{
176.49 + "ctrl C", DefaultEditorKit.copyAction,
176.50 + "ctrl V", DefaultEditorKit.pasteAction,
176.51 + "ctrl X", DefaultEditorKit.cutAction,
176.52 + "COPY", DefaultEditorKit.copyAction,
176.53 + "PASTE", DefaultEditorKit.pasteAction,
176.54 + "CUT", DefaultEditorKit.cutAction,
176.55 + "control INSERT", DefaultEditorKit.copyAction,
176.56 + "shift INSERT", DefaultEditorKit.pasteAction,
176.57 + "shift DELETE", DefaultEditorKit.cutAction,
176.58 + "shift LEFT", DefaultEditorKit.selectionBackwardAction,
176.59 + "shift KP_LEFT", DefaultEditorKit.selectionBackwardAction,
176.60 + "shift RIGHT", DefaultEditorKit.selectionForwardAction,
176.61 + "shift KP_RIGHT", DefaultEditorKit.selectionForwardAction,
176.62 + "ctrl LEFT", DefaultEditorKit.previousWordAction,
176.63 + "ctrl KP_LEFT", DefaultEditorKit.previousWordAction,
176.64 + "ctrl RIGHT", DefaultEditorKit.nextWordAction,
176.65 + "ctrl KP_RIGHT", DefaultEditorKit.nextWordAction,
176.66 + "ctrl shift LEFT", DefaultEditorKit.selectionPreviousWordAction,
176.67 + "ctrl shift KP_LEFT", DefaultEditorKit.selectionPreviousWordAction,
176.68 + "ctrl shift RIGHT", DefaultEditorKit.selectionNextWordAction,
176.69 + "ctrl shift KP_RIGHT", DefaultEditorKit.selectionNextWordAction,
176.70 + "ctrl A", DefaultEditorKit.selectAllAction,
176.71 + "HOME", DefaultEditorKit.beginLineAction,
176.72 + "END", DefaultEditorKit.endLineAction,
176.73 + "shift HOME", DefaultEditorKit.selectionBeginLineAction,
176.74 + "shift END", DefaultEditorKit.selectionEndLineAction,
176.75 + "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
176.76 + "shift BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
176.77 + "ctrl H", DefaultEditorKit.deletePrevCharAction,
176.78 + "DELETE", DefaultEditorKit.deleteNextCharAction,
176.79 + "ctrl DELETE", DefaultEditorKit.deleteNextWordAction,
176.80 + "ctrl BACK_SPACE", DefaultEditorKit.deletePrevWordAction,
176.81 + "RIGHT", DefaultEditorKit.forwardAction,
176.82 + "LEFT", DefaultEditorKit.backwardAction,
176.83 + "KP_RIGHT", DefaultEditorKit.forwardAction,
176.84 + "KP_LEFT", DefaultEditorKit.backwardAction,
176.85 + "ENTER", JTextField.notifyAction,
176.86 + "ctrl BACK_SLASH", "unselect"/*DefaultEditorKit.unselectAction*/,
176.87 + "control shift O", "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
176.88 + });
176.89 + Object passwordInputMap = new UIDefaults.LazyInputMap(new Object[]{
176.90 + "ctrl C", DefaultEditorKit.copyAction,
176.91 + "ctrl V", DefaultEditorKit.pasteAction,
176.92 + "ctrl X", DefaultEditorKit.cutAction,
176.93 + "COPY", DefaultEditorKit.copyAction,
176.94 + "PASTE", DefaultEditorKit.pasteAction,
176.95 + "CUT", DefaultEditorKit.cutAction,
176.96 + "control INSERT", DefaultEditorKit.copyAction,
176.97 + "shift INSERT", DefaultEditorKit.pasteAction,
176.98 + "shift DELETE", DefaultEditorKit.cutAction,
176.99 + "shift LEFT", DefaultEditorKit.selectionBackwardAction,
176.100 + "shift KP_LEFT", DefaultEditorKit.selectionBackwardAction,
176.101 + "shift RIGHT", DefaultEditorKit.selectionForwardAction,
176.102 + "shift KP_RIGHT", DefaultEditorKit.selectionForwardAction,
176.103 + "ctrl LEFT", DefaultEditorKit.beginLineAction,
176.104 + "ctrl KP_LEFT", DefaultEditorKit.beginLineAction,
176.105 + "ctrl RIGHT", DefaultEditorKit.endLineAction,
176.106 + "ctrl KP_RIGHT", DefaultEditorKit.endLineAction,
176.107 + "ctrl shift LEFT", DefaultEditorKit.selectionBeginLineAction,
176.108 + "ctrl shift KP_LEFT", DefaultEditorKit.selectionBeginLineAction,
176.109 + "ctrl shift RIGHT", DefaultEditorKit.selectionEndLineAction,
176.110 + "ctrl shift KP_RIGHT", DefaultEditorKit.selectionEndLineAction,
176.111 + "ctrl A", DefaultEditorKit.selectAllAction,
176.112 + "HOME", DefaultEditorKit.beginLineAction,
176.113 + "END", DefaultEditorKit.endLineAction,
176.114 + "shift HOME", DefaultEditorKit.selectionBeginLineAction,
176.115 + "shift END", DefaultEditorKit.selectionEndLineAction,
176.116 + "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
176.117 + "shift BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
176.118 + "ctrl H", DefaultEditorKit.deletePrevCharAction,
176.119 + "DELETE", DefaultEditorKit.deleteNextCharAction,
176.120 + "RIGHT", DefaultEditorKit.forwardAction,
176.121 + "LEFT", DefaultEditorKit.backwardAction,
176.122 + "KP_RIGHT", DefaultEditorKit.forwardAction,
176.123 + "KP_LEFT", DefaultEditorKit.backwardAction,
176.124 + "ENTER", JTextField.notifyAction,
176.125 + "ctrl BACK_SLASH", "unselect"/*DefaultEditorKit.unselectAction*/,
176.126 + "control shift O", "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
176.127 + });
176.128 + Object multilineInputMap = new UIDefaults.LazyInputMap(new Object[]{
176.129 + "ctrl C", DefaultEditorKit.copyAction,
176.130 + "ctrl V", DefaultEditorKit.pasteAction,
176.131 + "ctrl X", DefaultEditorKit.cutAction,
176.132 + "COPY", DefaultEditorKit.copyAction,
176.133 + "PASTE", DefaultEditorKit.pasteAction,
176.134 + "CUT", DefaultEditorKit.cutAction,
176.135 + "control INSERT", DefaultEditorKit.copyAction,
176.136 + "shift INSERT", DefaultEditorKit.pasteAction,
176.137 + "shift DELETE", DefaultEditorKit.cutAction,
176.138 + "shift LEFT", DefaultEditorKit.selectionBackwardAction,
176.139 + "shift KP_LEFT", DefaultEditorKit.selectionBackwardAction,
176.140 + "shift RIGHT", DefaultEditorKit.selectionForwardAction,
176.141 + "shift KP_RIGHT", DefaultEditorKit.selectionForwardAction,
176.142 + "ctrl LEFT", DefaultEditorKit.previousWordAction,
176.143 + "ctrl KP_LEFT", DefaultEditorKit.previousWordAction,
176.144 + "ctrl RIGHT", DefaultEditorKit.nextWordAction,
176.145 + "ctrl KP_RIGHT", DefaultEditorKit.nextWordAction,
176.146 + "ctrl shift LEFT", DefaultEditorKit.selectionPreviousWordAction,
176.147 + "ctrl shift KP_LEFT", DefaultEditorKit.selectionPreviousWordAction,
176.148 + "ctrl shift RIGHT", DefaultEditorKit.selectionNextWordAction,
176.149 + "ctrl shift KP_RIGHT", DefaultEditorKit.selectionNextWordAction,
176.150 + "ctrl A", DefaultEditorKit.selectAllAction,
176.151 + "HOME", DefaultEditorKit.beginLineAction,
176.152 + "END", DefaultEditorKit.endLineAction,
176.153 + "shift HOME", DefaultEditorKit.selectionBeginLineAction,
176.154 + "shift END", DefaultEditorKit.selectionEndLineAction,
176.155 +
176.156 + "UP", DefaultEditorKit.upAction,
176.157 + "KP_UP", DefaultEditorKit.upAction,
176.158 + "DOWN", DefaultEditorKit.downAction,
176.159 + "KP_DOWN", DefaultEditorKit.downAction,
176.160 + "PAGE_UP", DefaultEditorKit.pageUpAction,
176.161 + "PAGE_DOWN", DefaultEditorKit.pageDownAction,
176.162 + "shift PAGE_UP", "selection-page-up",
176.163 + "shift PAGE_DOWN", "selection-page-down",
176.164 + "ctrl shift PAGE_UP", "selection-page-left",
176.165 + "ctrl shift PAGE_DOWN", "selection-page-right",
176.166 + "shift UP", DefaultEditorKit.selectionUpAction,
176.167 + "shift KP_UP", DefaultEditorKit.selectionUpAction,
176.168 + "shift DOWN", DefaultEditorKit.selectionDownAction,
176.169 + "shift KP_DOWN", DefaultEditorKit.selectionDownAction,
176.170 + "ENTER", DefaultEditorKit.insertBreakAction,
176.171 + "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
176.172 + "shift BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
176.173 + "ctrl H", DefaultEditorKit.deletePrevCharAction,
176.174 + "DELETE", DefaultEditorKit.deleteNextCharAction,
176.175 + "ctrl DELETE", DefaultEditorKit.deleteNextWordAction,
176.176 + "ctrl BACK_SPACE", DefaultEditorKit.deletePrevWordAction,
176.177 + "RIGHT", DefaultEditorKit.forwardAction,
176.178 + "LEFT", DefaultEditorKit.backwardAction,
176.179 + "KP_RIGHT", DefaultEditorKit.forwardAction,
176.180 + "KP_LEFT", DefaultEditorKit.backwardAction,
176.181 + "TAB", DefaultEditorKit.insertTabAction,
176.182 + "ctrl BACK_SLASH", "unselect"/*DefaultEditorKit.unselectAction*/,
176.183 + "ctrl HOME", DefaultEditorKit.beginAction,
176.184 + "ctrl END", DefaultEditorKit.endAction,
176.185 + "ctrl shift HOME", DefaultEditorKit.selectionBeginAction,
176.186 + "ctrl shift END", DefaultEditorKit.selectionEndAction,
176.187 + "ctrl T", "next-link-action",
176.188 + "ctrl shift T", "previous-link-action",
176.189 + "ctrl SPACE", "activate-link-action",
176.190 + "control shift O", "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
176.191 + });
176.192 +
176.193 + Object[] defaults = new Object[]{
176.194 + "Button.focusInputMap",
176.195 + new UIDefaults.LazyInputMap(new Object[]{
176.196 + "SPACE", "pressed",
176.197 + "released SPACE", "released",
176.198 + "ENTER", "pressed",
176.199 + "released ENTER", "released"
176.200 + }),
176.201 + "CheckBox.focusInputMap",
176.202 + new UIDefaults.LazyInputMap(new Object[]{
176.203 + "SPACE", "pressed",
176.204 + "released SPACE", "released"
176.205 + }),
176.206 + "ComboBox.ancestorInputMap",
176.207 + new UIDefaults.LazyInputMap(new Object[]{
176.208 + "ESCAPE", "hidePopup",
176.209 + "PAGE_UP", "pageUpPassThrough",
176.210 + "PAGE_DOWN", "pageDownPassThrough",
176.211 + "HOME", "homePassThrough",
176.212 + "END", "endPassThrough",
176.213 + "DOWN", "selectNext",
176.214 + "KP_DOWN", "selectNext",
176.215 + "alt DOWN", "togglePopup",
176.216 + "alt KP_DOWN", "togglePopup",
176.217 + "alt UP", "togglePopup",
176.218 + "alt KP_UP", "togglePopup",
176.219 + "SPACE", "spacePopup",
176.220 + "ENTER", "enterPressed",
176.221 + "UP", "selectPrevious",
176.222 + "KP_UP", "selectPrevious"
176.223 +
176.224 + }),
176.225 + "EditorPane.focusInputMap", multilineInputMap,
176.226 + "FileChooser.ancestorInputMap",
176.227 + new UIDefaults.LazyInputMap(new Object[]{
176.228 + "ESCAPE", "cancelSelection",
176.229 + "F2", "editFileName",
176.230 + "F5", "refresh",
176.231 + "BACK_SPACE", "Go Up",
176.232 + "ENTER", "approveSelection",
176.233 + "ctrl ENTER", "approveSelection"
176.234 + }),
176.235 + "FormattedTextField.focusInputMap",
176.236 + new UIDefaults.LazyInputMap(new Object[]{
176.237 + "ctrl C", DefaultEditorKit.copyAction,
176.238 + "ctrl V", DefaultEditorKit.pasteAction,
176.239 + "ctrl X", DefaultEditorKit.cutAction,
176.240 + "COPY", DefaultEditorKit.copyAction,
176.241 + "PASTE", DefaultEditorKit.pasteAction,
176.242 + "CUT", DefaultEditorKit.cutAction,
176.243 + "control INSERT", DefaultEditorKit.copyAction,
176.244 + "shift INSERT", DefaultEditorKit.pasteAction,
176.245 + "shift DELETE", DefaultEditorKit.cutAction,
176.246 + "shift LEFT", DefaultEditorKit.selectionBackwardAction,
176.247 + "shift KP_LEFT", DefaultEditorKit.selectionBackwardAction,
176.248 + "shift RIGHT", DefaultEditorKit.selectionForwardAction,
176.249 + "shift KP_RIGHT", DefaultEditorKit.selectionForwardAction,
176.250 + "ctrl LEFT", DefaultEditorKit.previousWordAction,
176.251 + "ctrl KP_LEFT", DefaultEditorKit.previousWordAction,
176.252 + "ctrl RIGHT", DefaultEditorKit.nextWordAction,
176.253 + "ctrl KP_RIGHT", DefaultEditorKit.nextWordAction,
176.254 + "ctrl shift LEFT", DefaultEditorKit.selectionPreviousWordAction,
176.255 + "ctrl shift KP_LEFT", DefaultEditorKit.selectionPreviousWordAction,
176.256 + "ctrl shift RIGHT", DefaultEditorKit.selectionNextWordAction,
176.257 + "ctrl shift KP_RIGHT", DefaultEditorKit.selectionNextWordAction,
176.258 + "ctrl A", DefaultEditorKit.selectAllAction,
176.259 + "HOME", DefaultEditorKit.beginLineAction,
176.260 + "END", DefaultEditorKit.endLineAction,
176.261 + "shift HOME", DefaultEditorKit.selectionBeginLineAction,
176.262 + "shift END", DefaultEditorKit.selectionEndLineAction,
176.263 + "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
176.264 + "shift BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
176.265 + "ctrl H", DefaultEditorKit.deletePrevCharAction,
176.266 + "DELETE", DefaultEditorKit.deleteNextCharAction,
176.267 + "ctrl DELETE", DefaultEditorKit.deleteNextWordAction,
176.268 + "ctrl BACK_SPACE", DefaultEditorKit.deletePrevWordAction,
176.269 + "RIGHT", DefaultEditorKit.forwardAction,
176.270 + "LEFT", DefaultEditorKit.backwardAction,
176.271 + "KP_RIGHT", DefaultEditorKit.forwardAction,
176.272 + "KP_LEFT", DefaultEditorKit.backwardAction,
176.273 + "ENTER", JTextField.notifyAction,
176.274 + "ctrl BACK_SLASH", "unselect",
176.275 + "control shift O", "toggle-componentOrientation",
176.276 + "ESCAPE", "reset-field-edit",
176.277 + "UP", "increment",
176.278 + "KP_UP", "increment",
176.279 + "DOWN", "decrement",
176.280 + "KP_DOWN", "decrement",
176.281 + }),
176.282 + "InternalFrame.windowBindings",
176.283 + new Object[]{
176.284 + "shift ESCAPE", "showSystemMenu",
176.285 + "ctrl SPACE", "showSystemMenu",
176.286 + "ESCAPE", "hideSystemMenu"
176.287 + },
176.288 + "List.focusInputMap",
176.289 + new UIDefaults.LazyInputMap(new Object[]{
176.290 + "ctrl C", "copy",
176.291 + "ctrl V", "paste",
176.292 + "ctrl X", "cut",
176.293 + "COPY", "copy",
176.294 + "PASTE", "paste",
176.295 + "CUT", "cut",
176.296 + "control INSERT", "copy",
176.297 + "shift INSERT", "paste",
176.298 + "shift DELETE", "cut",
176.299 + "UP", "selectPreviousRow",
176.300 + "KP_UP", "selectPreviousRow",
176.301 + "shift UP", "selectPreviousRowExtendSelection",
176.302 + "shift KP_UP", "selectPreviousRowExtendSelection",
176.303 + "ctrl shift UP", "selectPreviousRowExtendSelection",
176.304 + "ctrl shift KP_UP", "selectPreviousRowExtendSelection",
176.305 + "ctrl UP", "selectPreviousRowChangeLead",
176.306 + "ctrl KP_UP", "selectPreviousRowChangeLead",
176.307 + "DOWN", "selectNextRow",
176.308 + "KP_DOWN", "selectNextRow",
176.309 + "shift DOWN", "selectNextRowExtendSelection",
176.310 + "shift KP_DOWN", "selectNextRowExtendSelection",
176.311 + "ctrl shift DOWN", "selectNextRowExtendSelection",
176.312 + "ctrl shift KP_DOWN", "selectNextRowExtendSelection",
176.313 + "ctrl DOWN", "selectNextRowChangeLead",
176.314 + "ctrl KP_DOWN", "selectNextRowChangeLead",
176.315 + "LEFT", "selectPreviousColumn",
176.316 + "KP_LEFT", "selectPreviousColumn",
176.317 + "shift LEFT", "selectPreviousColumnExtendSelection",
176.318 + "shift KP_LEFT", "selectPreviousColumnExtendSelection",
176.319 + "ctrl shift LEFT", "selectPreviousColumnExtendSelection",
176.320 + "ctrl shift KP_LEFT", "selectPreviousColumnExtendSelection",
176.321 + "ctrl LEFT", "selectPreviousColumnChangeLead",
176.322 + "ctrl KP_LEFT", "selectPreviousColumnChangeLead",
176.323 + "RIGHT", "selectNextColumn",
176.324 + "KP_RIGHT", "selectNextColumn",
176.325 + "shift RIGHT", "selectNextColumnExtendSelection",
176.326 + "shift KP_RIGHT", "selectNextColumnExtendSelection",
176.327 + "ctrl shift RIGHT", "selectNextColumnExtendSelection",
176.328 + "ctrl shift KP_RIGHT", "selectNextColumnExtendSelection",
176.329 + "ctrl RIGHT", "selectNextColumnChangeLead",
176.330 + "ctrl KP_RIGHT", "selectNextColumnChangeLead",
176.331 + "HOME", "selectFirstRow",
176.332 + "shift HOME", "selectFirstRowExtendSelection",
176.333 + "ctrl shift HOME", "selectFirstRowExtendSelection",
176.334 + "ctrl HOME", "selectFirstRowChangeLead",
176.335 + "END", "selectLastRow",
176.336 + "shift END", "selectLastRowExtendSelection",
176.337 + "ctrl shift END", "selectLastRowExtendSelection",
176.338 + "ctrl END", "selectLastRowChangeLead",
176.339 + "PAGE_UP", "scrollUp",
176.340 + "shift PAGE_UP", "scrollUpExtendSelection",
176.341 + "ctrl shift PAGE_UP", "scrollUpExtendSelection",
176.342 + "ctrl PAGE_UP", "scrollUpChangeLead",
176.343 + "PAGE_DOWN", "scrollDown",
176.344 + "shift PAGE_DOWN", "scrollDownExtendSelection",
176.345 + "ctrl shift PAGE_DOWN", "scrollDownExtendSelection",
176.346 + "ctrl PAGE_DOWN", "scrollDownChangeLead",
176.347 + "ctrl A", "selectAll",
176.348 + "ctrl SLASH", "selectAll",
176.349 + "ctrl BACK_SLASH", "clearSelection",
176.350 + "SPACE", "addToSelection",
176.351 + "ctrl SPACE", "toggleAndAnchor",
176.352 + "shift SPACE", "extendTo",
176.353 + "ctrl shift SPACE", "moveSelectionTo"
176.354 + }),
176.355 + "List.focusInputMap.RightToLeft",
176.356 + new UIDefaults.LazyInputMap(new Object[]{
176.357 + "LEFT", "selectNextColumn",
176.358 + "KP_LEFT", "selectNextColumn",
176.359 + "shift LEFT", "selectNextColumnExtendSelection",
176.360 + "shift KP_LEFT", "selectNextColumnExtendSelection",
176.361 + "ctrl shift LEFT", "selectNextColumnExtendSelection",
176.362 + "ctrl shift KP_LEFT", "selectNextColumnExtendSelection",
176.363 + "ctrl LEFT", "selectNextColumnChangeLead",
176.364 + "ctrl KP_LEFT", "selectNextColumnChangeLead",
176.365 + "RIGHT", "selectPreviousColumn",
176.366 + "KP_RIGHT", "selectPreviousColumn",
176.367 + "shift RIGHT", "selectPreviousColumnExtendSelection",
176.368 + "shift KP_RIGHT", "selectPreviousColumnExtendSelection",
176.369 + "ctrl shift RIGHT", "selectPreviousColumnExtendSelection",
176.370 + "ctrl shift KP_RIGHT", "selectPreviousColumnExtendSelection",
176.371 + "ctrl RIGHT", "selectPreviousColumnChangeLead",
176.372 + "ctrl KP_RIGHT", "selectPreviousColumnChangeLead",
176.373 + }),
176.374 + "MenuBar.windowBindings", new Object[]{
176.375 + "F10", "takeFocus"
176.376 + },
176.377 + "OptionPane.windowBindings", new Object[]{
176.378 + "ESCAPE", "close"
176.379 + },
176.380 + "PasswordField.focusInputMap", passwordInputMap,
176.381 + "PopupMenu.selectedWindowInputMapBindings",
176.382 + new Object[]{
176.383 + "ESCAPE", "cancel",
176.384 + "DOWN", "selectNext",
176.385 + "KP_DOWN", "selectNext",
176.386 + "UP", "selectPrevious",
176.387 + "KP_UP", "selectPrevious",
176.388 + "LEFT", "selectParent",
176.389 + "KP_LEFT", "selectParent",
176.390 + "RIGHT", "selectChild",
176.391 + "KP_RIGHT", "selectChild",
176.392 + "ENTER", "return",
176.393 + "SPACE", "return"
176.394 + },
176.395 + "PopupMenu.selectedWindowInputMapBindings.RightToLeft",
176.396 + new Object[]{
176.397 + "LEFT", "selectChild",
176.398 + "KP_LEFT", "selectChild",
176.399 + "RIGHT", "selectParent",
176.400 + "KP_RIGHT", "selectParent",
176.401 + },
176.402 + "RadioButton.focusInputMap",
176.403 + new UIDefaults.LazyInputMap(new Object[]{
176.404 + "SPACE", "pressed",
176.405 + "released SPACE", "released",
176.406 + "RETURN", "pressed"
176.407 + }),
176.408 + // These bindings are only enabled when there is a default
176.409 + // button set on the rootpane.
176.410 + "RootPane.defaultButtonWindowKeyBindings", new Object[]{
176.411 + "ENTER", "press",
176.412 + "released ENTER", "release",
176.413 + "ctrl ENTER", "press",
176.414 + "ctrl released ENTER", "release"
176.415 + },
176.416 + "ScrollBar.ancestorInputMap",
176.417 + new UIDefaults.LazyInputMap(new Object[]{
176.418 + "RIGHT", "positiveUnitIncrement",
176.419 + "KP_RIGHT", "positiveUnitIncrement",
176.420 + "DOWN", "positiveUnitIncrement",
176.421 + "KP_DOWN", "positiveUnitIncrement",
176.422 + "PAGE_DOWN", "positiveBlockIncrement",
176.423 + "LEFT", "negativeUnitIncrement",
176.424 + "KP_LEFT", "negativeUnitIncrement",
176.425 + "UP", "negativeUnitIncrement",
176.426 + "KP_UP", "negativeUnitIncrement",
176.427 + "PAGE_UP", "negativeBlockIncrement",
176.428 + "HOME", "minScroll",
176.429 + "END", "maxScroll"
176.430 + }),
176.431 + "ScrollBar.ancestorInputMap.RightToLeft",
176.432 + new UIDefaults.LazyInputMap(new Object[]{
176.433 + "RIGHT", "negativeUnitIncrement",
176.434 + "KP_RIGHT", "negativeUnitIncrement",
176.435 + "LEFT", "positiveUnitIncrement",
176.436 + "KP_LEFT", "positiveUnitIncrement",
176.437 + }),
176.438 + "ScrollPane.ancestorInputMap",
176.439 + new UIDefaults.LazyInputMap(new Object[]{
176.440 + "RIGHT", "unitScrollRight",
176.441 + "KP_RIGHT", "unitScrollRight",
176.442 + "DOWN", "unitScrollDown",
176.443 + "KP_DOWN", "unitScrollDown",
176.444 + "LEFT", "unitScrollLeft",
176.445 + "KP_LEFT", "unitScrollLeft",
176.446 + "UP", "unitScrollUp",
176.447 + "KP_UP", "unitScrollUp",
176.448 + "PAGE_UP", "scrollUp",
176.449 + "PAGE_DOWN", "scrollDown",
176.450 + "ctrl PAGE_UP", "scrollLeft",
176.451 + "ctrl PAGE_DOWN", "scrollRight",
176.452 + "ctrl HOME", "scrollHome",
176.453 + "ctrl END", "scrollEnd"
176.454 + }),
176.455 + "ScrollPane.ancestorInputMap.RightToLeft",
176.456 + new UIDefaults.LazyInputMap(new Object[]{
176.457 + "ctrl PAGE_UP", "scrollRight",
176.458 + "ctrl PAGE_DOWN", "scrollLeft",
176.459 + }),
176.460 + "Slider.focusInputMap",
176.461 + new UIDefaults.LazyInputMap(new Object[]{
176.462 + "RIGHT", "positiveUnitIncrement",
176.463 + "KP_RIGHT", "positiveUnitIncrement",
176.464 + "DOWN", "negativeUnitIncrement",
176.465 + "KP_DOWN", "negativeUnitIncrement",
176.466 + "PAGE_DOWN", "negativeBlockIncrement",
176.467 + "LEFT", "negativeUnitIncrement",
176.468 + "KP_LEFT", "negativeUnitIncrement",
176.469 + "UP", "positiveUnitIncrement",
176.470 + "KP_UP", "positiveUnitIncrement",
176.471 + "PAGE_UP", "positiveBlockIncrement",
176.472 + "HOME", "minScroll",
176.473 + "END", "maxScroll"
176.474 + }),
176.475 + "Slider.focusInputMap.RightToLeft",
176.476 + new UIDefaults.LazyInputMap(new Object[]{
176.477 + "RIGHT", "negativeUnitIncrement",
176.478 + "KP_RIGHT", "negativeUnitIncrement",
176.479 + "LEFT", "positiveUnitIncrement",
176.480 + "KP_LEFT", "positiveUnitIncrement",
176.481 + }),
176.482 + "Spinner.ancestorInputMap",
176.483 + new UIDefaults.LazyInputMap(new Object[]{
176.484 + "UP", "increment",
176.485 + "KP_UP", "increment",
176.486 + "DOWN", "decrement",
176.487 + "KP_DOWN", "decrement",
176.488 + }),
176.489 + "SplitPane.ancestorInputMap",
176.490 + new UIDefaults.LazyInputMap(new Object[]{
176.491 + "UP", "negativeIncrement",
176.492 + "DOWN", "positiveIncrement",
176.493 + "LEFT", "negativeIncrement",
176.494 + "RIGHT", "positiveIncrement",
176.495 + "KP_UP", "negativeIncrement",
176.496 + "KP_DOWN", "positiveIncrement",
176.497 + "KP_LEFT", "negativeIncrement",
176.498 + "KP_RIGHT", "positiveIncrement",
176.499 + "HOME", "selectMin",
176.500 + "END", "selectMax",
176.501 + "F8", "startResize",
176.502 + "F6", "toggleFocus",
176.503 + "ctrl TAB", "focusOutForward",
176.504 + "ctrl shift TAB", "focusOutBackward"
176.505 + }),
176.506 + "TabbedPane.focusInputMap",
176.507 + new UIDefaults.LazyInputMap(new Object[]{
176.508 + "RIGHT", "navigateRight",
176.509 + "KP_RIGHT", "navigateRight",
176.510 + "LEFT", "navigateLeft",
176.511 + "KP_LEFT", "navigateLeft",
176.512 + "UP", "navigateUp",
176.513 + "KP_UP", "navigateUp",
176.514 + "DOWN", "navigateDown",
176.515 + "KP_DOWN", "navigateDown",
176.516 + "ctrl DOWN", "requestFocusForVisibleComponent",
176.517 + "ctrl KP_DOWN", "requestFocusForVisibleComponent",
176.518 + "SPACE", "selectTabWithFocus"
176.519 + }),
176.520 + "TabbedPane.ancestorInputMap",
176.521 + new UIDefaults.LazyInputMap(new Object[]{
176.522 + "ctrl TAB", "navigateNext",
176.523 + "ctrl shift TAB", "navigatePrevious",
176.524 + "ctrl PAGE_DOWN", "navigatePageDown",
176.525 + "ctrl PAGE_UP", "navigatePageUp",
176.526 + "ctrl UP", "requestFocus",
176.527 + "ctrl KP_UP", "requestFocus",
176.528 + }),
176.529 + "TableHeader.ancestorInputMap",
176.530 + new UIDefaults.LazyInputMap(new Object[] {
176.531 + "SPACE", "toggleSortOrder",
176.532 + "LEFT", "selectColumnToLeft",
176.533 + "KP_LEFT", "selectColumnToLeft",
176.534 + "RIGHT", "selectColumnToRight",
176.535 + "KP_RIGHT", "selectColumnToRight",
176.536 + "alt LEFT", "moveColumnLeft",
176.537 + "alt KP_LEFT", "moveColumnLeft",
176.538 + "alt RIGHT", "moveColumnRight",
176.539 + "alt KP_RIGHT", "moveColumnRight",
176.540 + "alt shift LEFT", "resizeLeft",
176.541 + "alt shift KP_LEFT", "resizeLeft",
176.542 + "alt shift RIGHT", "resizeRight",
176.543 + "alt shift KP_RIGHT", "resizeRight",
176.544 + "ESCAPE", "focusTable",
176.545 + }),
176.546 + "Table.ancestorInputMap",
176.547 + new UIDefaults.LazyInputMap(new Object[]{
176.548 + "ctrl C", "copy",
176.549 + "ctrl V", "paste",
176.550 + "ctrl X", "cut",
176.551 + "COPY", "copy",
176.552 + "PASTE", "paste",
176.553 + "CUT", "cut",
176.554 + "control INSERT", "copy",
176.555 + "shift INSERT", "paste",
176.556 + "shift DELETE", "cut",
176.557 + "RIGHT", "selectNextColumn",
176.558 + "KP_RIGHT", "selectNextColumn",
176.559 + "shift RIGHT", "selectNextColumnExtendSelection",
176.560 + "shift KP_RIGHT", "selectNextColumnExtendSelection",
176.561 + "ctrl shift RIGHT", "selectNextColumnExtendSelection",
176.562 + "ctrl shift KP_RIGHT", "selectNextColumnExtendSelection",
176.563 + "ctrl RIGHT", "selectNextColumnChangeLead",
176.564 + "ctrl KP_RIGHT", "selectNextColumnChangeLead",
176.565 + "LEFT", "selectPreviousColumn",
176.566 + "KP_LEFT", "selectPreviousColumn",
176.567 + "shift LEFT", "selectPreviousColumnExtendSelection",
176.568 + "shift KP_LEFT", "selectPreviousColumnExtendSelection",
176.569 + "ctrl shift LEFT", "selectPreviousColumnExtendSelection",
176.570 + "ctrl shift KP_LEFT", "selectPreviousColumnExtendSelection",
176.571 + "ctrl LEFT", "selectPreviousColumnChangeLead",
176.572 + "ctrl KP_LEFT", "selectPreviousColumnChangeLead",
176.573 + "DOWN", "selectNextRow",
176.574 + "KP_DOWN", "selectNextRow",
176.575 + "shift DOWN", "selectNextRowExtendSelection",
176.576 + "shift KP_DOWN", "selectNextRowExtendSelection",
176.577 + "ctrl shift DOWN", "selectNextRowExtendSelection",
176.578 + "ctrl shift KP_DOWN", "selectNextRowExtendSelection",
176.579 + "ctrl DOWN", "selectNextRowChangeLead",
176.580 + "ctrl KP_DOWN", "selectNextRowChangeLead",
176.581 + "UP", "selectPreviousRow",
176.582 + "KP_UP", "selectPreviousRow",
176.583 + "shift UP", "selectPreviousRowExtendSelection",
176.584 + "shift KP_UP", "selectPreviousRowExtendSelection",
176.585 + "ctrl shift UP", "selectPreviousRowExtendSelection",
176.586 + "ctrl shift KP_UP", "selectPreviousRowExtendSelection",
176.587 + "ctrl UP", "selectPreviousRowChangeLead",
176.588 + "ctrl KP_UP", "selectPreviousRowChangeLead",
176.589 + "HOME", "selectFirstColumn",
176.590 + "shift HOME", "selectFirstColumnExtendSelection",
176.591 + "ctrl shift HOME", "selectFirstRowExtendSelection",
176.592 + "ctrl HOME", "selectFirstRow",
176.593 + "END", "selectLastColumn",
176.594 + "shift END", "selectLastColumnExtendSelection",
176.595 + "ctrl shift END", "selectLastRowExtendSelection",
176.596 + "ctrl END", "selectLastRow",
176.597 + "PAGE_UP", "scrollUpChangeSelection",
176.598 + "shift PAGE_UP", "scrollUpExtendSelection",
176.599 + "ctrl shift PAGE_UP", "scrollLeftExtendSelection",
176.600 + "ctrl PAGE_UP", "scrollLeftChangeSelection",
176.601 + "PAGE_DOWN", "scrollDownChangeSelection",
176.602 + "shift PAGE_DOWN", "scrollDownExtendSelection",
176.603 + "ctrl shift PAGE_DOWN", "scrollRightExtendSelection",
176.604 + "ctrl PAGE_DOWN", "scrollRightChangeSelection",
176.605 + "TAB", "selectNextColumnCell",
176.606 + "shift TAB", "selectPreviousColumnCell",
176.607 + "ENTER", "selectNextRowCell",
176.608 + "shift ENTER", "selectPreviousRowCell",
176.609 + "ctrl A", "selectAll",
176.610 + "ctrl SLASH", "selectAll",
176.611 + "ctrl BACK_SLASH", "clearSelection",
176.612 + "ESCAPE", "cancel",
176.613 + "F2", "startEditing",
176.614 + "SPACE", "addToSelection",
176.615 + "ctrl SPACE", "toggleAndAnchor",
176.616 + "shift SPACE", "extendTo",
176.617 + "ctrl shift SPACE", "moveSelectionTo",
176.618 + "F8", "focusHeader"
176.619 + }),
176.620 + "Table.ancestorInputMap.RightToLeft",
176.621 + new UIDefaults.LazyInputMap(new Object[]{
176.622 + "RIGHT", "selectPreviousColumn",
176.623 + "KP_RIGHT", "selectPreviousColumn",
176.624 + "shift RIGHT", "selectPreviousColumnExtendSelection",
176.625 + "shift KP_RIGHT", "selectPreviousColumnExtendSelection",
176.626 + "ctrl shift RIGHT", "selectPreviousColumnExtendSelection",
176.627 + "ctrl shift KP_RIGHT", "selectPreviousColumnExtendSelection",
176.628 + "shift RIGHT", "selectPreviousColumnChangeLead",
176.629 + "shift KP_RIGHT", "selectPreviousColumnChangeLead",
176.630 + "LEFT", "selectNextColumn",
176.631 + "KP_LEFT", "selectNextColumn",
176.632 + "shift LEFT", "selectNextColumnExtendSelection",
176.633 + "shift KP_LEFT", "selectNextColumnExtendSelection",
176.634 + "ctrl shift LEFT", "selectNextColumnExtendSelection",
176.635 + "ctrl shift KP_LEFT", "selectNextColumnExtendSelection",
176.636 + "ctrl LEFT", "selectNextColumnChangeLead",
176.637 + "ctrl KP_LEFT", "selectNextColumnChangeLead",
176.638 + "ctrl PAGE_UP", "scrollRightChangeSelection",
176.639 + "ctrl PAGE_DOWN", "scrollLeftChangeSelection",
176.640 + "ctrl shift PAGE_UP", "scrollRightExtendSelection",
176.641 + "ctrl shift PAGE_DOWN", "scrollLeftExtendSelection",
176.642 + }),
176.643 + "TextArea.focusInputMap", multilineInputMap,
176.644 + "TextField.focusInputMap", fieldInputMap,
176.645 + "TextPane.focusInputMap", multilineInputMap,
176.646 + "ToggleButton.focusInputMap",
176.647 + new UIDefaults.LazyInputMap(new Object[]{
176.648 + "SPACE", "pressed",
176.649 + "released SPACE", "released"
176.650 + }),
176.651 + "ToolBar.ancestorInputMap",
176.652 + new UIDefaults.LazyInputMap(new Object[]{
176.653 + "UP", "navigateUp",
176.654 + "KP_UP", "navigateUp",
176.655 + "DOWN", "navigateDown",
176.656 + "KP_DOWN", "navigateDown",
176.657 + "LEFT", "navigateLeft",
176.658 + "KP_LEFT", "navigateLeft",
176.659 + "RIGHT", "navigateRight",
176.660 + "KP_RIGHT", "navigateRight"
176.661 + }),
176.662 + "Tree.focusInputMap",
176.663 + new UIDefaults.LazyInputMap(new Object[]{
176.664 + "ctrl C", "copy",
176.665 + "ctrl V", "paste",
176.666 + "ctrl X", "cut",
176.667 + "COPY", "copy",
176.668 + "PASTE", "paste",
176.669 + "CUT", "cut",
176.670 + "control INSERT", "copy",
176.671 + "shift INSERT", "paste",
176.672 + "shift DELETE", "cut",
176.673 + "UP", "selectPrevious",
176.674 + "KP_UP", "selectPrevious",
176.675 + "shift UP", "selectPreviousExtendSelection",
176.676 + "shift KP_UP", "selectPreviousExtendSelection",
176.677 + "ctrl shift UP", "selectPreviousExtendSelection",
176.678 + "ctrl shift KP_UP", "selectPreviousExtendSelection",
176.679 + "ctrl UP", "selectPreviousChangeLead",
176.680 + "ctrl KP_UP", "selectPreviousChangeLead",
176.681 + "DOWN", "selectNext",
176.682 + "KP_DOWN", "selectNext",
176.683 + "shift DOWN", "selectNextExtendSelection",
176.684 + "shift KP_DOWN", "selectNextExtendSelection",
176.685 + "ctrl shift DOWN", "selectNextExtendSelection",
176.686 + "ctrl shift KP_DOWN", "selectNextExtendSelection",
176.687 + "ctrl DOWN", "selectNextChangeLead",
176.688 + "ctrl KP_DOWN", "selectNextChangeLead",
176.689 + "RIGHT", "selectChild",
176.690 + "KP_RIGHT", "selectChild",
176.691 + "LEFT", "selectParent",
176.692 + "KP_LEFT", "selectParent",
176.693 + "typed +", "expand",
176.694 + "typed -", "collapse",
176.695 + "BACK_SPACE", "moveSelectionToParent",
176.696 + "PAGE_UP", "scrollUpChangeSelection",
176.697 + "shift PAGE_UP", "scrollUpExtendSelection",
176.698 + "ctrl shift PAGE_UP", "scrollUpExtendSelection",
176.699 + "ctrl PAGE_UP", "scrollUpChangeLead",
176.700 + "PAGE_DOWN", "scrollDownChangeSelection",
176.701 + "shift PAGE_DOWN", "scrollDownExtendSelection",
176.702 + "ctrl shift PAGE_DOWN", "scrollDownExtendSelection",
176.703 + "ctrl PAGE_DOWN", "scrollDownChangeLead",
176.704 + "HOME", "selectFirst",
176.705 + "shift HOME", "selectFirstExtendSelection",
176.706 + "ctrl shift HOME", "selectFirstExtendSelection",
176.707 + "ctrl HOME", "selectFirstChangeLead",
176.708 + "END", "selectLast",
176.709 + "shift END", "selectLastExtendSelection",
176.710 + "ctrl shift END", "selectLastExtendSelection",
176.711 + "ctrl END", "selectLastChangeLead",
176.712 + "F2", "startEditing",
176.713 + "ctrl A", "selectAll",
176.714 + "ctrl SLASH", "selectAll",
176.715 + "ctrl BACK_SLASH", "clearSelection",
176.716 + "ctrl LEFT", "scrollLeft",
176.717 + "ctrl KP_LEFT", "scrollLeft",
176.718 + "ctrl RIGHT", "scrollRight",
176.719 + "ctrl KP_RIGHT", "scrollRight",
176.720 + "SPACE", "addToSelection",
176.721 + "ctrl SPACE", "toggleAndAnchor",
176.722 + "shift SPACE", "extendTo",
176.723 + "ctrl shift SPACE", "moveSelectionTo"
176.724 + }),
176.725 + "Tree.focusInputMap.RightToLeft",
176.726 + new UIDefaults.LazyInputMap(new Object[]{
176.727 + "RIGHT", "selectParent",
176.728 + "KP_RIGHT", "selectParent",
176.729 + "LEFT", "selectChild",
176.730 + "KP_LEFT", "selectChild",
176.731 + }),
176.732 + "Tree.ancestorInputMap",
176.733 + new UIDefaults.LazyInputMap(new Object[]{
176.734 + "ESCAPE", "cancel"
176.735 + }),
176.736 + };
176.737 + table.putDefaults(defaults);
176.738 + }
176.739 +}
177.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
177.2 +++ b/src/share/classes/sun/swing/plaf/WindowsKeybindings.java Wed Apr 29 00:27:46 2009 -0700
177.3 @@ -0,0 +1,643 @@
177.4 +/*
177.5 + * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved.
177.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
177.7 + *
177.8 + * This code is free software; you can redistribute it and/or modify it
177.9 + * under the terms of the GNU General Public License version 2 only, as
177.10 + * published by the Free Software Foundation. Sun designates this
177.11 + * particular file as subject to the "Classpath" exception as provided
177.12 + * by Sun in the LICENSE file that accompanied this code.
177.13 + *
177.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
177.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
177.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
177.17 + * version 2 for more details (a copy is included in the LICENSE file that
177.18 + * accompanied this code).
177.19 + *
177.20 + * You should have received a copy of the GNU General Public License version
177.21 + * 2 along with this work; if not, write to the Free Software Foundation,
177.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
177.23 + *
177.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
177.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
177.26 + * have any questions.
177.27 + */
177.28 +
177.29 +package sun.swing.plaf;
177.30 +
177.31 +import javax.swing.JTextField;
177.32 +import javax.swing.UIDefaults;
177.33 +import javax.swing.text.DefaultEditorKit;
177.34 +
177.35 +/**
177.36 + * WindowsKeybindings - The standard set of keymaps for the Windows Platform
177.37 + *
177.38 + * @author Jasper Potts
177.39 + */
177.40 +public class WindowsKeybindings {
177.41 +
177.42 + /**
177.43 + * Install all Windows keybindings into the provided UIDefaults table
177.44 + *
177.45 + * @param table The UiDefaults table to install into
177.46 + */
177.47 + public static void installKeybindings(UIDefaults table) {
177.48 + // *** Text
177.49 + Object fieldInputMap = new UIDefaults.LazyInputMap(new Object[]{
177.50 + "control C", DefaultEditorKit.copyAction,
177.51 + "control V", DefaultEditorKit.pasteAction,
177.52 + "control X", DefaultEditorKit.cutAction,
177.53 + "COPY", DefaultEditorKit.copyAction,
177.54 + "PASTE", DefaultEditorKit.pasteAction,
177.55 + "CUT", DefaultEditorKit.cutAction,
177.56 + "control INSERT", DefaultEditorKit.copyAction,
177.57 + "shift INSERT", DefaultEditorKit.pasteAction,
177.58 + "shift DELETE", DefaultEditorKit.cutAction,
177.59 + "control A", DefaultEditorKit.selectAllAction,
177.60 + "control BACK_SLASH", "unselect"/*DefaultEditorKit.unselectAction*/,
177.61 + "shift LEFT", DefaultEditorKit.selectionBackwardAction,
177.62 + "shift RIGHT", DefaultEditorKit.selectionForwardAction,
177.63 + "control LEFT", DefaultEditorKit.previousWordAction,
177.64 + "control RIGHT", DefaultEditorKit.nextWordAction,
177.65 + "control shift LEFT", DefaultEditorKit.selectionPreviousWordAction,
177.66 + "control shift RIGHT", DefaultEditorKit.selectionNextWordAction,
177.67 + "HOME", DefaultEditorKit.beginLineAction,
177.68 + "END", DefaultEditorKit.endLineAction,
177.69 + "shift HOME", DefaultEditorKit.selectionBeginLineAction,
177.70 + "shift END", DefaultEditorKit.selectionEndLineAction,
177.71 + "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
177.72 + "shift BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
177.73 + "ctrl H", DefaultEditorKit.deletePrevCharAction,
177.74 + "DELETE", DefaultEditorKit.deleteNextCharAction,
177.75 + "ctrl DELETE", DefaultEditorKit.deleteNextWordAction,
177.76 + "ctrl BACK_SPACE", DefaultEditorKit.deletePrevWordAction,
177.77 + "RIGHT", DefaultEditorKit.forwardAction,
177.78 + "LEFT", DefaultEditorKit.backwardAction,
177.79 + "KP_RIGHT", DefaultEditorKit.forwardAction,
177.80 + "KP_LEFT", DefaultEditorKit.backwardAction,
177.81 + "ENTER", JTextField.notifyAction,
177.82 + "control shift O", "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
177.83 + });
177.84 + Object passwordInputMap = new UIDefaults.LazyInputMap(new Object[]{
177.85 + "control C", DefaultEditorKit.copyAction,
177.86 + "control V", DefaultEditorKit.pasteAction,
177.87 + "control X", DefaultEditorKit.cutAction,
177.88 + "COPY", DefaultEditorKit.copyAction,
177.89 + "PASTE", DefaultEditorKit.pasteAction,
177.90 + "CUT", DefaultEditorKit.cutAction,
177.91 + "control INSERT", DefaultEditorKit.copyAction,
177.92 + "shift INSERT", DefaultEditorKit.pasteAction,
177.93 + "shift DELETE", DefaultEditorKit.cutAction,
177.94 + "control A", DefaultEditorKit.selectAllAction,
177.95 + "control BACK_SLASH", "unselect"/*DefaultEditorKit.unselectAction*/,
177.96 + "shift LEFT", DefaultEditorKit.selectionBackwardAction,
177.97 + "shift RIGHT", DefaultEditorKit.selectionForwardAction,
177.98 + "control LEFT", DefaultEditorKit.beginLineAction,
177.99 + "control RIGHT", DefaultEditorKit.endLineAction,
177.100 + "control shift LEFT", DefaultEditorKit.selectionBeginLineAction,
177.101 + "control shift RIGHT", DefaultEditorKit.selectionEndLineAction,
177.102 + "HOME", DefaultEditorKit.beginLineAction,
177.103 + "END", DefaultEditorKit.endLineAction,
177.104 + "shift HOME", DefaultEditorKit.selectionBeginLineAction,
177.105 + "shift END", DefaultEditorKit.selectionEndLineAction,
177.106 + "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
177.107 + "shift BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
177.108 + "ctrl H", DefaultEditorKit.deletePrevCharAction,
177.109 + "DELETE", DefaultEditorKit.deleteNextCharAction,
177.110 + "RIGHT", DefaultEditorKit.forwardAction,
177.111 + "LEFT", DefaultEditorKit.backwardAction,
177.112 + "KP_RIGHT", DefaultEditorKit.forwardAction,
177.113 + "KP_LEFT", DefaultEditorKit.backwardAction,
177.114 + "ENTER", JTextField.notifyAction,
177.115 + "control shift O", "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
177.116 + });
177.117 + Object multilineInputMap = new UIDefaults.LazyInputMap(new Object[]{
177.118 + "control C", DefaultEditorKit.copyAction,
177.119 + "control V", DefaultEditorKit.pasteAction,
177.120 + "control X", DefaultEditorKit.cutAction,
177.121 + "COPY", DefaultEditorKit.copyAction,
177.122 + "PASTE", DefaultEditorKit.pasteAction,
177.123 + "CUT", DefaultEditorKit.cutAction,
177.124 + "control INSERT", DefaultEditorKit.copyAction,
177.125 + "shift INSERT", DefaultEditorKit.pasteAction,
177.126 + "shift DELETE", DefaultEditorKit.cutAction,
177.127 + "shift LEFT", DefaultEditorKit.selectionBackwardAction,
177.128 + "shift RIGHT", DefaultEditorKit.selectionForwardAction,
177.129 + "control LEFT", DefaultEditorKit.previousWordAction,
177.130 + "control RIGHT", DefaultEditorKit.nextWordAction,
177.131 + "control shift LEFT", DefaultEditorKit.selectionPreviousWordAction,
177.132 + "control shift RIGHT", DefaultEditorKit.selectionNextWordAction,
177.133 + "control A", DefaultEditorKit.selectAllAction,
177.134 + "control BACK_SLASH", "unselect"/*DefaultEditorKit.unselectAction*/,
177.135 + "HOME", DefaultEditorKit.beginLineAction,
177.136 + "END", DefaultEditorKit.endLineAction,
177.137 + "shift HOME", DefaultEditorKit.selectionBeginLineAction,
177.138 + "shift END", DefaultEditorKit.selectionEndLineAction,
177.139 + "control HOME", DefaultEditorKit.beginAction,
177.140 + "control END", DefaultEditorKit.endAction,
177.141 + "control shift HOME", DefaultEditorKit.selectionBeginAction,
177.142 + "control shift END", DefaultEditorKit.selectionEndAction,
177.143 + "UP", DefaultEditorKit.upAction,
177.144 + "DOWN", DefaultEditorKit.downAction,
177.145 + "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
177.146 + "shift BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
177.147 + "ctrl H", DefaultEditorKit.deletePrevCharAction,
177.148 + "DELETE", DefaultEditorKit.deleteNextCharAction,
177.149 + "ctrl DELETE", DefaultEditorKit.deleteNextWordAction,
177.150 + "ctrl BACK_SPACE", DefaultEditorKit.deletePrevWordAction,
177.151 + "RIGHT", DefaultEditorKit.forwardAction,
177.152 + "LEFT", DefaultEditorKit.backwardAction,
177.153 + "KP_RIGHT", DefaultEditorKit.forwardAction,
177.154 + "KP_LEFT", DefaultEditorKit.backwardAction,
177.155 + "PAGE_UP", DefaultEditorKit.pageUpAction,
177.156 + "PAGE_DOWN", DefaultEditorKit.pageDownAction,
177.157 + "shift PAGE_UP", "selection-page-up",
177.158 + "shift PAGE_DOWN", "selection-page-down",
177.159 + "ctrl shift PAGE_UP", "selection-page-left",
177.160 + "ctrl shift PAGE_DOWN", "selection-page-right",
177.161 + "shift UP", DefaultEditorKit.selectionUpAction,
177.162 + "shift DOWN", DefaultEditorKit.selectionDownAction,
177.163 + "ENTER", DefaultEditorKit.insertBreakAction,
177.164 + "TAB", DefaultEditorKit.insertTabAction,
177.165 + "control T", "next-link-action",
177.166 + "control shift T", "previous-link-action",
177.167 + "control SPACE", "activate-link-action",
177.168 + "control shift O", "toggle-componentOrientation"/*DefaultEditorKit.toggleComponentOrientation*/
177.169 + });
177.170 + Object[] defaults = {
177.171 + "TextField.focusInputMap", fieldInputMap,
177.172 + "PasswordField.focusInputMap", passwordInputMap,
177.173 + "TextArea.focusInputMap", multilineInputMap,
177.174 + "TextPane.focusInputMap", multilineInputMap,
177.175 + "EditorPane.focusInputMap", multilineInputMap,
177.176 + "Button.focusInputMap",
177.177 + new UIDefaults.LazyInputMap(new Object[]{
177.178 + "SPACE", "pressed",
177.179 + "released SPACE", "released"
177.180 + }),
177.181 + "CheckBox.focusInputMap",
177.182 + new UIDefaults.LazyInputMap(new Object[]{
177.183 + "SPACE", "pressed",
177.184 + "released SPACE", "released"
177.185 + }),
177.186 + "ComboBox.ancestorInputMap", new UIDefaults.LazyInputMap(new Object[]{
177.187 + "ESCAPE", "hidePopup",
177.188 + "PAGE_UP", "pageUpPassThrough",
177.189 + "PAGE_DOWN", "pageDownPassThrough",
177.190 + "HOME", "homePassThrough",
177.191 + "END", "endPassThrough",
177.192 + "DOWN", "selectNext2",
177.193 + "KP_DOWN", "selectNext2",
177.194 + "UP", "selectPrevious2",
177.195 + "KP_UP", "selectPrevious2",
177.196 + "ENTER", "enterPressed",
177.197 + "F4", "togglePopup",
177.198 + "alt DOWN", "togglePopup",
177.199 + "alt KP_DOWN", "togglePopup",
177.200 + "alt UP", "togglePopup",
177.201 + "alt KP_UP", "togglePopup"
177.202 + }),
177.203 + "Desktop.ancestorInputMap",
177.204 + new UIDefaults.LazyInputMap(new Object[]{
177.205 + "ctrl F5", "restore",
177.206 + "ctrl F4", "close",
177.207 + "ctrl F7", "move",
177.208 + "ctrl F8", "resize",
177.209 + "RIGHT", "right",
177.210 + "KP_RIGHT", "right",
177.211 + "LEFT", "left",
177.212 + "KP_LEFT", "left",
177.213 + "UP", "up",
177.214 + "KP_UP", "up",
177.215 + "DOWN", "down",
177.216 + "KP_DOWN", "down",
177.217 + "ESCAPE", "escape",
177.218 + "ctrl F9", "minimize",
177.219 + "ctrl F10", "maximize",
177.220 + "ctrl F6", "selectNextFrame",
177.221 + "ctrl TAB", "selectNextFrame",
177.222 + "ctrl alt F6", "selectNextFrame",
177.223 + "shift ctrl alt F6", "selectPreviousFrame",
177.224 + "ctrl F12", "navigateNext",
177.225 + "shift ctrl F12", "navigatePrevious"
177.226 + }),
177.227 + "FileChooser.ancestorInputMap",
177.228 + new UIDefaults.LazyInputMap(new Object[]{
177.229 + "ESCAPE", "cancelSelection",
177.230 + "F2", "editFileName",
177.231 + "F5", "refresh",
177.232 + "BACK_SPACE", "Go Up",
177.233 + "ENTER", "approveSelection",
177.234 + "ctrl ENTER", "approveSelection"
177.235 + }),
177.236 + "InternalFrame.windowBindings", new Object[]{
177.237 + "shift ESCAPE", "showSystemMenu",
177.238 + "ctrl SPACE", "showSystemMenu",
177.239 + "ESCAPE", "hideSystemMenu"
177.240 + },
177.241 + "List.focusInputMap",
177.242 + new UIDefaults.LazyInputMap(new Object[]{
177.243 + "ctrl C", "copy",
177.244 + "ctrl V", "paste",
177.245 + "ctrl X", "cut",
177.246 + "COPY", "copy",
177.247 + "PASTE", "paste",
177.248 + "CUT", "cut",
177.249 + "control INSERT", "copy",
177.250 + "shift INSERT", "paste",
177.251 + "shift DELETE", "cut",
177.252 + "UP", "selectPreviousRow",
177.253 + "KP_UP", "selectPreviousRow",
177.254 + "shift UP", "selectPreviousRowExtendSelection",
177.255 + "shift KP_UP", "selectPreviousRowExtendSelection",
177.256 + "ctrl shift UP", "selectPreviousRowExtendSelection",
177.257 + "ctrl shift KP_UP", "selectPreviousRowExtendSelection",
177.258 + "ctrl UP", "selectPreviousRowChangeLead",
177.259 + "ctrl KP_UP", "selectPreviousRowChangeLead",
177.260 + "DOWN", "selectNextRow",
177.261 + "KP_DOWN", "selectNextRow",
177.262 + "shift DOWN", "selectNextRowExtendSelection",
177.263 + "shift KP_DOWN", "selectNextRowExtendSelection",
177.264 + "ctrl shift DOWN", "selectNextRowExtendSelection",
177.265 + "ctrl shift KP_DOWN", "selectNextRowExtendSelection",
177.266 + "ctrl DOWN", "selectNextRowChangeLead",
177.267 + "ctrl KP_DOWN", "selectNextRowChangeLead",
177.268 + "LEFT", "selectPreviousColumn",
177.269 + "KP_LEFT", "selectPreviousColumn",
177.270 + "shift LEFT", "selectPreviousColumnExtendSelection",
177.271 + "shift KP_LEFT", "selectPreviousColumnExtendSelection",
177.272 + "ctrl shift LEFT", "selectPreviousColumnExtendSelection",
177.273 + "ctrl shift KP_LEFT", "selectPreviousColumnExtendSelection",
177.274 + "ctrl LEFT", "selectPreviousColumnChangeLead",
177.275 + "ctrl KP_LEFT", "selectPreviousColumnChangeLead",
177.276 + "RIGHT", "selectNextColumn",
177.277 + "KP_RIGHT", "selectNextColumn",
177.278 + "shift RIGHT", "selectNextColumnExtendSelection",
177.279 + "shift KP_RIGHT", "selectNextColumnExtendSelection",
177.280 + "ctrl shift RIGHT", "selectNextColumnExtendSelection",
177.281 + "ctrl shift KP_RIGHT", "selectNextColumnExtendSelection",
177.282 + "ctrl RIGHT", "selectNextColumnChangeLead",
177.283 + "ctrl KP_RIGHT", "selectNextColumnChangeLead",
177.284 + "HOME", "selectFirstRow",
177.285 + "shift HOME", "selectFirstRowExtendSelection",
177.286 + "ctrl shift HOME", "selectFirstRowExtendSelection",
177.287 + "ctrl HOME", "selectFirstRowChangeLead",
177.288 + "END", "selectLastRow",
177.289 + "shift END", "selectLastRowExtendSelection",
177.290 + "ctrl shift END", "selectLastRowExtendSelection",
177.291 + "ctrl END", "selectLastRowChangeLead",
177.292 + "PAGE_UP", "scrollUp",
177.293 + "shift PAGE_UP", "scrollUpExtendSelection",
177.294 + "ctrl shift PAGE_UP", "scrollUpExtendSelection",
177.295 + "ctrl PAGE_UP", "scrollUpChangeLead",
177.296 + "PAGE_DOWN", "scrollDown",
177.297 + "shift PAGE_DOWN", "scrollDownExtendSelection",
177.298 + "ctrl shift PAGE_DOWN", "scrollDownExtendSelection",
177.299 + "ctrl PAGE_DOWN", "scrollDownChangeLead",
177.300 + "ctrl A", "selectAll",
177.301 + "ctrl SLASH", "selectAll",
177.302 + "ctrl BACK_SLASH", "clearSelection",
177.303 + "SPACE", "addToSelection",
177.304 + "ctrl SPACE", "toggleAndAnchor",
177.305 + "shift SPACE", "extendTo",
177.306 + "ctrl shift SPACE", "moveSelectionTo"
177.307 + }),
177.308 + "MenuBar.windowBindings", new Object[]{
177.309 + "F10", "takeFocus"
177.310 + },
177.311 + "RadioButton.focusInputMap",
177.312 + new UIDefaults.LazyInputMap(new Object[]{
177.313 + "SPACE", "pressed",
177.314 + "released SPACE", "released"
177.315 + }),
177.316 + "OptionPane.windowBindings", new Object[]{
177.317 + "ESCAPE", "close"
177.318 + },
177.319 + "FormattedTextField.focusInputMap",
177.320 + new UIDefaults.LazyInputMap(new Object[]{
177.321 + "ctrl C", DefaultEditorKit.copyAction,
177.322 + "ctrl V", DefaultEditorKit.pasteAction,
177.323 + "ctrl X", DefaultEditorKit.cutAction,
177.324 + "COPY", DefaultEditorKit.copyAction,
177.325 + "PASTE", DefaultEditorKit.pasteAction,
177.326 + "CUT", DefaultEditorKit.cutAction,
177.327 + "control INSERT", DefaultEditorKit.copyAction,
177.328 + "shift INSERT", DefaultEditorKit.pasteAction,
177.329 + "shift DELETE", DefaultEditorKit.cutAction,
177.330 + "shift LEFT", DefaultEditorKit.selectionBackwardAction,
177.331 + "shift KP_LEFT", DefaultEditorKit.selectionBackwardAction,
177.332 + "shift RIGHT", DefaultEditorKit.selectionForwardAction,
177.333 + "shift KP_RIGHT", DefaultEditorKit.selectionForwardAction,
177.334 + "ctrl LEFT", DefaultEditorKit.previousWordAction,
177.335 + "ctrl KP_LEFT", DefaultEditorKit.previousWordAction,
177.336 + "ctrl RIGHT", DefaultEditorKit.nextWordAction,
177.337 + "ctrl KP_RIGHT", DefaultEditorKit.nextWordAction,
177.338 + "ctrl shift LEFT", DefaultEditorKit.selectionPreviousWordAction,
177.339 + "ctrl shift KP_LEFT", DefaultEditorKit.selectionPreviousWordAction,
177.340 + "ctrl shift RIGHT", DefaultEditorKit.selectionNextWordAction,
177.341 + "ctrl shift KP_RIGHT", DefaultEditorKit.selectionNextWordAction,
177.342 + "ctrl A", DefaultEditorKit.selectAllAction,
177.343 + "HOME", DefaultEditorKit.beginLineAction,
177.344 + "END", DefaultEditorKit.endLineAction,
177.345 + "shift HOME", DefaultEditorKit.selectionBeginLineAction,
177.346 + "shift END", DefaultEditorKit.selectionEndLineAction,
177.347 + "BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
177.348 + "shift BACK_SPACE", DefaultEditorKit.deletePrevCharAction,
177.349 + "ctrl H", DefaultEditorKit.deletePrevCharAction,
177.350 + "DELETE", DefaultEditorKit.deleteNextCharAction,
177.351 + "ctrl DELETE", DefaultEditorKit.deleteNextWordAction,
177.352 + "ctrl BACK_SPACE", DefaultEditorKit.deletePrevWordAction,
177.353 + "RIGHT", DefaultEditorKit.forwardAction,
177.354 + "LEFT", DefaultEditorKit.backwardAction,
177.355 + "KP_RIGHT", DefaultEditorKit.forwardAction,
177.356 + "KP_LEFT", DefaultEditorKit.backwardAction,
177.357 + "ENTER", JTextField.notifyAction,
177.358 + "ctrl BACK_SLASH", "unselect",
177.359 + "control shift O", "toggle-componentOrientation",
177.360 + "ESCAPE", "reset-field-edit",
177.361 + "UP", "increment",
177.362 + "KP_UP", "increment",
177.363 + "DOWN", "decrement",
177.364 + "KP_DOWN", "decrement",
177.365 + }),
177.366 + // These bindings are only enabled when there is a default
177.367 + // button set on the rootpane.
177.368 + "RootPane.defaultButtonWindowKeyBindings", new Object[]{
177.369 + "ENTER", "press",
177.370 + "released ENTER", "release",
177.371 + "ctrl ENTER", "press",
177.372 + "ctrl released ENTER", "release"
177.373 + },
177.374 + "ScrollBar.ancestorInputMap",
177.375 + new UIDefaults.LazyInputMap(new Object[]{
177.376 + "RIGHT", "positiveUnitIncrement",
177.377 + "KP_RIGHT", "positiveUnitIncrement",
177.378 + "DOWN", "positiveUnitIncrement",
177.379 + "KP_DOWN", "positiveUnitIncrement",
177.380 + "PAGE_DOWN", "positiveBlockIncrement",
177.381 + "ctrl PAGE_DOWN", "positiveBlockIncrement",
177.382 + "LEFT", "negativeUnitIncrement",
177.383 + "KP_LEFT", "negativeUnitIncrement",
177.384 + "UP", "negativeUnitIncrement",
177.385 + "KP_UP", "negativeUnitIncrement",
177.386 + "PAGE_UP", "negativeBlockIncrement",
177.387 + "ctrl PAGE_UP", "negativeBlockIncrement",
177.388 + "HOME", "minScroll",
177.389 + "END", "maxScroll"
177.390 + }),
177.391 + "ScrollPane.ancestorInputMap",
177.392 + new UIDefaults.LazyInputMap(new Object[]{
177.393 + "RIGHT", "unitScrollRight",
177.394 + "KP_RIGHT", "unitScrollRight",
177.395 + "DOWN", "unitScrollDown",
177.396 + "KP_DOWN", "unitScrollDown",
177.397 + "LEFT", "unitScrollLeft",
177.398 + "KP_LEFT", "unitScrollLeft",
177.399 + "UP", "unitScrollUp",
177.400 + "KP_UP", "unitScrollUp",
177.401 + "PAGE_UP", "scrollUp",
177.402 + "PAGE_DOWN", "scrollDown",
177.403 + "ctrl PAGE_UP", "scrollLeft",
177.404 + "ctrl PAGE_DOWN", "scrollRight",
177.405 + "ctrl HOME", "scrollHome",
177.406 + "ctrl END", "scrollEnd"
177.407 + }),
177.408 + "Slider.focusInputMap",
177.409 + new UIDefaults.LazyInputMap(new Object[]{
177.410 + "RIGHT", "positiveUnitIncrement",
177.411 + "KP_RIGHT", "positiveUnitIncrement",
177.412 + "DOWN", "negativeUnitIncrement",
177.413 + "KP_DOWN", "negativeUnitIncrement",
177.414 + "PAGE_DOWN", "negativeBlockIncrement",
177.415 + "LEFT", "negativeUnitIncrement",
177.416 + "KP_LEFT", "negativeUnitIncrement",
177.417 + "UP", "positiveUnitIncrement",
177.418 + "KP_UP", "positiveUnitIncrement",
177.419 + "PAGE_UP", "positiveBlockIncrement",
177.420 + "HOME", "minScroll",
177.421 + "END", "maxScroll"
177.422 + }),
177.423 + "Spinner.ancestorInputMap",
177.424 + new UIDefaults.LazyInputMap(new Object[]{
177.425 + "UP", "increment",
177.426 + "KP_UP", "increment",
177.427 + "DOWN", "decrement",
177.428 + "KP_DOWN", "decrement",
177.429 + }),
177.430 + "SplitPane.ancestorInputMap",
177.431 + new UIDefaults.LazyInputMap(new Object[]{
177.432 + "UP", "negativeIncrement",
177.433 + "DOWN", "positiveIncrement",
177.434 + "LEFT", "negativeIncrement",
177.435 + "RIGHT", "positiveIncrement",
177.436 + "KP_UP", "negativeIncrement",
177.437 + "KP_DOWN", "positiveIncrement",
177.438 + "KP_LEFT", "negativeIncrement",
177.439 + "KP_RIGHT", "positiveIncrement",
177.440 + "HOME", "selectMin",
177.441 + "END", "selectMax",
177.442 + "F8", "startResize",
177.443 + "F6", "toggleFocus",
177.444 + "ctrl TAB", "focusOutForward",
177.445 + "ctrl shift TAB", "focusOutBackward"
177.446 + }),
177.447 + "TabbedPane.focusInputMap",
177.448 + new UIDefaults.LazyInputMap(new Object[]{
177.449 + "RIGHT", "navigateRight",
177.450 + "KP_RIGHT", "navigateRight",
177.451 + "LEFT", "navigateLeft",
177.452 + "KP_LEFT", "navigateLeft",
177.453 + "UP", "navigateUp",
177.454 + "KP_UP", "navigateUp",
177.455 + "DOWN", "navigateDown",
177.456 + "KP_DOWN", "navigateDown",
177.457 + "ctrl DOWN", "requestFocusForVisibleComponent",
177.458 + "ctrl KP_DOWN", "requestFocusForVisibleComponent",
177.459 + }),
177.460 + "TabbedPane.ancestorInputMap",
177.461 + new UIDefaults.LazyInputMap(new Object[]{
177.462 + "ctrl TAB", "navigateNext",
177.463 + "ctrl shift TAB", "navigatePrevious",
177.464 + "ctrl PAGE_DOWN", "navigatePageDown",
177.465 + "ctrl PAGE_UP", "navigatePageUp",
177.466 + "ctrl UP", "requestFocus",
177.467 + "ctrl KP_UP", "requestFocus",
177.468 + }),
177.469 + "TableHeader.ancestorInputMap",
177.470 + new UIDefaults.LazyInputMap(new Object[] {
177.471 + "SPACE", "toggleSortOrder",
177.472 + "LEFT", "selectColumnToLeft",
177.473 + "KP_LEFT", "selectColumnToLeft",
177.474 + "RIGHT", "selectColumnToRight",
177.475 + "KP_RIGHT", "selectColumnToRight",
177.476 + "alt LEFT", "moveColumnLeft",
177.477 + "alt KP_LEFT", "moveColumnLeft",
177.478 + "alt RIGHT", "moveColumnRight",
177.479 + "alt KP_RIGHT", "moveColumnRight",
177.480 + "alt shift LEFT", "resizeLeft",
177.481 + "alt shift KP_LEFT", "resizeLeft",
177.482 + "alt shift RIGHT", "resizeRight",
177.483 + "alt shift KP_RIGHT", "resizeRight",
177.484 + "ESCAPE", "focusTable",
177.485 + }),
177.486 + "Table.ancestorInputMap",
177.487 + new UIDefaults.LazyInputMap(new Object[]{
177.488 + "ctrl C", "copy",
177.489 + "ctrl V", "paste",
177.490 + "ctrl X", "cut",
177.491 + "COPY", "copy",
177.492 + "PASTE", "paste",
177.493 + "CUT", "cut",
177.494 + "control INSERT", "copy",
177.495 + "shift INSERT", "paste",
177.496 + "shift DELETE", "cut",
177.497 + "RIGHT", "selectNextColumn",
177.498 + "KP_RIGHT", "selectNextColumn",
177.499 + "shift RIGHT", "selectNextColumnExtendSelection",
177.500 + "shift KP_RIGHT", "selectNextColumnExtendSelection",
177.501 + "ctrl shift RIGHT", "selectNextColumnExtendSelection",
177.502 + "ctrl shift KP_RIGHT", "selectNextColumnExtendSelection",
177.503 + "ctrl RIGHT", "selectNextColumnChangeLead",
177.504 + "ctrl KP_RIGHT", "selectNextColumnChangeLead",
177.505 + "LEFT", "selectPreviousColumn",
177.506 + "KP_LEFT", "selectPreviousColumn",
177.507 + "shift LEFT", "selectPreviousColumnExtendSelection",
177.508 + "shift KP_LEFT", "selectPreviousColumnExtendSelection",
177.509 + "ctrl shift LEFT", "selectPreviousColumnExtendSelection",
177.510 + "ctrl shift KP_LEFT", "selectPreviousColumnExtendSelection",
177.511 + "ctrl LEFT", "selectPreviousColumnChangeLead",
177.512 + "ctrl KP_LEFT", "selectPreviousColumnChangeLead",
177.513 + "DOWN", "selectNextRow",
177.514 + "KP_DOWN", "selectNextRow",
177.515 + "shift DOWN", "selectNextRowExtendSelection",
177.516 + "shift KP_DOWN", "selectNextRowExtendSelection",
177.517 + "ctrl shift DOWN", "selectNextRowExtendSelection",
177.518 + "ctrl shift KP_DOWN", "selectNextRowExtendSelection",
177.519 + "ctrl DOWN", "selectNextRowChangeLead",
177.520 + "ctrl KP_DOWN", "selectNextRowChangeLead",
177.521 + "UP", "selectPreviousRow",
177.522 + "KP_UP", "selectPreviousRow",
177.523 + "shift UP", "selectPreviousRowExtendSelection",
177.524 + "shift KP_UP", "selectPreviousRowExtendSelection",
177.525 + "ctrl shift UP", "selectPreviousRowExtendSelection",
177.526 + "ctrl shift KP_UP", "selectPreviousRowExtendSelection",
177.527 + "ctrl UP", "selectPreviousRowChangeLead",
177.528 + "ctrl KP_UP", "selectPreviousRowChangeLead",
177.529 + "HOME", "selectFirstColumn",
177.530 + "shift HOME", "selectFirstColumnExtendSelection",
177.531 + "ctrl shift HOME", "selectFirstRowExtendSelection",
177.532 + "ctrl HOME", "selectFirstRow",
177.533 + "END", "selectLastColumn",
177.534 + "shift END", "selectLastColumnExtendSelection",
177.535 + "ctrl shift END", "selectLastRowExtendSelection",
177.536 + "ctrl END", "selectLastRow",
177.537 + "PAGE_UP", "scrollUpChangeSelection",
177.538 + "shift PAGE_UP", "scrollUpExtendSelection",
177.539 + "ctrl shift PAGE_UP", "scrollLeftExtendSelection",
177.540 + "ctrl PAGE_UP", "scrollLeftChangeSelection",
177.541 + "PAGE_DOWN", "scrollDownChangeSelection",
177.542 + "shift PAGE_DOWN", "scrollDownExtendSelection",
177.543 + "ctrl shift PAGE_DOWN", "scrollRightExtendSelection",
177.544 + "ctrl PAGE_DOWN", "scrollRightChangeSelection",
177.545 + "TAB", "selectNextColumnCell",
177.546 + "shift TAB", "selectPreviousColumnCell",
177.547 + "ENTER", "selectNextRowCell",
177.548 + "shift ENTER", "selectPreviousRowCell",
177.549 + "ctrl A", "selectAll",
177.550 + "ctrl SLASH", "selectAll",
177.551 + "ctrl BACK_SLASH", "clearSelection",
177.552 + "ESCAPE", "cancel",
177.553 + "F2", "startEditing",
177.554 + "SPACE", "addToSelection",
177.555 + "ctrl SPACE", "toggleAndAnchor",
177.556 + "shift SPACE", "extendTo",
177.557 + "ctrl shift SPACE", "moveSelectionTo",
177.558 + "F8", "focusHeader"
177.559 + }),
177.560 + "ToggleButton.focusInputMap",
177.561 + new UIDefaults.LazyInputMap(new Object[]{
177.562 + "SPACE", "pressed",
177.563 + "released SPACE", "released"
177.564 + }),
177.565 + "ToolBar.ancestorInputMap",
177.566 + new UIDefaults.LazyInputMap(new Object[]{
177.567 + "UP", "navigateUp",
177.568 + "KP_UP", "navigateUp",
177.569 + "DOWN", "navigateDown",
177.570 + "KP_DOWN", "navigateDown",
177.571 + "LEFT", "navigateLeft",
177.572 + "KP_LEFT", "navigateLeft",
177.573 + "RIGHT", "navigateRight",
177.574 + "KP_RIGHT", "navigateRight"
177.575 + }),
177.576 + "Tree.focusInputMap",
177.577 + new UIDefaults.LazyInputMap(new Object[]{
177.578 + "ADD", "expand",
177.579 + "SUBTRACT", "collapse",
177.580 + "ctrl C", "copy",
177.581 + "ctrl V", "paste",
177.582 + "ctrl X", "cut",
177.583 + "COPY", "copy",
177.584 + "PASTE", "paste",
177.585 + "CUT", "cut",
177.586 + "control INSERT", "copy",
177.587 + "shift INSERT", "paste",
177.588 + "shift DELETE", "cut",
177.589 + "UP", "selectPrevious",
177.590 + "KP_UP", "selectPrevious",
177.591 + "shift UP", "selectPreviousExtendSelection",
177.592 + "shift KP_UP", "selectPreviousExtendSelection",
177.593 + "ctrl shift UP", "selectPreviousExtendSelection",
177.594 + "ctrl shift KP_UP", "selectPreviousExtendSelection",
177.595 + "ctrl UP", "selectPreviousChangeLead",
177.596 + "ctrl KP_UP", "selectPreviousChangeLead",
177.597 + "DOWN", "selectNext",
177.598 + "KP_DOWN", "selectNext",
177.599 + "shift DOWN", "selectNextExtendSelection",
177.600 + "shift KP_DOWN", "selectNextExtendSelection",
177.601 + "ctrl shift DOWN", "selectNextExtendSelection",
177.602 + "ctrl shift KP_DOWN", "selectNextExtendSelection",
177.603 + "ctrl DOWN", "selectNextChangeLead",
177.604 + "ctrl KP_DOWN", "selectNextChangeLead",
177.605 + "RIGHT", "selectChild",
177.606 + "KP_RIGHT", "selectChild",
177.607 + "LEFT", "selectParent",
177.608 + "KP_LEFT", "selectParent",
177.609 + "PAGE_UP", "scrollUpChangeSelection",
177.610 + "shift PAGE_UP", "scrollUpExtendSelection",
177.611 + "ctrl shift PAGE_UP", "scrollUpExtendSelection",
177.612 + "ctrl PAGE_UP", "scrollUpChangeLead",
177.613 + "PAGE_DOWN", "scrollDownChangeSelection",
177.614 + "shift PAGE_DOWN", "scrollDownExtendSelection",
177.615 + "ctrl shift PAGE_DOWN", "scrollDownExtendSelection",
177.616 + "ctrl PAGE_DOWN", "scrollDownChangeLead",
177.617 + "HOME", "selectFirst",
177.618 + "shift HOME", "selectFirstExtendSelection",
177.619 + "ctrl shift HOME", "selectFirstExtendSelection",
177.620 + "ctrl HOME", "selectFirstChangeLead",
177.621 + "END", "selectLast",
177.622 + "shift END", "selectLastExtendSelection",
177.623 + "ctrl shift END", "selectLastExtendSelection",
177.624 + "ctrl END", "selectLastChangeLead",
177.625 + "F2", "startEditing",
177.626 + "ctrl A", "selectAll",
177.627 + "ctrl SLASH", "selectAll",
177.628 + "ctrl BACK_SLASH", "clearSelection",
177.629 + "ctrl LEFT", "scrollLeft",
177.630 + "ctrl KP_LEFT", "scrollLeft",
177.631 + "ctrl RIGHT", "scrollRight",
177.632 + "ctrl KP_RIGHT", "scrollRight",
177.633 + "SPACE", "addToSelection",
177.634 + "ctrl SPACE", "toggleAndAnchor",
177.635 + "shift SPACE", "extendTo",
177.636 + "ctrl shift SPACE", "moveSelectionTo"
177.637 + }),
177.638 + "Tree.ancestorInputMap",
177.639 + new UIDefaults.LazyInputMap(new Object[]{
177.640 + "ESCAPE", "cancel"
177.641 + }),
177.642 + };
177.643 + table.putDefaults(defaults);
177.644 + }
177.645 +
177.646 +}
178.1 --- a/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUI.java Tue Apr 28 14:43:44 2009 -0700
178.2 +++ b/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUI.java Wed Apr 29 00:27:46 2009 -0700
178.3 @@ -183,14 +183,7 @@
178.4 }
178.5 }
178.6
178.7 - ActionMap createActionMap() {
178.8 - ActionMap map = new ActionMapUIResource();
178.9 - map.put("approveSelection", getApproveSelectionAction());
178.10 - map.put("cancelSelection", getCancelSelectionAction());
178.11 - map.put("Go Up", getChangeToParentDirectoryAction());
178.12 - map.put("fileNameCompletion", getFileNameCompletionAction());
178.13 - return map;
178.14 - }
178.15 + protected abstract ActionMap createActionMap();
178.16
178.17
178.18 protected void installDefaults(JFileChooser fc) {
179.1 --- a/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java Tue Apr 28 14:43:44 2009 -0700
179.2 +++ b/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java Wed Apr 29 00:27:46 2009 -0700
179.3 @@ -38,8 +38,7 @@
179.4 import javax.swing.filechooser.FileFilter;
179.5 import javax.swing.plaf.basic.*;
179.6 import javax.swing.plaf.synth.*;
179.7 -
179.8 -import sun.swing.SwingUtilities2;
179.9 +import javax.swing.plaf.ActionMapUIResource;
179.10
179.11 import sun.awt.shell.ShellFolder;
179.12 import sun.swing.*;
179.13 @@ -286,9 +285,9 @@
179.14 b.setAlignmentX(JComponent.LEFT_ALIGNMENT);
179.15 b.setAlignmentY(JComponent.CENTER_ALIGNMENT);
179.16 b.setMargin(shrinkwrap);
179.17 + topButtonPanel.add(b);
179.18 + topButtonPanel.add(Box.createRigidArea(hstrut5));
179.19 }
179.20 - topButtonPanel.add(b);
179.21 - topButtonPanel.add(Box.createRigidArea(hstrut5));
179.22
179.23 // View button group
179.24 ButtonGroup viewButtonGroup = new ButtonGroup();
179.25 @@ -521,6 +520,9 @@
179.26 }
179.27 }
179.28
179.29 + @Override public void rescanCurrentDirectory(JFileChooser fc) {
179.30 + filePane.rescanCurrentDirectory();
179.31 + }
179.32
179.33 protected void doSelectedFileChanged(PropertyChangeEvent e) {
179.34 super.doSelectedFileChanged(e);
179.35 @@ -635,6 +637,14 @@
179.36 // ************ FileChooser UI PLAF methods **************
179.37 // *******************************************************
179.38
179.39 + protected ActionMap createActionMap() {
179.40 + ActionMap map = new ActionMapUIResource();
179.41 + // add standard actions
179.42 + FilePane.addActionsToMap(map, filePane.getActions());
179.43 + // add synth only actions
179.44 + map.put("fileNameCompletion", getFileNameCompletionAction());
179.45 + return map;
179.46 + }
179.47
179.48 // *****************************
179.49 // ***** Directory Actions *****
179.50 @@ -649,32 +659,44 @@
179.51 }
179.52
179.53 protected DirectoryComboBoxRenderer createDirectoryComboBoxRenderer(JFileChooser fc) {
179.54 - return new DirectoryComboBoxRenderer();
179.55 + return new DirectoryComboBoxRenderer(directoryComboBox.getRenderer());
179.56 }
179.57
179.58 //
179.59 // Renderer for DirectoryComboBox
179.60 //
179.61 - class DirectoryComboBoxRenderer extends DefaultListCellRenderer {
179.62 + // Synth has some odd behavior with regards to renderers. Renderers are styled
179.63 + // in a specific manner by the SynthComboBoxUI. If we extend DefaultListCellRenderer
179.64 + // here, then we get none of those benefits or behaviors, leading to poor
179.65 + // looking combo boxes.
179.66 + // So what we do here is delegate most jobs to the "real" or original renderer,
179.67 + // and simply monkey with the icon and text of the renderer.
179.68 + private class DirectoryComboBoxRenderer implements ListCellRenderer {
179.69 + private ListCellRenderer delegate;
179.70 IndentIcon ii = new IndentIcon();
179.71 - public Component getListCellRendererComponent(JList list, Object value,
179.72 - int index, boolean isSelected,
179.73 - boolean cellHasFocus) {
179.74
179.75 - super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
179.76 + private DirectoryComboBoxRenderer(ListCellRenderer delegate) {
179.77 + this.delegate = delegate;
179.78 + }
179.79
179.80 + @Override
179.81 + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
179.82 + Component c = delegate.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
179.83 +
179.84 + assert c instanceof JLabel;
179.85 + JLabel label = (JLabel)c;
179.86 if (value == null) {
179.87 - setText("");
179.88 - return this;
179.89 + label.setText("");
179.90 + return label;
179.91 }
179.92 - File directory = (File)value;
179.93 - setText(getFileChooser().getName(directory));
179.94 + File directory = (File) value;
179.95 + label.setText(getFileChooser().getName(directory));
179.96 Icon icon = getFileChooser().getIcon(directory);
179.97 ii.icon = icon;
179.98 ii.depth = directoryComboBoxModel.getDepth(index);
179.99 - setIcon(ii);
179.100 + label.setIcon(ii);
179.101
179.102 - return this;
179.103 + return label;
179.104 }
179.105 }
179.106
179.107 @@ -862,24 +884,33 @@
179.108 // Renderer for Types ComboBox
179.109 //
179.110 protected FilterComboBoxRenderer createFilterComboBoxRenderer() {
179.111 - return new FilterComboBoxRenderer();
179.112 + return new FilterComboBoxRenderer(filterComboBox.getRenderer());
179.113 }
179.114
179.115 /**
179.116 * Render different type sizes and styles.
179.117 */
179.118 - public class FilterComboBoxRenderer extends DefaultListCellRenderer {
179.119 - public Component getListCellRendererComponent(JList list,
179.120 - Object value, int index, boolean isSelected,
179.121 - boolean cellHasFocus) {
179.122 + public class FilterComboBoxRenderer implements ListCellRenderer {
179.123 + private ListCellRenderer delegate;
179.124 + private FilterComboBoxRenderer(ListCellRenderer delegate) {
179.125 + this.delegate = delegate;
179.126 + }
179.127
179.128 - super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
179.129 + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
179.130 + Component c = delegate.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
179.131
179.132 + String text = null;
179.133 if (value != null && value instanceof FileFilter) {
179.134 - setText(((FileFilter)value).getDescription());
179.135 + text = ((FileFilter) value).getDescription();
179.136 }
179.137
179.138 - return this;
179.139 + //this should always be true, since SynthComboBoxUI's SynthComboBoxRenderer
179.140 + //extends JLabel
179.141 + assert c instanceof JLabel;
179.142 + if (text != null) {
179.143 + ((JLabel)c).setText(text);
179.144 + }
179.145 + return c;
179.146 }
179.147 }
179.148
180.1 --- a/src/share/classes/sun/swing/table/DefaultTableCellHeaderRenderer.java Tue Apr 28 14:43:44 2009 -0700
180.2 +++ b/src/share/classes/sun/swing/table/DefaultTableCellHeaderRenderer.java Wed Apr 29 00:27:46 2009 -0700
180.3 @@ -26,16 +26,23 @@
180.4
180.5 import java.awt.Component;
180.6 import java.awt.Color;
180.7 +import java.awt.FontMetrics;
180.8 +import java.awt.Graphics;
180.9 +import java.awt.Insets;
180.10 +import java.awt.Point;
180.11 +import java.awt.Rectangle;
180.12 import javax.swing.*;
180.13 import javax.swing.plaf.UIResource;
180.14 import javax.swing.border.Border;
180.15 import javax.swing.table.*;
180.16 +import sun.swing.DefaultLookup;
180.17
180.18 -/**
180.19 - */
180.20 +
180.21 public class DefaultTableCellHeaderRenderer extends DefaultTableCellRenderer
180.22 implements UIResource {
180.23 private boolean horizontalTextPositionSet;
180.24 + private Icon sortArrow;
180.25 + private EmptyIcon emptyIcon = new EmptyIcon();
180.26
180.27 public DefaultTableCellHeaderRenderer() {
180.28 setHorizontalAlignment(JLabel.CENTER);
180.29 @@ -58,8 +65,8 @@
180.30 Color fgColor = null;
180.31 Color bgColor = null;
180.32 if (hasFocus) {
180.33 - fgColor = UIManager.getColor("TableHeader.focusCellForeground");
180.34 - bgColor = UIManager.getColor("TableHeader.focusCellBackground");
180.35 + fgColor = DefaultLookup.getColor(this, ui, "TableHeader.focusCellForeground");
180.36 + bgColor = DefaultLookup.getColor(this, ui, "TableHeader.focusCellBackground");
180.37 }
180.38 if (fgColor == null) {
180.39 fgColor = header.getForeground();
180.40 @@ -85,16 +92,16 @@
180.41 if (sortOrder != null) {
180.42 switch(sortOrder) {
180.43 case ASCENDING:
180.44 - sortIcon = UIManager.getIcon(
180.45 - "Table.ascendingSortIcon");
180.46 + sortIcon = DefaultLookup.getIcon(
180.47 + this, ui, "Table.ascendingSortIcon");
180.48 break;
180.49 case DESCENDING:
180.50 - sortIcon = UIManager.getIcon(
180.51 - "Table.descendingSortIcon");
180.52 + sortIcon = DefaultLookup.getIcon(
180.53 + this, ui, "Table.descendingSortIcon");
180.54 break;
180.55 case UNSORTED:
180.56 - sortIcon = UIManager.getIcon(
180.57 - "Table.naturalSortIcon");
180.58 + sortIcon = DefaultLookup.getIcon(
180.59 + this, ui, "Table.naturalSortIcon");
180.60 break;
180.61 }
180.62 }
180.63 @@ -103,13 +110,14 @@
180.64
180.65 setText(value == null ? "" : value.toString());
180.66 setIcon(sortIcon);
180.67 + sortArrow = sortIcon;
180.68
180.69 Border border = null;
180.70 if (hasFocus) {
180.71 - border = UIManager.getBorder("TableHeader.focusCellBorder");
180.72 + border = DefaultLookup.getBorder(this, ui, "TableHeader.focusCellBorder");
180.73 }
180.74 if (border == null) {
180.75 - border = UIManager.getBorder("TableHeader.cellBorder");
180.76 + border = DefaultLookup.getBorder(this, ui, "TableHeader.cellBorder");
180.77 }
180.78 setBorder(border);
180.79
180.80 @@ -129,4 +137,60 @@
180.81 }
180.82 return rv;
180.83 }
180.84 +
180.85 + @Override
180.86 + public void paintComponent(Graphics g) {
180.87 + boolean b = DefaultLookup.getBoolean(this, ui,
180.88 + "TableHeader.rightAlignSortArrow", false);
180.89 + if (b && sortArrow != null) {
180.90 + //emptyIcon is used so that if the text in the header is right
180.91 + //aligned, or if the column is too narrow, then the text will
180.92 + //be sized appropriately to make room for the icon that is about
180.93 + //to be painted manually here.
180.94 + emptyIcon.width = sortArrow.getIconWidth();
180.95 + emptyIcon.height = sortArrow.getIconHeight();
180.96 + setIcon(emptyIcon);
180.97 + super.paintComponent(g);
180.98 + Point position = computeIconPosition(g);
180.99 + sortArrow.paintIcon(this, g, position.x, position.y);
180.100 + } else {
180.101 + super.paintComponent(g);
180.102 + }
180.103 + }
180.104 +
180.105 + private Point computeIconPosition(Graphics g) {
180.106 + FontMetrics fontMetrics = g.getFontMetrics();
180.107 + Rectangle viewR = new Rectangle();
180.108 + Rectangle textR = new Rectangle();
180.109 + Rectangle iconR = new Rectangle();
180.110 + Insets i = getInsets();
180.111 + viewR.x = i.left;
180.112 + viewR.y = i.top;
180.113 + viewR.width = getWidth() - (i.left + i.right);
180.114 + viewR.height = getHeight() - (i.top + i.bottom);
180.115 + SwingUtilities.layoutCompoundLabel(
180.116 + this,
180.117 + fontMetrics,
180.118 + getText(),
180.119 + sortArrow,
180.120 + getVerticalAlignment(),
180.121 + getHorizontalAlignment(),
180.122 + getVerticalTextPosition(),
180.123 + getHorizontalTextPosition(),
180.124 + viewR,
180.125 + iconR,
180.126 + textR,
180.127 + getIconTextGap());
180.128 + int x = getWidth() - i.right - sortArrow.getIconWidth();
180.129 + int y = iconR.y;
180.130 + return new Point(x, y);
180.131 + }
180.132 +
180.133 + private class EmptyIcon implements Icon {
180.134 + int width = 0;
180.135 + int height = 0;
180.136 + public void paintIcon(Component c, Graphics g, int x, int y) {}
180.137 + public int getIconWidth() { return width; }
180.138 + public int getIconHeight() { return height; }
180.139 + }
180.140 }
181.1 --- a/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java Tue Apr 28 14:43:44 2009 -0700
181.2 +++ b/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java Wed Apr 29 00:27:46 2009 -0700
181.3 @@ -490,8 +490,7 @@
181.4 // if the window manager or any other part of the windowing
181.5 // system sets inappropriate size for this window, we can
181.6 // do nothing but accept it.
181.7 - Rectangle reqBounds = newDimensions.getBounds();
181.8 - Rectangle newBounds = constrainBounds(reqBounds.x, reqBounds.y, reqBounds.width, reqBounds.height);
181.9 + Rectangle newBounds = newDimensions.getBounds();
181.10 Insets insets = newDimensions.getInsets();
181.11 // Inherit isClientSizeSet from newDimensions
181.12 if (newDimensions.isClientSizeSet()) {
181.13 @@ -619,46 +618,6 @@
181.14 // This method gets overriden in XFramePeer & XDialogPeer.
181.15 abstract boolean isTargetUndecorated();
181.16
181.17 - @Override
181.18 - Rectangle constrainBounds(int x, int y, int width, int height) {
181.19 - // We don't restrict the setBounds() operation if the code is trusted.
181.20 - if (!hasWarningWindow()) {
181.21 - return new Rectangle(x, y, width, height);
181.22 - }
181.23 -
181.24 - // If it's undecorated or is not currently visible,
181.25 - // apply the same constraints as for the Window.
181.26 - if (!isVisible() || isTargetUndecorated()) {
181.27 - return super.constrainBounds(x, y, width, height);
181.28 - }
181.29 -
181.30 - // If it's visible & decorated, constraint the size only
181.31 - int newX = x;
181.32 - int newY = y;
181.33 - int newW = width;
181.34 - int newH = height;
181.35 -
181.36 - GraphicsConfiguration gc = ((Window)target).getGraphicsConfiguration();
181.37 - Rectangle sB = gc.getBounds();
181.38 - Insets sIn = ((Window)target).getToolkit().getScreenInsets(gc);
181.39 -
181.40 - Rectangle curBounds = getBounds();
181.41 -
181.42 - int maxW = Math.max(sB.width - sIn.left - sIn.right, curBounds.width);
181.43 - int maxH = Math.max(sB.height - sIn.top - sIn.bottom, curBounds.height);
181.44 -
181.45 - // First make sure the size is withing the visible part of the screen
181.46 - if (newW > maxW) {
181.47 - newW = maxW;
181.48 - }
181.49 -
181.50 - if (newH > maxH) {
181.51 - newH = maxH;
181.52 - }
181.53 -
181.54 - return new Rectangle(newX, newY, newW, newH);
181.55 - }
181.56 -
181.57 /**
181.58 * @see java.awt.peer.ComponentPeer#setBounds
181.59 */
182.1 --- a/src/solaris/classes/sun/awt/X11/XEmbeddedFramePeer.java Tue Apr 28 14:43:44 2009 -0700
182.2 +++ b/src/solaris/classes/sun/awt/X11/XEmbeddedFramePeer.java Wed Apr 29 00:27:46 2009 -0700
182.3 @@ -196,12 +196,6 @@
182.4 }
182.5 }
182.6
182.7 - @Override
182.8 - Rectangle constrainBounds(int x, int y, int width, int height) {
182.9 - // We don't constrain the bounds of the EmbeddedFrames
182.10 - return new Rectangle(x, y, width, height);
182.11 - }
182.12 -
182.13 // don't use getBounds() inherited from XDecoratedPeer
182.14 public Rectangle getBounds() {
182.15 return new Rectangle(x, y, width, height);
183.1 --- a/src/solaris/classes/sun/awt/X11/XToolkit.java Tue Apr 28 14:43:44 2009 -0700
183.2 +++ b/src/solaris/classes/sun/awt/X11/XToolkit.java Wed Apr 29 00:27:46 2009 -0700
183.3 @@ -568,6 +568,17 @@
183.4 {
183.5 XEvent ev = new XEvent();
183.6 while(true) {
183.7 + // Fix for 6829923: we should gracefully handle toolkit thread interruption
183.8 + if (Thread.currentThread().isInterrupted()) {
183.9 + // We expect interruption from the AppContext.dispose() method only.
183.10 + // If the thread is interrupted from another place, let's skip it
183.11 + // for compatibility reasons. Probably some time later we'll remove
183.12 + // the check for AppContext.isDisposed() and will unconditionally
183.13 + // break the loop here.
183.14 + if (AppContext.getAppContext().isDisposed()) {
183.15 + break;
183.16 + }
183.17 + }
183.18 awtLock();
183.19 try {
183.20 if (loop == SECONDARY_LOOP) {
184.1 --- a/src/solaris/classes/sun/awt/X11/XWindow.java Tue Apr 28 14:43:44 2009 -0700
184.2 +++ b/src/solaris/classes/sun/awt/X11/XWindow.java Wed Apr 29 00:27:46 2009 -0700
184.3 @@ -156,11 +156,11 @@
184.4 }
184.5
184.6 XWindow(Component target, long parentWindow) {
184.7 - this(target, parentWindow, target.getBounds());
184.8 + this(target, parentWindow, new Rectangle(target.getBounds()));
184.9 }
184.10
184.11 XWindow(Component target) {
184.12 - this(target, (target.getParent() == null) ? 0 : getParentWindowID(target), target.getBounds());
184.13 + this(target, (target.getParent() == null) ? 0 : getParentWindowID(target), new Rectangle(target.getBounds()));
184.14 }
184.15
184.16 XWindow(Object target) {
184.17 @@ -198,7 +198,7 @@
184.18 | XConstants.ButtonMotionMask | XConstants.ExposureMask | XConstants.StructureNotifyMask);
184.19
184.20 if (target != null) {
184.21 - params.putIfNull(BOUNDS, target.getBounds());
184.22 + params.putIfNull(BOUNDS, new Rectangle(target.getBounds()));
184.23 } else {
184.24 params.putIfNull(BOUNDS, new Rectangle(0, 0, MIN_SIZE, MIN_SIZE));
184.25 }
185.1 --- a/src/solaris/classes/sun/awt/X11/XWindowPeer.java Tue Apr 28 14:43:44 2009 -0700
185.2 +++ b/src/solaris/classes/sun/awt/X11/XWindowPeer.java Wed Apr 29 00:27:46 2009 -0700
185.3 @@ -146,6 +146,13 @@
185.4
185.5 params.put(OVERRIDE_REDIRECT, Boolean.valueOf(isOverrideRedirect()));
185.6
185.7 + SunToolkit.awtLock();
185.8 + try {
185.9 + windows.add(this);
185.10 + } finally {
185.11 + SunToolkit.awtUnlock();
185.12 + }
185.13 +
185.14 cachedFocusableWindow = isFocusableWindow();
185.15
185.16 Font f = target.getFont();
185.17 @@ -173,9 +180,6 @@
185.18
185.19 GraphicsConfiguration gc = getGraphicsConfiguration();
185.20 ((X11GraphicsDevice)gc.getDevice()).addDisplayChangedListener(this);
185.21 -
185.22 - Rectangle bounds = (Rectangle)(params.get(BOUNDS));
185.23 - params.put(BOUNDS, constrainBounds(bounds.x, bounds.y, bounds.width, bounds.height));
185.24 }
185.25
185.26 protected String getWMName() {
185.27 @@ -430,56 +434,6 @@
185.28 return ownerPeer;
185.29 }
185.30
185.31 - // This method is overriden at the XDecoratedPeer to handle
185.32 - // decorated windows a bit differently.
185.33 - Rectangle constrainBounds(int x, int y, int width, int height) {
185.34 - // We don't restrict the setBounds() operation if the code is trusted.
185.35 - if (!hasWarningWindow()) {
185.36 - return new Rectangle(x, y, width, height);
185.37 - }
185.38 -
185.39 - // The window bounds should be within the visible part of the screen
185.40 - int newX = x;
185.41 - int newY = y;
185.42 - int newW = width;
185.43 - int newH = height;
185.44 -
185.45 - // Now check each point is within the visible part of the screen
185.46 - GraphicsConfiguration gc = ((Window)target).getGraphicsConfiguration();
185.47 - Rectangle sB = gc.getBounds();
185.48 - Insets sIn = ((Window)target).getToolkit().getScreenInsets(gc);
185.49 -
185.50 - int screenX = sB.x + sIn.left;
185.51 - int screenY = sB.y + sIn.top;
185.52 - int screenW = sB.width - sIn.left - sIn.right;
185.53 - int screenH = sB.height - sIn.top - sIn.bottom;
185.54 -
185.55 -
185.56 - // First make sure the size is withing the visible part of the screen
185.57 - if (newW > screenW) {
185.58 - newW = screenW;
185.59 - }
185.60 -
185.61 - if (newH > screenH) {
185.62 - newH = screenH;
185.63 - }
185.64 -
185.65 - // Tweak the location if needed
185.66 - if (newX < screenX) {
185.67 - newX = screenX;
185.68 - } else if (newX + newW > screenX + screenW) {
185.69 - newX = screenX + screenW - newW;
185.70 - }
185.71 -
185.72 - if (newY < screenY) {
185.73 - newY = screenY;
185.74 - } else if (newY + newH > screenY + screenH) {
185.75 - newY = screenY + screenH - newH;
185.76 - }
185.77 -
185.78 - return new Rectangle(newX, newY, newW, newH);
185.79 - }
185.80 -
185.81 //Fix for 6318144: PIT:Setting Min Size bigger than current size enlarges
185.82 //the window but fails to revalidate, Sol-CDE
185.83 //This bug is regression for
185.84 @@ -488,13 +442,11 @@
185.85 //Note that this function is overriden in XDecoratedPeer so event
185.86 //posting is not changing for decorated peers
185.87 public void setBounds(int x, int y, int width, int height, int op) {
185.88 - Rectangle newBounds = constrainBounds(x, y, width, height);
185.89 -
185.90 XToolkit.awtLock();
185.91 try {
185.92 Rectangle oldBounds = getBounds();
185.93
185.94 - super.setBounds(newBounds.x, newBounds.y, newBounds.width, newBounds.height, op);
185.95 + super.setBounds(x, y, width, height, op);
185.96
185.97 Rectangle bounds = getBounds();
185.98
186.1 --- a/src/solaris/classes/sun/awt/X11GraphicsConfig.java Tue Apr 28 14:43:44 2009 -0700
186.2 +++ b/src/solaris/classes/sun/awt/X11GraphicsConfig.java Wed Apr 29 00:27:46 2009 -0700
186.3 @@ -451,9 +451,7 @@
186.4 }
186.5 }
186.6
186.7 - /*
186.8 @Override
186.9 - */
186.10 public boolean isTranslucencyCapable() {
186.11 return isTranslucencyCapable(getAData());
186.12 }
187.1 --- a/src/windows/classes/sun/awt/Win32GraphicsConfig.java Tue Apr 28 14:43:44 2009 -0700
187.2 +++ b/src/windows/classes/sun/awt/Win32GraphicsConfig.java Wed Apr 29 00:27:46 2009 -0700
187.3 @@ -332,9 +332,7 @@
187.4 // the rest of the flip actions are not supported
187.5 }
187.6
187.7 - /*
187.8 @Override
187.9 - */
187.10 public boolean isTranslucencyCapable() {
187.11 //XXX: worth checking if 8-bit? Anyway, it doesn't hurt.
187.12 return true;
188.1 --- a/src/windows/classes/sun/awt/windows/WComponentPeer.java Tue Apr 28 14:43:44 2009 -0700
188.2 +++ b/src/windows/classes/sun/awt/windows/WComponentPeer.java Wed Apr 29 00:27:46 2009 -0700
188.3 @@ -970,11 +970,12 @@
188.4 *
188.5 * Conditions which could prevent hw acceleration include the toplevel
188.6 * window containing this component being
188.7 - * {@link com.sun.awt.AWTUtilities.Translucency#TRANSLUCENT TRANSLUCENT}.
188.8 + * {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
188.9 + * PERPIXEL_TRANSLUCENT}.
188.10 *
188.11 * @return {@code true} if this component is capable of being hw
188.12 * accelerated, {@code false} otherwise
188.13 - * @see com.sun.awt.AWTUtilities.Translucency#TRANSLUCENT
188.14 + * @see GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
188.15 */
188.16 public boolean isAccelCapable() {
188.17 boolean isTranslucent =
189.1 --- a/src/windows/classes/sun/awt/windows/WDialogPeer.java Tue Apr 28 14:43:44 2009 -0700
189.2 +++ b/src/windows/classes/sun/awt/windows/WDialogPeer.java Wed Apr 29 00:27:46 2009 -0700
189.3 @@ -114,12 +114,10 @@
189.4 }
189.5
189.6 public void reshape(int x, int y, int width, int height) {
189.7 - Rectangle newBounds = constrainBounds(x, y, width, height);
189.8 -
189.9 if (((Dialog)target).isUndecorated()) {
189.10 - super.reshape(newBounds.x, newBounds.y, newBounds.width, newBounds.height);
189.11 + super.reshape(x, y, width, height);
189.12 } else {
189.13 - reshapeFrame(newBounds.x, newBounds.y, newBounds.width, newBounds.height);
189.14 + reshapeFrame(x, y, width, height);
189.15 }
189.16 }
189.17
190.1 --- a/src/windows/classes/sun/awt/windows/WEmbeddedFramePeer.java Tue Apr 28 14:43:44 2009 -0700
190.2 +++ b/src/windows/classes/sun/awt/windows/WEmbeddedFramePeer.java Wed Apr 29 00:27:46 2009 -0700
190.3 @@ -68,12 +68,6 @@
190.4 public native void synthesizeWmActivate(boolean doActivate);
190.5
190.6 @Override
190.7 - Rectangle constrainBounds(int x, int y, int width, int height) {
190.8 - // We don't constrain the bounds of the EmbeddedFrames
190.9 - return new Rectangle(x, y, width, height);
190.10 - }
190.11 -
190.12 - @Override
190.13 public boolean isAccelCapable() {
190.14 // REMIND: Temp workaround for issues with using HW acceleration
190.15 // in the browser on Vista when DWM is enabled
191.1 --- a/src/windows/classes/sun/awt/windows/WFramePeer.java Tue Apr 28 14:43:44 2009 -0700
191.2 +++ b/src/windows/classes/sun/awt/windows/WFramePeer.java Wed Apr 29 00:27:46 2009 -0700
191.3 @@ -89,12 +89,10 @@
191.4 }
191.5
191.6 public void reshape(int x, int y, int width, int height) {
191.7 - Rectangle newBounds = constrainBounds(x, y, width, height);
191.8 -
191.9 if (((Frame)target).isUndecorated()) {
191.10 - super.reshape(newBounds.x, newBounds.y, newBounds.width, newBounds.height);
191.11 + super.reshape(x, y, width, height);
191.12 } else {
191.13 - reshapeFrame(newBounds.x, newBounds.y, newBounds.width, newBounds.height);
191.14 + reshapeFrame(x, y, width, height);
191.15 }
191.16 }
191.17
192.1 --- a/src/windows/classes/sun/awt/windows/WPanelPeer.java Tue Apr 28 14:43:44 2009 -0700
192.2 +++ b/src/windows/classes/sun/awt/windows/WPanelPeer.java Wed Apr 29 00:27:46 2009 -0700
192.3 @@ -99,45 +99,4 @@
192.4 public Insets insets() {
192.5 return getInsets();
192.6 }
192.7 -
192.8 - private native void pRestack(Object[] peers);
192.9 - private void restack(Container cont, Vector peers) {
192.10 - for (int i = 0; i < cont.getComponentCount(); i++) {
192.11 - Component comp = cont.getComponent(i);
192.12 - if (!comp.isLightweight()) {
192.13 - ComponentPeer peer = comp.getPeer();
192.14 - if (peer != null && (peer instanceof WComponentPeer))
192.15 - {
192.16 - peers.add(peer);
192.17 - } else {
192.18 - if (log.isLoggable(Level.FINE)) {
192.19 - log.log(Level.FINE,
192.20 - "peer of a {0} is null or not a WComponentPeer: {1}.",
192.21 - new Object[]{comp, peer});
192.22 - }
192.23 - }
192.24 - }
192.25 - if (comp.isLightweight() && comp instanceof Container) {
192.26 - restack((Container)comp, peers);
192.27 - }
192.28 - }
192.29 - }
192.30 -
192.31 - /**
192.32 - * @see java.awt.peer.ContainerPeer#restack
192.33 - */
192.34 - public void restack() {
192.35 - Vector peers = new Vector();
192.36 - peers.add(this);
192.37 - Container cont = (Container)target;
192.38 - restack(cont, peers);
192.39 - pRestack(peers.toArray());
192.40 - }
192.41 -
192.42 - /**
192.43 - * @see java.awt.peer.ContainerPeer#isRestackSupported
192.44 - */
192.45 - public boolean isRestackSupported() {
192.46 - return true;
192.47 - }
192.48 }
193.1 --- a/src/windows/classes/sun/awt/windows/WWindowPeer.java Tue Apr 28 14:43:44 2009 -0700
193.2 +++ b/src/windows/classes/sun/awt/windows/WWindowPeer.java Wed Apr 29 00:27:46 2009 -0700
193.3 @@ -335,16 +335,14 @@
193.4 }
193.5
193.6 private void updateShape() {
193.7 - // Shape shape = ((Window)target).getShape();
193.8 - Shape shape = AWTAccessor.getWindowAccessor().getShape((Window)target);
193.9 + Shape shape = ((Window)target).getShape();
193.10 if (shape != null) {
193.11 applyShape(Region.getInstance(shape, null));
193.12 }
193.13 }
193.14
193.15 private void updateOpacity() {
193.16 - // float opacity = ((Window)target).getOpacity();
193.17 - float opacity = AWTAccessor.getWindowAccessor().getOpacity((Window)target);
193.18 + float opacity = ((Window)target).getOpacity();
193.19 if (opacity < 1.0f) {
193.20 setOpacity(opacity);
193.21 }
193.22 @@ -546,81 +544,16 @@
193.23 private volatile int sysW = 0;
193.24 private volatile int sysH = 0;
193.25
193.26 - Rectangle constrainBounds(int x, int y, int width, int height) {
193.27 - GraphicsConfiguration gc = this.winGraphicsConfig;
193.28 -
193.29 - // We don't restrict the setBounds() operation if the code is trusted.
193.30 - if (!hasWarningWindow() || gc == null) {
193.31 - return new Rectangle(x, y, width, height);
193.32 - }
193.33 -
193.34 - int newX = x;
193.35 - int newY = y;
193.36 - int newW = width;
193.37 - int newH = height;
193.38 -
193.39 - Rectangle sB = gc.getBounds();
193.40 - Insets sIn = Toolkit.getDefaultToolkit().getScreenInsets(gc);
193.41 -
193.42 - int screenW = sB.width - sIn.left - sIn.right;
193.43 - int screenH = sB.height - sIn.top - sIn.bottom;
193.44 -
193.45 - // If it's undecorated or is not currently visible
193.46 - if (!AWTAccessor.getComponentAccessor().isVisible_NoClientCode(
193.47 - (Component)target) || isTargetUndecorated())
193.48 - {
193.49 - // Now check each point is within the visible part of the screen
193.50 - int screenX = sB.x + sIn.left;
193.51 - int screenY = sB.y + sIn.top;
193.52 -
193.53 - // First make sure the size is within the visible part of the screen
193.54 - if (newW > screenW) {
193.55 - newW = screenW;
193.56 - }
193.57 - if (newH > screenH) {
193.58 - newH = screenH;
193.59 - }
193.60 -
193.61 - // Tweak the location if needed
193.62 - if (newX < screenX) {
193.63 - newX = screenX;
193.64 - } else if (newX + newW > screenX + screenW) {
193.65 - newX = screenX + screenW - newW;
193.66 - }
193.67 - if (newY < screenY) {
193.68 - newY = screenY;
193.69 - } else if (newY + newH > screenY + screenH) {
193.70 - newY = screenY + screenH - newH;
193.71 - }
193.72 - } else {
193.73 - int maxW = Math.max(screenW, sysW);
193.74 - int maxH = Math.max(screenH, sysH);
193.75 -
193.76 - // Make sure the size is withing the visible part of the screen
193.77 - // OR less that the current size of the window.
193.78 - if (newW > maxW) {
193.79 - newW = maxW;
193.80 - }
193.81 - if (newH > maxH) {
193.82 - newH = maxH;
193.83 - }
193.84 - }
193.85 -
193.86 - return new Rectangle(newX, newY, newW, newH);
193.87 - }
193.88 -
193.89 public native void repositionSecurityWarning();
193.90
193.91 @Override
193.92 public void setBounds(int x, int y, int width, int height, int op) {
193.93 - Rectangle newBounds = constrainBounds(x, y, width, height);
193.94 + sysX = x;
193.95 + sysY = y;
193.96 + sysW = width;
193.97 + sysH = height;
193.98
193.99 - sysX = newBounds.x;
193.100 - sysY = newBounds.y;
193.101 - sysW = newBounds.width;
193.102 - sysH = newBounds.height;
193.103 -
193.104 - super.setBounds(newBounds.x, newBounds.y, newBounds.width, newBounds.height, op);
193.105 + super.setBounds(x, y, width, height, op);
193.106 }
193.107
193.108 @Override
193.109 @@ -675,11 +608,13 @@
193.110 public void setOpaque(boolean isOpaque) {
193.111 Window target = (Window)getTarget();
193.112
193.113 - SunToolkit sunToolkit = (SunToolkit)target.getToolkit();
193.114 - if (!sunToolkit.isWindowTranslucencySupported() ||
193.115 - !sunToolkit.isTranslucencyCapable(target.getGraphicsConfiguration()))
193.116 - {
193.117 - return;
193.118 + if (!isOpaque) {
193.119 + SunToolkit sunToolkit = (SunToolkit)target.getToolkit();
193.120 + if (!sunToolkit.isWindowTranslucencySupported() ||
193.121 + !sunToolkit.isTranslucencyCapable(target.getGraphicsConfiguration()))
193.122 + {
193.123 + return;
193.124 + }
193.125 }
193.126
193.127 boolean opaqueChanged = this.isOpaque != isOpaque;
193.128 @@ -713,9 +648,9 @@
193.129 // its shape only. To restore the correct visual appearance
193.130 // of the window (i.e. w/ the correct shape) we have to reset
193.131 // the shape.
193.132 - Shape shape = AWTAccessor.getWindowAccessor().getShape(target);
193.133 + Shape shape = ((Window)target).getShape();
193.134 if (shape != null) {
193.135 - AWTAccessor.getWindowAccessor().setShape(target, shape);
193.136 + ((Window)target).setShape(shape);
193.137 }
193.138 }
193.139
193.140 @@ -729,6 +664,11 @@
193.141 return;
193.142 }
193.143
193.144 + Component target = (Component)this.target;
193.145 + if (target.getWidth() <= 0 || target.getHeight() <= 0) {
193.146 + return;
193.147 + }
193.148 +
193.149 TranslucentWindowPainter currentPainter = painter;
193.150 if (currentPainter != null) {
193.151 currentPainter.updateWindow(backBuffer);
194.1 --- a/src/windows/native/sun/windows/awt_Component.cpp Tue Apr 28 14:43:44 2009 -0700
194.2 +++ b/src/windows/native/sun/windows/awt_Component.cpp Wed Apr 29 00:27:46 2009 -0700
194.3 @@ -1843,8 +1843,13 @@
194.4 case WM_AWT_SETALWAYSONTOP: {
194.5 AwtWindow* w = (AwtWindow*)lParam;
194.6 BOOL value = (BOOL)wParam;
194.7 + UINT flags = SWP_NOMOVE | SWP_NOSIZE;
194.8 + // transient windows shouldn't change the owner window's position in the z-order
194.9 + if (w->IsRetainingHierarchyZOrder()) {
194.10 + flags |= SWP_NOOWNERZORDER;
194.11 + }
194.12 ::SetWindowPos(w->GetHWnd(), (value != 0 ? HWND_TOPMOST : HWND_NOTOPMOST),
194.13 - 0,0,0,0, SWP_NOMOVE|SWP_NOSIZE);
194.14 + 0,0,0,0, flags);
194.15 break;
194.16 }
194.17
195.1 --- a/src/windows/native/sun/windows/awt_Window.cpp Tue Apr 28 14:43:44 2009 -0700
195.2 +++ b/src/windows/native/sun/windows/awt_Window.cpp Wed Apr 29 00:27:46 2009 -0700
195.3 @@ -165,7 +165,6 @@
195.4 int AwtWindow::ms_instanceCounter = 0;
195.5 HHOOK AwtWindow::ms_hCBTFilter;
195.6 AwtWindow * AwtWindow::m_grabbedWindow = NULL;
195.7 -HWND AwtWindow::sm_retainingHierarchyZOrderInShow = NULL;
195.8 BOOL AwtWindow::sm_resizing = FALSE;
195.9 UINT AwtWindow::untrustedWindowsCounter = 0;
195.10
195.11 @@ -341,23 +340,6 @@
195.12 }
195.13
195.14 MsgRouting AwtWindow::WmWindowPosChanging(LPARAM windowPos) {
195.15 - /*
195.16 - * See 6178004.
195.17 - * Some windows shouldn't trigger a change in z-order of
195.18 - * any window from the hierarchy.
195.19 - */
195.20 - if (IsRetainingHierarchyZOrder()) {
195.21 - if (((WINDOWPOS *)windowPos)->flags & SWP_SHOWWINDOW) {
195.22 - sm_retainingHierarchyZOrderInShow = GetHWnd();
195.23 - }
195.24 - } else if (sm_retainingHierarchyZOrderInShow != NULL) {
195.25 - HWND ancestor = ::GetAncestor(sm_retainingHierarchyZOrderInShow, GA_ROOTOWNER);
195.26 - HWND windowAncestor = ::GetAncestor(GetHWnd(), GA_ROOTOWNER);
195.27 -
195.28 - if (windowAncestor == ancestor) {
195.29 - ((WINDOWPOS *)windowPos)->flags |= SWP_NOZORDER;
195.30 - }
195.31 - }
195.32 return mrDoDefault;
195.33 }
195.34
195.35 @@ -369,19 +351,14 @@
195.36 ::SetWindowPos(warningWindow, HWND_NOTOPMOST,
195.37 rect.left, rect.top,
195.38 rect.right - rect.left, rect.bottom - rect.top,
195.39 - SWP_ASYNCWINDOWPOS | SWP_NOACTIVATE | SWP_NOZORDER
195.40 + SWP_ASYNCWINDOWPOS | SWP_NOACTIVATE | SWP_NOZORDER |
195.41 + SWP_NOOWNERZORDER
195.42 );
195.43 }
195.44
195.45 MsgRouting AwtWindow::WmWindowPosChanged(LPARAM windowPos) {
195.46 WINDOWPOS * wp = (WINDOWPOS *)windowPos;
195.47
195.48 - if (IsRetainingHierarchyZOrder() && wp->flags & SWP_SHOWWINDOW) {
195.49 - // By this time all the windows from the hierarchy are already notified about z-order change.
195.50 - // Thus we may and we should reset the trigger in order not to affect other changes.
195.51 - sm_retainingHierarchyZOrderInShow = NULL;
195.52 - }
195.53 -
195.54 // Reposition the warning window
195.55 if (IsUntrusted() && warningWindow != NULL) {
195.56 if (wp->flags & SWP_HIDEWINDOW) {
195.57 @@ -854,7 +831,7 @@
195.58 if (securityAnimationKind == akShow) {
195.59 ::SetWindowPos(warningWindow, HWND_NOTOPMOST, 0, 0, 0, 0,
195.60 SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE |
195.61 - SWP_SHOWWINDOW);
195.62 + SWP_SHOWWINDOW | SWP_NOOWNERZORDER);
195.63
195.64 ::SetLayeredWindowAttributes(warningWindow, RGB(0, 0, 0),
195.65 0xFF, LWA_ALPHA);
195.66 @@ -880,7 +857,7 @@
195.67 case akPreHide:
195.68 ::SetWindowPos(warningWindow, HWND_NOTOPMOST, 0, 0, 0, 0,
195.69 SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE |
195.70 - SWP_HIDEWINDOW);
195.71 + SWP_HIDEWINDOW | SWP_NOOWNERZORDER);
195.72 break;
195.73 case akShow:
195.74 RepaintWarningWindow();
195.75 @@ -1250,7 +1227,16 @@
195.76 }
195.77 }
195.78 if (!done) {
195.79 - ::ShowWindow(GetHWnd(), nCmdShow);
195.80 + // transient windows shouldn't change the owner window's position in the z-order
195.81 + if (IsRetainingHierarchyZOrder()){
195.82 + UINT flags = SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW | SWP_NOOWNERZORDER;
195.83 + if (nCmdShow == SW_SHOWNA) {
195.84 + flags |= SWP_NOACTIVATE;
195.85 + }
195.86 + ::SetWindowPos(GetHWnd(), HWND_TOPMOST, 0, 0, 0, 0, flags);
195.87 + } else {
195.88 + ::ShowWindow(GetHWnd(), nCmdShow);
195.89 + }
195.90 }
195.91 env->DeleteLocalRef(target);
195.92 }
196.1 --- a/src/windows/native/sun/windows/awt_Window.h Tue Apr 28 14:43:44 2009 -0700
196.2 +++ b/src/windows/native/sun/windows/awt_Window.h Wed Apr 29 00:27:46 2009 -0700
196.3 @@ -248,7 +248,6 @@
196.4 static int ms_instanceCounter;
196.5 static HHOOK ms_hCBTFilter;
196.6 static LRESULT CALLBACK CBTFilter(int nCode, WPARAM wParam, LPARAM lParam);
196.7 - static HWND sm_retainingHierarchyZOrderInShow; // a referred window in the process of show
196.8 static BOOL sm_resizing; /* in the middle of a resizing operation */
196.9
196.10 RECT m_insets; /* a cache of the insets being used */
197.1 --- a/test/com/sun/awt/Translucency/TranslucentJAppletTest/TranslucentJAppletTest.java Tue Apr 28 14:43:44 2009 -0700
197.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
197.3 @@ -1,103 +0,0 @@
197.4 -/*
197.5 - * Copyright 2008-2009 Sun Microsystems, Inc. All Rights Reserved.
197.6 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
197.7 - *
197.8 - * This code is free software; you can redistribute it and/or modify it
197.9 - * under the terms of the GNU General Public License version 2 only, as
197.10 - * published by the Free Software Foundation.
197.11 - *
197.12 - * This code is distributed in the hope that it will be useful, but WITHOUT
197.13 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
197.14 - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
197.15 - * version 2 for more details (a copy is included in the LICENSE file that
197.16 - * accompanied this code).
197.17 - *
197.18 - * You should have received a copy of the GNU General Public License version
197.19 - * 2 along with this work; if not, write to the Free Software Foundation,
197.20 - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
197.21 - *
197.22 - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
197.23 - * CA 95054 USA or visit www.sun.com if you need additional information or
197.24 - * have any questions.
197.25 - */
197.26 -
197.27 -/*
197.28 - * @test %I% %E%
197.29 - * @bug 6683728
197.30 - * @summary Tests that a JApplet in a translucent JFrame works properly
197.31 - * @author Kenneth.Russell@sun.com: area=Graphics
197.32 - * @compile -XDignore.symbol.file=true TranslucentJAppletTest.java
197.33 - * @run main/manual/othervm TranslucentJAppletTest
197.34 - */
197.35 -
197.36 -import java.awt.*;
197.37 -import java.awt.image.*;
197.38 -
197.39 -import javax.swing.*;
197.40 -
197.41 -public class TranslucentJAppletTest {
197.42 -
197.43 - private static JFrame frame;
197.44 - private static volatile boolean paintComponentCalled = false;
197.45 -
197.46 - private static void initAndShowGUI() {
197.47 - frame = new JFrame();
197.48 - JApplet applet = new JApplet();
197.49 - JPanel panel = new JPanel() {
197.50 - protected void paintComponent(Graphics g) {
197.51 - paintComponentCalled = true;
197.52 - g.setColor(Color.RED);
197.53 - g.fillOval(0, 0, getWidth(), getHeight());
197.54 - }
197.55 - };
197.56 - panel.setDoubleBuffered(false);
197.57 - panel.setOpaque(false);
197.58 - applet.add(panel);
197.59 - frame.add(applet);
197.60 - frame.setBounds(100, 100, 200, 200);
197.61 - frame.setUndecorated(true);
197.62 - com.sun.awt.AWTUtilities.setWindowOpaque(frame, false);
197.63 - frame.setVisible(true);
197.64 - }
197.65 -
197.66 - public static void main(String[] args)
197.67 - throws Exception
197.68 - {
197.69 - sun.awt.SunToolkit tk = (sun.awt.SunToolkit)Toolkit.getDefaultToolkit();
197.70 -
197.71 - Robot r = new Robot();
197.72 - Color color1 = r.getPixelColor(100, 100); // (0, 0) in frame coordinates
197.73 -
197.74 - SwingUtilities.invokeAndWait(new Runnable() {
197.75 - public void run() {
197.76 - initAndShowGUI();
197.77 - }
197.78 - });
197.79 - tk.realSync();
197.80 -
197.81 - if (!paintComponentCalled) {
197.82 - throw new RuntimeException("Test FAILED: panel's paintComponent() method is not called");
197.83 - }
197.84 -
197.85 - Color newColor1 = r.getPixelColor(100, 100);
197.86 - // unfortunately, robot.getPixelColor() doesn't work for some unknown reason
197.87 - // Color newColor2 = r.getPixelColor(200, 200);
197.88 - BufferedImage bim = r.createScreenCapture(new Rectangle(200, 200, 1, 1));
197.89 - Color newColor2 = new Color(bim.getRGB(0, 0));
197.90 -
197.91 - // Frame must be transparent at (100, 100) in screen coords
197.92 - if (!color1.equals(newColor1)) {
197.93 - System.err.println("color1 = " + color1);
197.94 - System.err.println("newColor1 = " + newColor1);
197.95 - throw new RuntimeException("Test FAILED: frame pixel at (0, 0) is not transparent");
197.96 - }
197.97 -
197.98 - // Frame must be RED at (200, 200) in screen coords
197.99 - if (!newColor2.equals(Color.RED)) {
197.100 - System.err.println("newColor2 = " + newColor2);
197.101 - throw new RuntimeException("Test FAILED: frame pixel at (100, 100) is not red (transparent?)");
197.102 - }
197.103 -
197.104 - System.out.println("Test PASSED");
197.105 - }
197.106 -}
198.1 --- a/test/com/sun/awt/Translucency/TranslucentShapedFrameTest/TSFrame.java Tue Apr 28 14:43:44 2009 -0700
198.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
198.3 @@ -1,306 +0,0 @@
198.4 -/*
198.5 - * Copyright 2008-2009 Sun Microsystems, Inc. All Rights Reserved.
198.6 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
198.7 - *
198.8 - * This code is free software; you can redistribute it and/or modify it
198.9 - * under the terms of the GNU General Public License version 2 only, as
198.10 - * published by the Free Software Foundation. Sun designates this
198.11 - * particular file as subject to the "Classpath" exception as provided
198.12 - * by Sun in the LICENSE file that accompanied this code.
198.13 - *
198.14 - * This code is distributed in the hope that it will be useful, but WITHOUT
198.15 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
198.16 - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
198.17 - * version 2 for more details (a copy is included in the LICENSE file that
198.18 - * accompanied this code).
198.19 - *
198.20 - * You should have received a copy of the GNU General Public License version
198.21 - * 2 along with this work; if not, write to the Free Software Foundation,
198.22 - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
198.23 - *
198.24 - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
198.25 - * CA 95054 USA or visit www.sun.com if you need additional information or
198.26 - * have any questions.
198.27 - */
198.28 -
198.29 -import com.sun.awt.AWTUtilities;
198.30 -import static com.sun.awt.AWTUtilities.Translucency.*;
198.31 -import java.awt.BorderLayout;
198.32 -import java.awt.Color;
198.33 -import java.awt.Dimension;
198.34 -import java.awt.Frame;
198.35 -import java.awt.Graphics;
198.36 -import java.awt.GraphicsConfiguration;
198.37 -import java.awt.GraphicsEnvironment;
198.38 -import java.awt.RenderingHints;
198.39 -import java.awt.event.MouseAdapter;
198.40 -import java.awt.event.MouseEvent;
198.41 -import java.awt.event.WindowAdapter;
198.42 -import java.awt.event.WindowEvent;
198.43 -import java.awt.Canvas;
198.44 -import java.awt.Component;
198.45 -import java.awt.GradientPaint;
198.46 -import java.awt.Graphics2D;
198.47 -import java.awt.Paint;
198.48 -import java.util.Random;
198.49 -import java.awt.geom.Ellipse2D;
198.50 -import javax.swing.JApplet;
198.51 -import javax.swing.JButton;
198.52 -import javax.swing.JComponent;
198.53 -import javax.swing.JFrame;
198.54 -import javax.swing.JPanel;
198.55 -import javax.swing.SwingUtilities;
198.56 -
198.57 -public class TSFrame {
198.58 -
198.59 - static volatile boolean done = false;
198.60 -
198.61 - static final boolean useSwing = System.getProperty("useswing") != null;
198.62 - static final boolean useShape = System.getProperty("useshape") != null;
198.63 - static final boolean useTransl = System.getProperty("usetransl") != null;
198.64 - static final boolean useNonOpaque = System.getProperty("usenonop") != null;
198.65 -
198.66 - static final Random rnd = new Random();
198.67 - private static void render(Graphics g, int w, int h, boolean useNonOpaque) {
198.68 - if (useNonOpaque) {
198.69 - Graphics2D g2d = (Graphics2D)g;
198.70 - GradientPaint p =
198.71 - new GradientPaint(0.0f, 0.0f,
198.72 - new Color(rnd.nextInt(0xffffff)),
198.73 - w, h,
198.74 - new Color(rnd.nextInt(0xff),
198.75 - rnd.nextInt(0xff),
198.76 - rnd.nextInt(0xff), 0),
198.77 - true);
198.78 - g2d.setPaint(p);
198.79 - g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
198.80 - RenderingHints.VALUE_ANTIALIAS_ON);
198.81 - g2d.fillOval(0, 0, w, h);
198.82 - } else {
198.83 - g.setColor(new Color(rnd.nextInt(0xffffff)));
198.84 - g.fillRect(0, 0, w, h);
198.85 - }
198.86 - }
198.87 -
198.88 - private static class MyCanvas extends Canvas {
198.89 - @Override
198.90 - public void paint(Graphics g) {
198.91 - render(g, getWidth(), getHeight(), false);
198.92 - }
198.93 - @Override
198.94 - public Dimension getPreferredSize() {
198.95 - return new Dimension(200, 100);
198.96 - }
198.97 - }
198.98 - private static class NonOpaqueJFrame extends JFrame {
198.99 - NonOpaqueJFrame(GraphicsConfiguration gc) {
198.100 - super("NonOpaque Swing JFrame", gc);
198.101 - JPanel p = new JPanel() {
198.102 - public void paintComponent(Graphics g) {
198.103 - super.paintComponent(g);
198.104 - render(g, getWidth(), getHeight(), true);
198.105 - g.setColor(Color.red);
198.106 - g.drawString("Non-Opaque Swing JFrame", 10, 15);
198.107 - }
198.108 - };
198.109 - p.setDoubleBuffered(false);
198.110 - p.setOpaque(false);
198.111 - add(p);
198.112 - setUndecorated(true);
198.113 - }
198.114 - }
198.115 - private static class NonOpaqueJAppletFrame extends JFrame {
198.116 - JPanel p;
198.117 - NonOpaqueJAppletFrame(GraphicsConfiguration gc) {
198.118 - super("NonOpaque Swing JAppletFrame", gc);
198.119 - JApplet ja = new JApplet() {
198.120 - public void paint(Graphics g) {
198.121 - super.paint(g);
198.122 - System.err.println("JAppletFrame paint called");
198.123 - }
198.124 - };
198.125 - p = new JPanel() {
198.126 - public void paintComponent(Graphics g) {
198.127 - super.paintComponent(g);
198.128 - render(g, getWidth(), getHeight(), true);
198.129 - g.setColor(Color.red);
198.130 - g.drawString("Non-Opaque Swing JFrame", 10, 15);
198.131 - }
198.132 - };
198.133 - p.setDoubleBuffered(false);
198.134 - p.setOpaque(false);
198.135 - ja.add(p);
198.136 - add(ja);
198.137 - setUndecorated(true);
198.138 - }
198.139 - }
198.140 - private static class NonOpaqueFrame extends Frame {
198.141 - NonOpaqueFrame(GraphicsConfiguration gc) {
198.142 - super("NonOpaque AWT Frame", gc);
198.143 - // uncomment to test with hw child
198.144 -// setLayout(null);
198.145 -// Component c = new Panel() {
198.146 -// public void paint(Graphics g) {
198.147 -// g.setColor(new Color(1.0f, 1.0f, 1.0f, 0.5f));
198.148 -// g.fillRect(0, 0, getWidth(), getHeight());
198.149 -// }
198.150 -// };
198.151 -// c.setSize(100, 100);
198.152 -// c.setBackground(Color.red);
198.153 -// c.setForeground(Color.red);
198.154 -// add(c);
198.155 -// c.setLocation(130, 130);
198.156 - }
198.157 - @Override
198.158 - public void paint(Graphics g) {
198.159 - render(g, getWidth(), getHeight(), true);
198.160 - g.setColor(Color.red);
198.161 - g.drawString("Non-Opaque AWT Frame", 10, 15);
198.162 - }
198.163 - }
198.164 -
198.165 - private static class MyJPanel extends JPanel {
198.166 - @Override
198.167 - public void paintComponent(Graphics g) {
198.168 - render(g, getWidth(), getHeight(), false);
198.169 - }
198.170 - }
198.171 -
198.172 - public static Frame createGui(GraphicsConfiguration gc,
198.173 - final boolean useSwing,
198.174 - final boolean useShape,
198.175 - final boolean useTransl,
198.176 - final boolean useNonOpaque,
198.177 - final float factor)
198.178 - {
198.179 - Frame frame;
198.180 - done = false;
198.181 -
198.182 - if (gc == null) {
198.183 - gc = GraphicsEnvironment.getLocalGraphicsEnvironment().
198.184 - getDefaultScreenDevice().getDefaultConfiguration();
198.185 - }
198.186 -
198.187 - if (useNonOpaque) {
198.188 - if (useSwing) {
198.189 - frame = new NonOpaqueJFrame(gc);
198.190 -// frame = new NonOpaqueJAppletFrame(gc);
198.191 - } else {
198.192 - frame = new NonOpaqueFrame(gc);
198.193 - }
198.194 - animateComponent(frame);
198.195 - } else if (useSwing) {
198.196 - frame = new JFrame("Swing Frame", gc);
198.197 - JComponent p = new JButton("Swing!");
198.198 - p.setPreferredSize(new Dimension(200, 100));
198.199 - frame.add("North", p);
198.200 - p = new MyJPanel();
198.201 - animateComponent(p);
198.202 - frame.add("Center", p);
198.203 - } else {
198.204 - frame = new Frame("AWT Frame", gc) {
198.205 - public void paint(Graphics g) {
198.206 - g.setColor(Color.red);
198.207 - g.fillRect(0, 0, 100, 100);
198.208 - }
198.209 - };
198.210 - frame.setLayout(new BorderLayout());
198.211 - Canvas c = new MyCanvas();
198.212 - frame.add("North", c);
198.213 - animateComponent(c);
198.214 - c = new MyCanvas();
198.215 - frame.add("Center", c);
198.216 - animateComponent(c);
198.217 - c = new MyCanvas();
198.218 - frame.add("South", c);
198.219 - animateComponent(c);
198.220 - }
198.221 - final Frame finalFrame = frame;
198.222 - frame.addWindowListener(new WindowAdapter() {
198.223 - @Override
198.224 - public void windowClosing(WindowEvent e) {
198.225 - finalFrame.dispose();
198.226 - done = true;
198.227 - }
198.228 - });
198.229 - frame.addMouseListener(new MouseAdapter() {
198.230 - @Override
198.231 - public void mouseClicked(MouseEvent e) {
198.232 - finalFrame.dispose();
198.233 - done = true;
198.234 - }
198.235 - });
198.236 - frame.setPreferredSize(new Dimension(800, 600));
198.237 -
198.238 - if (useShape) {
198.239 - frame.setUndecorated(true);
198.240 - }
198.241 -
198.242 - frame.setLocation(450, 10);
198.243 - frame.pack();
198.244 -
198.245 - if (useShape) {
198.246 - if (AWTUtilities.isTranslucencySupported(PERPIXEL_TRANSPARENT)) {
198.247 - System.out.println("applying PERPIXEL_TRANSPARENT");
198.248 - AWTUtilities.setWindowShape(frame,
198.249 - new Ellipse2D.Double(0, 0, frame.getWidth(),
198.250 - frame.getHeight()/3));
198.251 - frame.setTitle("PERPIXEL_TRANSPARENT");
198.252 - } else {
198.253 - System.out.println("Passed: PERPIXEL_TRANSPARENT unsupported");
198.254 - }
198.255 - }
198.256 - if (useTransl) {
198.257 - if (AWTUtilities.isTranslucencySupported(TRANSLUCENT)) {
198.258 - System.out.println("applying TRANSLUCENT");
198.259 - AWTUtilities.setWindowOpacity(frame, factor);
198.260 - frame.setTitle("TRANSLUCENT");
198.261 - } else {
198.262 - System.out.println("Passed: TRANSLUCENT unsupported");
198.263 - }
198.264 - }
198.265 - if (useNonOpaque) {
198.266 - if (AWTUtilities.isTranslucencySupported(PERPIXEL_TRANSLUCENT) &&
198.267 - AWTUtilities.isTranslucencyCapable(gc))
198.268 - {
198.269 - System.out.println("applying PERPIXEL_TRANSLUCENT");
198.270 - AWTUtilities.setWindowOpaque(frame, false);
198.271 - frame.setTitle("PERPIXEL_TRANSLUCENT");
198.272 - } else {
198.273 - System.out.println("Passed: PERPIXEL_TRANSLUCENT unsupported");
198.274 - }
198.275 - }
198.276 - frame.setVisible(true);
198.277 - return frame;
198.278 - }
198.279 -
198.280 - public static void stopThreads() {
198.281 - done = true;
198.282 - }
198.283 -
198.284 - private static void animateComponent(final Component comp) {
198.285 - Thread t = new Thread(new Runnable() {
198.286 - public void run() {
198.287 - do {
198.288 - try {
198.289 - Thread.sleep(50);
198.290 - } catch (InterruptedException ex) {}
198.291 - comp.repaint();
198.292 - } while (!done);
198.293 - }
198.294 - });
198.295 - t.start();
198.296 - }
198.297 -
198.298 - public static void main(String[] args) throws Exception {
198.299 - SwingUtilities.invokeLater(new Runnable() {
198.300 - public void run() {
198.301 - TSFrame.createGui(null, useSwing,
198.302 - useShape,
198.303 - useTransl,
198.304 - useNonOpaque,
198.305 - 0.7f);
198.306 - }
198.307 - });
198.308 - }
198.309 -}
199.1 --- a/test/com/sun/awt/Translucency/TranslucentShapedFrameTest/TranslucentShapedFrameTest.form Tue Apr 28 14:43:44 2009 -0700
199.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
199.3 @@ -1,230 +0,0 @@
199.4 -<?xml version="1.0" encoding="UTF-8" ?>
199.5 -
199.6 -<Form version="1.3" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
199.7 - <NonVisualComponents>
199.8 - <Component class="javax.swing.ButtonGroup" name="createDisposeGrp">
199.9 - </Component>
199.10 - </NonVisualComponents>
199.11 - <Properties>
199.12 - <Property name="defaultCloseOperation" type="int" value="3"/>
199.13 - <Property name="title" type="java.lang.String" value="TranslucentShapedFrameTest"/>
199.14 - </Properties>
199.15 - <SyntheticProperties>
199.16 - <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
199.17 - </SyntheticProperties>
199.18 - <AuxValues>
199.19 - <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
199.20 - <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
199.21 - <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
199.22 - <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
199.23 - <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
199.24 - <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
199.25 - </AuxValues>
199.26 -
199.27 - <Layout>
199.28 - <DimensionLayout dim="0">
199.29 - <Group type="103" groupAlignment="0" attributes="0">
199.30 - <Group type="102" attributes="0">
199.31 - <EmptySpace max="-2" attributes="0"/>
199.32 - <Group type="103" groupAlignment="0" attributes="0">
199.33 - <Group type="102" alignment="0" attributes="0">
199.34 - <Component id="transparencySld" pref="375" max="32767" attributes="0"/>
199.35 - <EmptySpace max="-2" attributes="0"/>
199.36 - </Group>
199.37 - <Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
199.38 - <Group type="102" alignment="0" attributes="0">
199.39 - <Component id="shapedCb" min="-2" max="-2" attributes="0"/>
199.40 - <EmptySpace max="-2" attributes="0"/>
199.41 - <Component id="nonOpaqueChb" min="-2" max="-2" attributes="0"/>
199.42 - <EmptySpace max="-2" attributes="0"/>
199.43 - <Component id="useSwingCb" min="-2" max="-2" attributes="0"/>
199.44 - <EmptySpace pref="102" max="32767" attributes="0"/>
199.45 - </Group>
199.46 - <Group type="102" alignment="0" attributes="0">
199.47 - <Group type="103" groupAlignment="0" attributes="0">
199.48 - <Group type="102" alignment="0" attributes="0">
199.49 - <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
199.50 - <EmptySpace pref="314" max="-2" attributes="0"/>
199.51 - </Group>
199.52 - <Group type="102" alignment="0" attributes="0">
199.53 - <Component id="passedBtn" min="-2" max="-2" attributes="0"/>
199.54 - <EmptySpace max="-2" attributes="0"/>
199.55 - <Component id="failedBtn" min="-2" max="-2" attributes="0"/>
199.56 - <EmptySpace pref="241" max="-2" attributes="0"/>
199.57 - </Group>
199.58 - <Component id="jScrollPane1" alignment="1" pref="375" max="32767" attributes="0"/>
199.59 - <Group type="102" alignment="0" attributes="0">
199.60 - <Component id="createFrameBtn" min="-2" pref="187" max="-2" attributes="0"/>
199.61 - <EmptySpace max="-2" attributes="0"/>
199.62 - <Component id="disposeFrameBtn" min="-2" pref="182" max="-2" attributes="0"/>
199.63 - </Group>
199.64 - </Group>
199.65 - <EmptySpace max="-2" attributes="0"/>
199.66 - </Group>
199.67 - </Group>
199.68 - </Group>
199.69 - </Group>
199.70 - </DimensionLayout>
199.71 - <DimensionLayout dim="1">
199.72 - <Group type="103" groupAlignment="0" attributes="0">
199.73 - <Group type="102" alignment="0" attributes="0">
199.74 - <EmptySpace max="-2" attributes="0"/>
199.75 - <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
199.76 - <EmptySpace max="-2" attributes="0"/>
199.77 - <Component id="transparencySld" min="-2" max="-2" attributes="0"/>
199.78 - <EmptySpace max="-2" attributes="0"/>
199.79 - <Group type="103" groupAlignment="3" attributes="0">
199.80 - <Component id="shapedCb" alignment="3" min="-2" max="-2" attributes="0"/>
199.81 - <Component id="nonOpaqueChb" alignment="3" min="-2" max="-2" attributes="0"/>
199.82 - <Component id="useSwingCb" alignment="3" min="-2" max="-2" attributes="0"/>
199.83 - </Group>
199.84 - <EmptySpace max="-2" attributes="0"/>
199.85 - <Group type="103" groupAlignment="3" attributes="0">
199.86 - <Component id="disposeFrameBtn" alignment="3" min="-2" max="-2" attributes="0"/>
199.87 - <Component id="createFrameBtn" alignment="3" min="-2" max="-2" attributes="0"/>
199.88 - </Group>
199.89 - <EmptySpace min="-2" pref="17" max="-2" attributes="0"/>
199.90 - <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
199.91 - <EmptySpace max="-2" attributes="0"/>
199.92 - <Component id="jScrollPane1" min="-2" pref="148" max="-2" attributes="0"/>
199.93 - <EmptySpace max="-2" attributes="0"/>
199.94 - <Group type="103" groupAlignment="3" attributes="0">
199.95 - <Component id="passedBtn" alignment="3" min="-2" max="-2" attributes="0"/>
199.96 - <Component id="failedBtn" alignment="3" min="-2" max="-2" attributes="0"/>
199.97 - </Group>
199.98 - <EmptySpace max="32767" attributes="0"/>
199.99 - </Group>
199.100 - </Group>
199.101 - </DimensionLayout>
199.102 - </Layout>
199.103 - <SubComponents>
199.104 - <Component class="javax.swing.JLabel" name="jLabel1">
199.105 - <Properties>
199.106 - <Property name="text" type="java.lang.String" value="Frame Opacity:"/>
199.107 - </Properties>
199.108 - </Component>
199.109 - <Component class="javax.swing.JSlider" name="transparencySld">
199.110 - <Properties>
199.111 - <Property name="majorTickSpacing" type="int" value="10"/>
199.112 - <Property name="minorTickSpacing" type="int" value="5"/>
199.113 - <Property name="paintLabels" type="boolean" value="true"/>
199.114 - <Property name="paintTicks" type="boolean" value="true"/>
199.115 - <Property name="value" type="int" value="100"/>
199.116 - </Properties>
199.117 - <Events>
199.118 - <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="transparencySldStateChanged"/>
199.119 - </Events>
199.120 - </Component>
199.121 - <Component class="javax.swing.JCheckBox" name="shapedCb">
199.122 - <Properties>
199.123 - <Property name="text" type="java.lang.String" value="Shaped Frame"/>
199.124 - <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
199.125 - <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
199.126 - <EmptyBorder bottom="0" left="0" right="0" top="0"/>
199.127 - </Border>
199.128 - </Property>
199.129 - <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
199.130 - <Insets value="[0, 0, 0, 0]"/>
199.131 - </Property>
199.132 - </Properties>
199.133 - <Events>
199.134 - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="shapedCbActionPerformed"/>
199.135 - </Events>
199.136 - </Component>
199.137 - <Component class="javax.swing.JCheckBox" name="nonOpaqueChb">
199.138 - <Properties>
199.139 - <Property name="text" type="java.lang.String" value="Non Opaque Frame"/>
199.140 - <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
199.141 - <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
199.142 - <EmptyBorder bottom="0" left="0" right="0" top="0"/>
199.143 - </Border>
199.144 - </Property>
199.145 - <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
199.146 - <Insets value="[0, 0, 0, 0]"/>
199.147 - </Property>
199.148 - </Properties>
199.149 - <Events>
199.150 - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="nonOpaqueChbActionPerformed"/>
199.151 - </Events>
199.152 - </Component>
199.153 - <Container class="javax.swing.JScrollPane" name="jScrollPane1">
199.154 - <AuxValues>
199.155 - <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
199.156 - </AuxValues>
199.157 -
199.158 - <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
199.159 - <SubComponents>
199.160 - <Component class="javax.swing.JTextArea" name="jTextArea1">
199.161 - <Properties>
199.162 - <Property name="columns" type="int" value="20"/>
199.163 - <Property name="rows" type="int" value="5"/>
199.164 - <Property name="text" type="java.lang.String" value="Create translucent and/or shaped, or
non-opaque frame. Make sure it behaves
correctly (no artifacts left on the screen
when dragging - if dragging is possible).
Click "Passed" if the test behaves correctly,
"Falied" otherwise."/>
199.165 - </Properties>
199.166 - </Component>
199.167 - </SubComponents>
199.168 - </Container>
199.169 - <Component class="javax.swing.JLabel" name="jLabel2">
199.170 - <Properties>
199.171 - <Property name="text" type="java.lang.String" value="Instructions:"/>
199.172 - </Properties>
199.173 - </Component>
199.174 - <Component class="javax.swing.JButton" name="passedBtn">
199.175 - <Properties>
199.176 - <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
199.177 - <Color blue="64" green="ff" red="81" type="rgb"/>
199.178 - </Property>
199.179 - <Property name="text" type="java.lang.String" value="Passed"/>
199.180 - </Properties>
199.181 - <Events>
199.182 - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="passedBtnActionPerformed"/>
199.183 - </Events>
199.184 - </Component>
199.185 - <Component class="javax.swing.JButton" name="failedBtn">
199.186 - <Properties>
199.187 - <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
199.188 - <Color blue="0" green="0" id="red" palette="1" red="ff" type="palette"/>
199.189 - </Property>
199.190 - <Property name="text" type="java.lang.String" value="Failed"/>
199.191 - </Properties>
199.192 - <Events>
199.193 - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="failedBtnActionPerformed"/>
199.194 - </Events>
199.195 - </Component>
199.196 - <Component class="javax.swing.JToggleButton" name="createFrameBtn">
199.197 - <Properties>
199.198 - <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
199.199 - <ComponentRef name="createDisposeGrp"/>
199.200 - </Property>
199.201 - <Property name="text" type="java.lang.String" value="Create Frame"/>
199.202 - </Properties>
199.203 - <Events>
199.204 - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="createFrameBtnActionPerformed"/>
199.205 - </Events>
199.206 - </Component>
199.207 - <Component class="javax.swing.JToggleButton" name="disposeFrameBtn">
199.208 - <Properties>
199.209 - <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
199.210 - <ComponentRef name="createDisposeGrp"/>
199.211 - </Property>
199.212 - <Property name="selected" type="boolean" value="true"/>
199.213 - <Property name="text" type="java.lang.String" value="Dispose Frame"/>
199.214 - </Properties>
199.215 - <Events>
199.216 - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="disposeFrameBtnActionPerformed"/>
199.217 - </Events>
199.218 - </Component>
199.219 - <Component class="javax.swing.JCheckBox" name="useSwingCb">
199.220 - <Properties>
199.221 - <Property name="text" type="java.lang.String" value="Use JFrame"/>
199.222 - <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
199.223 - <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
199.224 - <EmptyBorder bottom="0" left="0" right="0" top="0"/>
199.225 - </Border>
199.226 - </Property>
199.227 - <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
199.228 - <Insets value="[0, 0, 0, 0]"/>
199.229 - </Property>
199.230 - </Properties>
199.231 - </Component>
199.232 - </SubComponents>
199.233 -</Form>
200.1 --- a/test/com/sun/awt/Translucency/TranslucentShapedFrameTest/TranslucentShapedFrameTest.java Tue Apr 28 14:43:44 2009 -0700
200.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
200.3 @@ -1,359 +0,0 @@
200.4 -/*
200.5 - * Copyright 2008-2009 Sun Microsystems, Inc. All Rights Reserved.
200.6 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
200.7 - *
200.8 - * This code is free software; you can redistribute it and/or modify it
200.9 - * under the terms of the GNU General Public License version 2 only, as
200.10 - * published by the Free Software Foundation. Sun designates this
200.11 - * particular file as subject to the "Classpath" exception as provided
200.12 - * by Sun in the LICENSE file that accompanied this code.
200.13 - *
200.14 - * This code is distributed in the hope that it will be useful, but WITHOUT
200.15 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
200.16 - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
200.17 - * version 2 for more details (a copy is included in the LICENSE file that
200.18 - * accompanied this code).
200.19 - *
200.20 - * You should have received a copy of the GNU General Public License version
200.21 - * 2 along with this work; if not, write to the Free Software Foundation,
200.22 - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
200.23 - *
200.24 - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
200.25 - * CA 95054 USA or visit www.sun.com if you need additional information or
200.26 - * have any questions.
200.27 - */
200.28 -
200.29 -/*
200.30 - * @test %I% %E%
200.31 - * @bug 6655001 6670649 6687141
200.32 - * @summary Tests that hw acceleration doesn't affect translucent/shaped windows
200.33 - * @author Dmitri.Trembovetski@sun.com: area=Graphics
200.34 - * @compile -XDignore.symbol.file=true TranslucentShapedFrameTest.java
200.35 - * @compile -XDignore.symbol.file=true TSFrame.java
200.36 - * @run main/manual/othervm TranslucentShapedFrameTest
200.37 - * @run main/manual/othervm -Dsun.java2d.noddraw=true TranslucentShapedFrameTest
200.38 - * @run main/manual/othervm -Dsun.java2d.opengl=True TranslucentShapedFrameTest
200.39 - */
200.40 -import com.sun.awt.AWTUtilities;
200.41 -import static com.sun.awt.AWTUtilities.Translucency.*;
200.42 -import java.awt.Frame;
200.43 -import java.awt.GraphicsConfiguration;
200.44 -import java.awt.GraphicsDevice;
200.45 -import java.awt.GraphicsEnvironment;
200.46 -import java.awt.Shape;
200.47 -import java.awt.geom.Ellipse2D;
200.48 -import java.util.concurrent.CountDownLatch;
200.49 -import javax.swing.JSlider;
200.50 -import javax.swing.SwingUtilities;
200.51 -import javax.swing.UIManager;
200.52 -import javax.swing.UnsupportedLookAndFeelException;
200.53 -
200.54 -public class TranslucentShapedFrameTest extends javax.swing.JFrame {
200.55 - Frame testFrame;
200.56 - static CountDownLatch done;
200.57 - static volatile boolean failed = false;
200.58 - GraphicsConfiguration gcToUse = null;
200.59 -
200.60 - /**
200.61 - * Creates new form TranslucentShapedFrameTest
200.62 - */
200.63 - public TranslucentShapedFrameTest() {
200.64 - // not necessary, but we just look nicer
200.65 - try {
200.66 - UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
200.67 - } catch (Exception ex) {}
200.68 -
200.69 - initComponents();
200.70 - checkEffects();
200.71 -
200.72 - SwingUtilities.updateComponentTreeUI(this);
200.73 - }
200.74 -
200.75 - /** This method is called from within the constructor to
200.76 - * initialize the form.
200.77 - * WARNING: Do NOT modify this code. The content of this method is
200.78 - * always regenerated by the Form Editor.
200.79 - */
200.80 - // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
200.81 - private void initComponents() {
200.82 - createDisposeGrp = new javax.swing.ButtonGroup();
200.83 - jLabel1 = new javax.swing.JLabel();
200.84 - transparencySld = new javax.swing.JSlider();
200.85 - shapedCb = new javax.swing.JCheckBox();
200.86 - nonOpaqueChb = new javax.swing.JCheckBox();
200.87 - jScrollPane1 = new javax.swing.JScrollPane();
200.88 - jTextArea1 = new javax.swing.JTextArea();
200.89 - jLabel2 = new javax.swing.JLabel();
200.90 - passedBtn = new javax.swing.JButton();
200.91 - failedBtn = new javax.swing.JButton();
200.92 - createFrameBtn = new javax.swing.JToggleButton();
200.93 - disposeFrameBtn = new javax.swing.JToggleButton();
200.94 - useSwingCb = new javax.swing.JCheckBox();
200.95 -
200.96 - setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
200.97 - setTitle("TranslucentShapedFrameTest");
200.98 - jLabel1.setText("Frame Opacity:");
200.99 -
200.100 - transparencySld.setMajorTickSpacing(10);
200.101 - transparencySld.setMinorTickSpacing(5);
200.102 - transparencySld.setPaintLabels(true);
200.103 - transparencySld.setPaintTicks(true);
200.104 - transparencySld.setValue(100);
200.105 - transparencySld.addChangeListener(new javax.swing.event.ChangeListener() {
200.106 - public void stateChanged(javax.swing.event.ChangeEvent evt) {
200.107 - transparencySldStateChanged(evt);
200.108 - }
200.109 - });
200.110 -
200.111 - shapedCb.setText("Shaped Frame");
200.112 - shapedCb.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
200.113 - shapedCb.setMargin(new java.awt.Insets(0, 0, 0, 0));
200.114 - shapedCb.addActionListener(new java.awt.event.ActionListener() {
200.115 - public void actionPerformed(java.awt.event.ActionEvent evt) {
200.116 - shapedCbActionPerformed(evt);
200.117 - }
200.118 - });
200.119 -
200.120 - nonOpaqueChb.setText("Non Opaque Frame");
200.121 - nonOpaqueChb.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
200.122 - nonOpaqueChb.setMargin(new java.awt.Insets(0, 0, 0, 0));
200.123 - nonOpaqueChb.addActionListener(new java.awt.event.ActionListener() {
200.124 - public void actionPerformed(java.awt.event.ActionEvent evt) {
200.125 - nonOpaqueChbActionPerformed(evt);
200.126 - }
200.127 - });
200.128 -
200.129 - jTextArea1.setColumns(20);
200.130 - jTextArea1.setRows(5);
200.131 - jTextArea1.setText("Create translucent and/or shaped, or\nnon-opaque frame. Make sure it behaves\ncorrectly (no artifacts left on the screen\nwhen dragging - if dragging is possible).\nClick \"Passed\" if the test behaves correctly,\n\"Falied\" otherwise.");
200.132 - jScrollPane1.setViewportView(jTextArea1);
200.133 -
200.134 - jLabel2.setText("Instructions:");
200.135 -
200.136 - passedBtn.setBackground(new java.awt.Color(129, 255, 100));
200.137 - passedBtn.setText("Passed");
200.138 - passedBtn.addActionListener(new java.awt.event.ActionListener() {
200.139 - public void actionPerformed(java.awt.event.ActionEvent evt) {
200.140 - passedBtnActionPerformed(evt);
200.141 - }
200.142 - });
200.143 -
200.144 - failedBtn.setBackground(java.awt.Color.red);
200.145 - failedBtn.setText("Failed");
200.146 - failedBtn.addActionListener(new java.awt.event.ActionListener() {
200.147 - public void actionPerformed(java.awt.event.ActionEvent evt) {
200.148 - failedBtnActionPerformed(evt);
200.149 - }
200.150 - });
200.151 -
200.152 - createDisposeGrp.add(createFrameBtn);
200.153 - createFrameBtn.setText("Create Frame");
200.154 - createFrameBtn.addActionListener(new java.awt.event.ActionListener() {
200.155 - public void actionPerformed(java.awt.event.ActionEvent evt) {
200.156 - createFrameBtnActionPerformed(evt);
200.157 - }
200.158 - });
200.159 -
200.160 - createDisposeGrp.add(disposeFrameBtn);
200.161 - disposeFrameBtn.setSelected(true);
200.162 - disposeFrameBtn.setText("Dispose Frame");
200.163 - disposeFrameBtn.addActionListener(new java.awt.event.ActionListener() {
200.164 - public void actionPerformed(java.awt.event.ActionEvent evt) {
200.165 - disposeFrameBtnActionPerformed(evt);
200.166 - }
200.167 - });
200.168 -
200.169 - useSwingCb.setText("Use JFrame");
200.170 - useSwingCb.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
200.171 - useSwingCb.setMargin(new java.awt.Insets(0, 0, 0, 0));
200.172 -
200.173 - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
200.174 - getContentPane().setLayout(layout);
200.175 - layout.setHorizontalGroup(
200.176 - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
200.177 - .addGroup(layout.createSequentialGroup()
200.178 - .addContainerGap()
200.179 - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
200.180 - .addGroup(layout.createSequentialGroup()
200.181 - .addComponent(transparencySld, javax.swing.GroupLayout.DEFAULT_SIZE, 375, Short.MAX_VALUE)
200.182 - .addContainerGap())
200.183 - .addComponent(jLabel1)
200.184 - .addGroup(layout.createSequentialGroup()
200.185 - .addComponent(shapedCb)
200.186 - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
200.187 - .addComponent(nonOpaqueChb)
200.188 - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
200.189 - .addComponent(useSwingCb)
200.190 - .addContainerGap(102, Short.MAX_VALUE))
200.191 - .addGroup(layout.createSequentialGroup()
200.192 - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
200.193 - .addGroup(layout.createSequentialGroup()
200.194 - .addComponent(jLabel2)
200.195 - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 314, javax.swing.GroupLayout.PREFERRED_SIZE))
200.196 - .addGroup(layout.createSequentialGroup()
200.197 - .addComponent(passedBtn)
200.198 - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
200.199 - .addComponent(failedBtn)
200.200 - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 241, javax.swing.GroupLayout.PREFERRED_SIZE))
200.201 - .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 375, Short.MAX_VALUE)
200.202 - .addGroup(layout.createSequentialGroup()
200.203 - .addComponent(createFrameBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 187, javax.swing.GroupLayout.PREFERRED_SIZE)
200.204 - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
200.205 - .addComponent(disposeFrameBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 182, javax.swing.GroupLayout.PREFERRED_SIZE)))
200.206 - .addContainerGap())))
200.207 - );
200.208 - layout.setVerticalGroup(
200.209 - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
200.210 - .addGroup(layout.createSequentialGroup()
200.211 - .addContainerGap()
200.212 - .addComponent(jLabel1)
200.213 - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
200.214 - .addComponent(transparencySld, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
200.215 - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
200.216 - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
200.217 - .addComponent(shapedCb)
200.218 - .addComponent(nonOpaqueChb)
200.219 - .addComponent(useSwingCb))
200.220 - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
200.221 - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
200.222 - .addComponent(disposeFrameBtn)
200.223 - .addComponent(createFrameBtn))
200.224 - .addGap(17, 17, 17)
200.225 - .addComponent(jLabel2)
200.226 - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
200.227 - .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 148, javax.swing.GroupLayout.PREFERRED_SIZE)
200.228 - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
200.229 - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
200.230 - .addComponent(passedBtn)
200.231 - .addComponent(failedBtn))
200.232 - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
200.233 - );
200.234 - pack();
200.235 - }// </editor-fold>//GEN-END:initComponents
200.236 -
200.237 - private void nonOpaqueChbActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nonOpaqueChbActionPerformed
200.238 - if (testFrame != null) {
200.239 - // REMIND: this path in the test doesn't work well (test bug)
200.240 -// AWTUtilities.setWindowOpaque(testFrame, !nonOpaqueChb.isSelected());
200.241 - }
200.242 - }//GEN-LAST:event_nonOpaqueChbActionPerformed
200.243 -
200.244 - private void shapedCbActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_shapedCbActionPerformed
200.245 - if (testFrame != null) {
200.246 - Shape s = null;
200.247 - if (shapedCb.isSelected()) {
200.248 - s = new Ellipse2D.Double(0, 0,
200.249 - testFrame.getWidth(),
200.250 - testFrame.getHeight());
200.251 - }
200.252 - AWTUtilities.setWindowShape(testFrame, s);
200.253 - }
200.254 - }//GEN-LAST:event_shapedCbActionPerformed
200.255 -
200.256 - private void transparencySldStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_transparencySldStateChanged
200.257 - JSlider source = (JSlider)evt.getSource();
200.258 - int transl = transparencySld.getValue();
200.259 - if (testFrame != null) {
200.260 - AWTUtilities.setWindowOpacity(testFrame, (float)transl/100f);
200.261 - }
200.262 - }//GEN-LAST:event_transparencySldStateChanged
200.263 -
200.264 - private void failedBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_failedBtnActionPerformed
200.265 - disposeFrameBtnActionPerformed(evt);
200.266 - dispose();
200.267 - failed = true;
200.268 - done.countDown();
200.269 - }//GEN-LAST:event_failedBtnActionPerformed
200.270 -
200.271 - private void disposeFrameBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_disposeFrameBtnActionPerformed
200.272 - TSFrame.stopThreads();
200.273 - if (testFrame != null) {
200.274 - testFrame.dispose();
200.275 - testFrame = null;
200.276 - }
200.277 - }//GEN-LAST:event_disposeFrameBtnActionPerformed
200.278 -
200.279 - private void createFrameBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createFrameBtnActionPerformed
200.280 - disposeFrameBtnActionPerformed(evt);
200.281 - int transl = transparencySld.getValue();
200.282 - testFrame = TSFrame.createGui(gcToUse,
200.283 - useSwingCb.isSelected(), shapedCb.isSelected(),
200.284 - (transl < 100), nonOpaqueChb.isSelected(),
200.285 - (float)transl/100f);
200.286 - }//GEN-LAST:event_createFrameBtnActionPerformed
200.287 -
200.288 - private void passedBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_passedBtnActionPerformed
200.289 - disposeFrameBtnActionPerformed(evt);
200.290 - dispose();
200.291 - done.countDown();
200.292 - }//GEN-LAST:event_passedBtnActionPerformed
200.293 -
200.294 - /**
200.295 - * @param args the command line arguments
200.296 - */
200.297 - public static void main(String args[]) {
200.298 - done = new CountDownLatch(1);
200.299 - java.awt.EventQueue.invokeLater(new Runnable() {
200.300 - public void run() {
200.301 - new TranslucentShapedFrameTest().setVisible(true);
200.302 - }
200.303 - });
200.304 - try {
200.305 - done.await();
200.306 - } catch (InterruptedException ex) {}
200.307 - if (failed) {
200.308 - throw new RuntimeException("Test FAILED");
200.309 - }
200.310 - System.out.println("Test PASSED");
200.311 - }
200.312 -
200.313 - private void checkEffects() {
200.314 - if (!AWTUtilities.isTranslucencySupported(PERPIXEL_TRANSPARENT)) {
200.315 - shapedCb.setEnabled(false);
200.316 - }
200.317 -
200.318 - if (!AWTUtilities.isTranslucencySupported(TRANSLUCENT)) {
200.319 - transparencySld.setEnabled(false);
200.320 - }
200.321 -
200.322 - GraphicsConfiguration gc = null;
200.323 - if (AWTUtilities.isTranslucencySupported(PERPIXEL_TRANSLUCENT)) {
200.324 - gc = findGraphicsConfig();
200.325 - if (gc == null) {
200.326 - nonOpaqueChb.setEnabled(false);
200.327 - }
200.328 - }
200.329 -
200.330 - gcToUse = gc;
200.331 - }
200.332 -
200.333 - private GraphicsConfiguration findGraphicsConfig() {
200.334 - GraphicsDevice gd =
200.335 - GraphicsEnvironment.getLocalGraphicsEnvironment().
200.336 - getDefaultScreenDevice();
200.337 - GraphicsConfiguration gcs[] = gd.getConfigurations();
200.338 - for (GraphicsConfiguration gc : gcs) {
200.339 - if (AWTUtilities.isTranslucencyCapable(gc)) {
200.340 - return gc;
200.341 - }
200.342 - }
200.343 - return null;
200.344 - }
200.345 -
200.346 - // Variables declaration - do not modify//GEN-BEGIN:variables
200.347 - private javax.swing.ButtonGroup createDisposeGrp;
200.348 - private javax.swing.JToggleButton createFrameBtn;
200.349 - private javax.swing.JToggleButton disposeFrameBtn;
200.350 - private javax.swing.JButton failedBtn;
200.351 - private javax.swing.JLabel jLabel1;
200.352 - private javax.swing.JLabel jLabel2;
200.353 - private javax.swing.JScrollPane jScrollPane1;
200.354 - private javax.swing.JTextArea jTextArea1;
200.355 - private javax.swing.JCheckBox nonOpaqueChb;
200.356 - private javax.swing.JButton passedBtn;
200.357 - private javax.swing.JCheckBox shapedCb;
200.358 - private javax.swing.JSlider transparencySld;
200.359 - private javax.swing.JCheckBox useSwingCb;
200.360 - // End of variables declaration//GEN-END:variables
200.361 -
200.362 -}
201.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
201.2 +++ b/test/java/awt/Mixing/MixingInHwPanel.java Wed Apr 29 00:27:46 2009 -0700
201.3 @@ -0,0 +1,428 @@
201.4 +/*
201.5 + * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
201.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
201.7 + *
201.8 + * This code is free software; you can redistribute it and/or modify it
201.9 + * under the terms of the GNU General Public License version 2 only, as
201.10 + * published by the Free Software Foundation.
201.11 + *
201.12 + * This code is distributed in the hope that it will be useful, but WITHOUT
201.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
201.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
201.15 + * version 2 for more details (a copy is included in the LICENSE file that
201.16 + * accompanied this code).
201.17 + *
201.18 + * You should have received a copy of the GNU General Public License version
201.19 + * 2 along with this work; if not, write to the Free Software Foundation,
201.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
201.21 + *
201.22 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
201.23 + * CA 95054 USA or visit www.sun.com if you need additional information or
201.24 + * have any questions.
201.25 + */
201.26 +
201.27 +/*
201.28 + @test %W% %E%
201.29 + @bug 6829858
201.30 + @summary Mixing should work inside heavyweight containers
201.31 + @author anthony.petrov@sun.com: area=awt.mixing
201.32 + @library ../regtesthelpers
201.33 + @build Util
201.34 + @run main MixingInHwPanel
201.35 +*/
201.36 +
201.37 +
201.38 +/**
201.39 + * MixingInHwPanel.java
201.40 + *
201.41 + * summary: Mixing should work inside heavyweight containers
201.42 + */
201.43 +
201.44 +import java.awt.*;
201.45 +import java.awt.event.*;
201.46 +import javax.swing.*;
201.47 +import test.java.awt.regtesthelpers.Util;
201.48 +
201.49 +
201.50 +
201.51 +public class MixingInHwPanel
201.52 +{
201.53 + static volatile boolean failed = true;
201.54 +
201.55 + private static void init()
201.56 + {
201.57 + //*** Create instructions for the user here ***
201.58 +
201.59 + String[] instructions =
201.60 + {
201.61 + "This is an AUTOMATIC test, simply wait until it is done.",
201.62 + "The result (passed or failed) will be shown in the",
201.63 + "message window below."
201.64 + };
201.65 + Sysout.createDialog( );
201.66 + Sysout.printInstructions( instructions );
201.67 +
201.68 + // Create the components: frame -> hwPanel -> JDesktopPane ->
201.69 + // -> JInternalFrame -> hwButton
201.70 + Frame frame = new Frame("Mixing in a heavyweight Panel");
201.71 + frame.setBounds(100, 100, 640, 480);
201.72 +
201.73 + Panel hwPanel = new Panel(new BorderLayout());
201.74 + frame.add(hwPanel);
201.75 +
201.76 + JDesktopPane desktop = new JDesktopPane();
201.77 + hwPanel.add(desktop);
201.78 +
201.79 + JInternalFrame iFrame = new JInternalFrame("one",
201.80 + true, true, true, true);
201.81 + iFrame.setPreferredSize(new Dimension(150, 55));
201.82 + iFrame.setBounds(600, 100, 150, 55);
201.83 + iFrame.setVisible(true);
201.84 + desktop.add(iFrame);
201.85 +
201.86 + Button button = new Button("HW Button");
201.87 + button.addActionListener(new ActionListener() {
201.88 + public void actionPerformed(ActionEvent e) {
201.89 + failed = false;
201.90 + }
201.91 + });
201.92 + iFrame.add(button);
201.93 +
201.94 + // Show the frame with the hwButton slightly hidden initially
201.95 + frame.setVisible(true);
201.96 +
201.97 + Robot robot = Util.createRobot();
201.98 + robot.setAutoDelay(20);
201.99 +
201.100 + Util.waitForIdle(robot);
201.101 +
201.102 + // Now resize the frame so that the button is fully visible
201.103 + frame.setBounds(100, 100, 800, 480);
201.104 + frame.validate();
201.105 +
201.106 + Util.waitForIdle(robot);
201.107 +
201.108 + // And click the part of the button that has been previously hidden
201.109 + Point bLoc = button.getLocationOnScreen();
201.110 + robot.mouseMove(bLoc.x + button.getWidth() - 6, bLoc.y + button.getHeight() / 2);
201.111 +
201.112 + Util.waitForIdle(robot);
201.113 +
201.114 + robot.mousePress(InputEvent.BUTTON1_MASK);
201.115 + robot.mouseRelease(InputEvent.BUTTON1_MASK);
201.116 +
201.117 + Util.waitForIdle(robot);
201.118 +
201.119 + // If the click happens (the shape is reapplied), the button's action
201.120 + // listener will make failed == false.
201.121 + if (failed) {
201.122 + MixingInHwPanel.fail("The HW button did not receive the click.");
201.123 + } else {
201.124 + MixingInHwPanel.pass();
201.125 + }
201.126 + }//End init()
201.127 +
201.128 +
201.129 +
201.130 + /*****************************************************
201.131 + * Standard Test Machinery Section
201.132 + * DO NOT modify anything in this section -- it's a
201.133 + * standard chunk of code which has all of the
201.134 + * synchronisation necessary for the test harness.
201.135 + * By keeping it the same in all tests, it is easier
201.136 + * to read and understand someone else's test, as
201.137 + * well as insuring that all tests behave correctly
201.138 + * with the test harness.
201.139 + * There is a section following this for test-
201.140 + * classes
201.141 + ******************************************************/
201.142 + private static boolean theTestPassed = false;
201.143 + private static boolean testGeneratedInterrupt = false;
201.144 + private static String failureMessage = "";
201.145 +
201.146 + private static Thread mainThread = null;
201.147 +
201.148 + private static int sleepTime = 300000;
201.149 +
201.150 + // Not sure about what happens if multiple of this test are
201.151 + // instantiated in the same VM. Being static (and using
201.152 + // static vars), it aint gonna work. Not worrying about
201.153 + // it for now.
201.154 + public static void main( String args[] ) throws InterruptedException
201.155 + {
201.156 + mainThread = Thread.currentThread();
201.157 + try
201.158 + {
201.159 + init();
201.160 + }
201.161 + catch( TestPassedException e )
201.162 + {
201.163 + //The test passed, so just return from main and harness will
201.164 + // interepret this return as a pass
201.165 + return;
201.166 + }
201.167 + //At this point, neither test pass nor test fail has been
201.168 + // called -- either would have thrown an exception and ended the
201.169 + // test, so we know we have multiple threads.
201.170 +
201.171 + //Test involves other threads, so sleep and wait for them to
201.172 + // called pass() or fail()
201.173 + try
201.174 + {
201.175 + Thread.sleep( sleepTime );
201.176 + //Timed out, so fail the test
201.177 + throw new RuntimeException( "Timed out after " + sleepTime/1000 + " seconds" );
201.178 + }
201.179 + catch (InterruptedException e)
201.180 + {
201.181 + //The test harness may have interrupted the test. If so, rethrow the exception
201.182 + // so that the harness gets it and deals with it.
201.183 + if( ! testGeneratedInterrupt ) throw e;
201.184 +
201.185 + //reset flag in case hit this code more than once for some reason (just safety)
201.186 + testGeneratedInterrupt = false;
201.187 +
201.188 + if ( theTestPassed == false )
201.189 + {
201.190 + throw new RuntimeException( failureMessage );
201.191 + }
201.192 + }
201.193 +
201.194 + }//main
201.195 +
201.196 + public static synchronized void setTimeoutTo( int seconds )
201.197 + {
201.198 + sleepTime = seconds * 1000;
201.199 + }
201.200 +
201.201 + public static synchronized void pass()
201.202 + {
201.203 + Sysout.println( "The test passed." );
201.204 + Sysout.println( "The test is over, hit Ctl-C to stop Java VM" );
201.205 + //first check if this is executing in main thread
201.206 + if ( mainThread == Thread.currentThread() )
201.207 + {
201.208 + //Still in the main thread, so set the flag just for kicks,
201.209 + // and throw a test passed exception which will be caught
201.210 + // and end the test.
201.211 + theTestPassed = true;
201.212 + throw new TestPassedException();
201.213 + }
201.214 + theTestPassed = true;
201.215 + testGeneratedInterrupt = true;
201.216 + mainThread.interrupt();
201.217 + }//pass()
201.218 +
201.219 + public static synchronized void fail()
201.220 + {
201.221 + //test writer didn't specify why test failed, so give generic
201.222 + fail( "it just plain failed! :-)" );
201.223 + }
201.224 +
201.225 + public static synchronized void fail( String whyFailed )
201.226 + {
201.227 + Sysout.println( "The test failed: " + whyFailed );
201.228 + Sysout.println( "The test is over, hit Ctl-C to stop Java VM" );
201.229 + //check if this called from main thread
201.230 + if ( mainThread == Thread.currentThread() )
201.231 + {
201.232 + //If main thread, fail now 'cause not sleeping
201.233 + throw new RuntimeException( whyFailed );
201.234 + }
201.235 + theTestPassed = false;
201.236 + testGeneratedInterrupt = true;
201.237 + failureMessage = whyFailed;
201.238 + mainThread.interrupt();
201.239 + }//fail()
201.240 +
201.241 +}// class MixingInHwPanel
201.242 +
201.243 +//This exception is used to exit from any level of call nesting
201.244 +// when it's determined that the test has passed, and immediately
201.245 +// end the test.
201.246 +class TestPassedException extends RuntimeException
201.247 +{
201.248 +}
201.249 +
201.250 +//*********** End Standard Test Machinery Section **********
201.251 +
201.252 +
201.253 +//************ Begin classes defined for the test ****************
201.254 +
201.255 +// if want to make listeners, here is the recommended place for them, then instantiate
201.256 +// them in init()
201.257 +
201.258 +/* Example of a class which may be written as part of a test
201.259 +class NewClass implements anInterface
201.260 + {
201.261 + static int newVar = 0;
201.262 +
201.263 + public void eventDispatched(AWTEvent e)
201.264 + {
201.265 + //Counting events to see if we get enough
201.266 + eventCount++;
201.267 +
201.268 + if( eventCount == 20 )
201.269 + {
201.270 + //got enough events, so pass
201.271 +
201.272 + MixingInHwPanel.pass();
201.273 + }
201.274 + else if( tries == 20 )
201.275 + {
201.276 + //tried too many times without getting enough events so fail
201.277 +
201.278 + MixingInHwPanel.fail();
201.279 + }
201.280 +
201.281 + }// eventDispatched()
201.282 +
201.283 + }// NewClass class
201.284 +
201.285 +*/
201.286 +
201.287 +
201.288 +//************** End classes defined for the test *******************
201.289 +
201.290 +
201.291 +
201.292 +
201.293 +/****************************************************
201.294 + Standard Test Machinery
201.295 + DO NOT modify anything below -- it's a standard
201.296 + chunk of code whose purpose is to make user
201.297 + interaction uniform, and thereby make it simpler
201.298 + to read and understand someone else's test.
201.299 + ****************************************************/
201.300 +
201.301 +/**
201.302 + This is part of the standard test machinery.
201.303 + It creates a dialog (with the instructions), and is the interface
201.304 + for sending text messages to the user.
201.305 + To print the instructions, send an array of strings to Sysout.createDialog
201.306 + WithInstructions method. Put one line of instructions per array entry.
201.307 + To display a message for the tester to see, simply call Sysout.println
201.308 + with the string to be displayed.
201.309 + This mimics System.out.println but works within the test harness as well
201.310 + as standalone.
201.311 + */
201.312 +
201.313 +class Sysout
201.314 +{
201.315 + private static TestDialog dialog;
201.316 +
201.317 + public static void createDialogWithInstructions( String[] instructions )
201.318 + {
201.319 + dialog = new TestDialog( new Frame(), "Instructions" );
201.320 + dialog.printInstructions( instructions );
201.321 + dialog.setVisible(true);
201.322 + println( "Any messages for the tester will display here." );
201.323 + }
201.324 +
201.325 + public static void createDialog( )
201.326 + {
201.327 + dialog = new TestDialog( new Frame(), "Instructions" );
201.328 + String[] defInstr = { "Instructions will appear here. ", "" } ;
201.329 + dialog.printInstructions( defInstr );
201.330 + dialog.setVisible(true);
201.331 + println( "Any messages for the tester will display here." );
201.332 + }
201.333 +
201.334 +
201.335 + public static void printInstructions( String[] instructions )
201.336 + {
201.337 + dialog.printInstructions( instructions );
201.338 + }
201.339 +
201.340 +
201.341 + public static void println( String messageIn )
201.342 + {
201.343 + dialog.displayMessage( messageIn );
201.344 + System.out.println(messageIn);
201.345 + }
201.346 +
201.347 +}// Sysout class
201.348 +
201.349 +/**
201.350 + This is part of the standard test machinery. It provides a place for the
201.351 + test instructions to be displayed, and a place for interactive messages
201.352 + to the user to be displayed.
201.353 + To have the test instructions displayed, see Sysout.
201.354 + To have a message to the user be displayed, see Sysout.
201.355 + Do not call anything in this dialog directly.
201.356 + */
201.357 +class TestDialog extends Dialog
201.358 +{
201.359 +
201.360 + TextArea instructionsText;
201.361 + TextArea messageText;
201.362 + int maxStringLength = 80;
201.363 +
201.364 + //DO NOT call this directly, go through Sysout
201.365 + public TestDialog( Frame frame, String name )
201.366 + {
201.367 + super( frame, name );
201.368 + int scrollBoth = TextArea.SCROLLBARS_BOTH;
201.369 + instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
201.370 + add( "North", instructionsText );
201.371 +
201.372 + messageText = new TextArea( "", 5, maxStringLength, scrollBoth );
201.373 + add("Center", messageText);
201.374 +
201.375 + pack();
201.376 +
201.377 + setVisible(true);
201.378 + }// TestDialog()
201.379 +
201.380 + //DO NOT call this directly, go through Sysout
201.381 + public void printInstructions( String[] instructions )
201.382 + {
201.383 + //Clear out any current instructions
201.384 + instructionsText.setText( "" );
201.385 +
201.386 + //Go down array of instruction strings
201.387 +
201.388 + String printStr, remainingStr;
201.389 + for( int i=0; i < instructions.length; i++ )
201.390 + {
201.391 + //chop up each into pieces maxSringLength long
201.392 + remainingStr = instructions[ i ];
201.393 + while( remainingStr.length() > 0 )
201.394 + {
201.395 + //if longer than max then chop off first max chars to print
201.396 + if( remainingStr.length() >= maxStringLength )
201.397 + {
201.398 + //Try to chop on a word boundary
201.399 + int posOfSpace = remainingStr.
201.400 + lastIndexOf( ' ', maxStringLength - 1 );
201.401 +
201.402 + if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
201.403 +
201.404 + printStr = remainingStr.substring( 0, posOfSpace + 1 );
201.405 + remainingStr = remainingStr.substring( posOfSpace + 1 );
201.406 + }
201.407 + //else just print
201.408 + else
201.409 + {
201.410 + printStr = remainingStr;
201.411 + remainingStr = "";
201.412 + }
201.413 +
201.414 + instructionsText.append( printStr + "\n" );
201.415 +
201.416 + }// while
201.417 +
201.418 + }// for
201.419 +
201.420 + }//printInstructions()
201.421 +
201.422 + //DO NOT call this directly, go through Sysout
201.423 + public void displayMessage( String messageIn )
201.424 + {
201.425 + messageText.append( messageIn + "\n" );
201.426 + System.out.println(messageIn);
201.427 + }
201.428 +
201.429 +}// TestDialog class
201.430 +
201.431 +
202.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
202.2 +++ b/test/java/awt/Window/TranslucentJAppletTest/TranslucentJAppletTest.java Wed Apr 29 00:27:46 2009 -0700
202.3 @@ -0,0 +1,103 @@
202.4 +/*
202.5 + * Copyright 2008-2009 Sun Microsystems, Inc. All Rights Reserved.
202.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
202.7 + *
202.8 + * This code is free software; you can redistribute it and/or modify it
202.9 + * under the terms of the GNU General Public License version 2 only, as
202.10 + * published by the Free Software Foundation.
202.11 + *
202.12 + * This code is distributed in the hope that it will be useful, but WITHOUT
202.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
202.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
202.15 + * version 2 for more details (a copy is included in the LICENSE file that
202.16 + * accompanied this code).
202.17 + *
202.18 + * You should have received a copy of the GNU General Public License version
202.19 + * 2 along with this work; if not, write to the Free Software Foundation,
202.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
202.21 + *
202.22 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
202.23 + * CA 95054 USA or visit www.sun.com if you need additional information or
202.24 + * have any questions.
202.25 + */
202.26 +
202.27 +/*
202.28 + * @test %I% %E%
202.29 + * @bug 6683728
202.30 + * @summary Tests that a JApplet in a translucent JFrame works properly
202.31 + * @author Kenneth.Russell@sun.com: area=Graphics
202.32 + * @compile -XDignore.symbol.file=true TranslucentJAppletTest.java
202.33 + * @run main/manual/othervm TranslucentJAppletTest
202.34 + */
202.35 +
202.36 +import java.awt.*;
202.37 +import java.awt.image.*;
202.38 +
202.39 +import javax.swing.*;
202.40 +
202.41 +public class TranslucentJAppletTest {
202.42 +
202.43 + private static JFrame frame;
202.44 + private static volatile boolean paintComponentCalled = false;
202.45 +
202.46 + private static void initAndShowGUI() {
202.47 + frame = new JFrame();
202.48 + JApplet applet = new JApplet();
202.49 + JPanel panel = new JPanel() {
202.50 + protected void paintComponent(Graphics g) {
202.51 + paintComponentCalled = true;
202.52 + g.setColor(Color.RED);
202.53 + g.fillOval(0, 0, getWidth(), getHeight());
202.54 + }
202.55 + };
202.56 + panel.setDoubleBuffered(false);
202.57 + panel.setOpaque(false);
202.58 + applet.add(panel);
202.59 + frame.add(applet);
202.60 + frame.setBounds(100, 100, 200, 200);
202.61 + frame.setUndecorated(true);
202.62 + frame.setBackground(new Color(0, 0, 0, 0));
202.63 + frame.setVisible(true);
202.64 + }
202.65 +
202.66 + public static void main(String[] args)
202.67 + throws Exception
202.68 + {
202.69 + sun.awt.SunToolkit tk = (sun.awt.SunToolkit)Toolkit.getDefaultToolkit();
202.70 +
202.71 + Robot r = new Robot();
202.72 + Color color1 = r.getPixelColor(100, 100); // (0, 0) in frame coordinates
202.73 +
202.74 + SwingUtilities.invokeAndWait(new Runnable() {
202.75 + public void run() {
202.76 + initAndShowGUI();
202.77 + }
202.78 + });
202.79 + tk.realSync();
202.80 +
202.81 + if (!paintComponentCalled) {
202.82 + throw new RuntimeException("Test FAILED: panel's paintComponent() method is not called");
202.83 + }
202.84 +
202.85 + Color newColor1 = r.getPixelColor(100, 100);
202.86 + // unfortunately, robot.getPixelColor() doesn't work for some unknown reason
202.87 + // Color newColor2 = r.getPixelColor(200, 200);
202.88 + BufferedImage bim = r.createScreenCapture(new Rectangle(200, 200, 1, 1));
202.89 + Color newColor2 = new Color(bim.getRGB(0, 0));
202.90 +
202.91 + // Frame must be transparent at (100, 100) in screen coords
202.92 + if (!color1.equals(newColor1)) {
202.93 + System.err.println("color1 = " + color1);
202.94 + System.err.println("newColor1 = " + newColor1);
202.95 + throw new RuntimeException("Test FAILED: frame pixel at (0, 0) is not transparent");
202.96 + }
202.97 +
202.98 + // Frame must be RED at (200, 200) in screen coords
202.99 + if (!newColor2.equals(Color.RED)) {
202.100 + System.err.println("newColor2 = " + newColor2);
202.101 + throw new RuntimeException("Test FAILED: frame pixel at (100, 100) is not red (transparent?)");
202.102 + }
202.103 +
202.104 + System.out.println("Test PASSED");
202.105 + }
202.106 +}
203.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
203.2 +++ b/test/java/awt/Window/TranslucentShapedFrameTest/TSFrame.java Wed Apr 29 00:27:46 2009 -0700
203.3 @@ -0,0 +1,299 @@
203.4 +/*
203.5 + * Copyright 2008-2009 Sun Microsystems, Inc. All Rights Reserved.
203.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
203.7 + *
203.8 + * This code is free software; you can redistribute it and/or modify it
203.9 + * under the terms of the GNU General Public License version 2 only, as
203.10 + * published by the Free Software Foundation. Sun designates this
203.11 + * particular file as subject to the "Classpath" exception as provided
203.12 + * by Sun in the LICENSE file that accompanied this code.
203.13 + *
203.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
203.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
203.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
203.17 + * version 2 for more details (a copy is included in the LICENSE file that
203.18 + * accompanied this code).
203.19 + *
203.20 + * You should have received a copy of the GNU General Public License version
203.21 + * 2 along with this work; if not, write to the Free Software Foundation,
203.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
203.23 + *
203.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
203.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
203.26 + * have any questions.
203.27 + */
203.28 +
203.29 +import java.awt.BorderLayout;
203.30 +import java.awt.Color;
203.31 +import java.awt.Dimension;
203.32 +import java.awt.Frame;
203.33 +import java.awt.Graphics;
203.34 +import java.awt.GraphicsConfiguration;
203.35 +import java.awt.GraphicsDevice;
203.36 +import java.awt.GraphicsDevice.WindowTranslucency;
203.37 +import java.awt.GraphicsEnvironment;
203.38 +import java.awt.RenderingHints;
203.39 +import java.awt.event.MouseAdapter;
203.40 +import java.awt.event.MouseEvent;
203.41 +import java.awt.event.WindowAdapter;
203.42 +import java.awt.event.WindowEvent;
203.43 +import java.awt.Canvas;
203.44 +import java.awt.Component;
203.45 +import java.awt.GradientPaint;
203.46 +import java.awt.Graphics2D;
203.47 +import java.awt.Paint;
203.48 +import java.util.Random;
203.49 +import java.awt.geom.Ellipse2D;
203.50 +import javax.swing.JApplet;
203.51 +import javax.swing.JButton;
203.52 +import javax.swing.JComponent;
203.53 +import javax.swing.JFrame;
203.54 +import javax.swing.JPanel;
203.55 +import javax.swing.SwingUtilities;
203.56 +
203.57 +public class TSFrame {
203.58 +
203.59 + static volatile boolean done = false;
203.60 +
203.61 + static final boolean useSwing = System.getProperty("useswing") != null;
203.62 + static final boolean useShape = System.getProperty("useshape") != null;
203.63 + static final boolean useTransl = System.getProperty("usetransl") != null;
203.64 + static final boolean useNonOpaque = System.getProperty("usenonop") != null;
203.65 +
203.66 + static final Random rnd = new Random();
203.67 + private static void render(Graphics g, int w, int h, boolean useNonOpaque) {
203.68 + if (useNonOpaque) {
203.69 + Graphics2D g2d = (Graphics2D)g;
203.70 + GradientPaint p =
203.71 + new GradientPaint(0.0f, 0.0f,
203.72 + new Color(rnd.nextInt(0xffffff)),
203.73 + w, h,
203.74 + new Color(rnd.nextInt(0xff),
203.75 + rnd.nextInt(0xff),
203.76 + rnd.nextInt(0xff), 0),
203.77 + true);
203.78 + g2d.setPaint(p);
203.79 + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
203.80 + RenderingHints.VALUE_ANTIALIAS_ON);
203.81 + g2d.fillOval(0, 0, w, h);
203.82 + } else {
203.83 + g.setColor(new Color(rnd.nextInt(0xffffff)));
203.84 + g.fillRect(0, 0, w, h);
203.85 + }
203.86 + }
203.87 +
203.88 + private static class MyCanvas extends Canvas {
203.89 + @Override
203.90 + public void paint(Graphics g) {
203.91 + render(g, getWidth(), getHeight(), false);
203.92 + }
203.93 + @Override
203.94 + public Dimension getPreferredSize() {
203.95 + return new Dimension(200, 100);
203.96 + }
203.97 + }
203.98 + private static class NonOpaqueJFrame extends JFrame {
203.99 + NonOpaqueJFrame() {
203.100 + super("NonOpaque Swing JFrame");
203.101 + JPanel p = new JPanel() {
203.102 + public void paintComponent(Graphics g) {
203.103 + super.paintComponent(g);
203.104 + render(g, getWidth(), getHeight(), true);
203.105 + g.setColor(Color.red);
203.106 + g.drawString("Non-Opaque Swing JFrame", 10, 15);
203.107 + }
203.108 + };
203.109 + p.setDoubleBuffered(false);
203.110 + p.setOpaque(false);
203.111 + add(p);
203.112 + setUndecorated(true);
203.113 + }
203.114 + }
203.115 + private static class NonOpaqueJAppletFrame extends JFrame {
203.116 + JPanel p;
203.117 + NonOpaqueJAppletFrame() {
203.118 + super("NonOpaque Swing JAppletFrame");
203.119 + JApplet ja = new JApplet() {
203.120 + public void paint(Graphics g) {
203.121 + super.paint(g);
203.122 + System.err.println("JAppletFrame paint called");
203.123 + }
203.124 + };
203.125 + p = new JPanel() {
203.126 + public void paintComponent(Graphics g) {
203.127 + super.paintComponent(g);
203.128 + render(g, getWidth(), getHeight(), true);
203.129 + g.setColor(Color.red);
203.130 + g.drawString("Non-Opaque Swing JFrame", 10, 15);
203.131 + }
203.132 + };
203.133 + p.setDoubleBuffered(false);
203.134 + p.setOpaque(false);
203.135 + ja.add(p);
203.136 + add(ja);
203.137 + setUndecorated(true);
203.138 + }
203.139 + }
203.140 + private static class NonOpaqueFrame extends Frame {
203.141 + NonOpaqueFrame() {
203.142 + super("NonOpaque AWT Frame");
203.143 + // uncomment to test with hw child
203.144 +// setLayout(null);
203.145 +// Component c = new Panel() {
203.146 +// public void paint(Graphics g) {
203.147 +// g.setColor(new Color(1.0f, 1.0f, 1.0f, 0.5f));
203.148 +// g.fillRect(0, 0, getWidth(), getHeight());
203.149 +// }
203.150 +// };
203.151 +// c.setSize(100, 100);
203.152 +// c.setBackground(Color.red);
203.153 +// c.setForeground(Color.red);
203.154 +// add(c);
203.155 +// c.setLocation(130, 130);
203.156 + }
203.157 + @Override
203.158 + public void paint(Graphics g) {
203.159 + render(g, getWidth(), getHeight(), true);
203.160 + g.setColor(Color.red);
203.161 + g.drawString("Non-Opaque AWT Frame", 10, 15);
203.162 + }
203.163 + }
203.164 +
203.165 + private static class MyJPanel extends JPanel {
203.166 + @Override
203.167 + public void paintComponent(Graphics g) {
203.168 + render(g, getWidth(), getHeight(), false);
203.169 + }
203.170 + }
203.171 +
203.172 + public static Frame createGui(
203.173 + final boolean useSwing,
203.174 + final boolean useShape,
203.175 + final boolean useTransl,
203.176 + final boolean useNonOpaque,
203.177 + final float factor)
203.178 + {
203.179 + Frame frame;
203.180 + done = false;
203.181 +
203.182 + if (useNonOpaque) {
203.183 + if (useSwing) {
203.184 + frame = new NonOpaqueJFrame();
203.185 +// frame = new NonOpaqueJAppletFrame(gc);
203.186 + } else {
203.187 + frame = new NonOpaqueFrame();
203.188 + }
203.189 + animateComponent(frame);
203.190 + } else if (useSwing) {
203.191 + frame = new JFrame("Swing Frame");
203.192 + JComponent p = new JButton("Swing!");
203.193 + p.setPreferredSize(new Dimension(200, 100));
203.194 + frame.add("North", p);
203.195 + p = new MyJPanel();
203.196 + animateComponent(p);
203.197 + frame.add("Center", p);
203.198 + } else {
203.199 + frame = new Frame("AWT Frame") {
203.200 + public void paint(Graphics g) {
203.201 + g.setColor(Color.red);
203.202 + g.fillRect(0, 0, 100, 100);
203.203 + }
203.204 + };
203.205 + frame.setLayout(new BorderLayout());
203.206 + Canvas c = new MyCanvas();
203.207 + frame.add("North", c);
203.208 + animateComponent(c);
203.209 + c = new MyCanvas();
203.210 + frame.add("Center", c);
203.211 + animateComponent(c);
203.212 + c = new MyCanvas();
203.213 + frame.add("South", c);
203.214 + animateComponent(c);
203.215 + }
203.216 + final Frame finalFrame = frame;
203.217 + frame.addWindowListener(new WindowAdapter() {
203.218 + @Override
203.219 + public void windowClosing(WindowEvent e) {
203.220 + finalFrame.dispose();
203.221 + done = true;
203.222 + }
203.223 + });
203.224 + frame.addMouseListener(new MouseAdapter() {
203.225 + @Override
203.226 + public void mouseClicked(MouseEvent e) {
203.227 + finalFrame.dispose();
203.228 + done = true;
203.229 + }
203.230 + });
203.231 + frame.setPreferredSize(new Dimension(800, 600));
203.232 +
203.233 + if (useShape) {
203.234 + frame.setUndecorated(true);
203.235 + }
203.236 +
203.237 + frame.setLocation(450, 10);
203.238 + frame.pack();
203.239 +
203.240 + GraphicsDevice gd = frame.getGraphicsConfiguration().getDevice();
203.241 + if (useShape) {
203.242 + if (gd.isWindowTranslucencySupported(WindowTranslucency.PERPIXEL_TRANSPARENT)) {
203.243 + System.out.println("applying PERPIXEL_TRANSPARENT");
203.244 + frame.setShape(new Ellipse2D.Double(0, 0, frame.getWidth(),
203.245 + frame.getHeight()/3));
203.246 + frame.setTitle("PERPIXEL_TRANSPARENT");
203.247 + } else {
203.248 + System.out.println("Passed: PERPIXEL_TRANSPARENT unsupported");
203.249 + }
203.250 + }
203.251 + if (useTransl) {
203.252 + if (gd.isWindowTranslucencySupported(WindowTranslucency.TRANSLUCENT)) {
203.253 + System.out.println("applying TRANSLUCENT");
203.254 + frame.setOpacity(factor);
203.255 + frame.setTitle("TRANSLUCENT");
203.256 + } else {
203.257 + System.out.println("Passed: TRANSLUCENT unsupported");
203.258 + }
203.259 + }
203.260 + if (useNonOpaque) {
203.261 + if (gd.isWindowTranslucencySupported(WindowTranslucency.PERPIXEL_TRANSLUCENT)) {
203.262 + System.out.println("applying PERPIXEL_TRANSLUCENT");
203.263 + frame.setBackground(new Color(0, 0, 0, 0));
203.264 + frame.setTitle("PERPIXEL_TRANSLUCENT");
203.265 + } else {
203.266 + System.out.println("Passed: PERPIXEL_TRANSLUCENT unsupported");
203.267 + }
203.268 + }
203.269 + frame.setVisible(true);
203.270 + return frame;
203.271 + }
203.272 +
203.273 + public static void stopThreads() {
203.274 + done = true;
203.275 + }
203.276 +
203.277 + private static void animateComponent(final Component comp) {
203.278 + Thread t = new Thread(new Runnable() {
203.279 + public void run() {
203.280 + do {
203.281 + try {
203.282 + Thread.sleep(50);
203.283 + } catch (InterruptedException ex) {}
203.284 + comp.repaint();
203.285 + } while (!done);
203.286 + }
203.287 + });
203.288 + t.start();
203.289 + }
203.290 +
203.291 + public static void main(String[] args) throws Exception {
203.292 + SwingUtilities.invokeLater(new Runnable() {
203.293 + public void run() {
203.294 + TSFrame.createGui(useSwing,
203.295 + useShape,
203.296 + useTransl,
203.297 + useNonOpaque,
203.298 + 0.7f);
203.299 + }
203.300 + });
203.301 + }
203.302 +}
204.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
204.2 +++ b/test/java/awt/Window/TranslucentShapedFrameTest/TranslucentShapedFrameTest.form Wed Apr 29 00:27:46 2009 -0700
204.3 @@ -0,0 +1,230 @@
204.4 +<?xml version="1.0" encoding="UTF-8" ?>
204.5 +
204.6 +<Form version="1.3" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
204.7 + <NonVisualComponents>
204.8 + <Component class="javax.swing.ButtonGroup" name="createDisposeGrp">
204.9 + </Component>
204.10 + </NonVisualComponents>
204.11 + <Properties>
204.12 + <Property name="defaultCloseOperation" type="int" value="3"/>
204.13 + <Property name="title" type="java.lang.String" value="TranslucentShapedFrameTest"/>
204.14 + </Properties>
204.15 + <SyntheticProperties>
204.16 + <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
204.17 + </SyntheticProperties>
204.18 + <AuxValues>
204.19 + <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
204.20 + <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
204.21 + <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
204.22 + <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
204.23 + <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
204.24 + <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
204.25 + </AuxValues>
204.26 +
204.27 + <Layout>
204.28 + <DimensionLayout dim="0">
204.29 + <Group type="103" groupAlignment="0" attributes="0">
204.30 + <Group type="102" attributes="0">
204.31 + <EmptySpace max="-2" attributes="0"/>
204.32 + <Group type="103" groupAlignment="0" attributes="0">
204.33 + <Group type="102" alignment="0" attributes="0">
204.34 + <Component id="transparencySld" pref="375" max="32767" attributes="0"/>
204.35 + <EmptySpace max="-2" attributes="0"/>
204.36 + </Group>
204.37 + <Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
204.38 + <Group type="102" alignment="0" attributes="0">
204.39 + <Component id="shapedCb" min="-2" max="-2" attributes="0"/>
204.40 + <EmptySpace max="-2" attributes="0"/>
204.41 + <Component id="nonOpaqueChb" min="-2" max="-2" attributes="0"/>
204.42 + <EmptySpace max="-2" attributes="0"/>
204.43 + <Component id="useSwingCb" min="-2" max="-2" attributes="0"/>
204.44 + <EmptySpace pref="102" max="32767" attributes="0"/>
204.45 + </Group>
204.46 + <Group type="102" alignment="0" attributes="0">
204.47 + <Group type="103" groupAlignment="0" attributes="0">
204.48 + <Group type="102" alignment="0" attributes="0">
204.49 + <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
204.50 + <EmptySpace pref="314" max="-2" attributes="0"/>
204.51 + </Group>
204.52 + <Group type="102" alignment="0" attributes="0">
204.53 + <Component id="passedBtn" min="-2" max="-2" attributes="0"/>
204.54 + <EmptySpace max="-2" attributes="0"/>
204.55 + <Component id="failedBtn" min="-2" max="-2" attributes="0"/>
204.56 + <EmptySpace pref="241" max="-2" attributes="0"/>
204.57 + </Group>
204.58 + <Component id="jScrollPane1" alignment="1" pref="375" max="32767" attributes="0"/>
204.59 + <Group type="102" alignment="0" attributes="0">
204.60 + <Component id="createFrameBtn" min="-2" pref="187" max="-2" attributes="0"/>
204.61 + <EmptySpace max="-2" attributes="0"/>
204.62 + <Component id="disposeFrameBtn" min="-2" pref="182" max="-2" attributes="0"/>
204.63 + </Group>
204.64 + </Group>
204.65 + <EmptySpace max="-2" attributes="0"/>
204.66 + </Group>
204.67 + </Group>
204.68 + </Group>
204.69 + </Group>
204.70 + </DimensionLayout>
204.71 + <DimensionLayout dim="1">
204.72 + <Group type="103" groupAlignment="0" attributes="0">
204.73 + <Group type="102" alignment="0" attributes="0">
204.74 + <EmptySpace max="-2" attributes="0"/>
204.75 + <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
204.76 + <EmptySpace max="-2" attributes="0"/>
204.77 + <Component id="transparencySld" min="-2" max="-2" attributes="0"/>
204.78 + <EmptySpace max="-2" attributes="0"/>
204.79 + <Group type="103" groupAlignment="3" attributes="0">
204.80 + <Component id="shapedCb" alignment="3" min="-2" max="-2" attributes="0"/>
204.81 + <Component id="nonOpaqueChb" alignment="3" min="-2" max="-2" attributes="0"/>
204.82 + <Component id="useSwingCb" alignment="3" min="-2" max="-2" attributes="0"/>
204.83 + </Group>
204.84 + <EmptySpace max="-2" attributes="0"/>
204.85 + <Group type="103" groupAlignment="3" attributes="0">
204.86 + <Component id="disposeFrameBtn" alignment="3" min="-2" max="-2" attributes="0"/>
204.87 + <Component id="createFrameBtn" alignment="3" min="-2" max="-2" attributes="0"/>
204.88 + </Group>
204.89 + <EmptySpace min="-2" pref="17" max="-2" attributes="0"/>
204.90 + <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
204.91 + <EmptySpace max="-2" attributes="0"/>
204.92 + <Component id="jScrollPane1" min="-2" pref="148" max="-2" attributes="0"/>
204.93 + <EmptySpace max="-2" attributes="0"/>
204.94 + <Group type="103" groupAlignment="3" attributes="0">
204.95 + <Component id="passedBtn" alignment="3" min="-2" max="-2" attributes="0"/>
204.96 + <Component id="failedBtn" alignment="3" min="-2" max="-2" attributes="0"/>
204.97 + </Group>
204.98 + <EmptySpace max="32767" attributes="0"/>
204.99 + </Group>
204.100 + </Group>
204.101 + </DimensionLayout>
204.102 + </Layout>
204.103 + <SubComponents>
204.104 + <Component class="javax.swing.JLabel" name="jLabel1">
204.105 + <Properties>
204.106 + <Property name="text" type="java.lang.String" value="Frame Opacity:"/>
204.107 + </Properties>
204.108 + </Component>
204.109 + <Component class="javax.swing.JSlider" name="transparencySld">
204.110 + <Properties>
204.111 + <Property name="majorTickSpacing" type="int" value="10"/>
204.112 + <Property name="minorTickSpacing" type="int" value="5"/>
204.113 + <Property name="paintLabels" type="boolean" value="true"/>
204.114 + <Property name="paintTicks" type="boolean" value="true"/>
204.115 + <Property name="value" type="int" value="100"/>
204.116 + </Properties>
204.117 + <Events>
204.118 + <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="transparencySldStateChanged"/>
204.119 + </Events>
204.120 + </Component>
204.121 + <Component class="javax.swing.JCheckBox" name="shapedCb">
204.122 + <Properties>
204.123 + <Property name="text" type="java.lang.String" value="Shaped Frame"/>
204.124 + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
204.125 + <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
204.126 + <EmptyBorder bottom="0" left="0" right="0" top="0"/>
204.127 + </Border>
204.128 + </Property>
204.129 + <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
204.130 + <Insets value="[0, 0, 0, 0]"/>
204.131 + </Property>
204.132 + </Properties>
204.133 + <Events>
204.134 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="shapedCbActionPerformed"/>
204.135 + </Events>
204.136 + </Component>
204.137 + <Component class="javax.swing.JCheckBox" name="nonOpaqueChb">
204.138 + <Properties>
204.139 + <Property name="text" type="java.lang.String" value="Non Opaque Frame"/>
204.140 + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
204.141 + <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
204.142 + <EmptyBorder bottom="0" left="0" right="0" top="0"/>
204.143 + </Border>
204.144 + </Property>
204.145 + <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
204.146 + <Insets value="[0, 0, 0, 0]"/>
204.147 + </Property>
204.148 + </Properties>
204.149 + <Events>
204.150 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="nonOpaqueChbActionPerformed"/>
204.151 + </Events>
204.152 + </Component>
204.153 + <Container class="javax.swing.JScrollPane" name="jScrollPane1">
204.154 + <AuxValues>
204.155 + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
204.156 + </AuxValues>
204.157 +
204.158 + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
204.159 + <SubComponents>
204.160 + <Component class="javax.swing.JTextArea" name="jTextArea1">
204.161 + <Properties>
204.162 + <Property name="columns" type="int" value="20"/>
204.163 + <Property name="rows" type="int" value="5"/>
204.164 + <Property name="text" type="java.lang.String" value="Create translucent and/or shaped, or
non-opaque frame. Make sure it behaves
correctly (no artifacts left on the screen
when dragging - if dragging is possible).
Click "Passed" if the test behaves correctly,
"Falied" otherwise."/>
204.165 + </Properties>
204.166 + </Component>
204.167 + </SubComponents>
204.168 + </Container>
204.169 + <Component class="javax.swing.JLabel" name="jLabel2">
204.170 + <Properties>
204.171 + <Property name="text" type="java.lang.String" value="Instructions:"/>
204.172 + </Properties>
204.173 + </Component>
204.174 + <Component class="javax.swing.JButton" name="passedBtn">
204.175 + <Properties>
204.176 + <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
204.177 + <Color blue="64" green="ff" red="81" type="rgb"/>
204.178 + </Property>
204.179 + <Property name="text" type="java.lang.String" value="Passed"/>
204.180 + </Properties>
204.181 + <Events>
204.182 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="passedBtnActionPerformed"/>
204.183 + </Events>
204.184 + </Component>
204.185 + <Component class="javax.swing.JButton" name="failedBtn">
204.186 + <Properties>
204.187 + <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
204.188 + <Color blue="0" green="0" id="red" palette="1" red="ff" type="palette"/>
204.189 + </Property>
204.190 + <Property name="text" type="java.lang.String" value="Failed"/>
204.191 + </Properties>
204.192 + <Events>
204.193 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="failedBtnActionPerformed"/>
204.194 + </Events>
204.195 + </Component>
204.196 + <Component class="javax.swing.JToggleButton" name="createFrameBtn">
204.197 + <Properties>
204.198 + <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
204.199 + <ComponentRef name="createDisposeGrp"/>
204.200 + </Property>
204.201 + <Property name="text" type="java.lang.String" value="Create Frame"/>
204.202 + </Properties>
204.203 + <Events>
204.204 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="createFrameBtnActionPerformed"/>
204.205 + </Events>
204.206 + </Component>
204.207 + <Component class="javax.swing.JToggleButton" name="disposeFrameBtn">
204.208 + <Properties>
204.209 + <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
204.210 + <ComponentRef name="createDisposeGrp"/>
204.211 + </Property>
204.212 + <Property name="selected" type="boolean" value="true"/>
204.213 + <Property name="text" type="java.lang.String" value="Dispose Frame"/>
204.214 + </Properties>
204.215 + <Events>
204.216 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="disposeFrameBtnActionPerformed"/>
204.217 + </Events>
204.218 + </Component>
204.219 + <Component class="javax.swing.JCheckBox" name="useSwingCb">
204.220 + <Properties>
204.221 + <Property name="text" type="java.lang.String" value="Use JFrame"/>
204.222 + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
204.223 + <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
204.224 + <EmptyBorder bottom="0" left="0" right="0" top="0"/>
204.225 + </Border>
204.226 + </Property>
204.227 + <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
204.228 + <Insets value="[0, 0, 0, 0]"/>
204.229 + </Property>
204.230 + </Properties>
204.231 + </Component>
204.232 + </SubComponents>
204.233 +</Form>
205.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
205.2 +++ b/test/java/awt/Window/TranslucentShapedFrameTest/TranslucentShapedFrameTest.java Wed Apr 29 00:27:46 2009 -0700
205.3 @@ -0,0 +1,339 @@
205.4 +/*
205.5 + * Copyright 2008-2009 Sun Microsystems, Inc. All Rights Reserved.
205.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
205.7 + *
205.8 + * This code is free software; you can redistribute it and/or modify it
205.9 + * under the terms of the GNU General Public License version 2 only, as
205.10 + * published by the Free Software Foundation. Sun designates this
205.11 + * particular file as subject to the "Classpath" exception as provided
205.12 + * by Sun in the LICENSE file that accompanied this code.
205.13 + *
205.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
205.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
205.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
205.17 + * version 2 for more details (a copy is included in the LICENSE file that
205.18 + * accompanied this code).
205.19 + *
205.20 + * You should have received a copy of the GNU General Public License version
205.21 + * 2 along with this work; if not, write to the Free Software Foundation,
205.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
205.23 + *
205.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
205.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
205.26 + * have any questions.
205.27 + */
205.28 +
205.29 +/*
205.30 + * @test %I% %E%
205.31 + * @bug 6655001 6670649 6687141
205.32 + * @summary Tests that hw acceleration doesn't affect translucent/shaped windows
205.33 + * @author Dmitri.Trembovetski@sun.com: area=Graphics
205.34 + * @compile -XDignore.symbol.file=true TranslucentShapedFrameTest.java
205.35 + * @compile -XDignore.symbol.file=true TSFrame.java
205.36 + * @run main/manual/othervm TranslucentShapedFrameTest
205.37 + * @run main/manual/othervm -Dsun.java2d.noddraw=true TranslucentShapedFrameTest
205.38 + * @run main/manual/othervm -Dsun.java2d.opengl=True TranslucentShapedFrameTest
205.39 + */
205.40 +import java.awt.Color;
205.41 +import java.awt.Frame;
205.42 +import java.awt.GraphicsConfiguration;
205.43 +import java.awt.GraphicsDevice;
205.44 +import java.awt.GraphicsDevice.WindowTranslucency;
205.45 +import java.awt.GraphicsEnvironment;
205.46 +import java.awt.Shape;
205.47 +import java.awt.geom.Ellipse2D;
205.48 +import java.util.concurrent.CountDownLatch;
205.49 +import javax.swing.JSlider;
205.50 +import javax.swing.SwingUtilities;
205.51 +import javax.swing.UIManager;
205.52 +import javax.swing.UnsupportedLookAndFeelException;
205.53 +
205.54 +public class TranslucentShapedFrameTest extends javax.swing.JFrame {
205.55 + Frame testFrame;
205.56 + static CountDownLatch done;
205.57 + static volatile boolean failed = false;
205.58 + GraphicsConfiguration gcToUse = null;
205.59 +
205.60 + /**
205.61 + * Creates new form TranslucentShapedFrameTest
205.62 + */
205.63 + public TranslucentShapedFrameTest() {
205.64 + // not necessary, but we just look nicer
205.65 + try {
205.66 + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
205.67 + } catch (Exception ex) {}
205.68 +
205.69 + initComponents();
205.70 + checkEffects();
205.71 +
205.72 + SwingUtilities.updateComponentTreeUI(this);
205.73 + }
205.74 +
205.75 + /** This method is called from within the constructor to
205.76 + * initialize the form.
205.77 + * WARNING: Do NOT modify this code. The content of this method is
205.78 + * always regenerated by the Form Editor.
205.79 + */
205.80 + // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
205.81 + private void initComponents() {
205.82 + createDisposeGrp = new javax.swing.ButtonGroup();
205.83 + jLabel1 = new javax.swing.JLabel();
205.84 + transparencySld = new javax.swing.JSlider();
205.85 + shapedCb = new javax.swing.JCheckBox();
205.86 + nonOpaqueChb = new javax.swing.JCheckBox();
205.87 + jScrollPane1 = new javax.swing.JScrollPane();
205.88 + jTextArea1 = new javax.swing.JTextArea();
205.89 + jLabel2 = new javax.swing.JLabel();
205.90 + passedBtn = new javax.swing.JButton();
205.91 + failedBtn = new javax.swing.JButton();
205.92 + createFrameBtn = new javax.swing.JToggleButton();
205.93 + disposeFrameBtn = new javax.swing.JToggleButton();
205.94 + useSwingCb = new javax.swing.JCheckBox();
205.95 +
205.96 + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
205.97 + setTitle("TranslucentShapedFrameTest");
205.98 + jLabel1.setText("Frame Opacity:");
205.99 +
205.100 + transparencySld.setMajorTickSpacing(10);
205.101 + transparencySld.setMinorTickSpacing(5);
205.102 + transparencySld.setPaintLabels(true);
205.103 + transparencySld.setPaintTicks(true);
205.104 + transparencySld.setValue(100);
205.105 + transparencySld.addChangeListener(new javax.swing.event.ChangeListener() {
205.106 + public void stateChanged(javax.swing.event.ChangeEvent evt) {
205.107 + transparencySldStateChanged(evt);
205.108 + }
205.109 + });
205.110 +
205.111 + shapedCb.setText("Shaped Frame");
205.112 + shapedCb.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
205.113 + shapedCb.setMargin(new java.awt.Insets(0, 0, 0, 0));
205.114 + shapedCb.addActionListener(new java.awt.event.ActionListener() {
205.115 + public void actionPerformed(java.awt.event.ActionEvent evt) {
205.116 + shapedCbActionPerformed(evt);
205.117 + }
205.118 + });
205.119 +
205.120 + nonOpaqueChb.setText("Non Opaque Frame");
205.121 + nonOpaqueChb.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
205.122 + nonOpaqueChb.setMargin(new java.awt.Insets(0, 0, 0, 0));
205.123 + nonOpaqueChb.addActionListener(new java.awt.event.ActionListener() {
205.124 + public void actionPerformed(java.awt.event.ActionEvent evt) {
205.125 + nonOpaqueChbActionPerformed(evt);
205.126 + }
205.127 + });
205.128 +
205.129 + jTextArea1.setColumns(20);
205.130 + jTextArea1.setRows(5);
205.131 + jTextArea1.setText("Create translucent and/or shaped, or\nnon-opaque frame. Make sure it behaves\ncorrectly (no artifacts left on the screen\nwhen dragging - if dragging is possible).\nClick \"Passed\" if the test behaves correctly,\n\"Falied\" otherwise.");
205.132 + jScrollPane1.setViewportView(jTextArea1);
205.133 +
205.134 + jLabel2.setText("Instructions:");
205.135 +
205.136 + passedBtn.setBackground(new Color(129, 255, 100));
205.137 + passedBtn.setText("Passed");
205.138 + passedBtn.addActionListener(new java.awt.event.ActionListener() {
205.139 + public void actionPerformed(java.awt.event.ActionEvent evt) {
205.140 + passedBtnActionPerformed(evt);
205.141 + }
205.142 + });
205.143 +
205.144 + failedBtn.setBackground(Color.red);
205.145 + failedBtn.setText("Failed");
205.146 + failedBtn.addActionListener(new java.awt.event.ActionListener() {
205.147 + public void actionPerformed(java.awt.event.ActionEvent evt) {
205.148 + failedBtnActionPerformed(evt);
205.149 + }
205.150 + });
205.151 +
205.152 + createDisposeGrp.add(createFrameBtn);
205.153 + createFrameBtn.setText("Create Frame");
205.154 + createFrameBtn.addActionListener(new java.awt.event.ActionListener() {
205.155 + public void actionPerformed(java.awt.event.ActionEvent evt) {
205.156 + createFrameBtnActionPerformed(evt);
205.157 + }
205.158 + });
205.159 +
205.160 + createDisposeGrp.add(disposeFrameBtn);
205.161 + disposeFrameBtn.setSelected(true);
205.162 + disposeFrameBtn.setText("Dispose Frame");
205.163 + disposeFrameBtn.addActionListener(new java.awt.event.ActionListener() {
205.164 + public void actionPerformed(java.awt.event.ActionEvent evt) {
205.165 + disposeFrameBtnActionPerformed(evt);
205.166 + }
205.167 + });
205.168 +
205.169 + useSwingCb.setText("Use JFrame");
205.170 + useSwingCb.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
205.171 + useSwingCb.setMargin(new java.awt.Insets(0, 0, 0, 0));
205.172 +
205.173 + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
205.174 + getContentPane().setLayout(layout);
205.175 + layout.setHorizontalGroup(
205.176 + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
205.177 + .addGroup(layout.createSequentialGroup()
205.178 + .addContainerGap()
205.179 + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
205.180 + .addGroup(layout.createSequentialGroup()
205.181 + .addComponent(transparencySld, javax.swing.GroupLayout.DEFAULT_SIZE, 375, Short.MAX_VALUE)
205.182 + .addContainerGap())
205.183 + .addComponent(jLabel1)
205.184 + .addGroup(layout.createSequentialGroup()
205.185 + .addComponent(shapedCb)
205.186 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
205.187 + .addComponent(nonOpaqueChb)
205.188 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
205.189 + .addComponent(useSwingCb)
205.190 + .addContainerGap(102, Short.MAX_VALUE))
205.191 + .addGroup(layout.createSequentialGroup()
205.192 + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
205.193 + .addGroup(layout.createSequentialGroup()
205.194 + .addComponent(jLabel2)
205.195 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 314, javax.swing.GroupLayout.PREFERRED_SIZE))
205.196 + .addGroup(layout.createSequentialGroup()
205.197 + .addComponent(passedBtn)
205.198 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
205.199 + .addComponent(failedBtn)
205.200 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 241, javax.swing.GroupLayout.PREFERRED_SIZE))
205.201 + .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 375, Short.MAX_VALUE)
205.202 + .addGroup(layout.createSequentialGroup()
205.203 + .addComponent(createFrameBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 187, javax.swing.GroupLayout.PREFERRED_SIZE)
205.204 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
205.205 + .addComponent(disposeFrameBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 182, javax.swing.GroupLayout.PREFERRED_SIZE)))
205.206 + .addContainerGap())))
205.207 + );
205.208 + layout.setVerticalGroup(
205.209 + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
205.210 + .addGroup(layout.createSequentialGroup()
205.211 + .addContainerGap()
205.212 + .addComponent(jLabel1)
205.213 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
205.214 + .addComponent(transparencySld, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
205.215 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
205.216 + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
205.217 + .addComponent(shapedCb)
205.218 + .addComponent(nonOpaqueChb)
205.219 + .addComponent(useSwingCb))
205.220 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
205.221 + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
205.222 + .addComponent(disposeFrameBtn)
205.223 + .addComponent(createFrameBtn))
205.224 + .addGap(17, 17, 17)
205.225 + .addComponent(jLabel2)
205.226 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
205.227 + .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 148, javax.swing.GroupLayout.PREFERRED_SIZE)
205.228 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
205.229 + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
205.230 + .addComponent(passedBtn)
205.231 + .addComponent(failedBtn))
205.232 + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
205.233 + );
205.234 + pack();
205.235 + }// </editor-fold>//GEN-END:initComponents
205.236 +
205.237 + private void nonOpaqueChbActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nonOpaqueChbActionPerformed
205.238 + if (testFrame != null) {
205.239 + // REMIND: this path in the test doesn't work well (test bug)
205.240 + testFrame.setBackground(new Color(0, 0, 0, nonOpaqueChb.isSelected() ? 0 : 255));
205.241 + }
205.242 + }//GEN-LAST:event_nonOpaqueChbActionPerformed
205.243 +
205.244 + private void shapedCbActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_shapedCbActionPerformed
205.245 + if (testFrame != null) {
205.246 + Shape s = null;
205.247 + if (shapedCb.isSelected()) {
205.248 + s = new Ellipse2D.Double(0, 0,
205.249 + testFrame.getWidth(),
205.250 + testFrame.getHeight());
205.251 + }
205.252 + testFrame.setShape(s);
205.253 + }
205.254 + }//GEN-LAST:event_shapedCbActionPerformed
205.255 +
205.256 + private void transparencySldStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_transparencySldStateChanged
205.257 + JSlider source = (JSlider)evt.getSource();
205.258 + int transl = transparencySld.getValue();
205.259 + if (testFrame != null) {
205.260 + testFrame.setOpacity((float)transl/100f);
205.261 + }
205.262 + }//GEN-LAST:event_transparencySldStateChanged
205.263 +
205.264 + private void failedBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_failedBtnActionPerformed
205.265 + disposeFrameBtnActionPerformed(evt);
205.266 + dispose();
205.267 + failed = true;
205.268 + done.countDown();
205.269 + }//GEN-LAST:event_failedBtnActionPerformed
205.270 +
205.271 + private void disposeFrameBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_disposeFrameBtnActionPerformed
205.272 + TSFrame.stopThreads();
205.273 + if (testFrame != null) {
205.274 + testFrame.dispose();
205.275 + testFrame = null;
205.276 + }
205.277 + }//GEN-LAST:event_disposeFrameBtnActionPerformed
205.278 +
205.279 + private void createFrameBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createFrameBtnActionPerformed
205.280 + disposeFrameBtnActionPerformed(evt);
205.281 + int transl = transparencySld.getValue();
205.282 + testFrame = TSFrame.createGui(
205.283 + useSwingCb.isSelected(), shapedCb.isSelected(),
205.284 + (transl < 100), nonOpaqueChb.isSelected(),
205.285 + (float)transl/100f);
205.286 + }//GEN-LAST:event_createFrameBtnActionPerformed
205.287 +
205.288 + private void passedBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_passedBtnActionPerformed
205.289 + disposeFrameBtnActionPerformed(evt);
205.290 + dispose();
205.291 + done.countDown();
205.292 + }//GEN-LAST:event_passedBtnActionPerformed
205.293 +
205.294 + /**
205.295 + * @param args the command line arguments
205.296 + */
205.297 + public static void main(String args[]) {
205.298 + done = new CountDownLatch(1);
205.299 + java.awt.EventQueue.invokeLater(new Runnable() {
205.300 + public void run() {
205.301 + new TranslucentShapedFrameTest().setVisible(true);
205.302 + }
205.303 + });
205.304 + try {
205.305 + done.await();
205.306 + } catch (InterruptedException ex) {}
205.307 + if (failed) {
205.308 + throw new RuntimeException("Test FAILED");
205.309 + }
205.310 + System.out.println("Test PASSED");
205.311 + }
205.312 +
205.313 + private void checkEffects() {
205.314 + GraphicsDevice gd = getGraphicsConfiguration().getDevice();
205.315 + if (!gd.isWindowTranslucencySupported(WindowTranslucency.PERPIXEL_TRANSPARENT)) {
205.316 + shapedCb.setEnabled(false);
205.317 + }
205.318 + if (!gd.isWindowTranslucencySupported(WindowTranslucency.TRANSLUCENT)) {
205.319 + transparencySld.setEnabled(false);
205.320 + }
205.321 + if (!gd.isWindowTranslucencySupported(WindowTranslucency.PERPIXEL_TRANSLUCENT)) {
205.322 + nonOpaqueChb.setEnabled(false);
205.323 + }
205.324 + }
205.325 +
205.326 + // Variables declaration - do not modify//GEN-BEGIN:variables
205.327 + private javax.swing.ButtonGroup createDisposeGrp;
205.328 + private javax.swing.JToggleButton createFrameBtn;
205.329 + private javax.swing.JToggleButton disposeFrameBtn;
205.330 + private javax.swing.JButton failedBtn;
205.331 + private javax.swing.JLabel jLabel1;
205.332 + private javax.swing.JLabel jLabel2;
205.333 + private javax.swing.JScrollPane jScrollPane1;
205.334 + private javax.swing.JTextArea jTextArea1;
205.335 + private javax.swing.JCheckBox nonOpaqueChb;
205.336 + private javax.swing.JButton passedBtn;
205.337 + private javax.swing.JCheckBox shapedCb;
205.338 + private javax.swing.JSlider transparencySld;
205.339 + private javax.swing.JCheckBox useSwingCb;
205.340 + // End of variables declaration//GEN-END:variables
205.341 +
205.342 +}
206.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
206.2 +++ b/test/javax/sound/midi/Gervill/SoftChannel/NoteOverFlowTest.java Wed Apr 29 00:27:46 2009 -0700
206.3 @@ -0,0 +1,73 @@
206.4 +/*
206.5 + * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
206.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
206.7 + *
206.8 + * This code is free software; you can redistribute it and/or modify it
206.9 + * under the terms of the GNU General Public License version 2 only, as
206.10 + * published by the Free Software Foundation. Sun designates this
206.11 + * particular file as subject to the "Classpath" exception as provided
206.12 + * by Sun in the LICENSE file that accompanied this code.
206.13 + *
206.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
206.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
206.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
206.17 + * version 2 for more details (a copy is included in the LICENSE file that
206.18 + * accompanied this code).
206.19 + *
206.20 + * You should have received a copy of the GNU General Public License version
206.21 + * 2 along with this work; if not, write to the Free Software Foundation,
206.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
206.23 + *
206.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
206.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
206.26 + * have any questions.
206.27 + */
206.28 +
206.29 +/* @test
206.30 + @summary Test SoftChannel noteOn/noteOff overflow test */
206.31 +
206.32 +import javax.sound.midi.MidiChannel;
206.33 +import javax.sound.midi.VoiceStatus;
206.34 +import javax.sound.sampled.AudioFormat;
206.35 +import javax.sound.sampled.AudioInputStream;
206.36 +
206.37 +import com.sun.media.sound.AudioSynthesizer;
206.38 +import com.sun.media.sound.SoftSynthesizer;
206.39 +
206.40 +public class NoteOverFlowTest {
206.41 +
206.42 + public static void main(String[] args) throws Exception
206.43 + {
206.44 + AudioSynthesizer synth = new SoftSynthesizer();
206.45 + AudioFormat format = new AudioFormat(44100, 16, 2, true, false);
206.46 + AudioInputStream stream = synth.openStream(format, null);
206.47 +
206.48 + // Make all voices busy, e.g.
206.49 + // send midi on and midi off on all available voices
206.50 + MidiChannel ch1 = synth.getChannels()[0];
206.51 + ch1.programChange(48); // Use contionus instrument like string ensemble
206.52 + for (int i = 0; i < synth.getMaxPolyphony(); i++) {
206.53 + ch1.noteOn(64, 64);
206.54 + ch1.noteOff(64);
206.55 + }
206.56 +
206.57 + // Now send single midi on, and midi off message
206.58 + ch1.noteOn(64, 64);
206.59 + ch1.noteOff(64);
206.60 +
206.61 + // Read 10 sec from stream, by this time all voices should be inactvie
206.62 + stream.skip(format.getFrameSize() * ((int)(format.getFrameRate() * 20)));
206.63 +
206.64 + // If no voice are active, then this test will pass
206.65 + VoiceStatus[] v = synth.getVoiceStatus();
206.66 + for (int i = 0; i < v.length; i++) {
206.67 + if(v[i].active)
206.68 + {
206.69 + throw new RuntimeException("Not all voices are inactive!");
206.70 + }
206.71 + }
206.72 +
206.73 + // Close the synthesizer after use
206.74 + synth.close();
206.75 + }
206.76 +}
207.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
207.2 +++ b/test/javax/sound/midi/Gervill/SoftFilter/TestProcessAudio.java Wed Apr 29 00:27:46 2009 -0700
207.3 @@ -0,0 +1,99 @@
207.4 +/*
207.5 + * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
207.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
207.7 + *
207.8 + * This code is free software; you can redistribute it and/or modify it
207.9 + * under the terms of the GNU General Public License version 2 only, as
207.10 + * published by the Free Software Foundation. Sun designates this
207.11 + * particular file as subject to the "Classpath" exception as provided
207.12 + * by Sun in the LICENSE file that accompanied this code.
207.13 + *
207.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
207.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
207.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
207.17 + * version 2 for more details (a copy is included in the LICENSE file that
207.18 + * accompanied this code).
207.19 + *
207.20 + * You should have received a copy of the GNU General Public License version
207.21 + * 2 along with this work; if not, write to the Free Software Foundation,
207.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
207.23 + *
207.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
207.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
207.26 + * have any questions.
207.27 + */
207.28 +
207.29 +/* @test
207.30 + @summary Test SoftFilter processAudio method */
207.31 +
207.32 +import java.io.File;
207.33 +import java.io.FileOutputStream;
207.34 +import java.io.IOException;
207.35 +import java.util.Random;
207.36 +
207.37 +import javax.sound.sampled.*;
207.38 +
207.39 +import com.sun.media.sound.*;
207.40 +
207.41 +public class TestProcessAudio {
207.42 +
207.43 + public static void main(String[] args) throws Exception {
207.44 + AudioFormat format = new AudioFormat(44100, 16, 2, true, false);
207.45 + SoftAudioBuffer sbuffer = new SoftAudioBuffer(3600, format);
207.46 + SoftFilter filter = new SoftFilter(format.getSampleRate());
207.47 + Random random = new Random(42);
207.48 +
207.49 +
207.50 + for (int t = 0; t <= 6; t++)
207.51 + {
207.52 + if(t == 0) filter.setFilterType(SoftFilter.FILTERTYPE_BP12);
207.53 + if(t == 1) filter.setFilterType(SoftFilter.FILTERTYPE_HP12);
207.54 + if(t == 2) filter.setFilterType(SoftFilter.FILTERTYPE_HP24);
207.55 + if(t == 3) filter.setFilterType(SoftFilter.FILTERTYPE_LP12);
207.56 + if(t == 4) filter.setFilterType(SoftFilter.FILTERTYPE_LP24);
207.57 + if(t == 5) filter.setFilterType(SoftFilter.FILTERTYPE_LP6);
207.58 + if(t == 6) filter.setFilterType(SoftFilter.FILTERTYPE_NP12);
207.59 +
207.60 +
207.61 + // Try first by reseting always
207.62 + for (int f = 1200; f < 3600; f+=100)
207.63 + for (int r = 0; r <= 30; r+=5) {
207.64 + filter.reset();
207.65 + filter.setResonance(r);
207.66 + filter.setFrequency(f);
207.67 + float[] data = sbuffer.array();
207.68 + int len = sbuffer.getSize();
207.69 + for (int i = 0; i < len; i++)
207.70 + data[i] = random.nextFloat() - 0.5f;
207.71 + filter.processAudio(sbuffer);
207.72 + }
207.73 +
207.74 + // Now we skip reseting
207.75 + // to test how changing frequency and resonance
207.76 + // affect active filter
207.77 + for (int f = 100; f < 12800; f+=1200)
207.78 + for (int r = 0; r <= 30; r+=5) {
207.79 + filter.setResonance(r);
207.80 + filter.setFrequency(f);
207.81 + float[] data = sbuffer.array();
207.82 + int len = sbuffer.getSize();
207.83 + for (int i = 0; i < len; i++)
207.84 + data[i] = random.nextFloat() - 0.5f;
207.85 + filter.processAudio(sbuffer);
207.86 + }
207.87 + for (int f = 12800; f >= 100; f-=1200)
207.88 + for (int r = 30; r >= 0; r-=5) {
207.89 + filter.setResonance(r);
207.90 + filter.setFrequency(f);
207.91 + float[] data = sbuffer.array();
207.92 + int len = sbuffer.getSize();
207.93 + for (int i = 0; i < len; i++)
207.94 + data[i] = random.nextFloat() - 0.5f;
207.95 + filter.processAudio(sbuffer);
207.96 + }
207.97 + filter.reset();
207.98 + }
207.99 +
207.100 + }
207.101 +
207.102 +}
208.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
208.2 +++ b/test/javax/sound/midi/Gervill/SoftLowFrequencyOscillator/TestProcessControlLogic.java Wed Apr 29 00:27:46 2009 -0700
208.3 @@ -0,0 +1,106 @@
208.4 +/*
208.5 + * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
208.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
208.7 + *
208.8 + * This code is free software; you can redistribute it and/or modify it
208.9 + * under the terms of the GNU General Public License version 2 only, as
208.10 + * published by the Free Software Foundation. Sun designates this
208.11 + * particular file as subject to the "Classpath" exception as provided
208.12 + * by Sun in the LICENSE file that accompanied this code.
208.13 + *
208.14 + * This code is distributed in the hope that it will be useful, but WITHOUT
208.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
208.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
208.17 + * version 2 for more details (a copy is included in the LICENSE file that
208.18 + * accompanied this code).
208.19 + *
208.20 + * You should have received a copy of the GNU General Public License version
208.21 + * 2 along with this work; if not, write to the Free Software Foundation,
208.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
208.23 + *
208.24 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
208.25 + * CA 95054 USA or visit www.sun.com if you need additional information or
208.26 + * have any questions.
208.27 + */
208.28 +
208.29 +/* @test
208.30 + @summary Test SoftLowFrequencyOscillator processControlLogic method */
208.31 +
208.32 +import com.sun.media.sound.AudioSynthesizerPropertyInfo;
208.33 +import com.sun.media.sound.SoftLowFrequencyOscillator;
208.34 +import com.sun.media.sound.SoftSynthesizer;
208.35 +
208.36 +public class TestProcessControlLogic {
208.37 +
208.38 + private static float control_rate = 147f;
208.39 + private static SoftSynthesizer synth = new SoftSynthesizer();
208.40 + private static SoftLowFrequencyOscillator lfo = new SoftLowFrequencyOscillator();
208.41 +
208.42 + private static void testLFO(boolean shared, int instance, float freq, float delay,
208.43 + float delay2) throws Exception {
208.44 + SoftLowFrequencyOscillator lfo =
208.45 + shared?TestProcessControlLogic.lfo:new SoftLowFrequencyOscillator();
208.46 + lfo.reset();
208.47 + double[] lfo_freq = lfo.get(instance, "freq");
208.48 + double[] lfo_delay = lfo.get(instance, "delay");
208.49 + double[] lfo_delay2 = lfo.get(instance, "delay2");
208.50 + double[] lfo_output = lfo.get(instance, null);
208.51 + lfo_freq[0] = freq;
208.52 + lfo_delay[0] = delay;
208.53 + lfo_delay2[0] = delay2;
208.54 + lfo.init(synth);
208.55 +
208.56 + // For delayCount amount time, the output LFO should be 0.5
208.57 + int delayCount = (int) ((Math.pow(2, delay / 1200.0) * control_rate));
208.58 + delayCount += (int) ((delay2 * control_rate) / 1000.0);
208.59 + for (int i = 0; i < delayCount; i++) {
208.60 + if (Math.abs(0.5 - lfo_output[0]) > 0.000001)
208.61 + throw new Exception("Incorrect LFO output ("
208.62 + +"0.5 != "+lfo_output[0]+")!");
208.63 + lfo.processControlLogic();
208.64 + }
208.65 +
208.66 + // After the delay the LFO should start oscillate
208.67 + // Let make sure output is accurate enough
208.68 + double p_step = (440.0 / control_rate)
208.69 + * Math.exp((freq - 6900.0) * (Math.log(2) / 1200.0));
208.70 + double p = 0;
208.71 + for (int i = 0; i < 30; i++) {
208.72 + p += p_step;
208.73 + double predicted_output = 0.5 + Math.sin(p * 2 * Math.PI) * 0.5;
208.74 + if (Math.abs(predicted_output - lfo_output[0]) > 0.001)
208.75 + throw new Exception("Incorrect LFO output ("
208.76 + +predicted_output+" != "+lfo_output[0]+")!");
208.77 + lfo.processControlLogic();
208.78 + }
208.79 +
208.80 + }
208.81 +
208.82 + public static void main(String[] args) throws Exception {
208.83 +
208.84 + // Get default control rate from synthesizer
208.85 + AudioSynthesizerPropertyInfo[] p = synth.getPropertyInfo(null);
208.86 + for (int i = 0; i < p.length; i++) {
208.87 + if (p[i].name.equals("control rate")) {
208.88 + control_rate = ((Float) p[i].value).floatValue();
208.89 + break;
208.90 + }
208.91 + }
208.92 +
208.93 + // Test LFO under various configurations
208.94 + for (int instance = 0; instance < 3; instance++)
208.95 + for (int d1 = -3000; d1 < 0; d1 += 1000)
208.96 + for (int d2 = 0; d2 < 5000; d2 += 1000)
208.97 + for (int fr = -1000; fr < 1000; fr += 100) {
208.98 + testLFO(true, instance,
208.99 + (fr == -1000) ? Float.NEGATIVE_INFINITY : fr,
208.100 + (d1 == -3000) ? Float.NEGATIVE_INFINITY : d1,
208.101 + d2);
208.102 + testLFO(false, instance,
208.103 + (fr == -1000) ? Float.NEGATIVE_INFINITY : fr,
208.104 + (d1 == -3000) ? Float.NEGATIVE_INFINITY : d1,
208.105 + d2);
208.106 + }
208.107 +
208.108 + }
208.109 +}